GCP - Cloud SQL 인증 프록시 설정

Hyunjun Jang·2021년 12월 11일
0

Cloud SQL 데이터베이스에 연결하기 위해서는 구성 방법에 따라 Cloud SQL 인스턴스에는 공개 IP 주소(인터넷을 사용하여 Google Cloud 외부에서 액세스 가능) 또는 비공개 IP 주소(Virtual Private Cloud(VPC) 네트워크를 통해서만 액세스 가능)가 있다.

또한 Cloud SQL는 인스턴스에 연결할 수 있는 사용자를 제어하는 여러 가지 설정을 제공하는 Cloud SQL 인증 프록시을 제공한다.

Cloud SQL 인증 프록시 기능

  • 보안 연결
    Cloud SQL 인증 프록시는 128비트 AES 암호화를 지원하는 TLS를 사용하여 데이터베이스와 주고받는 트래픽을 자동으로 암호화한다. SSL 인증서는 클라이언트와 서버 ID를 확인하는 데 사용된다.
  • 연결 관리 간소화
    Cloud SQL 인증 프록시가 Cloud SQL 인증을 처리하므로 고정 IP 주소를 제공할 필요가 없다.

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 인증 프록시는 모든 포트에서 연결할 수 있지만 포트 3307 Cloud SQL 인스턴스로 나가는 연결만 만든다.

  • 클라이언트 머신에 아웃바운드 방화벽 정책이 있는 경우 Cloud SQL 인스턴스의 IP에서 포트 3307로 나가는 연결이 가능한지 확인한다.

아래의 다이어그램은 Cloud SQL 인증 프록시가 Cloud SQL에 연결되는 방식을 보여준다.

Cloud SQL 인증 프록시 다운로드 및 설정 방법

여기 에서 Cloud SQL 인증 프록시 연결에 대한 자세한 가이드 문서를 내용을 참고 할수 있다. (DB 엔진, OS별 설치 방법이 다름)

OS: Mac, DB엔진 : Mysql 기준

  1. 프록시 sql 다운로드 및 실행 권한 설정
### 프록시 다운로드
curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64

### 실행 권한 설정
chmod +x cloud_sql_proxy
  1. 프록시 sql 실행
  • INSTANCE_CONNECTION_NAME : GCP 생성한 CloudSQL 인스턴스명 입력
  • PORT : 인스턴스 포트 번호 입력
  ./cloud_sql_proxy -instances=<INSTANCE_CONNECTION_NAME>=tcp:0.0.0.0:<PORT>
  1. 접속 확인
    프록시 sql을 실행을 시키고 DBMS 툴 또는 커맨드로 localhost:3307로 접속하여 정상적으로 DB 연결 되는지 확인한다.

Reference

https://cloud.google.com/sql/docs/mysql/sql-proxy?authuser=3&_ga=2.230581978.-718089954.1636694180&_gac=1.253276539.1638776008.Cj0KCQiA47GNBhDrARIsAKfZ2rBuPeQhliVkne002cSrkyGn7WqZgstxJ36_UrA0CzBa1ZTMv20XQ3gaArrFEALw_wcB#macos-64-bit
https://cloud.google.com/sql/docs/mysql/connect-admin-proxy?hl=ko

profile
Let's grow together😊

0개의 댓글