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

이 페이지에서는 Cloud HSM을 사용하여 Assured Workloads의 일본 리전 제어 패키지의 키 액세스 근거를 구성하는 방법을 설명합니다.

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

시작하기 전에

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

필수 IAM 권한

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

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

필수 권한

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

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

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

키 액세스 근거로 Cloud HSM 키 구성

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

새 키 및 정책 만들기

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: 키링 위치(예: us-west1)
  • KEY_RING: Assured Workloads 폴더의 키 관리 프로젝트와 키링을 만들 때 지정한 키링 이름(예: my-key-ring)
  • KEY_NAME: 만들려는 HSM 키의 이름(예: my-hsm-key)

요청 본문:

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

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

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

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

POST https://cloudkms.googleapis.com/v1/projects/919698201234/locations/us-west1/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"
    ]
  }
}

기존 키 정책 업데이트

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: 키링 위치(예: us-west1)
  • KEY_RING: Assured Workloads 폴더의 키 관리 프로젝트와 키링을 만들 때 지정한 키링 이름(예: my-key-ring)
  • KEY_NAME: 업데이트하려는 HSM 키의 이름(예: my-hsm-key)

요청 본문:

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

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

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

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

PATCH https://cloudkms.googleapis.com/v1/projects/919698201234/locations/us-west1/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: 키링 위치(예: us-west1)
  • KEY_RING: Assured Workloads 폴더의 키 관리 프로젝트와 키링을 만들 때 지정한 키링 이름(예: my-key-ring)
  • KEY_NAME: 가져올 HSM 키의 이름(예: my-hsm-key).

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

GET https://cloudkms.googleapis.com/v1/projects/919698201234/locations/us-west1/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"
    ]
  }
}