キーの作成と削除

Key Management System(KMS)は、暗号化、復号、署名、検証などの暗号オペレーション用にさまざまな種類の鍵をサポートしています。使用可能な鍵の種類とアルゴリズムの詳細については、 サポートされている鍵 をご覧ください。

このページは、Google Distributed Cloud(GDC)エアギャップ内で鍵管理オペレーションを実行するアプリケーション オペレーター グループ(DevOps チームなど)のユーザーを対象としています。詳細については、 GDC エアギャップ ドキュメントの対象読者をご覧ください。

始める前に

鍵を作成して管理するには、必要な権限をリクエストして環境を準備します。

IAM ロールをリクエストする

組織の IAM 管理者に連絡して、プロジェクトの名前空間に次のロールを付与してもらいます。

  • KMS 作成者kms-creator): プロジェクト内の AEADKey リソースと SigningKey リソースを表示して作成します。
  • KMS 管理者kms-admin): プロジェクト内の鍵を表示、作成、削除します。

環境を準備する

  1. gdcloud CLI をインストールして初期化します(まだ行っていない場合)。

  2. gdcloud CLI を使用して GDC に対して認証を行います。このプロセスには、組織のコンソールの認証局(CA)証明書が必要です。

    1. CA 証明書をダウンロードします。

      echo -n | openssl s_client -showcerts -connect CONSOLE_URL:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > CA_CERT_PATH
      

      次のように置き換えます。

      • CONSOLE_URL: 組織のコンソール URL(console.org-1.zone1.google.gdch.test など)
      • CA_CERT_PATH: CA 証明書ファイルを保存するフルパス(/tmp/my-org-ca.crt など)
    2. ダウンロードした CA 証明書を使用してログインします。

      gdcloud auth login --login-config-cert=CA_CERT_PATH
      
  3. kubeconfig ファイル を gdcloud CLI を使用して Management API サーバー用に取得します。

鍵を作成する

さまざまな暗号化の目的に合わせて鍵を作成できます。

AEAD 鍵を作成する

関連データを伴う認証付き暗号化(AEAD)を実行するには、プロジェクトの名前空間に AEADKey リソースを作成します。

kubectl --kubeconfig KUBECONFIG_PATH \
apply -f - << EOF
apiVersion: "kms.gdc.goog/v1"
kind: AEADKey
metadata:
  name: KEY_NAME
  namespace: PROJECT
spec:
  algorithm: AES_256_GCM
EOF

次のように置き換えます。

  • KUBECONFIG_PATH: Management API サーバーの kubeconfig ファイルへのパス
  • KEY_NAME: 作成する AEAD 鍵の名前(例: key-1
  • PROJECT: プロジェクトの名前(例: kms-test1

署名鍵を作成する

データの署名と検証を行うには、プロジェクトの名前空間に SigningKey リソースを作成します。

kubectl --kubeconfig KUBECONFIG_PATH \
apply -f - << EOF
apiVersion: "kms.gdc.goog/v1"
kind: SigningKey
metadata:
  name: KEY_NAME
  namespace: PROJECT
spec:
  algorithm: EC_SIGN_P384_SHA384
EOF

次のように置き換えます。

  • KUBECONFIG_PATH: Management API サーバーの kubeconfig ファイルへのパス
  • KEY_NAME: 作成する署名鍵の名前(例: key-1
  • PROJECT: プロジェクトの名前(例: kms-test1

鍵の作成を確認する

鍵を作成したら、オペレーションが成功し、鍵リソースが準備できていることを確認します。

AEAD 鍵の作成を確認する

AEAD 鍵のステータスを確認します。

kubectl --kubeconfig KUBECONFIG_PATH \
  get aeadkey KEY_NAME \
  --namespace=PROJECT -o yaml

次のように置き換えます。

  • KUBECONFIG_PATH: Management API サーバーの kubeconfig ファイルへのパス
  • KEY_NAME: 確認する AEAD 鍵の名前(例: key-1
  • PROJECT: プロジェクトの名前(例: kms-test1

鍵の作成が成功した場合は、ステータスが TrueReady 条件が出力に表示されます。

署名鍵の作成を確認する

署名鍵のステータスを確認します。

kubectl --kubeconfig KUBECONFIG_PATH \
  get signingkey KEY_NAME \
  --namespace=PROJECT -o yaml

次のように置き換えます。

  • KUBECONFIG_PATH: Management API サーバーの kubeconfig ファイルへのパス
  • KEY_NAME: 確認する署名鍵の名前(例: key-1
  • PROJECT: プロジェクトの名前(例: kms-test1

鍵の作成が成功した場合は、ステータスが TrueReady 条件が出力に表示されます。

鍵を削除する

鍵リソースを削除するには、鍵の種類と名前を指定します。

  1. プロジェクトの名前空間で鍵を削除します。

    kubectl --kubeconfig KUBECONFIG_PATH \
      delete KEY_PRIMITIVE KEY_NAME \
      --namespace=PROJECT
    

    次のように置き換えます。

    • KUBECONFIG_PATH: Management API サーバーの kubeconfig ファイルへのパス
    • KEY_PRIMITIVE: 削除する鍵リソースのタイプ(AEAD 鍵の場合は aeadkey、署名鍵の場合は signingkey など)
    • KEY_NAME: 削除する鍵の名前(例: key-1
    • PROJECT: プロジェクトの名前(例: kms-test1
  2. 鍵を取得して、鍵が削除されたことを確認します。

    kubectl --kubeconfig KUBECONFIG_PATH \
      get KEY_PRIMITIVE  KEY_NAME \
      --namespace=PROJECT
    

    鍵が正常に削除された場合、コマンドは鍵オブジェクトを返しません。