리전 보안 비밀 만들기

이 페이지에서는 리전 보안 비밀을 만들고 리전 보안 비밀에 고객 관리 암호화 키(CMEK)를 사용 설정하는 방법을 설명합니다. 리전 보안 비밀은 특정 위치 내에서 저장 및 관리되는 보안 비밀(비밀번호 또는 API 키와 같은 민감한 정보)을 나타냅니다.

시작하기 전에

  1. Secret Manager API를 사용 설정합니다(프로젝트당 한 번).
  2. 프로젝트, 폴더 또는 조직에 Secret Manager 관리자 역할(roles/secretmanager.admin)을 할당합니다.
  3. 다음 방법 중 하나를 사용하여 Secret Manager API에 인증합니다.

    • 클라이언트 라이브러리를 사용하여 Secret Manager API에 액세스하는 경우 애플리케이션 기본 사용자 인증 정보를 설정합니다.
    • Google Cloud CLI를 사용하여 Secret Manager API에 액세스하는 경우 Google Cloud CLI 사용자 인증 정보를 사용하여 인증합니다.
    • REST 호출을 인증하려면 Google Cloud CLI 사용자 인증 정보 또는 애플리케이션 기본 사용자 인증 정보를 사용합니다.

리전 엔드포인트를 사용하도록 Secret Manager 구성

이 섹션에서는 Secret Manager 리소스에 액세스하도록 리전 엔드포인트를 구성하는 방법을 설명합니다. 리전 엔드포인트는 영향을 받는 리소스가 엔드포인트에서 지정된 위치에 있는 경우에만 요청 처리를 허용하는 요청 엔드포인트입니다. 리전 엔드포인트를 사용하면 데이터 상주 및 데이터 주권 요구사항을 준수하는 방식으로 워크로드를 실행할 수 있습니다.

리전 엔드포인트는 다음 형식을 사용합니다.

SERVICE_NAME.LOCATION.rep.googleapis.com

리전 엔드포인트를 사용하려면 Secret Manager 서비스에 액세스하는 방법에 따라 리전 엔드포인트 주소로 구성을 업데이트해야 합니다.

gcloud

리전 엔드포인트를 사용하도록 Google Cloud CLI를 구성하려면 다음 단계를 완료합니다.

  1. Google Cloud CLI 402.0.0 이상을 사용하는지 확인합니다.

  2. api_endpoint_overrides/secretmanager 속성을 사용할 리전 엔드포인트로 설정합니다.

    gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.LOCATION.rep.googleapis.com/

    LOCATION을 지원되는 Google Cloud 위치의 이름(예: me-central2)으로 바꿉니다.

REST

API를 사용하여 Secret Manager 서비스에 연결하려면 일반 API 엔드포인트 URL(https://secretmanager.googleapis.com/v1/)을 사용하려는 특정 지역 엔드포인트로 바꿉니다. 리전 엔드포인트는 다음 형식을 사용합니다.

https://secretmanager.LOCATION.rep.googleapis.com/v1/

LOCATION을 지원되는 Google Cloud 위치의 이름(예: me-central2)으로 바꿉니다.

지원되는 위치를 보려면 Secret Manager 위치를 참고하세요.

리전 보안 비밀 만들기

Google Cloud 콘솔을 통해 리전 보안 비밀을 만들 수 있습니다. 또는 Secret Manager API 또는 Google Cloud CLI를 사용할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 Secret Manager 페이지로 이동합니다.

    Secret Manager로 이동

  2. 리전 보안 비밀 탭을 클릭한 다음 리전 보안 비밀 만들기를 클릭합니다.

  3. 리전 보안 비밀 만들기 페이지에서 이름 필드에 보안 비밀 이름을 입력합니다. 보안 비밀 이름은 대문자, 소문자, 숫자, 하이픈, 밑줄을 포함할 수 있습니다. 이름의 최대 허용 길이는 255자입니다.

  4. 보안 비밀 값을 입력합니다. 보안 비밀 값은 모든 형식일 수 있지만 64KiB보다 작아야 합니다. 파일 업로드 옵션을 사용하여 보안 비밀 값이 포함된 텍스트 파일을 업로드할 수도 있습니다. 이 작업은 보안 비밀 버전을 자동으로 만듭니다.

  5. 리전 목록에서 위치를 선택합니다.

  6. 보안 비밀 만들기를 클릭합니다.

gcloud

리전 보안 비밀을 만들려면 gcloud secrets create 명령어를 사용합니다.

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

  • SECRET_ID: 보안 비밀의 ID 또는 보안 비밀의 정규화된 식별자
  • LOCATION: 보안 비밀 데이터를 저장할 Google Cloud 위치

다음 명령어를 실행합니다.

Linux, macOS 또는 Cloud Shell

gcloud secrets create SECRET_ID \
    --location=LOCATION

Windows(PowerShell)

gcloud secrets create SECRET_ID `
    --location=LOCATION

Windows(cmd.exe)

gcloud secrets create SECRET_ID ^
    --location=LOCATION

응답에 새로 생성된 리전 보안 비밀이 포함됩니다.

REST

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

  • LOCATION: 보안 비밀 데이터를 저장할 Google Cloud 위치
  • PROJECT_ID: Google Cloud 프로젝트 ID
  • SECRET_ID: 보안 비밀의 ID 또는 보안 비밀의 정규화된 식별자

HTTP 메서드 및 URL:

POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID

JSON 요청 본문:

{}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

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/my-project/locations/me-central2/secrets/my-drz-secret",
  "createTime": "2024-03-25T08:24:13.153705Z",
  "etag": "\"161477e6071da9\""
}

CMEK 암호화로 리전 보안 비밀 만들기

CMEK는 리전 보안 비밀로 저장된 민감한 정보에 대한 보안 및 제어 기능을 추가합니다. CMEK를 사용하면 다음 목표를 달성할 수 있습니다.

  • 보안 비밀을 보호할 때 사용하는 암호화 키를 완전히 제어할 수 있습니다.
  • 더 엄격한 보안 정책, 감사 기능, 규정 준수 기능이 있는 자체 키 관리 시스템을 사용할 수 있습니다.
  • 키를 자체 인프라 내에 보관하여 데이터 주권 규정을 준수합니다.
  • 암호화 키에 대한 세분화된 액세스 제어를 정의하여 키를 사용할 수 있는 사용자와 용도를 지정합니다.

CMEK를 사용 설정하고 이 단계에 필요한 CMEK 키와 키링을 만들려면 Secret Manager에 고객 관리 암호화 키 사용 설정을 참고하세요.

콘솔

  1. Google Cloud 콘솔에서 Secret Manager 페이지로 이동합니다.

    Secret Manager로 이동

  2. 리전 보안 비밀 탭을 클릭한 다음 리전 보안 비밀 만들기를 클릭합니다.

  3. 보안 비밀 이름과 값을 입력합니다.

  4. 리전 목록에서 위치를 선택합니다.

  5. 암호화에서 고객 관리 암호화 키(CMEK)를 선택한 다음 암호화 키 목록에서 CMEK 키를 선택합니다. CMEK 키가 지정된 위치에 있고 Secret Manager 프로젝트에 이를 사용하는 데 필요한 권한이 있는지 확인합니다.

  6. 보안 비밀 만들기를 클릭합니다.

gcloud

리전 보안 비밀을 만들려면 gcloud secrets create 명령어를 사용합니다.

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

  • 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: 키링이 포함된 Google Cloud 프로젝트 ID
  • KEY_RING: 키가 포함된 Cloud Key Management Service의 키링 이름
  • YOUR_CMEK_KEY: Cloud Key Management Service에서 선택한 키링 내에 만든 특정 고객 관리 암호화 키(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/LOCATION/keyRings/KEY_RING/cryptoKeys/MY_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/1034382619294/locations/me-central2/secrets/my-drz-secret",
  "createTime": "2024-03-27T13:30:07.437859Z",
  "etag": "\"1614a467b60423\"",
  "customerManagedEncryption": {
    "kmsKeyName": "projects/my-project/locations/me-central2/keyRings/test_keyring_to_check_rep/cryptoKeys/cmek-key-2"
  }
}

리전별 리소스에 올바른 문법 사용

Secret Manager API 또는 gcloud CLI를 사용하여 리전 보안 비밀과 버전에 액세스할 때는 API를 호출하는 동안 올바른 리소스 문법을 사용해야 합니다. 다음을 예시로 사용하세요.

  • 리전 보안 비밀의 문법

    projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_NAME

  • 리전 보안 비밀 버전의 문법

    projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_NAME/versions/VERSION_ID

다음 값을 제공합니다.

  • LOCATION: 보안 비밀이 있는 Google Cloud 위치
  • PROJECT_ID: 보안 비밀이 포함된 Google Cloud 프로젝트 ID
  • SECRET_NAME: 보안 비밀의 이름
  • VERSION_ID: 특정 보안 비밀 버전과 관련된 버전 번호 또는 별칭

리전 보안 비밀 관리

기본 전역 보안 비밀과 동일한 방식으로 리전 보안 비밀 및 그 버전과 상호작용하고 모든 관리 작업 (예: 만료 설정, 순환, 라벨 추가, 주석)을 수행합니다. 자주 사용되는 작업은 다음 목록을 참고하세요.

다음 단계