이 페이지에서는 Cloud Key Management Service(Cloud KMS)를 사용하여 래핑된 키를 만든 후 deidentify
및 reidentify
요청을 민감한 정보 보호의 Cloud Data Loss Prevention API로 보내는 데 사용하는 방법을 설명합니다.
암호화 키를 사용하여 콘텐츠를 익명화하고 재식별하는 프로세스를 가명처리(또는 토큰화)라고 합니다. 이 프로세스의 개념 정보는 가명처리를 참조하세요.
래핑된 키를 만들고, 콘텐츠를 토큰화하고, 토큰화된 콘텐츠를 재식별하는 방법을 보여주는 엔드 투 엔드 예시는 빠른 시작: 민감한 텍스트 익명화 및 재식별을 참조합니다.
시작하기 전에 단계를 제외한 5~10 분 후에 이 주제의 단계를 완료할 수 있습니다.
시작하기 전에
- Install the Google Cloud CLI.
-
Configure the gcloud CLI to use your federated identity.
For more information, see Browser-based sign-in with the gcloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Enable the Sensitive Data Protection and Cloud KMS APIs:
gcloud services enable dlp.googleapis.com
cloudkms.googleapis.com -
Google 계정에 역할을 부여합니다. 다음 각 IAM 역할에 대해 다음 명령어를 한 번씩 실행합니다.
roles/dlp.user
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
PROJECT_ID
를 프로젝트 ID로 바꿉니다.EMAIL_ADDRESS
를 이메일 주소로 바꿉니다.ROLE
을 각 개별 역할로 바꿉니다.
1단계: 키링 및 키 만들기
이 절차를 시작하기 전에 민감한 정보 보호를 사용하여 익명화 및 재식별 요청을 처리할 위치를 결정합니다. Cloud KMS 키를 만들 때 global
또는 민감한 정보 보호 요청에 사용할 리전과 같은 리전에 저장해야 합니다.
그렇지 않으면 민감한 정보 보호 요청이 실패합니다.
민감한 정보 보호 위치에서 지원되는 위치 목록을 확인할 수 있습니다. 선택한 리전의 이름을 기록합니다(예: us-west1
).
이 절차에서는 모든 API 요청의 위치로 global
을 사용합니다. 다른 리전을 사용하려면 global
을 리전 이름으로 바꿉니다.
키링 만들기
gcloud kms keyrings create "dlp-keyring" \ --location "global"
키를 만듭니다.
gcloud kms keys create "dlp-key" \ --location "global" \ --keyring "dlp-keyring" \ --purpose "encryption"
키링 및 키를 나열합니다.
gcloud kms keys list \ --location "global" \ --keyring "dlp-keyring"
다음과 같은 출력이 표시됩니다.
NAME PURPOSE ALGORITHM PROTECTION_LEVEL LABELS PRIMARY_ID PRIMARY_STATE projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key ENCRYPT_DECRYPT GOOGLE_SYMMETRIC_ENCRYPTION SOFTWARE 1 ENABLED
이 출력에서
PROJECT_ID
는 프로젝트의 ID입니다.NAME
아래의 경로는 Cloud KMS 키의 전체 리소스 이름입니다. 익명화 및 재식별 요청에 이 항목이 필요하므로 기록해 둡니다.
2단계: base64 인코딩 AES 키 만들기
이 섹션에서는 고급 암호화 표준(AES) 키를 만들고 base64 형식으로 인코딩하는 방법을 설명합니다.
128, 192 또는 256비트 AES 키를 만듭니다. 다음 명령어는
openssl
을 사용하여 현재 디렉터리에 256비트 키를 만듭니다.openssl rand -out "./aes_key.bin" 32
aes_key.bin
파일이 현재 디렉터리에 추가됩니다.AES 키를 base64 문자열로 인코딩합니다.
base64 -i ./aes_key.bin
다음과 비슷한 출력이 표시됩니다.
uEDo6/yKx+zCg2cZ1DBwpwvzMVNk/c+jWs7OwpkMc/s=
3단계: Cloud KMS 키를 사용하여 AES 키 래핑
이 섹션에서는 1단계에서 만든 Cloud KMS 키를 사용하여 2단계에서 만든 base64 인코딩 AES 키를 래핑하는 방법을 설명합니다.
AES 키를 래핑하려면 curl
을 사용하여 Cloud KMS API projects.locations.keyRings.cryptoKeys.encrypt
에 다음 요청을 보냅니다.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key:encrypt" \
--request "POST" \
--header "Authorization:Bearer $(gcloud auth application-default print-access-token)" \
--header "content-type: application/json" \
--data "{\"plaintext\": \"BASE64_ENCODED_AES_KEY\"}"
다음을 바꿉니다.
Cloud KMS에서 제공받는 응답은 다음 JSON과 유사합니다.
{ "name": "projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key/cryptoKeyVersions/1", "ciphertext": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=", "ciphertextCrc32c": "901327763", "protectionLevel": "SOFTWARE" }
이 출력에서 PROJECT_ID
는 프로젝트의 ID입니다.
제공되는 응답에서 ciphertext
값을 기록해 둡니다.
이것이 래핑된 키입니다.
다음 단계
암호화 키를 통한 데이터 토큰화 자세히 알아보기
래핑된 키를 만들고 콘텐츠를 토큰화하고 토큰화된 콘텐츠를 재식별하는 방법을 보여주는 엔드 투 엔드 예시를 살펴보세요.
이 래핑된 키를 허용하는 익명화 메서드에 대해 자세히 알아보고 코드 샘플을 살펴보세요.