このページでは、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" }}'
次のように置き換えます。