고객 관리 암호화 키(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 Key Management Service 제한사항이 있습니다.

키 만들기

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

  • 위치가 일치하지 않으면 요청이 실패하므로 에이전트에 사용하는 위치를 선택합니다.

Dialogflow 서비스 계정 식별

Dialogflow 서비스 계정을 식별하려면 다음 단계를 따르세요.

  1. 대화형 에이전트 콘솔을 엽니다.
  2. 프로젝트를 선택합니다.
  3. 에이전트를 선택합니다.
  4. 탐색 메뉴에서 설정을 클릭한 다음 보안 탭으로 이동합니다.
  5. 보안 설정 관리 를 클릭하여 CCAI 콘솔로 리디렉션합니다.
  6. CCAI 콘솔에서 CMEK 탭으로 이동합니다.
  7. 서비스 계정 확인 또는 만들기 를 클릭합니다.
  8. 표시된 서비스 계정 이름을 기록해 둡니다(예: service-665989447347@gcp-sa-ccai-cmek.IAM.gserviceaccount.com).

서비스 계정에 권한 부여

서비스 계정에 권한을 부여하려면 다음 단계를 따르세요.

  1. Cloud KMS 페이지로 이동합니다.
  2. 생성한 키링을 선택합니다.
  3. 해당 키링 내에서 생성한 키를 선택합니다.
  4. 권한 탭으로 이동합니다.
  5. 액세스 권한 부여 를 클릭합니다.
  6. 새 주 구성원 필드에 이전 단계에서 식별한 Dialogflow 서비스 계정을 입력합니다.
  7. 역할 선택 목록에서 Cloud KMS CryptoKey 암호화/복호화 를 선택합니다.
  8. 저장 을 클릭합니다.

키 리소스 이름 복사

키 리소스 이름을 복사하려면 다음 단계를 따르세요.

  1. KMS 키 세부정보 페이지로 이동합니다.
  2. 작업 메뉴를 클릭하고 리소스 이름 복사 를 선택합니다.

이 작업은 KMS 키의 전체 경로를 복사합니다 (예: projects/<var>PROJECT_ID</var>/locations/<var>LOCATION_ID</var>/keyRings/<var>KEY_RING</var>/cryptoKeys/<var>KEY_ID</var>).

Dialogflow에서 CMEK 사용 설정

Dialogflow에서 CMEK를 사용 설정하려면 다음 단계를 따르세요.

  1. CCAI 콘솔의 CMEK 탭으로 돌아갑니다.
  2. 복사한 키 리소스 이름을 CMEK를 사용 설정하려는 위치의 필드에 붙여넣습니다.
  3. 저장 을 클릭합니다.

이렇게 하면 선택한 위치에 CMEK를 사용 설정하는 장기 실행 작업 (LRO)이 시작됩니다. 이 프로세스는 2~3분 정도 걸립니다.

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

에이전트를 만들 때 위치 와 해당 위치에 Google-managed encryption key 또는 CMEK를 사용할지 여부를 지정합니다.

CLI를 사용하여 CMEK 설정

또는 다음 명령어를 사용하여 CMEK를 설정할 수 있습니다. 여러 리전에 설정할 때 유용합니다.

  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

API를 사용하여 키 구성 및 설정 확인

  1. Dialogflow CX 위치의 키를 구성하려면 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. 장기 실행 작업 (LRO) 결과를 가져오려면 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"
  3. 위치에 구성된 암호화 키를 검색하려면 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가 액세스할 수 없게 되며 키 권한이 복원될 때까지 서비스가 더 이상 작동하지 않습니다.