鍵のインポートとエクスポート

このドキュメントでは、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 リソースを作成、更新、削除します。

環境を準備する

エクスポートされた鍵をインポートする

エクスポートされた鍵をインポートする手順は次のとおりです。

  1. 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`)。
  2. YAML ファイルの内容を KMS に適用して、KeyImport リソースを作成します。

    kubectl apply -f FILENAME.yaml
    

    FILENAME は、YAML ファイルの名前に置き換えます。

    内部で生成された鍵ペアの公開鍵を使用して、KMS は KeyImport リソースのステータスを AwaitingKeyToImport に更新します。続行するには、リソースのステータスを表示して、KMS で生成された公開鍵を取得する必要があります。

  3. 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 リソースに追加します。

  4. 別の 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)。

  5. YAML ファイルの内容を KMS に適用して、KeyExport リソースを作成します。

    kubectl apply -f FILENAME.yaml
    

    FILENAME は、YAML ファイルの名前に置き換えます。

    コマンドを実行すると、KMS は KeyExport リソースのステータスを更新し、エクスポートされた鍵を生成します。エクスポートされた鍵を取得するには、リソースのステータスを表示します。

  6. リソースのステータスを表示するには、次のコマンドを実行します。

    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 の内容をコピーします。

  7. 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
    
  8. YAML ファイルを編集したら、その内容を KMS に適用します。

    kubectl apply -f FILENAME.yaml
    

    コマンドを実行すると、KMS は指定したエクスポートされた鍵をインポートします。

  9. インポートされた鍵の詳細を表示するには、次のコマンドを実行します。

    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 鍵と署名鍵)を表します。