デジタル署名は、データの完全性と真正性を確保するために使用されます。このドキュメントでは、gdcloud CLI を使用して、鍵管理システム(KMS)で管理されている非対称鍵でデータに署名し、署名を検証する方法について説明します。
このページは、Google Distributed Cloud(GDC)エアギャップ内で鍵管理オペレーションを実行する際の、DevOps チームなどのアプリケーション オペレーター グループを対象としています。詳細については、GDC エアギャップ ドキュメントの対象読者をご覧ください。
始める前に
鍵を使用してデータの署名と検証を行うには、必要な権限をリクエストし、環境を準備します。署名鍵がない場合は、作成します。
IAM ロールをリクエストする
IAM 組織管理者に連絡して、プロジェクトの名前空間に次のロールを付与してもらいます。
- KMS デベロッパー(
kms-developer): 鍵を表示し、プロジェクト内のデータの暗号化、復号、署名、検証などの暗号オペレーションを実行します。
環境を準備する
gdcloud CLI をインストールして初期化します(まだ行っていない場合)。
gdcloud CLI を使用して GDC に対する認証を行います。このプロセスでは、組織のコンソールの認証局(CA)証明書が必要です。
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など)
ダウンロードした 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 が表示されます。