SSL/TLS 인증서로 승인

이 페이지에서는 애플리케이션에서 보안 소켓 레이어(SSL)(현재 전송 계층 보안(TLS))를 사용하여 Cloud SQL 인스턴스에 대한 연결을 암호화하는 방법을 설명합니다.

개요

Cloud SQL은 SSL/TLS 프로토콜을 사용하여 인스턴스에 연결하도록 지원합니다. SSL/TLS 연결은 클라이언트와 Cloud SQL 인스턴스의 데이터베이스 간에 전송 중인 데이터를 암호화하여 보안 레이어를 제공합니다. 원하는 경우 SSL/TLS 연결은 Cloud SQL 인스턴스에 설치된 서버 인증서를 확인하여 서버 ID 확인을 실행하고 클라이언트에 설치된 클라이언트 인증서를 확인하여 클라이언트 ID 확인을 실행할 수 있습니다.

서버 인증서

인스턴스를 만들면 Cloud SQL에서 인증 기관 (CA)에서 서명한 서버 인증서를 자동으로 생성하고 설치합니다. CA 인증서를 클라이언트 호스트 머신에 다운로드하여 이를 사용하여 CA 및 서버 Cloud SQL ID를 확인할 수 있습니다. 원하는 경우 Cloud SQL에서 서버 인증서에 서명하는 데 사용하는 CA 유형을 선택할 수 있습니다.

클라이언트 인증서

원하는 경우 상호 인증(서버 및 클라이언트 ID 확인)을 위해 클라이언트 인증서와 키를 클라이언트의 호스트 머신에 만들고 다운로드할 수 있습니다. Cloud SQL에서 클라이언트 인증서에 서명하는 데 사용하는 CA 유형을 선택할 수 없습니다.

SSL/TLS를 사용하여 연결

클라이언트에서 Cloud SQL 인스턴스에 연결할 때는 직접 연결뿐만 아니라 Cloud SQL 인증 프록시 또는 Cloud SQL 언어 커넥터를 사용하는 연결에도 SSL/TLS를 사용할 수 있습니다.

  • 직접 연결의 경우 Cloud SQL의 SSL 모드 설정을 사용하여 SSL/TLS 암호화를 적용하는 것이 좋습니다. 원하는 경우 클라이언트 인증서 확인을 적용할 수도 있습니다. 자세한 내용은 SSL/TLS 암호화 적용을 참고하세요.

  • Cloud SQL 인증 프록시 또는 Cloud SQL 언어 커넥터를 사용하는 연결의 경우 서버 CA 인증서와 클라이언트 인증서를 다운로드할 필요 없이 클라이언트 및 서버 ID 확인과 함께 SSL/TLS로 자동 암호화됩니다.

Cloud SQL 연결 옵션에 대한 자세한 내용은 Cloud SQL 연결 정보를 참고하세요.

클라이언트 측 SSL/TLS 구성에 관한 자세한 내용은 데이터베이스 엔진 문서를 참고하세요.

인증 기관 (CA) 계층 구조

이 섹션에서는 Cloud SQL 인스턴스에 선택할 수 있는 두 가지 유형의 서버 인증 기관 (CA)을 설명합니다. 다음과 같은 옵션을 선택할 수 있습니다.

  • 인스턴스별 CA: 이 옵션을 사용하면 각 Cloud SQL 인스턴스에 전용된 내부 CA가 해당 인스턴스의 서버 인증서에 서명합니다. Cloud SQL은 이러한 CA를 만들고 관리합니다. 인스턴스별 CA를 선택하려면 인스턴스를 만들 때 serverCaMode 설정 (Cloud SQL Admin API) 또는 --server-ca-mode 플래그 (gcloud CLI)에 GOOGLE_MANAGED_INTERNAL_CA를 지정합니다. 설정이나 플래그를 지정하지 않으면 이 옵션이 인스턴스의 기본값입니다.
  • 공유 CA: 이 옵션을 사용하면 루트 CA 및 하위 서버 CA로 구성된 CA 계층 구조가 사용됩니다. 리전의 하위 서버 CA는 서버 인증서에 서명하고 리전의 인스턴스 간에 공유됩니다. Cloud SQL은 Google Cloud Certificate Authority Service (CA 서비스)에서 루트 CA 및 하위 서버 CA를 호스팅하고 관리합니다. 또한 Cloud SQL은 루트 CA 및 하위 서버 CA의 순환을 처리하고 다운로드할 수 있는 공개 CA 인증서 번들 링크를 제공합니다. 공유 CA를 선택하려면 인스턴스를 만들serverCaMode 설정 (Cloud SQL Admin API)에 GOOGLE_MANAGED_CAS_CA 또는 --server-ca-mode 플래그 (gcloud CLI)를 지정합니다.

인스턴스를 만든 후 gcloud sql instances describe 명령어를 사용하여 Cloud SQL 인스턴스에 구성된 CA 계층 구조를 볼 수 있습니다. 자세한 내용은 인스턴스 정보 보기를 참고하세요.

다음 표에서는 두 가지 CA 계층 구조 옵션을 비교합니다.

기능 인스턴스별 CA 공유 CA
CA 구조 인스턴스별로 별도의 CA 동일한 리전의 인스턴스 간에 공유되는 루트 CA 및 하위 CA
암호화 속성 SHA256 알고리즘이 있는 RSA 2048비트 키 SHA384 알고리즘을 사용하는 384비트 키가 있는 타원 곡선 디지털 서명 알고리즘 (ECDSA)
CA 유효 기간 10년 루트 CA의 경우 25년, 하위 CA의 경우 10년
서버 인증서 유효 기간 10년 1년
사용자가 시작한 CA 순환? 아니요. CA 순환은 Cloud SQL에서 관리합니다.
사용자가 시작한 서버 인증서 순환?
TLS 연결을 위한 CA 신뢰 앵커 고유한 인스턴스별 CA는 해당 인스턴스의 신뢰 앵커입니다. 루트 CA 및 하위 CA는 특정 리전의 모든 인스턴스에 대한 신뢰 앵커입니다.
서버 ID 확인 각 인스턴스에는 고유한 CA가 있으므로 CA를 확인하면 서버 ID가 확인됩니다. 서버 CA는 인스턴스 간에 공유되므로 서버 ID 확인을 위해서는 CA 확인과 함께 호스트 이름 확인이 필요합니다.
서버 인증서의 주체 대체 이름 (SAN) 필드 SAN 필드에는 Private Service Connect로 사용 설정된 인스턴스의 호스트 이름 (인스턴스의 DNS 이름)만 포함됩니다. 호스트 이름은 서버 ID 확인에 사용할 수 있습니다. DNS 이름을 호스트 이름으로 사용하여 Cloud SQL 인스턴스에 연결하는 경우 DNS 확인을 설정해야 합니다. SAN 필드에는 모든 유형의 인스턴스에 대한 호스트 이름 (인스턴스의 DNS 이름)이 포함됩니다. 호스트 이름은 서버 ID 확인에 사용할 수 있습니다. DNS 이름을 호스트 이름으로 사용하여 Cloud SQL 인스턴스에 연결하는 경우 DNS 확인을 설정해야 합니다.

Cloud SQL에서 호스팅하는 인스턴스별 CA

이 CA 계층 구조는 기본 서버 CA 모드 구성입니다.

Cloud SQL은 인스턴스를 만들 때 각 인스턴스에 대해 새 자체 서명 서버 CA를 만듭니다. 이 설정을 사용하려면 serverCaModeGOOGLE_MANAGED_INTERNAL_CA로 구성하거나 인스턴스를 만들 때 구성 설정을 지정하지 않습니다.

다음 다이어그램은 인스턴스별 CA 계층 구조를 보여줍니다.

인스턴스별 내부 CA 계층 구조의 다이어그램

CA 서비스에서 호스팅하는 공유 CA

이 서버 CA 모드는 각 리전의 루트 CA와 하위 서버 CA로 구성됩니다. 종속 서버 CA는 서버 인증서를 발급하며 리전의 인스턴스 간에 공유됩니다. Cloud SQL은 공유 지역 서버 CA의 순환을 처리하고 CA 인증서 번들을 다운로드할 수 있는 공개 링크를 제공합니다.

발급 CA가 동일한 리전의 인스턴스 간에 공유되는 서버 CA 계층 구조를 사용하도록 인스턴스를 구성할 수 있습니다. 이 설정을 사용하려면 인스턴스를 만들 때 serverCaModeGOOGLE_MANAGED_CAS_CA로 구성합니다.

다음 다이어그램은 공유 CA 계층 구조를 보여줍니다.

공유 CA 계층 구조 다이어그램

서버 인증서 순환 작동 방식

Cloud SQL은 이전 인증서가 만료되기 전에 새 인증서가 원활하게 교체될 수 있도록 서버 인증서를 순환하는 방법을 제공합니다.

사용할 회전 명령어는 인스턴스별 CA에서 발급한 서버 인증서를 사용하는지 또는 공유 CA에서 발급한 서버 인증서를 사용하는지에 따라 다릅니다.

Cloud SQL 인스턴스의 서버 인증서가 만료되기 약 3개월 전에 Cloud SQL에서 프로젝트 소유자에게 해당 인스턴스에서 인증서 순환 프로세스가 시작되었음을 알리는 이메일을 발송합니다. 이 이메일은 인스턴스 이름을 제공하며 Cloud SQL이 프로젝트에 새 서버 인증서를 추가했음을 알립니다. 기존 서버 인증서는 계속 정상적으로 작동합니다. 사실상 이 기간 동안에는 인스턴스에 서버 인증서가 두 개 있습니다.

현재 인증서가 만료되기 전에 새 server-ca.pem 파일을 다운로드합니다. 이 파일에는 현재의 서버 인증서와 새 서버 인증서 모두에 대한 인증서 정보가 있습니다. PostgreSQL 클라이언트를 업데이트하여 새 파일을 사용하려면 모든 PostgreSQL 클라이언트 호스트 머신에 파일을 복사하여 기존 파일을 바꿉니다.

모든 PostgreSQL 클라이언트가 업데이트되면 새 서버 인증서로 순환하라는 순환 명령어 (인스턴스별 CA의 경우) 또는 순환 명령어 (공유 CA의 경우)를 Cloud SQL 인스턴스에 전송합니다. 이렇게 하면 기존 서버 인증서는 더 이상 인식되지 않고 새 서버 인증서만 사용할 수 있습니다.

클라이언트 인증서는 서버 인증서 순환의 영향을 받지 않습니다.

SSL 인증서 만료

기본적으로 Cloud SQL 인스턴스는 기본 설정인 GOOGLE_MANAGED_INTERNAL_CAserverCaMode로 사용합니다. SSL 인증서의 유효 기간은 10년입니다. 인증서가 만료되기 전에 CA 순환을 실행합니다.

공유 CA를 사용하는 인스턴스(serverCaModeGOOGLE_MANAGED_CAS_CA로 설정됨)의 경우 서버 인증서의 만료 기간은 1년입니다. 만료 전에 SSL 인증서 순환을 실행합니다. 루트 인증 기관(CA) 인증서의 만료 기간은 25년이고 하위 공유 CA 인증서의 만료 기간은 10년입니다. Cloud SQL에서 회전을 처리합니다.

클라이언트가 서버 인증서의 CA를 확인하거나 호스트 이름을 확인하도록 구성된 경우 만료된 서버 인증서가 있는 Cloud SQL 인스턴스에 대한 클라이언트의 연결이 실패합니다. 클라이언트 연결이 중단되지 않도록 하려면 인증서가 만료되기 전에 서버 인증서를 순환하세요.

인스턴스별 CA를 사용하든 공유 CA 서버 모드를 사용하든 언제든지 Cloud SQL 인스턴스의 SSL 구성을 재설정할 수 있습니다.

다음 단계