Cloud KMS 및 Cloud HSM으로 키 액세스 근거 구성

이 페이지에서는 Cloud KMS 또는 Cloud HSM을 사용하여 Assured Workloads의 일본 데이터 경계에 대한 키 액세스 근거를 구성하는 방법을 설명합니다.

일본 리전의 새 Assured Workloads 폴더를 만드는 단계 중에 새 프로젝트와 암호화 키의 키링을 만들 수 있습니다. Cloud KMS 및 Cloud HSM 키 키를 이 키링에 추가할 수 있으며 키 액세스 근거 정책을 구성하여 각 키에 대한 액세스를 제어할 수도 있습니다.

시작하기 전에

  • Cloud KMS 및 Cloud HSM 키로 키 액세스 근거를 사용하는 기능은 Assured Workloads의 일본 데이터 경계에서만 사용 가능합니다.
  • 관리자가 키 액세스 근거 정책과 Cloud KMS 및 Cloud HSM 키 자체를 만들고 관리하는 데 필요한 Identity and Access Management (IAM) 역할 중 하나를 부여했는지 확인합니다.

필수 IAM 권한

Cloud KMS 및 Cloud HSM 키와 키 액세스 근거 정책을 만들고 관리하는 데 필요한 권한을 얻으려면 관리자에게 키링이 포함된 프로젝트에 대한 Cloud KMS 관리자 (roles/cloudkms.admin) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 Cloud KMS 및 Cloud HSM 키와 키 액세스 근거 정책을 만들고 관리하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

Cloud KMS 및 Cloud HSM 키와 키 액세스 근거 정책을 만들고 관리하려면 다음 권한이 필요합니다.

  • cloudkms.cryptoKeys.create
  • cloudkms.cryptoKeys.update
  • cloudkms.cryptoKeys.get

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

키 액세스 근거로 키 구성

Cloud KMS 또는 Cloud HSM 키로 키 액세스 근거를 구성하려면 키를 만들 때 키 액세스 정책을 매개변수로 포함하거나 키를 만든 후 정책으로 키를 업데이트하면 됩니다.

새 키 및 정책 만들기

콘솔

  1. Google Cloud 콘솔에서 키 관리 페이지로 이동합니다.

    키 관리로 이동

  2. 키를 만들 키링의 이름을 클릭합니다.

  3. 키 만들기를 클릭합니다.

  4. 키 이름에 키의 이름을 입력합니다.

  5. 보호 수준에서 소프트웨어 또는 HSM을 선택합니다.

  6. 필요에 따라 설정을 계속 선택합니다.

  7. 추가 설정에서 Set Key Access Justification policy를 선택한 다음 Allowed justification reasons를 선택합니다.

  8. 정당성 이유에서 고객이 시작한 액세스, Google이 시작한 시스템 작업 및 허용할 기타 이유 코드를 선택합니다. 고객이 시작한 액세스Google이 시작한 시스템 작업은 모두 정상적인 작동에 필수적입니다.

  9. 만들기를 클릭합니다.

REST

cryptoKeys.create 메서드를 사용하여 새 키와 정책을 만듭니다.

POST https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?crypto_key_id=KEY_NAME

요청에서 다음 자리표시자 값을 바꿉니다.

  • PROJECT_ID: 키를 추가할 키링이 포함된 프로젝트 ID(예: 919698201234)
  • LOCATION: 키링 위치(예: asia-northeast1)
  • KEY_RING: Assured Workloads 폴더의 키 관리 프로젝트와 키링을 만들 때 지정한 키링 이름입니다.
  • KEY_NAME: 만들려는 HSM 키의 이름(예: my-hsm-key)

요청 본문:

{
  "purpose": "PURPOSE",
  "versionTemplate": {
    "protectionLevel": "PROTECTION_LEVEL",
    "algorithm": "ALGORITHM"
  },
  "keyAccessJustificationsPolicy": {
    "allowedAccessReasons": [
      ALLOWED_ACCESS_REASONS
    ]
  }
}

요청 본문에서 다음 자리표시자 값을 바꿉니다.

  • PURPOSE: 키 용도. 다양한 키 용도 목록은 키 용도를 참고하세요(예: ENCRYPT_DECRYPT).
  • PROTECTION_LEVEL: 키의 보호 수준입니다(예: SOFTWARE 또는 HSM).
  • ALGORITHM: 사용할 암호화 알고리즘. 사용 가능한 알고리즘 목록은 Cloud KMS 알고리즘을 참조하세요(예: GOOGLE_SYMMETRIC_ENCRYPTION).
  • ALLOWED_ACCESS_REASONS: 암호화 키에 액세스하는 데 허용되는 근거 코드를 0개 이상 정의하는 키 액세스 근거 정책(예: ["CUSTOMER_INITIATED_ACCESS", "GOOGLE_INITIATED_SYSTEM_OPERATION"])

다음 요청과 요청 본문 예시에서는 몇 가지 이유로 액세스 근거만 허용하는 Cloud HSM 키를 만듭니다.

POST https://cloudkms.googleapis.com/v1/projects/919698201234/locations/asia-northeast1/keyRings/my-key-ring/cryptoKeys?crypto_key_id=my-hsm-key
{
  "purpose": "ENCRYPT_DECRYPT",
  "versionTemplate": {
    "protectionLevel": "HSM",
    "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION"
  },
  "keyAccessJustificationsPolicy": {
    "allowedAccessReasons": [
      "CUSTOMER_INITIATED_ACCESS",
      "GOOGLE_INITIATED_SYSTEM_OPERATION"
    ]
  }
}

기존 키 정책 업데이트

콘솔

  1. Google Cloud 콘솔에서 키 관리 페이지로 이동합니다.

    키 관리로 이동

  2. 키를 만든 키링의 이름을 클릭합니다.

  3. 키 액세스 근거 정책을 업데이트할 키의 이름을 클릭합니다.

  4. 키 액세스 근거 정책 수정을 클릭합니다.

  5. 다음 중 하나를 수행합니다.

    • 키의 키 액세스 근거 정책을 사용 중지하려면 키 액세스 근거 정책 설정 체크박스를 선택 취소합니다.

    • 허용된 근거 이유를 변경하려면 근거 이유 상자를 클릭하고 필요에 따라 이유 코드를 선택하거나 선택 해제합니다. 고객이 시작한 액세스Google이 시작한 시스템 작업은 모두 정상적인 작동에 필수적입니다.

    • 모든 이유 코드를 거부하려면 모든 이유 코드 거부 (권장되지 않음)를 선택합니다. 이렇게 하면 키가 사용 설정되어 있고 요청자에게 필요한 권한이 있더라도 키가 사용되지 않습니다.

  6. 저장을 클릭합니다.

REST

cryptoKeys.patch 메서드를 사용하여 Cloud KMS의 기존 키를 업데이트합니다.

PATCH https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME?update_mask=keyAccessJustificationsPolicy

요청에서 다음 자리표시자 값을 바꿉니다.

  • PROJECT_ID: 키의 키링이 포함된 프로젝트의 프로젝트 ID(예: 919698201234)
  • LOCATION: 키링 위치(예: asia-northeast1)
  • KEY_RING: Assured Workloads 폴더의 키 관리 프로젝트와 키링을 만들 때 지정한 키링 이름입니다.
  • KEY_NAME: 업데이트하려는 키의 이름입니다.

요청 본문:

{
  "purpose": "PURPOSE",
  "versionTemplate": {
    "protectionLevel": "PROTECTION_LEVEL",
    "algorithm": "ALGORITHM"
  },
  "keyAccessJustificationsPolicy": {
    "allowedAccessReasons": [
      ALLOWED_ACCESS_REASONS
    ]
  }
}

요청 본문에서 다음 자리표시자 값을 바꿉니다.

  • PURPOSE: 키 용도. 다양한 키 용도 목록은 키 용도를 참고하세요(예: ENCRYPT_DECRYPT).
  • PROTECTION_LEVEL: 키의 보호 수준입니다(예: SOFTWARE 또는 HSM).
  • ALGORITHM: 사용할 암호화 알고리즘. 사용 가능한 알고리즘 목록은 Cloud KMS 알고리즘을 참조하세요(예: GOOGLE_SYMMETRIC_ENCRYPTION).
  • ALLOWED_ACCESS_REASONS: 암호화 키에 액세스하는 데 허용되는 근거 코드를 0개 이상 정의하는 키 액세스 근거 정책(예: ["CUSTOMER_INITIATED_ACCESS", "GOOGLE_INITIATED_SYSTEM_OPERATION"])

다음 요청과 요청 본문 예시에서는 몇 가지 이유로 액세스 근거만 허용합니다.

PATCH https://cloudkms.googleapis.com/v1/projects/919698201234/locations/asia-northeast1/keyRings/my-key-ring/cryptoKeys/my-hsm-key?keyAccessJustificationsPolicy
{
  "purpose": "ENCRYPT_DECRYPT",
  "versionTemplate": {
    "protectionLevel": "HSM",
    "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION"
  },
  "keyAccessJustificationsPolicy": {
    "allowedAccessReasons": [
      "CUSTOMER_INITIATED_ACCESS",
      "GOOGLE_INITIATED_SYSTEM_OPERATION"
    ]
  }
}

키의 키 액세스 근거 정책 가져오기

REST

cryptoKeys.get 메서드를 사용하여 Cloud KMS의 기존 키에 대한 메타데이터를 가져옵니다.

GET https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

요청 매개변수에서 다음 자리표시자 값을 직접 바꿉니다.

  • PROJECT_ID: 키의 키링이 포함된 프로젝트 ID(예: 919698201234)
  • LOCATION: 키링 위치(예: asia-northeast1)
  • KEY_RING: Assured Workloads 폴더의 키 관리 프로젝트와 키링을 만들 때 지정한 키링 이름(예: my-key-ring)
  • KEY_NAME: 가져오려는 키의 이름입니다.

다음 요청 예시에서는 Cloud KMS의 키에 대한 메타데이터를 가져옵니다.

GET https://cloudkms.googleapis.com/v1/projects/919698201234/locations/asia-northeast1/keyRings/my-key-ring/cryptoKeys/my-hsm-key

응답 본문에는 keyAccessJustificationsPolicy를 포함하여 키에 대한 메타데이터가 포함됩니다. 예를 들면 다음과 같습니다.

{
  "purpose": "ENCRYPT_DECRYPT",
  "versionTemplate": {
    "protectionLevel": "HSM",
    "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION"
  },
  "keyAccessJustificationsPolicy": {
    "allowedAccessReasons": [
      "CUSTOMER_INITIATED_ACCESS",
      "GOOGLE_INITIATED_SYSTEM_OPERATION"
    ]
  }
}

다음 단계