래핑된 키 만들기

이 페이지에서는 Cloud Key Management Service(Cloud KMS)를 사용하여 deidentifyreidentify 요청을 Cloud Data Loss Prevention(DLP) API로 전송하는 데 사용할 수 있는 래핑된 키를 만드는 방법을 설명합니다.

암호화 키를 사용하여 콘텐츠를 익명화하고 재식별하는 프로세스를 가명처리(또는 토큰화)라고 합니다. 이 프로세스의 개념 정보는 가명처리를 참조하세요.

래핑된 키를 만들고, 콘텐츠를 토큰화하고, 토큰화된 콘텐츠를 재식별하는 방법을 보여주는 엔드 투 엔드 예시는 빠른 시작: 민감한 텍스트 익명화 및 재식별을 참조합니다.

시작하기 전에 단계를 제외한 5~10 분 후에 이 주제의 단계를 완료할 수 있습니다.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Cloud DLP and Cloud KMS API를 사용 설정합니다.

    API 사용 설정

  4. 서비스 계정을 만듭니다.

    1. Cloud Console에서 서비스 계정 만들기 페이지로 이동합니다.

      서비스 계정 만들기로 이동
    2. 프로젝트를 선택합니다.
    3. 서비스 계정 이름 필드에 이름을 입력합니다. Cloud Console은 이 이름을 기반으로 서비스 계정 ID 필드를 채웁니다.

      서비스 계정 설명 필드에 설명을 입력합니다. 예를 들면 Service account for quickstart입니다.

    4. 만들고 계속하기를 클릭합니다.
    5. 역할 선택 필드를 클릭합니다.

      빠른 액세스에서 기본을 클릭한 후 소유자를 클릭합니다.

    6. 계속을 클릭합니다.
    7. 완료를 클릭하여 서비스 계정 만들기를 마칩니다.

      브라우저 창을 닫지 마세요. 다음 단계에서 사용합니다.

  5. 서비스 계정 키 만들기

    1. Cloud Console에서 만든 서비스 계정의 이메일 주소를 클릭합니다.
    2. 를 클릭합니다.
    3. 키 추가를 클릭한 후 새 키 만들기를 클릭합니다.
    4. 만들기를 클릭합니다. JSON 키 파일이 컴퓨터에 다운로드됩니다.
    5. 닫기를 클릭합니다.
  6. GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 서비스 계정 키가 포함된 JSON 파일의 경로로 설정합니다. 이 변수는 현재 셸 세션에만 적용되므로, 새 세션을 열 경우, 변수를 다시 설정합니다.

  7. Cloud SDK 설치 및 초기화
  8. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  9. Cloud DLP and Cloud KMS API를 사용 설정합니다.

    API 사용 설정

  10. 서비스 계정을 만듭니다.

    1. Cloud Console에서 서비스 계정 만들기 페이지로 이동합니다.

      서비스 계정 만들기로 이동
    2. 프로젝트를 선택합니다.
    3. 서비스 계정 이름 필드에 이름을 입력합니다. Cloud Console은 이 이름을 기반으로 서비스 계정 ID 필드를 채웁니다.

      서비스 계정 설명 필드에 설명을 입력합니다. 예를 들면 Service account for quickstart입니다.

    4. 만들고 계속하기를 클릭합니다.
    5. 역할 선택 필드를 클릭합니다.

      빠른 액세스에서 기본을 클릭한 후 소유자를 클릭합니다.

    6. 계속을 클릭합니다.
    7. 완료를 클릭하여 서비스 계정 만들기를 마칩니다.

      브라우저 창을 닫지 마세요. 다음 단계에서 사용합니다.

  11. 서비스 계정 키 만들기

    1. Cloud Console에서 만든 서비스 계정의 이메일 주소를 클릭합니다.
    2. 를 클릭합니다.
    3. 키 추가를 클릭한 후 새 키 만들기를 클릭합니다.
    4. 만들기를 클릭합니다. JSON 키 파일이 컴퓨터에 다운로드됩니다.
    5. 닫기를 클릭합니다.
  12. GOOGLE_APPLICATION_CREDENTIALS 환경 변수를 서비스 계정 키가 포함된 JSON 파일의 경로로 설정합니다. 이 변수는 현재 셸 세션에만 적용되므로, 새 세션을 열 경우, 변수를 다시 설정합니다.

  13. Cloud SDK 설치 및 초기화

1단계: 키링 및 키 만들기

이 절차를 시작하기 전에 Cloud DLP가 익명화 및 재식별 요청을 처리할 위치를 결정합니다. Cloud KMS 키를 만들 때 global 또는 Cloud DLP 요청에 사용할 리전과 동일한 리전에 저장해야 합니다. 그렇지 않으면 Cloud DLP 요청이 실패합니다.

Cloud DLP 위치에서 지원되는 위치 목록을 확인할 수 있습니다. 선택한 리전의 이름을 기록합니다(예: us-west1).

이 절차에서는 모든 API 요청의 위치로 global을 사용합니다. 다른 리전을 사용하려면 global을 리전 이름으로 바꿉니다.

  1. 키링 만들기

    gcloud kms keyrings create "dlp-keyring" \
        --location "global"
    
  2. 키를 만듭니다.

    gcloud kms keys create "dlp-key" \
        --location "global" \
        --keyring "dlp-keyring" \
        --purpose "encryption"
    
  3. 키링 및 키를 나열합니다.

    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 형식으로 인코딩하는 방법을 설명합니다.

  1. 128, 192 또는 256비트 AES 키를 만듭니다. 다음 명령어는 openssl을 사용하여 현재 디렉터리에 256비트 키를 만듭니다.

    openssl rand -out "./aes_key.bin" 32
    

    aes_key.bin 파일이 현재 디렉터리에 추가됩니다.

  2. 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\"}"

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트의 ID입니다.
  • BASE64_ENCODED_AES_KEY: 2단계에서 반환된 base64 인코딩 문자열입니다.

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 값을 기록해 둡니다. 이것이 래핑된 키입니다.

다음 단계