このページでは、Cloud KMS で鍵を作成する方法について説明します。鍵には、対称または非対称鍵、非対称署名鍵、MAC 署名鍵があります。
鍵を作成するときは、その鍵を特定の Cloud KMS のロケーションのキーリングに追加します。新規のキーリングを作成するか、既存のものを使用できます。 このページでは、新しい Cloud KMS 鍵または Cloud HSM 鍵を生成し、既存のキーリングに追加します。 Cloud EKM 鍵を作成するには、外部鍵を作成するをご覧ください。Cloud KMS 鍵または Cloud HSM 鍵をインポートするには、鍵をインポートするをご覧ください。
始める前に
このページで説明するタスクの前に、次のことを行っておく必要があります。
- Cloud KMS リソースを含める Google Cloud プロジェクト リソース。Cloud KMS リソースには、他の Google Cloud リソースを含まない別のプロジェクトを使用することをおすすめします。
- 鍵を作成するキーリングの名前と場所。 他のリソースの近くにあり、選択した保護レベルをサポートしているロケーションのキーリングを選択します。 使用可能なロケーションとサポートされる保護レベルを確認するには、Cloud KMS のロケーションをご覧ください。 キーリングを作成するには、キーリングを作成するをご覧ください。
- 省略可: gcloud CLI を使用するには、環境を準備します。
Google Cloud コンソールで Cloud Shell をアクティブにします。
必要なロール
鍵の作成に必要な権限を取得するには、プロジェクトまたは親リソースに対する次の IAM ロールを付与するよう管理者に依頼してください。
- Cloud KMS 管理者 (
roles/cloudkms.admin) -
単一テナント HSM 鍵を作成するには: Cloud KMS 単一テナント HSM 鍵作成者 (
roles/cloudkms.hsmSingleTenantKeyCreator)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、鍵の作成に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
鍵を作成するには、次の権限が必要です。
-
cloudkms.cryptoKeys.create -
cloudkms.cryptoKeys.get -
cloudkms.cryptoKeys.list -
cloudkms.cryptoKeyVersions.create -
cloudkms.cryptoKeyVersions.get -
cloudkms.cryptoKeyVersions.list -
cloudkms.keyRings.get -
cloudkms.keyRings.list -
cloudkms.locations.get -
cloudkms.locations.list -
resourcemanager.projects.get -
公開鍵を取得するには:
cloudkms.cryptoKeyVersions.viewPublicKey -
単一テナント HSM 鍵を作成するには:
-
cloudkms.singleTenantHsmInstances.get -
cloudkms.singleTenantHsmInstances.use
-
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
対称暗号鍵を作成する
コンソール
Google Cloud コンソールで、[鍵管理] ページに移動します。
鍵を作成するキーリングの名前をクリックします。
[鍵を作成] をクリックします。
[鍵名] に鍵の名前を入力します。
[保護レベル] で、[ソフトウェア]、[HSM]、[シングルテナント HSM] のいずれかを選択します。
[単一テナント HSM] を選択した場合は、鍵を作成する単一テナント HSM インスタンスを選択します。
[鍵マテリアル] では、[生成された鍵] を選択します。
[目的] として [Symmetric encrypt/decrypt] を選択します。
[ローテーション期間] と [開始日] はデフォルト値のままにします。
[作成] をクリックします。
gcloud
コマンドラインで Cloud KMS を使用するには、まず Google Cloud CLI の最新バージョンをインストールまたはアップグレードします。
ソフトウェアまたはマルチテナント Cloud HSM 鍵を作成するには、kms keys create コマンドを使用します。
gcloud kms keys create KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--purpose "encryption" \
--protection-level "PROTECTION_LEVEL"
次のように置き換えます。
KEY_NAME: 鍵の名前KEY_RING: 鍵を含むキーリングの名前。LOCATION: キーリングの Cloud KMS のロケーションPROTECTION_LEVEL: 鍵に使用する保護レベル(software、hsmなど)。software鍵では--protection-levelフラグを省略できます。
すべてのフラグと有効な値については、--help フラグを指定してコマンドを実行してください。
kms keys create コマンドに --crypto-key-backend フラグを追加します。
gcloud kms keys create KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--purpose "encryption" \
--protection-level "hsm-single-tenant" \
--crypto-key-backend="projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
次のように置き換えます。
INSTANCE_PROJECT: シングルテナント Cloud HSM インスタンスが存在するプロジェクトの識別子。INSTANCE_NAME: 鍵を作成するシングルテナント Cloud HSM インスタンスの名前。単一テナント Cloud HSM インスタンスの詳細については、単一テナント Cloud HSM インスタンスの作成と管理をご覧ください。
すべてのフラグと有効な値については、--help フラグを指定してコマンドを実行してください。
C#
このコードを実行するには、まず C# 開発環境を設定し、Cloud KMS C# SDK をインストールします。
Go
このコードを実行するには、まず Go 開発環境を設定し、Cloud KMS Go SDK をインストールします。
Java
このコードを実行するには、まず Java 開発環境を設定し、Cloud KMS Java SDK をインストールします。
Node.js
このコードを実行するには、まず Node.js 開発環境を設定し、Cloud KMS Node.js SDK をインストールします。
PHP
このコードを実行するには、まず Google Cloudでの PHP の使用について学び、Cloud KMS PHP SDK をインストールします。
Python
このコードを実行するには、まず Python 開発環境を設定し、Cloud KMS Python SDK をインストールします。
Ruby
このコードを実行するには、まず Ruby 開発環境を設定し、Cloud KMS Ruby SDK をインストールします。
API
これらの例では、HTTP クライアントとして curl を使用して API の使用例を示しています。アクセス制御の詳細については、Cloud KMS API へのアクセスをご覧ください。
ソフトウェアまたはマルチテナント Cloud HSM 鍵を作成するには、CryptoKey.create メソッドを使用します。
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?crypto_key_id=KEY_NAME" \
--request "POST" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"purpose": "ENCRYPT_DECRYPT", "versionTemplate": { "protectionLevel": "PROTECTION_LEVEL", "algorithm": "ALGORITHM" }}'
次のように置き換えます。
PROJECT_ID: キーリングを含むプロジェクトの ID。LOCATION: キーリングの Cloud KMS のロケーションKEY_RING: 鍵を含むキーリングの名前。KEY_NAME: 鍵の名前。PROTECTION_LEVEL: 鍵の保護レベル(例:SOFTWARE、HSM)。ALGORITHM: HMAC 署名アルゴリズム(例:HMAC_SHA256)。サポートされているすべての HMAC アルゴリズムを確認するには、HMAC 署名アルゴリズムをご覧ください。
PROTECTION_LEVEL を HSM_SINGLE_TENANT に設定し、kms keys create コマンドに --crypto-key-backend フラグを追加します。
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?crypto_key_id=KEY_NAME" \
--request "POST" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"purpose": "ENCRYPT_DECRYPT", "versionTemplate": { "protectionLevel": "HSM_SINGLE_TENANT",
"algorithm": "ALGORITHM",
"crypto-key-backend": "projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME" }}'
次のように置き換えます。
INSTANCE_PROJECT: シングルテナント Cloud HSM インスタンスが存在するプロジェクトの識別子。INSTANCE_NAME: 鍵を作成するシングルテナント Cloud HSM インスタンスの名前。単一テナント Cloud HSM インスタンスの詳細については、単一テナント Cloud HSM インスタンスの作成と管理をご覧ください。
すべてのフラグと有効な値については、--help フラグを指定してコマンドを実行してください。
カスタム自動ローテーションの対称暗号鍵を作成する
鍵を作成するときに、ローテーション期間を指定できます。これは、新しい鍵バージョンが自動的に作成される時点間の時間です。次のローテーション時間を個別に指定して、次のローテーションが今から 1 ローテーション期間前または後に行われるようにすることもできます。
コンソール
Google Cloud コンソールを使用して鍵を作成すると、Cloud KMS は自動的にローテーション期間と次のローテーション時間を設定します。デフォルト値を使用するか、別の値を指定できます。
異なるローテーション期間と開始時間を指定する場合は、鍵の作成時に次の操作を行ってから、[作成] ボタンをクリックします。
[鍵のローテーション期間] で、オプションを選択します。
[開始日] で、最初の自動ローテーションを行う日付を選択します。[開始日] をデフォルト値のままにして、鍵を作成してから 1 回の鍵のローテーション期間が経過した後に最初の自動ローテーションを開始できます。
gcloud
コマンドラインで Cloud KMS を使用するには、まず Google Cloud CLI の最新バージョンをインストールまたはアップグレードします。
gcloud kms keys create KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--purpose "encryption" \
--rotation-period ROTATION_PERIOD \
--next-rotation-time NEXT_ROTATION_TIME
以下を置き換えます。
KEY_NAME: 鍵の名前KEY_RING: 鍵を含むキーリングの名前。LOCATION: キーリングの Cloud KMS のロケーションROTATION_PERIOD: 鍵をローテーションする間隔。たとえば、30dは 30 日ごとに鍵をローテーションします。ローテーション期間は 1 日~100 年にする必要があります。詳細については、CryptoKey.rotationPeriod をご覧ください。NEXT_ROTATION_TIME: 最初のローテーションが完了する時点のタイムスタンプ(例:2023-01-01T01:02:03)。--next-rotation-timeを省略すると、最初のローテーションをコマンドの実行時から 1 回のローテーション期間にスケジュール設定できます。詳細については、CryptoKey.nextRotationTimeをご覧ください。
すべてのフラグと有効な値については、--help フラグを指定してコマンドを実行してください。
C#
このコードを実行するには、まず C# 開発環境を設定し、Cloud KMS C# SDK をインストールします。
Go
このコードを実行するには、まず Go 開発環境を設定し、Cloud KMS Go SDK をインストールします。
Java
このコードを実行するには、まず Java 開発環境を設定し、Cloud KMS Java SDK をインストールします。
Node.js
このコードを実行するには、まず Node.js 開発環境を設定し、Cloud KMS Node.js SDK をインストールします。