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

このページでは、アプリケーション オペレーター(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)ロールの付与を依頼してください。

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

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

  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: プロジェクト Namespace の名前(例: 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 ファイルを作成し、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)。

  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 鍵と署名鍵のどちらか)を表します。