このページでは、アプリケーション オペレーター(AO)がエクスポートされた鍵管理システム(KMS)鍵から鍵のインポート オペレーションを実行する手順について説明します。AO は、次のリソースから kubectl コマンドライン インターフェース(CLI)を使用してインポート オペレーションとエクスポート オペレーションを実行します。
これらのリソースの詳細については、KMS API の概要をご覧ください。
KMS でサポートされている鍵の全一覧と詳細については、鍵管理システム(KMS)ページのサポートされている鍵セクションをご覧ください。
始める前に
KMS オペレーションを実行する前に、Management API サーバーにアクセスして必要な権限を取得するように kubectl を構成します。
Management API サーバー アクセスを構成する
Management API サーバーにアクセスするように kubectl を構成します。
- まだ行っていない場合は、gdcloud コマンドライン インターフェース(CLI)を使用して、Management API サーバーの kubeconfig ファイルを取得します。
MANAGEMENT_API_SERVER環境変数を設定します。export MANAGEMENT_API_SERVER=PATH_TO_KUBECONFIGPATH_TO_KUBECONFIGは、生成された kubeconfig ファイルのパスに置き換えます。
必要な権限
必要な権限を取得するには、組織の IAM 管理者に 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.yamlFILENAME は、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-test1MECHANISM: 鍵の鍵共有メカニズム(例: `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.yamlFILENAME は、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_KEYEXPORTED_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_KEYYAML ファイルを編集したら、その内容を 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_PRIMITIVEKEY_PRIMITIVE は、インポートした鍵の種類(AEAD 鍵と署名鍵のどちらか)を表します。