고객 관리 암호화 키(CMEK)

기본적으로 Dialogflow CX는 저장 중인 고객 콘텐츠를 암호화합니다. Dialogflow CX는 사용자의 추가 작업 없이 암호화를 처리합니다. 이 옵션을 Google 기본 암호화 라고 합니다. Google 기본 암호화는 Google이 자체 암호화된 데이터에 사용하는 것과 동일한 강화된 키 관리 시스템을 사용합니다. 이러한 시스템에는 엄격한 키 액세스 제어 및 감사가 포함됩니다.

암호화 키를 제어하려면 Dialogflow CX를 포함한 CMEK 통합 서비스와 함께 Cloud KMS에서 고객 관리 암호화 키 (CMEK)를 사용하면 됩니다. Cloud KMS 키를 사용하면 보호 수준, 위치, 순환 일정, 사용 및 액세스 권한, 암호화 경계 를 관리할 수 있습니다. Cloud KMS를 사용하면 감사 로그를 보고 키 수명 주기를 제어할 수도 있습니다. Google에서 데이터를 보호하는 대칭 키 암호화 키 (KEK)를 소유하고 관리하는 대신 사용자가 Cloud KMS에서 이러한 키를 제어하고 관리할 수 있습니다.

CMEK로 리소스를 설정한 후 Dialogflow CX 리소스에 액세스하는 환경은 Google 기본 암호화를 사용하는 것과 비슷합니다. 암호화 옵션에 대한 자세한 내용은 고객 관리 암호화 키 (CMEK)를 참조하세요.

보호된 데이터

CMEK를 사용하여 모든 Dialogflow CX 에이전트 저장 데이터를 보호할 수 있습니다.

제한사항

  • 키 순환은 지원되지만 데이터 재암호화는 지원되지 않습니다. 즉, 이전에 암호화된 데이터를 새 키 버전으로 다시 암호화하는 것은 지원되지 않습니다.
  • 다음 리전은 지원되지 않습니다.
    • global
  • 프로젝트 위치당 하나의 키를 사용해야 합니다.
  • CMEK가 사용 설정된 에이전트를 복원하려면 Cloud Storage 옵션을 선택해야 합니다.
  • CMEK가 통합되지 않은 프로젝트의 기존 리소스는 소급하여 통합된 CMEK일 수 없습니다. 대신 리소스를 내보내고 CMEK용 새 프로젝트에서 복원하는 것이 좋습니다.
  • Vertex AI Agent Builder에는 몇 가지 Cloud KMS 제한사항이 있습니다.

키 만들기

키를 만들려면 KMS 서비스를 사용합니다. 자세한 내용은 대칭 키 만들기를 참조하세요. 키를 만들거나 선택할 때는 다음을 구성해야 합니다.

  • 에이전트에 사용하는 위치 를 선택해야 합니다. 그렇지 않으면 요청이 실패합니다.

에이전트에서 키를 사용하도록 구성

에이전트를 만들 때 에이전트 위치와 에이전트가 해당 위치에 Google 관리 키 또는 이미 구성된 고객 관리 키를 사용할지 여부를 지정할 수 있습니다. 이때 선택합니다.

기본 요건

  1. Google Cloud CLI를 사용하여 프로젝트의 CCAI CMEK 서비스 계정을 만듭니다. 자세한 내용은 gcloud 서비스 ID 문서를 참조하세요.

    gcloud beta services identity create --service=dialogflow.googleapis.com --project=PROJECT_ID

    서비스 계정이 생성됩니다. 생성 응답에는 반환되지 않지만 형식은 다음과 같습니다.

    service-PROJECT_NUMBER@gcp-sa-ccai-cmek.iam.gserviceaccount.com
  2. CCAI CMEK 서비스 계정에 Cloud KMS CryptoKey 암호화/복호화 역할을 부여하여 서비스에 키를 사용하여 암호화하고 복호화할 수 있는 권한이 있는지 확인합니다.

    gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
    --project=PROJECT_ID \
    --location=LOCATION_ID \
    --keyring=KMS_KEY_RING \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-ccai-cmek.iam.gserviceaccount.com \
    --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Dialogflow CX 위치의 키 구성

  1. InitializeEncryptionSpec API를 사용하여 키를 구성합니다.

    다음 변수를 제공해야 합니다.

    • PROJECT_ID: 프로젝트 ID입니다. Google Cloud
    • LOCATION_ID: Dialogflow CX에서 CMEK를 사용 설정하기 위해 선택한 위치입니다.
    • KMS_KEY_RING: KMS 키가 생성된 키링입니다. (키링의 위치(예: projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KMS_KEY_RING)는 CMEK를 사용 설정하는 위치와 일치해야 합니다.)
    • KMS_KEY_ID: 선택한 위치에서 Dialogflow CX 데이터를 암호화하고 복호화하는 데 사용되는 KMS 키의 이름입니다.

    예를 들면 다음과 같습니다.

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        -d "{ encryption_spec: { kms_key: 'projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KMS_KEY_RING/cryptoKeys/KMS_KEY_ID' } }" \
        "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/encryptionSpec:initialize"

    다음과 비슷한 JSON 응답이 표시됩니다.

    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID"
    }
  2. GetOperation API를 사용하여 장기 실행 작업 결과를 확인합니다.

    예를 들면 다음과 같습니다.

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID"

CMEK 설정 확인

GetEncryptionSpec API를 사용하여 위치에 구성된 암호화 키를 확인합니다.

예를 들면 다음과 같습니다.

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/encryptionSpec"
  

키 취소

키에 대한 Dialogflow CX 액세스 권한을 취소하려면 KMS 키 버전을 사용 중지하거나 KMS 키에서 서비스 계정의 Cloud KMS CryptoKey 암호화/복호화 역할을 삭제하면 됩니다.

키가 취소된 후에는 Dialogflow CX에서 암호화된 데이터에 액세스할 수 없게 되며 키 권한이 복원될 때까지 서비스가 더 이상 작동 상태가 아닙니다.