이 페이지에서는 고객 관리 CA (Certificate Authority) 옵션을 Cloud SQL 인스턴스의 서버 CA 모드로 사용하는 방법을 설명합니다.
개요
고객 관리 CA 옵션을 사용하면 Certificate Authority Service (CA 서비스)에서 자체 CA 풀과 CA를 설정할 수 있습니다. 고객 관리 CA 옵션을 선택하면 CA 계층 구조를 설정하고 Cloud SQL 인스턴스의 CA 인증서 순환을 관리할 수 있습니다.
고객 관리형 CA 옵션으로 Cloud SQL 인스턴스를 만들려면 먼저 인스턴스와 동일한 리전에 CA 풀을 만들고 CA 서비스를 사용하여 해당 풀에 CA를 하나 이상 만듭니다. CA는 루트 CA 또는 하위 CA일 수 있습니다. CA Service에서 하위 CA를 만든 후 하위 CA를 외부 루트 CA에 연결할 수도 있습니다. 인스턴스를 만들 때 CA 풀을 지정합니다. 요청은 CA 풀을 사용할 권한이 있는 프로젝트별 서비스 계정에 위임됩니다. 서비스 계정이 풀에서 CA를 요청하면 Cloud SQL은 이 CA를 사용하여 인스턴스의 서버 인증서에 서명합니다.
Cloud SQL 인스턴스의 서버 CA 모드에는 다음 세 가지 옵션이 있습니다.
- 내부 인스턴스별 CA
- Google 관리형 공유 CA
- 고객 관리 CA
규정 준수를 위해 자체 CA를 관리해야 하는 경우 고객 관리 CA 옵션을 선택할 수 있습니다. 다른 옵션 사용에 관한 자세한 내용은 SSL/TLS 인증서로 승인을 참고하세요.
워크플로
고객 관리 CA 옵션을 사용하려면 다음과 같은 워크플로를 따르세요.
- Cloud SQL 프로젝트의 서비스 계정을 만듭니다.
- CA 서비스에서 CA 풀을 만듭니다.
- CA 서비스에서 CA를 만듭니다.
- CA를 사용하는 Cloud SQL 인스턴스를 만듭니다. 인스턴스를 만들 때 생성한 CA 풀로 서버 인증서에 서명할 권한을 서비스 계정에 위임합니다.
시작하기 전에
고객 관리 CA 옵션을 사용하기 전에 다음 요구사항을 충족하는지 확인하세요.
필요한 역할
Cloud SQL용 서비스 계정을 만드는 데 필요한 권한을 얻으려면 관리자에게 각 개별 프로젝트에 대한 서비스 계정 생성자 (roles/iam.serviceAccountCreator
) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
CA 풀과 CA를 만드는 데 필요한 권한을 얻으려면 관리자에게 CA 서비스에 대한 CA 서비스 작업 관리자(roles/privateca.caManager
) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 상세 설명은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
프로젝트별 서비스 계정 만들기
Cloud SQL 인스턴스를 만들려는 프로젝트에서 Cloud SQL 인스턴스의 서버 인증서를 만들고 서명하는 요청을 처리할 전용 서비스 계정을 만듭니다.
gcloud
다음 명령어를 실행하여 Cloud SQL 프로젝트의 서비스 계정을 만듭니다.
gcloud beta services identity create \ --service=sqladmin.googleapis.com \ --project=PROJECT_ID
PROJECT_ID
를 Cloud SQL 인스턴스를 만들려는 프로젝트의 ID로 바꿉니다.
이 명령어는 프로젝트에 service-PROJECT_ID@gcp-sa-cloud-sql.iam.gserviceaccount.com
라는 서비스 계정을 만듭니다. CA 서비스 인증서 요청자 서비스 계정 이름을 기록합니다.
CA 풀 만들기
CA 서비스에서 CA 풀을 만듭니다.
Cloud SQL 인스턴스를 만들려는 동일한 프로젝트에서 CA 풀을 만들거나 다른 프로젝트에서 CA 풀을 만들 수 있습니다. 하지만 다른 프로젝트에서 CA 풀을 만들면 VPC 서비스 제어로 인해 조직 정책에 따라 Cloud SQL 인스턴스를 만들 수 없게 될 수 있습니다. 이 문제를 해결하려면 CA 풀 및 CA를 호스팅하는 프로젝트와 Cloud SQL을 호스팅하는 프로젝트가 동일한 서비스 경계에 속하는지 확인합니다. 자세한 내용은 서비스 경계 및 서비스 경계 관리를 참고하세요.
CA 풀을 만들려면 CA 풀 만들기의 안내를 따르세요. 다음과 같은 필수 구성 설정을 사용하여 CA 풀의 기본값을 수락할 수 있습니다.
- Cloud SQL 인스턴스를 만들 동일한 리전에 CA 풀을 만듭니다. Cloud SQL에서 지원되는 리전 목록은 리전을 참고하세요.
- 구성 기반 인증서 요청을 허용합니다.
- 주체 대체 이름 (SAN)에 DNS 이름을 허용합니다. CA 풀의 ID 제약조건을 구성할 때 DNS 이름의 형식에 Cloud SQL에서 SAN에 추가할 수 있는 항목과 충돌할 수 있는 제한사항을 설정하지 마세요.
서비스 계정에 CA 풀에 대한 액세스 권한 제공
서비스 계정에 Cloud SQL 인스턴스의 인증서를 요청하고 서명할 권한이 있는지 확인하려면 만든 CA 풀의 서비스 계정에 다음 역할을 부여합니다.
roles/privateca.certificateRequester
gcloud
gcloud privateca pools
명령어를 실행하여 서비스 계정에 CA 풀에 대한 액세스 권한을 부여합니다.
gcloud privateca pools add-iam-policy-binding CA_POOL_ID \ --project=PROJECT_ID \ --location=REGION \ --member serviceAccount:SERVICE_ACCOUNT_NAME \ --role=roles/privateca.certificateRequester
다음을 바꿉니다.
CA_POOL_ID
를 생성한 CA 풀의 ID로 바꿉니다.PROJECT_ID
를 Cloud SQL 인스턴스를 만들려는 프로젝트의 ID로 바꿉니다.REGION
을 CA 풀을 만든 리전으로 바꿉니다.SERVICE_ACCOUNT_NAME
을 이전에 프로젝트에 만들었던 CA 서비스 인증서 요청자 서비스 계정의 이름으로 바꿉니다.
CA 풀에 CA 만들기
만든 CA 풀에 CA를 하나 이상 만듭니다.
루트 CA 또는 하위 CA를 만들 수 있습니다.
루트 CA를 만들려면 루트 CA 만들기의 안내를 따르세요. CA의 기본값을 그대로 사용할 수 있지만 CA를 사용 설정됨 상태로 만들어야 합니다.
CA 키 크기 및 알고리즘을 구성할 때는 키 크기와 알고리즘을 선택할 수 있습니다. Cloud SQL은 EC P-384 (SHA-384) 타원 곡선 키를 사용하여 서버 인증서를 생성하지만 CA 암호화 키는 일치하지 않아도 됩니다.하위 CA를 만드는 경우 먼저 루트 CA를 만들고 구성해야 합니다.
CA 서비스에서 하위 CA를 만들려면 하위 CA 만들기의 안내를 따르세요.
외부 루트 CA에서 하위 CA를 만들려면 외부 루트 CA에서 하위 CA 만들기의 안내를 따르세요.
Cloud SQL 인스턴스 만들기
고객 관리 CA 옵션을 사용하는 Cloud SQL 인스턴스를 만들려면 다음 단계를 따르세요.
콘솔
미리보기 기간에는 Google Cloud 콘솔을 사용하여 고객 관리 CA 옵션을 사용하는 인스턴스를 만들 수 없습니다.
대신 gcloud beta sql instances create
명령어를 사용하세요.
gcloud
gcloud beta sql instances create "INSTANCE_NAME" \ --project=PROJECT_ID \ --region=REGION \ --server-ca-mode=CUSTOMER_MANAGED_CAS_CA \ --server-ca-pool=projects/PROJECT_ID_CAS/locations/REGION/caPools/CA_POOL_ID
다음을 바꿉니다.
INSTANCE_NAME
을 만들려는 Cloud SQL 인스턴스의 이름으로 바꿉니다.PROJECT_ID
를 Cloud SQL 인스턴스를 만들려는 프로젝트의 ID로 바꿉니다.PROJECT_ID_CAS
를 CA_POOL_ID를 만든 프로젝트의 ID로 바꿉니다. 이 프로젝트는 Cloud SQL 인스턴스를 만들려는 위치와 동일하거나 다를 수 있습니다.REGION
을 CA 풀을 만든 리전으로 바꿉니다. 인스턴스는 CA 풀과 동일한 리전에 만들어야 합니다.CA_POOL_ID
를 생성한 CA 풀의 ID로 바꿉니다.
REST
고객 관리 CA 옵션을 사용하는 Cloud SQL 인스턴스를 만들려면 instances.insert
메서드를 사용하고 다음 속성을 지정합니다.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
PROJECT_ID
Cloud SQL 인스턴스를 만들려는 프로젝트의 ID입니다.PROJECT_ID_CAS
CA_POOL_ID를 만든 프로젝트의 ID입니다. 이 프로젝트는 Cloud SQL 인스턴스를 만들려는 위치와 동일하거나 다를 수 있습니다.INSTANCE_ID
만들려는 Cloud SQL 인스턴스의 이름입니다.REGION
은 CA 풀을 만든 리전입니다. 인스턴스는 CA 풀과 동일한 리전에 만들어야 합니다.CA_POOL_ID
를 생성한 CA 풀의 ID로 바꿉니다.
HTTP 메서드 및 URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
JSON 요청 본문:
{
"name":"INSTANCE_ID",
"region":"REGION
",
"databaseVersion": "DATABASE_VERSION",
"settings":{
"ipConfiguration":
{
"serverCaPool": "projects/PROJECT_ID_CAS/locations/REGION/caPools/CA_POOL_ID",
"serverCaMode": "CUSTOMER_MANAGED_CAS_CA"
}
}
}
요청을 보내려면 다음 옵션 중 하나를 펼칩니다.
다음과 비슷한 JSON 응답이 표시됩니다.
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances", "status": "PENDING", "user": "user@example.com", "insertTime": "2025-01-16T02:32:12.281Z", "operationType": "UPDATE", "name": "OPERATION_ID", "targetId": "INSTANCE_ID", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID_CSQL/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
문제 해결
문제 | 문제 해결 |
---|---|
다음과 같은 오류 메시지가 표시됩니다. PERMISSION_DENIED: Permission .
|
Cloud SQL 프로젝트용으로 만든 서비스 계정에 roles/privateca.certificateRequester 역할을 부여했는지 확인합니다.
자세한 내용은 서비스 계정에 CA 풀에 대한 액세스 권한 제공을 참고하세요.
|
다음과 같은 오류 메시지가 표시됩니다. PERMISSION_DENIED: Request is prohibited by organization's policy vpcServiceControlsUniqueIdentifier VPC_SERVICE_CONTROLS_UNIQUE_IDENTIFIER.
|
CA 서비스 CA 풀 및 CA를 호스팅하는 프로젝트와 Cloud SQL을 호스팅하는 프로젝트가 동일한 서비스 경계에 속하도록 VPC 서비스 제어를 구성해야 합니다. 자세한 내용은 서비스 경계 및 서비스 경계 관리를 참고하세요. |
다음
|
CA 풀 및 CA의 구성 설정을 확인합니다. CA 풀 만들기 및 CA 풀에 CA 만들기에 나열된 모든 요구사항을 충족해야 합니다. |
다음과 같은 오류 메시지가 표시됩니다.
|
CA 서비스의 할당량 문제를 나타냅니다. 프로젝트에서 CA 서비스의 할당량을 확인합니다. Cloud SQL 외부의 CA 풀에서 요청을 사용하고 있는지 확인합니다. 자세한 내용은 할당량 및 한도를 참조하세요. |
다음과 같은 오류 메시지가 표시됩니다. NOT FOUND: parent resource CA_POOL_ID not found.
|
Cloud SQL 인스턴스를 만들 때 지정한 CA 풀의 프로젝트 ID, 위치, 이름을 확인합니다. 오타가 없는지 확인합니다. |
다음과 같은 오류 메시지가 표시됩니다. FAILED_PRECONDITION: There are no enabled CAs in the CaPool.
Please ensure that there is at least one enabled Certificate Authority to
issue a certificate.
|
Cloud SQL 인스턴스를 만들 때 지정한 CA 풀에 CA를 하나 이상 만들었으며 CA가 사용 설정된 상태인지 확인합니다. |
다음과 같은 오류 메시지가 표시됩니다. FAILED_PRECONDITION: Per-Product Per-Project Service Account (P4 SA) SERVICE_ACCOUNT_NAME not found for project PROJECT_ID.
|
Cloud SQL 프로젝트의 서비스 계정을 만들었는지 확인합니다. 자세한 내용은 프로젝트별 서비스 계정 만들기를 참고하세요. |
다음과 같은 오류 메시지가 표시됩니다. INVALID ARGUMENT: Invalid format for server CA pool.
|
CA 풀을 올바른 형식으로 지정했는지 확인합니다. projects/PROJECT_ID/locations/REGION/caPools/CA_POOL_ID
|
다음과 같은 오류 메시지가 표시됩니다. INVALID ARGUMENT: The instance's server CA pool must be in the same region as the instance.
|
CA 풀이 만들려는 Cloud SQL 인스턴스와 동일한 리전에 있는지 확인합니다. |