Cloud HSM を使用して Key Access Justifications を構成する

このページでは、Assured Workloads の日本リージョン コントロール パッケージ用に Cloud HSM を使用して Key Access Justifications を構成する方法について説明します。

日本リージョン用の新しい Assured Workloads フォルダを作成する手順では、新しいプロジェクトと暗号鍵用のキーリングを作成できます。Cloud HSM 鍵をこのキーリングに追加できます。また、Key Access Justifications ポリシーを構成して各鍵へのアクセスを制御することもできます。

始める前に

  • Cloud HSM 鍵で Key Access Justifications を使用する機能は、Assured Workloads の日本リージョン コントロール パッケージでのみ使用できます。
  • Key Access Justifications ポリシーと Cloud HSM 鍵自体の両方を作成および管理するために必要な Identity and Access Management(IAM)ロールのいずれかが管理者から付与されていることを確認します。

必要な IAM 権限

Cloud HSM 鍵とその Key Access Justifications ポリシーを作成および管理するために必要な権限を取得するには、キーリングを含むプロジェクトに対する Cloud KMS 管理者roles/cloudkms.admin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

この事前定義ロールには、Cloud HSM 鍵とその Key Access Justifications ポリシーを作成および管理するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

Cloud HSM 鍵とその Key Access Justifications ポリシーを作成および管理するには、次の権限が必要です。

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

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

Key Access Justifications を使用して Cloud HSM 鍵を構成する

Cloud HSM 鍵を使用して Key Access Justifications を構成するには、鍵を作成するときに鍵アクセス ポリシーをパラメータとして含めるか、鍵の作成後にポリシーを使用して鍵を更新します。

新しい鍵とポリシーを作成する

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 個以上の許可された正当化コードを定義する Key Access Justifications ポリシー(例: 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 個以上の許可された正当化コードを定義する Key Access Justifications ポリシー(例: 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"
    ]
  }
}

鍵の Key Access Justifications ポリシーを取得する

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"
    ]
  }
}