このページでは、アプリケーション オペレーター(AO)がエクスポートされた鍵管理システム(KMS)鍵から鍵のインポート オペレーションを実行する手順について説明します。AO は、次のリソースから kubectl コマンドライン インターフェース(CLI)を使用してインポート オペレーションとエクスポート オペレーションを実行します。
これらのリソースの詳細については、KMS API の概要をご覧ください。
KMS でサポートされている鍵の全一覧と詳細については、鍵管理システム(KMS)ページのサポートされている鍵セクションをご覧ください。
始める前に
続行する前に、次の点をご確認ください。
- Management API サーバーにアクセスするように構成された - kubectlコマンド。これを行うには、kubeconfig ファイルを取得すると gdcloud コマンドライン インターフェース(CLI)のセクションをご覧ください。
- KMS 鍵インポート管理者ロールと KMS 鍵エクスポート管理者ロール。エクスポートされた鍵をインポートするために必要な権限を取得するには、プラットフォーム管理者(PA)に KMS 鍵インポート管理者( - kms-keyimport-admin)ロールと KMS 鍵エクスポート管理者(- kms-keyexport-admin)ロールの付与を依頼してください。
エクスポートした鍵をインポートする
エクスポートした鍵をインポートする手順は次のとおりです。
- YAML ファイルを作成し、 - kindオブジェクトの値として- KeyImportリソースを追加します。- apiVersion: "kms.gdc.goog/v1" kind: KeyImport metadata: name: KEY_IMPORT_NAME namespace: PROJECT spec: context: mechanism: MECHANISM- 次の変数を置き換えます。 - KEY_IMPORT_NAME: KeyImportリソースの名前(例:key-import-test)。
- PROJECT: プロジェクト Namespace の名前(例: kms-test1)。
- MECHANISM: 鍵の鍵共有メカニズム(例: `EDCH_P521_AES256`)。
 
- KEY_IMPORT_NAME: 
- YAML ファイルの内容を KMS に適用し、 - KeyImportリソースを作成します。- kubectl apply -f FILENAME.yaml- FILENAME は、YAML ファイルの名前に置き換えます。 - 内部で生成された鍵ペアの公開鍵を使用して、KMS は - KeyImportリソースのステータスを- AwaitingKeyToImportに更新します。続行するには、リソースのステータスを表示して、KMS で生成された公開鍵を取得する必要があります。
- KeyImportリソースのステータスを表示し、KMS で生成された公開鍵を取得するには、次のコマンドを実行します。- kubectl describe keyimport KEY_IMPORT_NAME --namespace PROJECT- 次の変数を置き換えます。 - KEY_IMPORT_NAME: KeyImportリソース名(例:key-import-test)。
- PROJECT: プロジェクトの名前空間の名前。例: kms-test1。
 - コマンドを実行すると、次のような出力が表示されます。 - ... Status: Conditions: Last Transition Time: 2022-12-14T20:43:50Z Message: waiting for user to provide KeyToImport Observed Generation: 1 Reason: AwaitingKeyToImport Status: False Type: Ready Imported Key Ref: Kind: KeyImport Name: key-import-test Peer Context: Private Key: Public Key: PUBLIC_KEY Events: <none>- 値 PUBLIC_KEY は、KMS で生成された公開鍵を表します。公開鍵をコピーし、次の手順で - KeyExportリソースに追加します。
- KEY_IMPORT_NAME: 
- 別の YAML ファイルを作成し、 - KeyExportリソースを- kindオブジェクトの値として追加し、次の内容を追加します。- apiVersion: "kms.gdc.goog/v1" kind: KeyExport metadata: name: KEY_EXPORT_NAME namespace: PROJECT spec: context: mechanism: MECHANISM publicKey: PUBLIC_KEY keyToExport: kind: KEY_PRIMITIVE name: KEY_NAME- 次の変数を置き換えます。 - KEY_EXPORT_NAME: KeyExportリソースの名前(例:key-export-test)。
- PROJECT: プロジェクトの名前空間の名前。例: - kms-test1。
- MECHANISM: 鍵の鍵共有メカニズム(例: `EDCH_P521_AES256`)。 
- PUBLIC_KEY: - keyImport.Status.PeerContext.PublicKeyからの公開鍵。
- KEY_PRIMITIVE: キーの CRD(aeadkey、signingkey など)。 
- KEY_NAME: 鍵の名前(例: - key-1)。
 
- KEY_EXPORT_NAME: 
- YAML ファイルの内容を KMS に適用し、 - KeyExportリソースを作成します。- kubectl apply -f FILENAME.yaml- FILENAME は、YAML ファイルの名前に置き換えます。 - コマンドを実行すると、KMS は - KeyExportリソースのステータスを更新し、エクスポートされた鍵を生成します。エクスポートされた鍵を取得するには、リソースのステータスを表示します。
- リソースのステータスを表示するには、次のコマンドを実行します。 - kubectl describe keyexport KEY_EXPORT_NAME --namespace PROJECT- 次の変数を置き換えます。 - KEY_EXPORT_NAME: KeyExportリソースの名前(例:key-export-test)。
- PROJECT: プロジェクトの名前空間の名前(例: kms-test1)。
 - コマンドを実行すると、次のような出力が表示されます。 - ... Status: Conditions: Last Transition Time: 2022-12-14T20:45:57Z Message: key successfully exported Observed Generation: 1 Reason: KeyExportCompleted Status: True Type: Ready Exported Key: EXPORTED_KEY- EXPORTED_KEY は、エクスポートされた鍵のメタデータを表します。EXPORTED_KEY の内容をコピーして、次の手順に進みます。 
- KEY_EXPORT_NAME: 
- KeyImportリソースを含む YAML ファイルを編集し、- keyexport.status.exportedkeyの出力からコピーしたコンテンツを追加します。- apiVersion: "kms.gdc.goog/v1" kind: KeyImport metadata: name: key-import-test namespace: kms-test1 spec: context: mechanism: EDCH_P521_AES256 keyToImport: EXPORTED_KEY
- YAML ファイルを編集したら、その内容を KMS に適用します。 - kubectl apply -f FILENAME.yaml- コマンドを実行すると、KMS は指定したエクスポートされた鍵をインポートします。 
- インポートされた鍵の詳細を表示するには、次のコマンドを実行します。 - kubectl get keyimport KEY_IMPORT_NAME- 次のような出力が表示されます。 - NAMESPACE NAME AGE READY REASON KEY KIND kms-test1 KEY_IMPORT_NAME 60s True KeyImportCompleted KEY_PRIMITIVE- KEY_PRIMITIVE は、インポートした鍵の種類(AEAD 鍵と署名鍵のどちらか)を表します。