기본적으로 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 서비스 계정을 식별하려면 다음 단계를 따르세요.
- 대화형 에이전트 콘솔을 엽니다.
- 프로젝트를 선택합니다.
- 에이전트를 선택합니다.
- 탐색 메뉴에서 설정을 클릭한 다음 보안 탭으로 이동합니다.
- 보안 설정 관리 를 클릭하여 CCAI 콘솔로 리디렉션합니다.
- CCAI 콘솔에서 CMEK 탭으로 이동합니다.
- 서비스 계정 확인 또는 만들기 를 클릭합니다.
- 표시된 서비스 계정 이름을 기록해 둡니다(예:
service-665989447347@gcp-sa-ccai-cmek.IAM.gserviceaccount.com).
서비스 계정에 권한 부여
서비스 계정에 권한을 부여하려면 다음 단계를 따르세요.
- Cloud KMS 페이지로 이동합니다.
- 생성한 키링을 선택합니다.
- 해당 키링 내에서 생성한 키를 선택합니다.
- 권한 탭으로 이동합니다.
- 액세스 권한 부여 를 클릭합니다.
- 새 주 구성원 필드에 이전 단계에서 식별한 Dialogflow 서비스 계정을 입력합니다.
- 역할 선택 목록에서 Cloud KMS CryptoKey 암호화/복호화 를 선택합니다.
- 저장 을 클릭합니다.
키 리소스 이름 복사
키 리소스 이름을 복사하려면 다음 단계를 따르세요.
- KMS 키 세부정보 페이지로 이동합니다.
- 작업 메뉴를 클릭하고 리소스 이름 복사 를 선택합니다.
이 작업은 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를 사용 설정하려면 다음 단계를 따르세요.
- CCAI 콘솔의 CMEK 탭으로 돌아갑니다.
- 복사한 키 리소스 이름을 CMEK를 사용 설정하려는 위치의 키 필드에 붙여넣습니다.
- 저장 을 클릭합니다.
이렇게 하면 선택한 위치에 CMEK를 사용 설정하는 장기 실행 작업 (LRO)이 시작됩니다. 이 프로세스는 2~3분 정도 걸립니다.
에이전트에서 키를 사용하도록 구성
에이전트를 만들 때 위치 와 해당 위치에 Google-managed encryption key 또는 CMEK를 사용할지 여부를 지정합니다.
CLI를 사용하여 CMEK 설정
또는 다음 명령어를 사용하여 CMEK를 설정할 수 있습니다. 여러 리전에 설정할 때 유용합니다.
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.comCCAI 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를 사용하여 키 구성 및 설정 확인
Dialogflow CX 위치의 키를 구성하려면
InitializeEncryptionSpecAPI를 호출하고 다음 변수를 제공합니다.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" }
장기 실행 작업 (LRO) 결과를 가져오려면
GetOperationAPI를 호출합니다.예를 들면 다음과 같습니다.
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"
위치에 구성된 암호화 키를 검색하려면
GetEncryptionSpecAPI를 호출합니다.예를 들면 다음과 같습니다.
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가 액세스할 수 없게 되며 키 권한이 복원될 때까지 서비스가 더 이상 작동하지 않습니다.