본문 바로가기

Cloud-computing/GCP

[GCP]CloudSQL Server-Client Certificate Configuration

CloudSQL (mysql) 인증서 구성

서버 인증서

  • 자동 생성, 만료일 10년
  • 서버 인증서 순환
    • 인증서 만료에 관한 알림(3개월전에 메일)을 받았거나 순환을 시작한 경우 진행
    • 순서
      • 서버 인증서 순환
      • 클라이언트에 서버 인증서 교체

클라이언트 인증서: 인스턴스당 10개로 제한

참고

CloudSQL Instance SSL/TLS 적용

 

gcloud sql instances patch INSTANCE_NAME \
--require-ssl

  • SSL 연결허용 시 인스턴스 재시작 필요

서버 인증서 만들기

인증서 정보 가져오기

gcloud beta sql ssl server-ca-certs list \
--instance=INSTANCE_NAME

서버 인증서 만들기

gcloud beta sql ssl server-ca-certs create \
--instance=INSTANCE_NAME

PEM 다운로드

gcloud beta sql ssl server-ca-certs list \
--format="value(cert)" \
--instance=INSTANCE_NAME > \
FILE_PATH/FILE_NAME.pem

클라이언트 인증서 없이 접속

  • 불가

 

클라이언트 인증서 만들기

  • IAM Role: Cloud SQL Admin
  • 만료일 10년
  • 알림 발송 없음

client-key.pem

gcloud sql ssl client-certs create CERT_NAME client-key.pem \
--instance=INSTANCE_NAME

client-cert.pem

gcloud sql ssl client-certs describe CERT_NAME \
--instance=INSTANCE_NAME \
--format="value(cert)" > client-cert.pem

server-ca.pem

  • server-ca.pem으로 저장된 서버 인증서
  • client-cert.pem으로 저장된 클라이언트 공개 키 인증서
  • client-key.pem으로 저장된 클라이언트 비공개 키

client로 Cloudsql ssl/tls 접속

mysql \
--ssl-ca=server-ca.pem \
--ssl-cert=client-cert.pem \
--ssl-key=client-key.pem \
--host=INSTANCE_IP --ssl-mode=verify_ca --user=root --password