署名検証のための公開鍵の取得
GPG 公開鍵を使用して、継続的デプロイメント (CD) パイプラインで署名されたイメージの署名を検証します。
GPG 公開鍵は、以下のようにして取得できます。
- 継続的統合 (CI) パイプラインを使用する。
- ローカル・コンピューターを使用する。
継続的統合 (CI) パイプラインを使用した GPG 公開鍵の取得
-
公開鍵を取得するには、CI パイプラインに環境変数
print-code-signing-certificate
を値 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 キーは、この名前を使用して後で取得できます。
-
「 鍵素材 」フィールドにエクスポートした鍵をコピーします。
鍵をコピーして 「鍵素材」 フィールドに貼り付けるときに、鍵の末尾に余分な行がないことを確認してください。
-
「拡張オプション」 セクションを展開し、デフォルトとして 「鍵リングの選択」 オプションを選択します。
-
**「鍵の追加」**をクリックして、鍵を鍵保護に追加します。
図 1. Key Protect への鍵の追加
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 インスタンスを選択します。
-
「追加」 アイコン
をクリックして、新しい鍵をインスタンスに追加します。
-
「その他のシークレット・タイプ」 オプションを選択します。
図 2. その他のシークレット・タイプ -
鍵タイプとして **「標準鍵」**を選択します。
-
「名前」 フィールドに適切な名前を指定します。 保管された GPG キーは、この名前を使用して後で取得できます。
-
オプションとして 「秘密鍵の値」 を選択し、前にエクスポートした鍵を 「秘密鍵の値」 フィールドに貼り付けます。
鍵をコピーして 「秘密値」 フィールドに貼り付けるときに、鍵の末尾に余分な行がないことを確認してください。
-
**「追加」**をクリックして、 Key Protect インスタンスに鍵を追加します。
図 3. キー
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