データに署名し、検証する

デジタル署名は、データの完全性と信頼性を確保するために使用されます。このドキュメントでは、gdcloud CLI を使用してデータを署名し、Key Management System(KMS)で管理される非対称鍵を使用して署名を検証する方法について説明します。

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

始める前に

鍵を使用してデータを署名および検証するには、必要な権限をリクエストし、環境を準備して、署名鍵をまだ作成していない場合は作成します。

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

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

  • KMS デベロッパーkms-developer): 鍵を表示し、プロジェクト内のデータの暗号化、復号、署名、検証などの暗号オペレーションを実行します。

環境を準備する

  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
      

署名鍵が存在することを確認する

データの署名と検証を行うには、署名鍵を使用する必要があります。鍵の作成と検証には、リンク先のページで説明されているように、個別の IAM 権限が必要です。

データに署名する

データを署名するには、gdcloud kms keys asymmetric-sign コマンドを使用します。このコマンドは、署名鍵を使用して入力ファイルのデジタル署名を作成し、Base64 でエンコードされた署名を保存します。

  gdcloud kms keys asymmetric-sign \
  namespaces/NAMESPACE/signingKeys/KEY_NAME \
  --input-file=INPUT_PATH \
  --signature-file=SIGNATURE_FILE

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

  • NAMESPACE: プロジェクトの名前空間(例: kms-test1
  • KEY_NAME: 署名に使用される鍵の名前(例: key-1
  • INPUT_PATH: 署名する入力ファイルのパス
  • SIGNATURE_FILE: Base64 エンコードされた署名を保存する出力ファイルのパス

コマンドを実行すると、--signature-file フラグで指定した出力ファイルに、base64 でエンコードされた署名が含まれます。

データを確認する

データを署名したら、gdcloud kms keys asymmetric-verify コマンドを使用して base64 デジタル署名を確認します。このコマンドは、gdcloud kms keys asymmetric-sign コマンドの実行後に受け取った base64 エンコードされたデジタル署名が有効かどうかを確認します。

gdcloud kms keys asymmetric-verify \
namespaces/NAMESPACE/signingKeys/KEY_NAME \
  --input-file=INPUT_PATH \
  --signature-file=SIGNATURE_FILE

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

  • NAMESPACE: プロジェクトの名前空間(例: kms-test1
  • KEY_NAME: 署名に使用される鍵の名前(例: key-1
  • INPUT_PATH: 署名された元の入力ファイルのパス
  • SIGNATURE_FILE: 検証する base64 エンコードされた署名を含むファイルのパス

コマンドを実行すると、成功した場合は Verification OK という出力が表示されます。成功しなかった場合は、失敗の出力 Verification Failure が表示されます。