이 페이지에서는 고객 관리 암호화 키(CMEK)로 새 보안 비밀을 만들고 CMEK 키를 사용하도록 기존 보안 비밀을 업데이트하는 방법을 설명합니다.
개요
CMEK는 리전 보안 비밀로 저장된 민감한 정보에 대한 보안 및 제어 기능을 추가합니다. CMEK를 사용하면 다음 목표를 달성할 수 있습니다.
- 보안 비밀을 보호할 때 사용하는 암호화 키를 완전히 제어할 수 있습니다.
- 더 엄격한 보안 정책, 감사 기능, 규정 준수 기능이 있는 자체 키 관리 시스템을 사용할 수 있습니다.
- 키를 자체 인프라 내에 보관하여 데이터 주권 규정을 준수합니다.
- 암호화 키에 대한 세분화된 액세스 제어를 정의하여 키를 사용할 수 있는 사용자와 용도를 지정합니다.
제한사항:
리전 보안 비밀에 CMEK를 사용하는 데에는 다음과 같은 제한사항이 있습니다.
- Cloud Key Management Service Autokey(미리보기)는 리전 보안 비밀에 지원되지 않습니다.
- CMEK 키의 위치는 리전 보안 비밀의 위치와 동일해야 합니다.
시작하기 전에
- Secret Manager API를 사용 설정합니다(프로젝트당 한 번).
- 프로젝트, 폴더 또는 조직에 Secret Manager 관리자 역할(
roles/secretmanager.admin
)을 할당합니다. 다음 방법 중 하나를 사용하여 Secret Manager API에 인증합니다.
- 클라이언트 라이브러리를 사용하여 Secret Manager API에 액세스하는 경우 애플리케이션 기본 사용자 인증 정보를 설정합니다.
- Google Cloud CLI를 사용하여 Secret Manager API에 액세스하는 경우 Google Cloud CLI 사용자 인증 정보를 사용하여 인증합니다.
- REST 호출을 인증하려면 Google Cloud CLI 사용자 인증 정보 또는 애플리케이션 기본 사용자 인증 정보를 사용합니다.
CMEK를 사용 설정하고 이 단계에 필요한 CMEK 키와 키링을 만들려면 Secret Manager에 고객 관리 암호화 키 사용 설정을 참고하세요.
CMEK 암호화로 리전 보안 비밀 만들기
CMEK 암호화로 새 보안 비밀을 만들려면 다음 방법 중 하나를 사용합니다.
콘솔
-
Google Cloud 콘솔에서 Secret Manager 페이지로 이동합니다.
-
Secret Manager 페이지에서 리전 보안 비밀 탭을 클릭한 후 리전 보안 비밀 만들기를 클릭합니다.
-
리전 보안 비밀 만들기 페이지에서 이름 필드에 보안 비밀 이름을 입력합니다. 보안 비밀 이름은 대문자, 소문자, 숫자, 하이픈, 밑줄을 포함할 수 있습니다. 이름의 최대 허용 길이는 255자입니다.
-
보안 비밀의 값을 입력합니다(예:
abcd1234
). 보안 비밀 값은 어떤 형식도 가능하지만 64KiB보다 크지 않아야 합니다. 파일 업로드 옵션을 사용하여 보안 비밀 값이 포함된 텍스트 파일을 업로드할 수도 있습니다. 이 작업은 보안 비밀 버전을 자동으로 만듭니다. -
리전 목록에서 리전 보안 비밀을 저장하려는 위치를 선택합니다.
-
암호화에서 고객 관리 암호화 키(CMEK)를 선택한 다음 암호화 키 목록에서 CMEK 키를 선택합니다. CMEK 키가 지정된 위치에 있고 Secret Manager 프로젝트에 키를 사용하는 데 필요한 권한이 있는지 확인합니다.
-
보안 비밀 만들기를 클릭합니다.
gcloud
아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- SECRET_ID: 보안 비밀의 ID 또는 보안 비밀의 정규화된 식별자입니다.
- LOCATION: 보안 비밀을 만들려는 Google Cloud 위치입니다.
- CMEK_KEY: Cloud Key Management Service에서 비밀을 보호할 특정 CMEK 키의 정규화된 경로입니다.
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud secrets create SECRET_ID --location=LOCATION \ --regional-kms-key-name=CMEK_KEY
Windows(PowerShell)
gcloud secrets create SECRET_ID --location=LOCATION ` --regional-kms-key-name=CMEK_KEY
Windows(cmd.exe)
gcloud secrets create SECRET_ID --location=LOCATION ^ --regional-kms-key-name=CMEK_KEY
REST
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- LOCATION: 보안 비밀을 만들려는 Google Cloud 위치입니다.
- PROJECT_ID: Google Cloud 프로젝트 ID입니다.
- SECRET_ID: 보안 비밀의 ID 또는 보안 비밀의 정규화된 식별자입니다.
- KMS_PROJECT_ID: Cloud Key Management Service를 실행하는 Google Cloud 프로젝트의 ID입니다.
- KMS_KEY_LOCATION: Cloud KMS 키의 위치 이름입니다. 보안 비밀과 동일한 위치여야 합니다.
- YOUR_KEY_RING: CMEK 키를 저장한 Cloud KMS의 키링 이름입니다.
- YOUR_CMEK_KEY: Cloud KMS에서 선택한 키링 내에 만든 특정 고객 관리 암호화 키(CMEK)입니다.
HTTP 메서드 및 URL:
POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID
JSON 요청 본문:
{"customer_managed_encryption": {"kms_key_name": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"}}
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID"
PowerShell
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-03-27T13:30:07.437859Z", "etag": "\"1614a467b60423\"" "customerManagedEncryption": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key" } }
CMEK를 사용하도록 기존 보안 비밀 업데이트
CMEK를 사용하도록 기존 비밀을 업데이트하려면 다음 방법 중 하나를 사용합니다.
콘솔
-
Google Cloud 콘솔에서 Secret Manager 페이지로 이동합니다.
-
Secret Manager 페이지에서 리전 보안 비밀 탭을 클릭합니다.
-
보안 비밀을 수정하려면 다음 방법 중 하나를 사용합니다.
-
목록에서 보안 비밀을 찾고 해당 보안 비밀과 연결된
작업 메뉴를 클릭합니다. 작업 메뉴에서 수정을 클릭합니다. -
보안 비밀 이름을 클릭하여 보안 비밀 세부정보 페이지로 이동합니다. 보안 비밀 세부정보 페이지에서
보안 비밀 수정을 클릭합니다.
-
-
보안 비밀 수정 페이지에서 암호화 섹션으로 이동합니다.
-
암호화에서 고객 관리 암호화 키(CMEK)를 선택한 다음 암호화 키 목록에서 CMEK 키를 선택합니다. CMEK 키가 지정된 위치에 있고 Secret Manager 프로젝트에 키를 사용하는 데 필요한 권한이 있는지 확인합니다.
-
보안 비밀 업데이트를 클릭합니다.
gcloud
아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- SECRET_ID: 보안 비밀의 ID 또는 보안 비밀의 정규화된 식별자입니다.
- LOCATION: 보안 비밀의 Google Cloud 위치입니다.
- CMEK_KEY: Cloud Key Management Service에서 비밀을 보호할 특정 CMEK 키의 정규화된 경로입니다.
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION \ --regional-kms-key-name=CMEK_KEY
Windows(PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --regional-kms-key-name=CMEK_KEY
Windows(cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --regional-kms-key-name=CMEK_KEY
REST
요청 데이터를 사용하기 전에 다음을 바꿉니다.
- LOCATION: 보안 비밀의 Google Cloud 위치입니다.
- PROJECT_ID: Google Cloud 프로젝트 ID입니다.
- SECRET_ID: 보안 비밀의 ID 또는 보안 비밀의 정규화된 식별자입니다.
- KMS_PROJECT_ID: Cloud Key Management Service를 실행하는 Google Cloud 프로젝트의 ID입니다.
- KMS_KEY_LOCATION: Cloud KMS 키의 위치입니다. 보안 비밀과 동일한 위치여야 합니다.
- YOUR_KEY_RING: CMEK 키를 저장한 Cloud KMS의 키링 이름입니다.
- YOUR_CMEK_KEY: Cloud KMS에서 선택한 키링 내에 만든 특정 고객 관리 암호화 키(CMEK)입니다.
HTTP 메서드 및 URL:
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=customer_managed_encryption
JSON 요청 본문:
{"customer_managed_encryption": {"kms_key_name": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/YOUR_KEY_RING/cryptoKeys/YOUR_CMEK_KEY"}}"
요청을 보내려면 다음 옵션 중 하나를 선택합니다.
curl
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=customer_managed_encryption"
PowerShell
요청 본문을 request.json
파일에 저장하고 다음 명령어를 실행합니다.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=customer_managed_encryption" | Select-Object -Expand Content
다음과 비슷한 JSON 응답이 표시됩니다.
{ "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID", "createTime": "2024-03-27T13:30:07.437859Z", "etag": "\"16211daf5f29c5\"" "customerManagedEncryption": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/secret-manager-cmek/cryptoKeys/my-cmek-key" } }