이 페이지에서는 Cloud SQL 인증 프록시를 요약하고 이를 사용해서 인스턴스에 대해 승인 및 암호화되고 보호되는 연결을 설정하는 방법을 설명합니다.
Cloud SQL 인증 프록시 사용에 대한 단계별 안내를 보려면 사용 중인 환경에 해당하는 링크를 따르세요.
App Engine 표준 환경 또는 App Engine 가변형 환경에서 Cloud SQL에 연결하기 위해 Cloud SQL 인증 프록시를 사용하거나 SSL을 구성할 필요가 없습니다.
직접 사용해 보기
Google Cloud를 처음 사용하는 경우 계정을 만들어 실제 시나리오에서 Cloud SQL이 수행되는 방식을 평가할 수 있습니다. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
Cloud SQL 무료로 사용해 보기Cloud SQL 인증 프록시의 이점
Cloud SQL 인증 프록시는 승인된 네트워크나 SSL 구성 없이도 인스턴스에 안전한 액세스를 제공하는 Cloud SQL 커넥터입니다.
Cloud SQL 인증 프록시와 다른 Cloud SQL 커넥터를 사용하면 다음과 같은 이점이 있습니다.
- 보안 연결: Cloud SQL 인증 프록시는 Go 규칙에 따라 결정된 암호화 선택으로 TLS 1.3을 사용하여 데이터베이스와 주고받는 트래픽을 자동으로 암호화합니다. SSL 인증서는 클라이언트 ID와 서버 ID를 확인하는 데 사용되며 데이터베이스 프로토콜과 독립적이므로 SSL 인증서를 관리할 필요가 없습니다.
- 연결 승인 간소화: Cloud SQL 인증 프록시는 IAM 권한을 사용하여 Cloud SQL 인스턴스에 연결할 수 있는 사용자와 대상을 제어합니다. 따라서 Cloud SQL 인증 프록시는 Cloud SQL로 인증을 처리하므로 고정 IP 주소를 제공할 필요가 없습니다.
- IAM 데이터베이스 인증. 원하는 경우 Cloud SQL 인증 프록시는 OAuth 2.0 액세스 토큰의 자동 새로고침을 지원합니다. 이 기능에 대한 자세한 내용은 Cloud SQL IAM 데이터베이스 인증을 참조하세요.
Cloud SQL 인증 프록시는 새로운 연결 경로를 제공하지 않고, 기존 IP 연결을 사용합니다. 비공개 IP를 사용하여 Cloud SQL 인스턴스에 연결하려면 Cloud SQL 인증 프록시가 인스턴스와 동일한 VPC 네트워크에 액세스할 수 있는 리소스에 있어야 합니다.
Cloud SQL 인증 프록시 작동 방식
Cloud SQL 인증 프록시는 로컬 환경에서 로컬 클라이언트를 실행하여 작동합니다. 애플리케이션은 데이터베이스에서 사용하는 표준 데이터베이스 프로토콜을 사용하여 Cloud SQL 인증 프록시와 통신합니다.
Cloud SQL 인증 프록시는 보안 터널을 사용하여 서버에서 실행 중인 컴패니언 프로세스와 통신합니다. Cloud SQL 인증 프록시를 통해 설정된 각 연결은 Cloud SQL 인스턴스에 대한 하나의 연결을 만듭니다.
애플리케이션에서 Cloud SQL 인증 프록시에 연결할 때 애플리케이션과 대상 Cloud SQL 인스턴스 간의 기존 연결을 사용할 수 있는지 여부를 확인합니다. 연결이 없으면 Cloud SQL Admin API를 호출하여 임시 SSL 인증서를 가져오고 사용하여 Cloud SQL에 연결합니다. 임시 SSL 인증서는 약 1시간 후에 만료됩니다. Cloud SQL 인증 프록시는 이러한 인증서가 만료되기 전에 새로 고칩니다.
Cloud SQL 인증 프록시는 모든 포트에서 리슨할 수 있지만 포트 3307에서만 Cloud SQL 인스턴스에 대한 발신 또는 이그레스 연결을 만듭니다. Cloud SQL 인증 프록시는 고정 IP 주소가 없는 도메인 이름 sqladmin.googleapis.com
을 통해 API를 호출하므로 포트 443의 모든 이그레스 TCP 연결이 허용되어야 합니다. 클라이언트 머신에 아웃바운드 방화벽 정책이 있는 경우 Cloud SQL 인스턴스의 IP에서 포트 3307로 나가는 연결이 가능한지 확인합니다.
Cloud SQL 인증 프록시는 연결 풀링을 제공하지 않지만 효율성이 증가하도록 다른 연결 풀링과 페어링될 수 있습니다.
다음 다이어그램은 Cloud SQL 인증 프록시가 Cloud SQL에 연결되는 방식을 보여줍니다.
Cloud SQL 인증 프록시 사용 시 요구사항
Cloud SQL 인증 프록시를 사용하려면 다음 요구사항을 충족해야 합니다.
- Cloud SQL Admin API를 사용 설정해야 합니다.
- Cloud SQL 인증 프록시에 Google Cloud 인증 사용자 인증 정보를 제공해야 합니다.
- Cloud SQL 인증 프록시에 유효한 데이터베이스 사용자 계정과 비밀번호를 제공해야 합니다.
인스턴스는 공개 IPv4 주소가 있거나 비공개 IP를 사용하도록 설정되어야 합니다.
공개 IP 주소는 외부 주소에서 액세스 가능하지 않아도 됩니다. 따라서 공개 IP 주소를 승인된 네트워크 주소로 추가할 필요가 없습니다.
Cloud SQL 인증 프록시 다운로드 및 설치
Linux 64비트
- Cloud SQL 인증 프록시를 다운로드합니다.
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.11.4/cloud-sql-proxy.linux.amd64
- Cloud SQL 인증 프록시 실행 파일을 만듭니다.
chmod x cloud-sql-proxy
Linux 32비트
- Cloud SQL 인증 프록시를 다운로드합니다.
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.11.4/cloud-sql-proxy.linux.386
curl
명령어를 찾을 수 없으면sudo apt install curl
을 실행하고 다운로드 명령어를 반복합니다.- Cloud SQL 인증 프록시 실행 파일을 만듭니다.
chmod x cloud-sql-proxy
macOS 64비트
- Cloud SQL 인증 프록시를 다운로드합니다.
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.11.4/cloud-sql-proxy.darwin.amd64
- Cloud SQL 인증 프록시 실행 파일을 만듭니다.
chmod x cloud-sql-proxy
Mac M1
- Cloud SQL 인증 프록시를 다운로드합니다.
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.11.4/cloud-sql-proxy.darwin.arm64
- Cloud SQL 인증 프록시 실행 파일을 만듭니다.
chmod x cloud-sql-proxy
Windows 64비트
https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.11.4/cloud-sql-proxy.x64.exe를 마우스 오른쪽 버튼으로 클릭하고 다른 이름으로 링크 저장을 선택하여 Cloud SQL 인증 프록시를 다운로드합니다. 파일 이름을cloud-sql-proxy.exe
로 바꿉니다.
Windows 32비트
https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.11.4/cloud-sql-proxy.x86.exe를 마우스 오른쪽 버튼으로 클릭하고 다른 이름으로 링크 저장을 선택하여 Cloud SQL 인증 프록시를 다운로드합니다. 파일 이름을cloud-sql-proxy.exe
로 바꿉니다.
Cloud SQL 인증 프록시 Docker 이미지
Cloud SQL 인증 프록시에는 distroless
, alpine
, buster
와 같은 서로 다른 컨테이너 이미지가 있습니다. 기본 Cloud SQL 인증 프록시 컨테이너 이미지는 셸이 없는 distroless
를 사용합니다. 셸 또는 관련 도구가 필요하면 alpine
또는 buster
를 기반으로 이미지를 다운로드합니다.
자세한 내용은 Cloud SQL 인증 프록시 컨테이너 이미지를 참조하세요.
다음 명령어로 Docker를 사용하여 최신 이미지를 로컬 머신으로 가져올 수 있습니다.
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.11.4
기타 OS
여기에 포함되지 않은 다른 운영체제의 경우 소스에서 Cloud SQL 인증 프록시를 컴파일하면 됩니다.Cloud SQL 인증 프록시 시작 옵션
Cloud SQL 인증 프록시를 시작할 때 프록시에 다음 정보를 제공합니다.
- 연결을 설정할 Cloud SQL 인스턴스
- Cloud SQL로 전송될 애플리케이션의 데이터를 리슨할 위치
- Cloud SQL에 애플리케이션을 인증하는 데 사용할 사용자 인증 정보가 있는 위치
- 필요한 경우 사용할 IP 주소 유형
Cloud SQL 인증 프록시 시작 옵션을 사용해 리슨할 위치를 TCP 포트 또는 Unix 소켓으로 결정합니다. Unix 소켓에서 수신 대기하는 경우 선택한 위치(일반적으로 /cloudsql/ 디렉터리)에 소켓이 생성됩니다.
TCP의 경우 Cloud SQL 인증 프록시는 기본적으로 localhost
에서 리슨합니다.
시작 옵션의 전체 목록을 보려면 인수 --help
로 cloud-sql-proxy
실행 파일을 실행합니다.
로컬 환경의 모든 위치에 Cloud SQL 인증 프록시를 설치할 수 있습니다. Cloud SQL 인증 프록시 바이너리의 위치는 애플리케이션의 데이터 리슨 위치에 영향을 미치지 않습니다.
Cloud SQL 인증 프록시를 시작하는 방법에 대한 자세한 내용은 Cloud SQL 인증 프록시 시작을 참조하세요.
인증을 위해 서비스 계정 사용
Cloud SQL 인스턴스에 대한 연결을 승인하려면 Cloud SQL 인증 프록시를 Cloud SQL IAM ID로 인증해야 합니다.
서비스 계정을 이 용도로 활용하면 Cloud SQL 인증 프록시 전용 사용자 인증 정보 파일을 만들 수 있고, 파일이 실행 중인 한 명시적이고 영구적으로 Cloud SQL 인증 프록시에 연결됩니다. 따라서 Compute Engine 인스턴스에서 실행되지 않는 프로덕션 인스턴스에는 서비스 계정을 사용하는 것이 좋습니다.
여러 컴퓨터에서 Cloud SQL 인증 프록시를 호출해야 하는 경우 사용자 인증 정보 파일을 시스템 이미지에 복제할 수 있습니다.
이 방법을 사용하려면 사용자 인증 정보 파일을 만들고 관리해야 합니다. resourcemanager.projects.setIamPolicy
권한이 있는 사용자(예: 프로젝트 소유자)만 서비스 계정을 만들 수 있습니다. Google Cloud 사용자에게 이 권한이 없으면 다른 사람이 대신 서비스 계정을 만들도록 하거나 다른 방법을 사용하여 Cloud SQL 인증 프록시를 인증해야 합니다.
서비스 계정을 만드는 방법 알아보기
서비스 계정에 필요한 권한
서비스 계정을 사용하여 Cloud SQL 인증 프록시 사용자 인증 정보를 제공하는 경우 충분한 권한을 부여해야 합니다. 세분화된 Identity Access and Management(IAM) 역할을 사용하여 Cloud SQL 권한을 관리하는 경우 서비스 계정에 cloudsql.instances.connect
권한이 있는 역할을 부여해야 합니다. 이 권한이 포함된 사전 정의된 Cloud SQL의 역할은 다음과 같습니다.
- Cloud SQL 클라이언트
- Cloud SQL 편집자
- Cloud SQL 관리자
기존 프로젝트 역할(뷰어, 편집자, 소유자)을 사용하는 경우 서비스 계정에 최소한 편집자 역할이 있어야 합니다.
Cloud SQL 인증 프록시를 최신 상태로 유지
Google은 종종 Cloud SQL 인증 프록시의 새 버전을 출시합니다. Cloud SQL 인증 프록시 GitHub 출시 페이지에서 현재 버전을 확인할 수 있습니다. Google 그룹스 Cloud SQL 공지 포럼에서 향후 출시될 프록시 정보를 확인할 수 있습니다.
API 사용량
Cloud SQL 인증 프록시는 Cloud SQL Admin API에 요청을 보냅니다. 이러한 요청은 프로젝트의 API 할당량을 기준으로 합니다.
API 사용량은 Cloud SQL 인증 프록시를 시작할 때 가장 높습니다. 실행 중인 Cloud SQL 인증 프록시는 연결된 인스턴스별로 시간당 2개의 API 호출을 실행합니다.
Cloud SQL 인증 프록시용 특별 사용자 계정 만들기 정보
Cloud SQL 인증 프록시를 사용하여 인스턴스에 연결할 경우 인스턴스에 로그인하는 데 사용되는 사용자 계정을 입력합니다. 이 경우에는 모든 데이터베이스 사용자 계정을 사용할 수 있습니다. 하지만 Cloud SQL 인증 프록시는 Cloud SQL 인증 프록시가 아니면 액세스할 수 없는 호스트 이름으로 항상 연결되기 때문에 Cloud SQL 인증 프록시만 사용할 수 있는 사용자 계정을 만들 수도 있습니다. 이렇게 하면 인스턴스 또는 데이터의 보안을 손상시키지 않고 비밀번호 없이 해당 계정을 지정할 수 있습니다.
Cloud SQL 인증 프록시 연결을 위한 사용자 계정을 만들려면 호스트 이름을 'cloudsqlproxy~[IP_ADDRESS]'
로 지정합니다. IP 주소 와일드 카드를 사용할 수도 있습니다(이 경우 결과는 'cloudsqlproxy~%'
가 됨). 전체 사용자 계정 이름은 다음과 같습니다.
'[USER_NAME]'@'cloudsqlproxy~%'
또는
'[USER_NAME]'@'cloudsqlproxy~[IP_ADDRESS]'
사용자 계정을 만드는 데 도움이 필요한 경우 사용자 만들기 및 관리를 참조하세요. 사용자 계정을 사용한 Cloud SQL 작동 방법에 대한 자세한 내용은 사용자를 참조하세요. MySQL 사용자 계정에 대한 자세한 내용은 MySQL 문서의 최초 MySQL 계정 보안을 참조하세요.
Cloud SQL 인증 프록시 매개변수 및 플래그
Cloud SQL 인증 프록시는 시작될 때 여러 플래그와 매개변수를 받습니다. 이러한 옵션에 따라 Cloud SQL 인증 프록시가 Cloud SQL과 통신하는 데 사용하는 소켓을 만드는 위치와 방법, 인증 방법이 결정됩니다.
Cloud SQL 인증 프록시 옵션에 대한 도움말은 다음 정보를 참조하세요.
- Cloud SQL 인증 프록시 인증 옵션
- Cloud SQL 인증 프록시 호출 예시
- Cloud SQL 인증 프록시 GitHub 페이지
./cloud-sql-proxy --help
로 표시되는 Cloud SQL 인증 프록시 도움말
Cloud SQL 인증 프록시를 통한 FUSE 사용 방법
FUSE는 'Filesystem in User Space(사용자 공간 내 파일 시스템)'를 의미합니다. Cloud SQL 인증 프록시가 호출되는 방식에 따라 필요한 경우 FUSE를 사용하여 Cloud SQL과 연결하는 데 사용되는 소켓을 만들 수 있습니다.
Compute Engine 또는 로컬 개발 환경에서 연결할 때 Cloud SQL 인증 프록시는 FUSE를 사용하여 다음과 같이 Cloud SQL 인스턴스에 액세스합니다.
Cloud SQL 인증 프록시가 '/cloudsql' 디렉터리를 FUSE로 마운트합니다.
프로세스(예:
mysql
)가 $INSTANCE라는 파일 검색을 시도합니다.Cloud SQL 인증 프록시는 요청을 가로채고
/cloudsql/$INSTANCE
가 파일 시스템의 다른 위치에 있는 Unix 소켓을 가리키는 심볼릭 링크임을 반환합니다.프로세스(예:
mysql
)가 이 링크를 따라가 링크 연결 대상인 Unix 소켓을 엽니다.
FUSE 설치
Linux
FUSE를 사용하려면 fusermount
프로그램과 커널 모듈이 필요합니다. /dev/fuse/
파일을 찾아 이 프로그램이 설치되어 있는지 여부를 확인할 수 있습니다. fusermount
가 시스템에 없는 경우 패키지 관리자를 사용하거나 소스에서 컴파일하여 설치할 수 있습니다.
macOS
macOS용 FUSE를 설치합니다.
프로덕션 환경에서 Cloud SQL 인증 프록시 사용
프로덕션 환경에서 Cloud SQL 인증 프록시를 사용하는 경우 Cloud SQL 인증 프록시가 애플리케이션에 필요한 가용성을 제공하는 몇 가지 단계를 수행할 수 있습니다.
Cloud SQL 인증 프록시가 영구 서비스로 실행되는지 확인
Cloud SQL 인증 프록시 프로세스가 중지되면 이를 통한 기존 연결이 모두 끊어지고 애플리케이션에서 Cloud SQL 인증 프록시를 사용하여 Cloud SQL 인스턴스로의 연결을 더 이상 만들 수 없게 됩니다. 이를 방지하려면 Cloud SQL 인증 프록시를 영구 서비스로 실행하여 어떤 이유로든 Cloud SQL 인증 프록시가 종료되어도 자동으로 다시 시작되도록 해야 합니다. 이 작업은 systemd
, upstart
또는 supervisor
와 같은 서비스를 사용하여 수행할 수 있습니다. Windows 운영체제의 경우 Cloud SQL 인증 프록시를 Windows 서비스로 실행합니다. 일반적으로 Cloud SQL 인증 프록시에서 업타임 요구사항이 애플리케이션 프로세스와 동일한지 확인합니다.
애플리케이션에 필요한 Cloud SQL 인증 프록시 사본 수
모든 애플리케이션 프로세스에 프록시 프로세스를 만들 필요는 없습니다. 여러 애플리케이션 프로세스가 Cloud SQL 인증 프록시 프로세스 하나를 공유할 수 있기 때문입니다. 워크스테이션당 또는 가상 머신당 하나의 Cloud SQL 인증 프록시 클라이언트 프로세스를 실행합니다.
가상 머신에 자동 확장을 사용하는 경우 Cloud SQL 인증 프록시가 가상 머신 구성에 포함되어 있는지 확인하여 새 가상 머신을 시작할 때마다 자체 Cloud SQL 프록시 프로세스를 보유하도록 합니다.
연결을 제한하거나 풀링하여 애플리케이션에 필요한 연결 수를 관리할 수 있습니다. Cloud SQL 인증 프록시는 새 연결 속도 또는 영구 연결 수에 제한을 두지 않습니다.
Cloud SQL 인증 프록시 출력 줄이기
Cloud SQL 인증 프록시 로그의 크기를 줄여야 하는 경우 Cloud SQL 인증 프록시를 시작할 때 --quiet
를 설정하면 됩니다. 하지만 이렇게 하면 연결 문제를 진단할 때 Cloud SQL 인증 프록시 출력의 적합성이 떨어집니다.
장애 조치가 Cloud SQL 인증 프록시에 미치는 영향
고가용성으로 구성된 인스턴스에서 Cloud SQL 인증 프록시를 실행할 때 장애 조치가 발생하는 경우 Cloud SQL 인증 프록시를 통한 연결은 IP를 통한 연결과 동일한 방식으로 영향을 받습니다. 즉, 기존 연결이 모두 손실되기 때문에 애플리케이션은 새 연결을 설정해야 합니다. 하지만 수동으로 설정할 필요는 없습니다. 애플리케이션은 이전과 동일한 연결 문자열을 계속 사용할 수 있습니다.
Cloud SQL 인증 프록시 Docker 이미지를 최신 상태로 유지
Cloud SQL 인증 프록시 Docker 이미지는 특정 버전의 Cloud SQL 인증 프록시를 기반으로 합니다. Cloud SQL 인증 프록시의 새 버전이 출시되면 새 버전의 Cloud SQL 인증 프록시 Docker 이미지를 가져와서 환경을 최신 상태로 유지합니다. Cloud SQL 인증 프록시 GitHub 출시 페이지를 확인하여 현재 버전의 Cloud SQL 인증 프록시를 볼 수 있습니다.
Cloud SQL 인증 프록시 사용을 적용하는 방법
ConnectorEnforcement를 사용하여 Cloud SQL 인스턴스 연결에서 Cloud SQL 인증 프록시 사용을 적용할 수 있습니다. 커넥터 강제 적용을 사용하면 데이터베이스 직접 연결이 거부됩니다.
커넥터 강제 적용을 사용하려면 instances
API의 ConnectorEnforcement
필드를 사용합니다.
자세한 내용은 인스턴스 수정을 참조하세요.
Cloud SQL 프록시 연산자 정보
Cloud SQL 프록시 연산자는 GKE 클러스터의 워크로드를 Cloud SQL 데이터베이스에 자동으로 연결하는 오픈소스 Kubernetes 연산자입니다. Cloud SQL 인증 프록시 연산자는 특정 워크로드의 Cloud SQL 인증 프록시 구성을 지정하는 커스텀 리소스 AuthProxyWorkload를 활용합니다. Cloud SQL 인증 프록시 연산자가 이 리소스를 읽고 필요한 구성이 있는 Cloud SQL 인증 프록시 컨테이너를 적절한 워크로드에 추가합니다.
GKE 클러스터에 연산자를 설치하고 워크로드 및 Cloud SQL 인스턴스를 구성하면 Cloud SQL 인증 프록시 연산자가 Cloud SQL 인증 프록시를 자동으로 구성하고 GKE 워크로드를 Cloud SQL 인스턴스에 연결합니다.
Cloud SQL 인증 프록시 연산자는 Cloud SQL 인증 프록시 상태도 확인합니다. Cloud SQL 인증 프록시를 연결할 수 없는 경우 Cloud SQL 인증 프록시 연산자가 디버깅 정보를 출력하고 일반적인 구성 문제를 해결하고 복구하는 방법을 안내합니다.
자세한 내용은 Cloud SQL 프록시 연산자를 사용하여 연결을 참조하세요.