署名検証のための公開鍵の取得
GPG 公開鍵を使用して、継続的デプロイメント (CD) パイプラインで署名されたイメージの署名を検証します。
GPG 公開鍵は、以下のようにして取得できます。
- 継続的統合 (CI) パイプラインを使用する。
- ローカル・コンピューターを使用する。
継続的統合 (CI) パイプラインを使用した GPG 公開鍵の取得
-
公開鍵を取得するには、CI パイプラインに環境変数
print-code-signing-public-keyを値 1 で追加します。 CI パイプラインを実行すると、GPG 公開鍵がbuild-sign-artifactステージのコンソールに出力されます。 その後、以下のコマンドを実行して、公開鍵をファイルにコピーし、 base64 形式でエンコードすることができます。cat copied_key.txt | base64 -
エンコードされた鍵を継続的デプロイメント (CD) パイプラインにコピーします。
ローカル・コンピューターを使用した GPG 公開鍵の取得
鍵リングに GPG 秘密鍵がある場合は、公開鍵を直接エクスポートできます。
-
マシンに GPG 鍵リングがあるかどうかを確認します。 キーリングとは、キーをグループ化したもので、それらのグループ化を独立して管理できるようにしたものである。 詳しくは、 鍵リングを使用した鍵のグループ化 を参照してください。 以下のコマンドを実行します。
gpg --list-keys /home/user/.gnupg/pubring.kbx ------------------------------- pub rsa3072 2021-04-15 [SC] [expires: 2023-04-15] 88DC11E8FDDF028F02E4184719D6C4C5990F144F uid [ unknown] user name <user.name@email.com> sub rsa3072 2021-04-15 [E] [expires: 2023-04-15] -
ご使用のコンピューターに GPG 鍵が存在する場合は、以下のコマンドを実行して GPG 公開鍵をエクスポートします。
gpg --armor --export <Email Address> -----BEGIN PGP PUBLIC KEY BLOCK----- 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 ftfswLBW+es4fQ== =0FYC -----END PGP PUBLIC KEY BLOCK----- -
GPG 公開鍵をエクスポートした後、
base64形式でエンコードしてから、code-signing-certificateフィールドにコピーします。
鍵の保管
以下のいずれかの方法で、GPG キーを CD パイプラインに提供します。
- IBM® Key Protect for IBM Cloud® にキーを保存する。
- IBM Cloud® Secrets Manager にキーを保存する。
- CI ツールチェーンにキーを直接保管します。
CIパイプラインの署名エラーを防ぐために、鍵が正しい形式でコピーされていることを確認してください。 pbcopy (OS X)または clip (Windows Git bash)を以下のセクションで指定するコマンドで使用し、キーの内容をクリップボードにコピーする。
Key Protect への鍵の保管
GPG 鍵を Key Protect インスタンスに保管する前に、 base64 エンコードする必要があります。
以下のようにGPGキーをエクスポートしてクリップボードにコピーする:
-
OS X
gpg --armor --export <Email Address> | base64 | base64 | pbcopy -
Windows
gpg --armor --export <Email Address> | base64 -w0 | base64 -w0 | clip -
Linux
gpg --armor --export <Email Address> | base64 | base64
-
IBM Cloud コンソールで、生成した GPG 鍵の保管先となる Key Protect インスタンスを選択します。
-
「追加」 アイコン
をクリックして、新しい鍵をインスタンスに追加します。
-
キーをインポートするオプションを選択します。
-
キータイプを「 標準キー」にする。
-
キー名フィールドに適切な名前を付ける。 保存されたGPG鍵は、この名前を使って後で取り出すことができる。
-
「 鍵素材 」フィールドにエクスポートした鍵をコピーします。
鍵をコピーして 「鍵素材」 フィールドに貼り付けるときに、鍵の末尾に余分な行がないことを確認してください。
-
「拡張オプション」 セクションを展開し、デフォルトとして 「鍵リングの選択」 オプションを選択します。
-
「鍵の追加」 をクリックして、鍵を鍵保護に追加します。
キープロテクトにキーを追加する
Key Protectについて詳しくは、 Key Protectについて を参照してください。
Secrets Manager への鍵の保管
GPG 鍵を Secrets Manager インスタンスに保管する前に、単一の base64 エンコードする必要があります。
-
GPG 鍵をエクスポートしてクリップボードにコピーします。
-
OS X
gpg --armor --export <Email Address> | base64 | pbcopy -
Windows
gpg --armor --export <Email Address> | base64 -w0 | clip -
Linux
gpg --armor --export <Email Address> | base64
-
-
IBM Cloud コンソールで、前の手順で生成した GPG 鍵を保存する Secrets Manager インスタンスを選択します。
-
「追加」 アイコン
をクリックして、新しい鍵をインスタンスに追加します。
-
その他の秘密タイプオプションを選択します。
その他の秘密タイプ -
キータイプを「 標準キー」にする。
-
名前フィールドに適切な名前を付ける。 保存されたGPG鍵は、この名前を使って後で取り出すことができる。
-
シークレット値としてオプションを選択し、 シークレット値フィールドに先ほどエクスポートしたキーを貼り付けます。
鍵をコピーして 「秘密値」 フィールドに貼り付けるときに、鍵の末尾に余分な行がないことを確認してください。
-
「追加」 をクリックして、 Key Protect インスタンスに鍵を追加します。
キーを追加
キーを追加
Secrets Manager について詳しくは、Secrets Manager の概要を参照してください。
秘密鍵をエクスポートして CI パイプラインに直接保管する
この方法は、テストにのみ使用してください。 鍵の保管には keyprotect または secrets manager。
GPG 鍵を保護されたパイプライン・プロパティーとして保管する前に、単一の base64 で GPG 鍵をエンコードする必要があります。
以下のようにして、GPG 鍵を Key Protect または Secrets Manager インスタンスに安全に保管します。
-
OS Xまたは Linux
gpg --armor --export <Email Address> | base64 -
Windows
gpg --armor --export <Email Address> | base64 -w0