래핑된 키 만들기

이 페이지에서는 Cloud Key Management Service (Cloud KMS)를 사용하여 래핑된 키를 만든 후 deidentifyreidentify 요청을 민감한 정보 보호의 Cloud Data Loss Prevention API로 보내는 데 사용하는 방법을 설명합니다.

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

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

시작하기 전에 단계를 제외하고 이 문서의 단계를 5~10분 내에 완료할 수 있습니다.

시작하기 전에

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

  3. 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  4. gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.

    gcloud init
  5. 프로젝트를 만들거나 Google Cloud 선택합니다.

    프로젝트를 선택하거나 만드는 데 필요한 역할

    • 프로젝트 선택: 프로젝트를 선택하는 데 특정 IAM 역할이 필요하지 않습니다. 역할이 부여된 프로젝트를 선택할 수 있습니다.
    • 프로젝트 만들기: 프로젝트를 만들려면 resourcemanager.projects.create 권한이 포함된 프로젝트 생성자 역할 (roles/resourcemanager.projectCreator)이 필요합니다. 역할을 부여하는 방법을 알아보세요.
    • 프로젝트 만들기 Google Cloud

      gcloud projects create PROJECT_ID

      PROJECT_ID를 만들려는 Google Cloud 프로젝트의 이름으로 바꿉니다.

    • 만든 Google Cloud 프로젝트를 선택합니다.

      gcloud config set project PROJECT_ID

      PROJECT_ID를 프로젝트 이름으로 바꿉니다. Google Cloud

  6. 이 가이드에 기존 프로젝트를 사용하는 경우 이 가이드를 완료하는 데 필요한 권한이 있는지 확인합니다. 새 프로젝트를 만든 경우에는 이미 필요한 권한이 있습니다.

  7. 프로젝트에 결제가 사용 설정되어 있는지 확인합니다 Google Cloud .

  8. 민감한 정보 보호 및 Cloud KMS API를 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 역할 (roles/serviceusage.serviceUsageAdmin)이 포함된 서비스 사용량 관리자 IAM serviceusage.services.enable 권한이 필요합니다. 역할을 부여하는 방법을 알아보세요.

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  9. Google Cloud CLI를 설치합니다.

  10. 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  11. gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.

    gcloud init
  12. 프로젝트를 만들거나 Google Cloud 선택합니다.

    프로젝트를 선택하거나 만드는 데 필요한 역할

    • 프로젝트 선택: 프로젝트를 선택하는 데 특정 IAM 역할이 필요하지 않습니다. 역할이 부여된 프로젝트를 선택할 수 있습니다.
    • 프로젝트 만들기: 프로젝트를 만들려면 resourcemanager.projects.create 권한이 포함된 프로젝트 생성자 역할 (roles/resourcemanager.projectCreator)이 필요합니다. 역할을 부여하는 방법을 알아보세요.
    • 프로젝트 만들기 Google Cloud

      gcloud projects create PROJECT_ID

      PROJECT_ID를 만들려는 Google Cloud 프로젝트의 이름으로 바꿉니다.

    • 만든 Google Cloud 프로젝트를 선택합니다.

      gcloud config set project PROJECT_ID

      PROJECT_ID를 프로젝트 이름으로 바꿉니다. Google Cloud

  13. 이 가이드에 기존 프로젝트를 사용하는 경우 이 가이드를 완료하는 데 필요한 권한이 있는지 확인합니다. 새 프로젝트를 만든 경우에는 이미 필요한 권한이 있습니다.

  14. 프로젝트에 결제가 사용 설정되어 있는지 확인합니다 Google Cloud .

  15. 민감한 정보 보호 및 Cloud KMS API를 사용 설정합니다.

    API 사용 설정에 필요한 역할

    API를 사용 설정하려면 역할 (roles/serviceusage.serviceUsageAdmin)이 포함된 서비스 사용량 관리자 IAM serviceusage.services.enable 권한이 필요합니다. 역할을 부여하는 방법을 알아보세요.

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com

필요한 역할

래핑된 AES 키를 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 다음 IAM 역할을 부여해 달라고 요청하세요.

역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.

키링 및 키 만들기

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

민감한 정보 보호 위치에서 지원되는 위치 목록을 확인할 수 있습니다. 선택한 리전의 이름 (예: 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: projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key
    PURPOSE: ENCRYPT_DECRYPT
    ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION
    PROTECTION_LEVEL: SOFTWARE
    LABELS:
    PRIMARY_ID: 1
    PRIMARY_STATE: ENABLED
    

    이 출력에서 PROJECT_ID는 프로젝트의 ID입니다.

    NAME의 값은 Cloud KMS 키의 전체 리소스 이름입니다. 익명화 및 재식별 요청에 필요하므로 이 값을 기록해 둡니다.

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=
    

Cloud KMS 키를 사용하여 AES 키 래핑

이 섹션에서는 키링 및 키 만들기에 만든 Cloud KMS 키를 사용하여 base64 인코딩 AES 키 만들기에 만든 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/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key/cryptoKeyVersions/1",
  "ciphertext": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=",
  "ciphertextCrc32c": "901327763",
  "protectionLevel": "SOFTWARE"
}

이 출력에서 PROJECT_ID는 프로젝트의 ID입니다.

응답에서 ciphertext 값을 기록해 둡니다. 이것이 래핑된 키입니다.

다음 단계