SSL/TLS 인증서 구성

이 페이지에서는 SSL/TLS를 사용하도록 인스턴스를 구성하는 방법을 설명합니다. Cloud SQL에서 SSL/TLS을 사용하는 방법을 자세히 알아보세요.

개요

Cloud SQL은 인스턴스를 만들 때 서버 인증서(server-ca.pem)를 자동으로 만듭니다.

SSL/TLS를 사용하려면 클라이언트 인증서를 만들고 PostgreSQL 클라이언트 호스트 머신에 다운로드해야 합니다.

SSL/TLS를 사용하여 연결하려면 모든 연결이 SSL/TLS를 사용하도록 설정하는 것이 좋습니다.

SSL/TLS 필요

SSL/TLS 필요가 사용 설정되어 있으면 Cloud SQL 프록시나 SSL/TLS 인증서를 사용하여 Cloud SQL 인스턴스에 연결할 수 있습니다. SSL/TLS가 필요하지 않으면 유효한 인증서가 없는 클라이언트를 연결할 수 있습니다.

SSL/TLS를 필요를 사용 설정하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.
    Cloud SQL 인스턴스 페이지로 이동
  2. 인스턴스 이름을 클릭하여 인스턴스 세부정보 페이지를 엽니다.
  3. 왼쪽 탐색창에서 연결 링크를 클릭합니다.
  4. SSL 연결 섹션까지 아래로 스크롤합니다.
  5. SSL 연결만 허용을 클릭합니다.

gcloud

gcloud sql instances patch [INSTANCE_NAME] --require-ssl
  

REST v1beta4

  1. 아래의 요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID

    HTTP 메서드 및 URL:

    PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

    JSON 요청 본문:

    {
      "settings": {
        "ipConfiguration": {"requireSsl": "true"}
      }
    }
    

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 유사한 JSON 응답이 표시됩니다.

서버 인증서

인스턴스를 만들면 Cloud SQL이 서버 인증서를 자동으로 만듭니다. 서버 인증서가 유효하면 개발자가 직접 서버 인증서를 관리할 필요가 없습니다. 그러나 인증서 만료일은 10년입니다. 만료일 이후에는 인증서가 더 이상 유효하지 않으며 클라이언트가 이 인증서를 사용하여 인스턴스에 대한 보안 연결을 설정할 수 없습니다. 서버 인증서 만료가 가까워지면 알림이 발송됩니다.

Console에서 서버 인증서가 생성 시기 및 만료 시기와 같은 서버 인증서 관련 정보를 가져오거나 수동으로 인증서를 새로 만들 수 있습니다.

Console

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 인스턴스 이름을 클릭하여 인스턴스 세부정보 페이지를 엽니다.
  3. 왼쪽 탐색창에서 연결 링크를 클릭합니다.
  4. SSL 서버 인증서 구성 섹션까지 아래로 스크롤합니다.

    표에서 서버 인증서의 만료일을 확인할 수 있습니다.

클라이언트 인증서

새 클라이언트 인증서 만들기

인스턴스당 최대 10개의 클라이언트 인증서를 만들 수 있습니다. 인증서의 비공개 키를 분실한 경우 새 키를 만들어야 합니다. 비공개 키는 복구할 수 없기 때문입니다. 기본적으로 클라이언트 인증서의 만료일은 10년입니다. 클라이언트 인증서 만료가 가까워지면 알림이 발송되지 않습니다.

Console

  1. Google Cloud Console의 Cloud SQL 인스턴스 페이지로 이동합니다.

    Cloud SQL 인스턴스 페이지로 이동

  2. 인스턴스 이름을 클릭하여 인스턴스 세부정보 페이지를 엽니다.
  3. 왼쪽 탐색창에서 연결 링크를 클릭합니다.
  4. SSL 클라이언트 인증서 구성 섹션까지 아래로 스크롤합니다.
  5. 클라이언트 인증서 만들기를 클릭합니다.
  6. 클라이언트 인증서 만들기 대화상자에서 고유 이름을 추가합니다.
  7. 만들기를 클릭합니다.
  8. 새 SSL 인증서가 생성됨 대화상자의 첫 번째 섹션에서 client-key.pem 다운로드를 클릭하여 비공개 키를 client-key.pem 파일에 다운로드합니다.
  9. 두 번째 섹션에서 client-cert.pem 다운로드를 클릭하여 클라이언트 인증서를 client-cert.pem 파일에 다운로드합니다.
  10. 세 번째 섹션에서 server-ca.pem 다운로드를 클릭하여 서버 인증서를 server-ca.pem 파일에 다운로드합니다.
  11. 닫기를 클릭합니다.

gcloud

  1. ssl client-certs create 명령어를 사용하여 클라이언트 인증서를 만듭니다.

    gcloud sql ssl client-certs create [CERT_NAME] client-key.pem --instance=[INSTANCE_NAME]
    
  2. ssl client-certs describe명령어를 사용하여 방금 만든 인증서의 공개 키를 검색하여 client-cert.pem 파일에 복사합니다.

    gcloud sql ssl client-certs describe [CERT_NAME] --instance=[INSTANCE_NAME] --format="value(cert)" > client-cert.pem
    
  3. instances describe 명령어를 사용하여 서버 인증서를 server-ca.pem 파일에 복사합니다.

    gcloud sql instances describe [INSTANCE_NAME]  --format="value(serverCaCert.cert)" > server-ca.pem
    

REST v1beta4

  1. SSL/TLS 인증서를 만들어 이 인스턴스의 고유한 이름을 지정합니다.

    아래의 요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • project-id: 프로젝트 ID
    • instance-id: 인스턴스 ID
    • client-cert-name: 클라이언트 인증서 이름

    HTTP 메서드 및 URL:

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/sslCerts

    JSON 요청 본문:

    {
      "commonName" : "client-cert-name"
    }
    

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    다음과 유사한 JSON 응답이 표시됩니다.

  2. 다음과 같이 응답에서 따옴표 안에 있는 모든 인증서 콘텐츠(따옴표는 제외)를 로컬 파일로 복사합니다.
    1. serverCaCert.certserver-ca.pem에 복사합니다.
    2. clientCert.certclient-cert.pem에 복사합니다.
    3. certPrivateKeyclient-key.pem에 복사합니다.

여기까지 실행하면 다음을 보유하게 됩니다.

  • server-ca.pem으로 저장된 서버 인증서
  • client-cert.pem으로 저장된 클라이언트 공개 키 인증서
  • client-key.pem으로 저장된 클라이언트 비공개 키
연결에 사용할 도구에 따라 이 세 가지 항목이 서로 다른 방식으로 지정됩니다. 예를 들어 psql 명령줄 클라이언트를 사용하여 연결할 경우 이 세 개 파일은 psql 연결 문자열의 sslrootcert, sslcert, sslkey 매개변수 값입니다. psql 클라이언트와 SSL/TLS를 사용한 연결 예시는 psql 클라이언트로 연결을 참조하세요.

다음 단계

  • PostgreSQL의 SSL/TLS 사용 방법 자세히 알아보기