このドキュメントでは、Key Management System(KMS)鍵をインポートおよびエクスポートする方法について説明します。これらのオペレーションでは、kubectl コマンドライン インターフェース(CLI)を使用し、次の Kubernetes リソースとやり取りします。
これらのリソースの詳細については、 KMS API の概要をご覧ください。
KMS でサポートされている鍵の完全なリストと詳細については、鍵 管理システムのドキュメントのサポートされている鍵のセクションをご覧ください。
このドキュメントは、Google Distributed Cloud(GDC)エアギャップ内で鍵管理オペレーションを実行するアプリケーション オペレーター グループ内のユーザーを対象としています。詳細については、 GDC エアギャップ ドキュメントの 対象読者をご覧ください。
始める前に
鍵をインポートまたはエクスポートする前に、必要な権限を取得し、環境を準備する必要があります。
IAM ロールをリクエストする
組織の IAM 管理者に連絡して、プロジェクトで次のロールをリクエストします。
- KMS 鍵インポート管理者 (
kms-keyimport-admin):KeyImportリソースを作成、更新、削除します。 - KMS 鍵エクスポート管理者 (
kms-keyexport-admin):KeyExportリソースを作成、更新、削除します。
環境を準備する
kubectlCLI を、 コンポーネントのインストールで説明されているようにインストールします。kubeconfig ファイルを生成して
kubectlアクセスを構成します。
エクスポートされた鍵をインポートする
エクスポートされた鍵をインポートする手順は次のとおりです。
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:プロジェクトの名前空間の名前(例:
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 ファイルを作成し、
kindオブジェクトの値としてKeyExportリソースを追加し、次の内容を追加します。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.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 鍵と署名鍵)を表します。