고객 관리 암호화 키(CMEK)

기본적으로 Dialogflow는 저장 중 고객 콘텐츠를 암호화합니다. Dialogflow는 사용자 측의 추가 작업 없이 자동으로 암호화를 처리합니다. 이 옵션을 Google 기본 암호화라고 부릅니다.

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

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

보호된 데이터

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

제한사항

  • 키 순환은 지원되지만 데이터 재암호화는 지원되지 않습니다. 즉, 이전에 암호화된 데이터를 새 키 버전으로 다시 암호화하는 것은 지원되지 않습니다.
  • 다음 지역은 지원되지 않습니다.
    • global
    • eu
  • 프로젝트 위치당 하나의 키를 사용해야 합니다.
  • 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: Google Cloud 프로젝트 ID입니다.
    • 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)에서 암호화된 데이터에 액세스할 수 없게 되며 키 권한이 복원될 때까지 서비스가 더 이상 작동 상태가 아닙니다.