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 유형을 선택할 수 있습니다.

인증 기관 (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은 Certificate Authority Service (CA 서비스)에서 루트 CA 및 하위 서버 CA를 호스팅하고 관리합니다. Google Cloud또한 Cloud SQL은 루트 CA 및 하위 서버 CA의 순환을 처리하고 다운로드할 수 있는 공개 CA 인증서 번들 링크를 제공합니다. 공유 CA를 선택하려면 인스턴스를 만들serverCaMode 설정 (Cloud SQL Admin API)에 GOOGLE_MANAGED_CAS_CA 또는 --server-ca-mode 플래그 (gcloud CLI)를 지정합니다.

    공유 CA 옵션은 미리보기에 있습니다.

  • 고객 관리 CA: 이 옵션을 사용하면 자체 CA 계층 구조를 만들고 관리할 수 있습니다. 자체 CA 및 인증서를 관리하려면 이 옵션을 선택합니다. 공유 CA를 선택하려면 CA 서비스에서 CA 풀과 CA를 만들어야 합니다. Cloud SQL에서 인스턴스를 만들 때 serverCaMode 설정 (Cloud SQL Admin API) 또는 --server-ca-mode 플래그 (gcloud CLI)의 CA 풀과 CUSTOMER_MANAGED_CAS_CA를 지정합니다.

    고객 관리 CA 옵션은 미리보기 버전입니다.

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

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

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

* 고객 관리 CA 옵션의 경우 CA 서비스에서 CA 인증서의 기본 유효 기간은 10년입니다. CA 인증서의 유효 기간을 다르게 구성할 수 있습니다. CA의 유효 기간이 짧을수록 CA를 더 자주 순환해야 할 수 있으며 1년 미만의 유효 기간은 서버 인증서의 유효 기간에 영향을 미칠 수 있습니다. 자세한 내용은 CA 순환 관리를 참고하세요.

** 고객 관리 CA 옵션의 경우 서버 인증서의 기본 유효 기간은 1년입니다. 그러나 CA 인증서의 유효 기간을 1년 미만으로 구성하면 서버 인증서의 유효 기간이 더 짧아집니다. CA 인증서 생성 시 유효 기간을 구성하는 방법에 관한 자세한 내용은 CA 인증서 설정루트 CA 만들기를 참고하세요.

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

인스턴스별 CA 계층 구조는 gcloud CLI, Cloud SQL Admin API 또는 Terraform을 사용하여 인스턴스를 만들 때의 기본 서버 CA 모드 구성입니다.

Cloud SQL은 인스턴스를 만들 때 각 인스턴스에 대해 새 자체 서명 서버 CA를 만듭니다. 이 설정을 사용하려면 인스턴스를 만들 때 serverCaModeGOOGLE_MANAGED_INTERNAL_CA로 구성합니다. Cloud SQL Admin API 또는 gcloud CLI를 사용하여 serverCaMode 구성 설정을 지정하지 않거나 Google Cloud 콘솔에서 Google 내부 인증 기관 옵션을 선택할 수 있습니다.

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

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

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

공유 CA 계층 구조는 Google Cloud 콘솔을 사용하여 인스턴스를 만들 때의 기본 서버 CA 모드 구성입니다.

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

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

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

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

고객 관리 CA

이 서버 CA 모드를 사용하면 CA 서비스에서 자체 CA 계층 구조를 설정할 수 있습니다.

Cloud SQL에서 고객 관리 CA 옵션을 사용하려면 Cloud SQL 인스턴스와 동일한 리전에 CA 풀을 만듭니다. 그런 다음 CA를 하나 이상 만듭니다. Cloud SQL 인스턴스를 만들 때 serverCaPool 필드에 CA 풀의 ID를 지정하고 serverCaMode 필드를 CUSTOMER_MANAGED_CAS_CA 값으로 구성합니다. CA 서비스는 CA 풀에서 CA를 제공하고 이 CA를 사용하여 인스턴스의 서버 인증서를 발급합니다.

CA Service에서 CA를 만들 때는 사용 사례에 따라 루트 CA 또는 하위 CA를 만들 수 있습니다. 예를 들어 루트 CA 계층 구조를 설정하거나 외부 CA에 연결하려는 경우 하위 CA를 만들 수 있습니다.

자체 CA 및 인증서를 관리하려는 경우에만 고객 관리 CA 옵션을 선택합니다. 자세한 내용은 고객 관리 CA 사용을 참고하세요. 고객 관리 CA 옵션은 미리보기 버전입니다.

서버 인증서 순환 작동 방식

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

인스턴스별 CA, 공유 CA 또는 고객 관리 CA 계층 구조를 사용하는 인스턴스의 경우 Cloud SQL 인스턴스의 서버 인증서가 만료되기 약 3개월 전에 프로젝트 소유자는 해당 인스턴스에서 인증서 순환 프로세스가 시작되었음을 알리는 이메일을 Cloud SQL로부터 받게 됩니다. 이 이메일은 인스턴스 이름을 제공하며 Cloud SQL이 프로젝트에 새 서버 인증서를 추가했음을 알립니다. 기존 서버 인증서는 계속 정상적으로 작동합니다. 사실상 이 기간 동안에는 인스턴스에 서버 인증서가 두 개 있습니다.

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

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

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

SSL 인증서 만료

인스턴스별 CA를 사용하는 Cloud SQL 인스턴스(serverCaModeGOOGLE_MANAGED_INTERNAL_CA로 설정됨)의 경우 SSL 인증서의 만료 기간은 10년입니다. 인증서가 만료되기 전에 서버 CA 인증서 순환을 실행합니다.

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

고객 관리 CA (serverCaModeCUSTOMER_MANAGED_CAS_CA로 설정됨)(미리보기)를 사용하는 경우 만든 CA 풀에서 CA를 순환하여 CA 인증서 순환을 실행할 수 있습니다. CA의 만료 기간은 일반적으로 10년이지만 CA Service에서 CA의 유효 기간을 더 짧게 구성할 수 있습니다.

CA를 순환하려면 CA 서비스에서 CA 순환 프로세스를 사용하세요. 자세한 내용은 CA 순환 관리를 참고하세요.

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

인스턴스별 CA, 공유 CA 또는 고객 관리 CA 서버 모드를 사용하는지와 관계없이 언제든지 Cloud SQL 인스턴스의 SSL 구성을 재설정할 수 있습니다.

다음 단계