Cloud SQL 인증 프록시 정보

이 페이지에서는 Cloud SQL 인증 프록시에 대한 기본적인 정보를 소개하고 프록시 옵션에 대해 설명합니다.

Cloud SQL 인증 프록시 사용에 대한 단계별 안내를 보려면 사용 중인 환경에 해당하는 링크를 따르세요.

App Engine 표준에서 Cloud SQL에 연결하거나 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 인증 프록시는 128비트 AES 암호화를 지원하는 TLS 1.2를 사용하여 데이터베이스와 주고받는 트래픽을 자동으로 암호화합니다. SSL 인증서는 클라이언트 및 서버 ID를 확인하는 데 사용됩니다.
  • 연결 관리 간소화: Cloud SQL 인증 프록시가 Cloud SQL 인증을 처리하므로 고정 IP 주소를 제공할 필요가 없습니다.

Cloud SQL 인증 프록시는 새로운 연결 경로를 제공하지 않고, 기존 IP 연결을 사용합니다. 비공개 IP를 사용하여 Cloud SQL 인스턴스에 연결하려면 Cloud SQL 인증 프록시가 인스턴스와 동일한 VPC 네트워크에 액세스할 수 있는 리소스에 있어야 합니다.

Cloud SQL 인증 프록시 작동 방식

Cloud SQL 인증 프록시는 로컬 환경에서 로컬 클라이언트를 실행하여 작동합니다. 애플리케이션은 데이터베이스에서 사용하는 표준 데이터베이스 프로토콜을 사용하여 Cloud SQL 인증 프록시와 통신합니다. Cloud SQL 인증 프록시는 보안 터널을 사용하여 서버에서 실행 중인 컴패니언 프로세스와 통신합니다.

프록시는 모든 포트에서 리슨할 수 있지만 포트 3307 Cloud SQL 인스턴스로 나가는 연결만 만듭니다. 아웃바운드 방화벽 정책이 있는 경우 Cloud SQL 인스턴스의 IP에서 포트 3307에 연결할 수 있는지 확인합니다.

다음 다이어그램은 Cloud SQL 인증 프록시가 Cloud SQL에 연결되는 방식을 보여줍니다.

클라이언트 소프트웨어에서 SQL 인스턴스로 연결하는 Cloud SQL 인증 프록시 다이어그램

Cloud SQL 인증 프록시 사용 시 요구사항

Cloud SQL 인증 프록시를 사용하려면 다음 요구사항을 충족해야 합니다.

  • Cloud SQL Admin API를 사용 설정해야 합니다.
  • Cloud SQL 인증 프록시에 Google Cloud 인증 사용자 인증 정보를 제공해야 합니다.
  • Cloud SQL 인증 프록시에 유효한 데이터베이스 사용자 계정과 비밀번호를 제공해야 합니다.
  • 인스턴스는 공개 IPv4 주소가 있거나 비공개 IP를 사용하도록 설정되어야 합니다.

    공개 IP 주소는 외부 주소에서 액세스 가능하지 않아도 됩니다. 따라서 공개 IP 주소를 승인된 네트워크 주소로 추가할 필요가 없습니다.

Cloud SQL 인증 프록시 시작 옵션

Cloud SQL 인증 프록시를 시작할 때 프록시에 다음 정보를 제공합니다.

  • 연결을 설정할 Cloud SQL 인스턴스
  • Cloud SQL로 전송될 애플리케이션의 데이터를 리슨할 위치
  • Cloud SQL에 애플리케이션을 인증하는 데 사용할 사용자 인증 정보가 있는 위치
  • 필요한 경우 사용할 IP 주소 유형

Cloud SQL 인증 프록시 시작 옵션을 사용해 리슨할 위치를 TCP 포트 또는 Unix 소켓으로 결정합니다. Unix 소켓에서 수신 대기하는 경우 선택한 위치(일반적으로 /cloudsql/ 디렉터리)에 소켓이 생성됩니다. TCP의 경우 Cloud SQL 인증 프록시는 기본적으로 localhost에서 리슨합니다.

시작 옵션의 전체 목록을 보려면 인수 --helpcloud_sql_proxy 실행 파일을 실행합니다.

로컬 환경의 모든 위치에 Cloud SQL 인증 프록시를 설치할 수 있습니다. Cloud SQL 인증 프록시 바이너리의 위치는 애플리케이션의 데이터 리슨 위치에 영향을 미치지 않습니다.

인증에 서비스 계정 사용

Cloud SQL 인증 프록시에 연결하려면 인증이 필요합니다. 서비스 계정을 이 용도로 활용하면 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 인스턴스 지정 옵션

연결할 인스턴스를 Cloud SQL 인증 프록시에 알리는 방법은 여러 가지가 있습니다. 명시적인 방법도 있고, 암시적인 방법도 있습니다. 일부 구성에서는 Cloud SQL 인증 프록시가 연결 요청을 기반으로 연결하기 때문에 연결하려는 인스턴스를 Cloud SQL 인증 프록시에 미리 알릴 필요가 없습니다.

인스턴스 지정 옵션은 운영체제 및 환경에 따라 달라집니다.

옵션 장점 주의사항 및 요구사항 Linux/macOS
(Unix 소켓)
자바 Windows 참고
FUSE
(사용자 공간 내 파일 시스템)
연결 요청을 기반으로 동적 소켓을 생성합니다. 인스턴스가 변경될 때마다 프록시를 다시 시작하지 않아도 됩니다. FUSE가 설치되어 있어야 합니다. 지원됨 아니요 아니요 -fuse 플래그를 사용합니다.
자동 인스턴스 검색 인스턴스를 지정할 필요가 없습니다. 기본 프로젝트의 모든 인스턴스에 소켓이 생성됩니다. Cloud SQL 인증 프록시 API 사용량이 증가합니다. Cloud SDK를 설치하여 인증받아야 하며 기본 프로젝트가 설정되어 있어야 합니다. 새 인스턴스를 추가하려면 Cloud SQL 인증 프록시를 다시 시작해야 합니다. 지원됨 아니요 아니요 프로덕션 인스턴스에는 권장되지 않습니다.
프로젝트 검색 인스턴스를 지정할 필요가 없습니다. 지정된 프로젝트의 모든 인스턴스에 소켓이 생성됩니다. Cloud SQL 인증 프록시 API 사용량이 증가합니다. Cloud SDK를 설치하여 인증받아야 합니다. 새 인스턴스를 추가하려면 Cloud SQL 인증 프록시를 다시 시작해야 합니다. 지원됨 아니요 아니요 -projects 매개변수를 사용합니다. 프로덕션 인스턴스에는 권장되지 않습니다.
Cloud SQL 인증 프록시 호출에 지정된 인스턴스 인스턴스 목록이 알려져 있고 정적입니다. 새 인스턴스를 추가하려면 Cloud SQL 인증 프록시를 다시 시작해야 합니다. 지원됨 TCP 소켓에서 지원됨 TCP 소켓에서 지원됨 -instances 매개변수를 사용합니다. 여러 인스턴스의 경우 공백 없이 쉼표로 구분된 목록을 사용합니다. 자세히 알아보기
Compute Engine 메타데이터를 사용하여 지정된 인스턴스 Cloud SQL 인증 프록시를 다시 시작하지 않고 메타데이터 값을 변경하여 인스턴스 목록을 업데이트할 수 있습니다. Compute Engine에서만 사용할 수 있습니다. 지원됨 TCP 소켓에서 지원됨 TCP 소켓에서 지원됨 -instances_metadata 플래그를 사용합니다. 자세히 알아보기
샘플 호출 및 연결 문자열을 참조하세요.

Cloud SQL 인증 프록시를 최신 상태로 유지하기

Google은 종종 Cloud SQL 인증 프록시의 새 버전을 출시합니다. Cloud SQL 인증 프록시 GitHub 출시 페이지에서 현재 버전을 확인할 수 있습니다. Google 그룹스 Cloud SQL 공지 포럼에서 향후 출시될 프록시 정보를 확인할 수 있습니다.

API 사용량

Cloud SQL 인증 프록시는 Cloud SQL Admin API에 요청을 보냅니다. 이러한 요청은 프로젝트의 API 할당량을 기준으로 합니다.

API 사용량은 Cloud SQL 인증 프록시를 시작할 때 가장 높습니다. 특히 자동 인스턴스 검색 또는 -projects 매개변수를 사용하는 경우에도 마찬가지입니다. 실행 중인 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 인증 프록시를 통한 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 인증 프록시를 시작할 때 -verbose=false를 설정하면 됩니다. 하지만 이렇게 하면 연결 문제를 진단할 때 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 인증 프록시를 볼 수 있습니다.

다음 단계