署名検証のための公開鍵の取得

GPG 公開鍵を使用して、継続的デプロイメント (CD) パイプラインで署名されたイメージの署名を検証します。

GPG 公開鍵は、以下のようにして取得できます。

  • 継続的統合 (CI) パイプラインを使用する。
  • ローカル・コンピューターを使用する。

継続的統合 (CI) パイプラインを使用した GPG 公開鍵の取得

  1. 公開鍵を取得するには、CI パイプラインに環境変数 print-code-signing-public-key を値 1 で追加します。 CI パイプラインを実行すると、GPG 公開鍵が build-sign-artifact ステージのコンソールに出力されます。 その後、以下のコマンドを実行して、公開鍵をファイルにコピーし、 base64 形式でエンコードすることができます。

    cat copied_key.txt | base64
    
  2. エンコードされた鍵を継続的デプロイメント (CD) パイプラインにコピーします。

ローカル・コンピューターを使用した GPG 公開鍵の取得

鍵リングに GPG 秘密鍵がある場合は、公開鍵を直接エクスポートできます。

  1. マシンに 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]
    
  2. ご使用のコンピューターに GPG 鍵が存在する場合は、以下のコマンドを実行して GPG 公開鍵をエクスポートします。

    gpg --armor --export  <Email Address>
    
    
        -----BEGIN PGP PUBLIC KEY BLOCK-----
        xsBNBGQICw0BCADS5GwuET5rkH6n1e6bM8sYod5Apbf06yQqhAFz5hkAWCu50Nw0
        GEyxRQCAxp+9xERSr43W0StSaL9KGHBaB3oS9evkcIrlOkTwncvAZODAsaorcRtW
        1IkICPhztRHyN+wR2TWadatHz/RvOlEDVAg51XLfFIQibTStgweB3rV2c5jTsCUc
        C6N6sNoHx4OhLZ7BNJSSZBByyt4qf3d2yErOULjjUCYsvcTaOM4gtXx4Cbsk7F/y
        kZnCCqFimPOJKjsXjc+6hyAKgG0xRIGtv/zzU+nwew2fDblWTwZjDx4V9KZl1o07
        XBHfNu0hKgvQhJURxY7gCtYtIHoDF5xI2/OfABEBAAHNGmV0c3QgPHVzZXIubmFt
        ZUBlbWFpbC5jb20+wsBtBBMBCgAXBQJkCAsNAhsvAwsJBwMVCggCHgECF4AACgkQ
        8aKO5nwRdmhECwf9Flyfu2VBMQabeU4IIZESgDjPxl4m7yiIpOdLNcWPxTS9S3th
        3x84/wQE9ZwX8vpBv/1KN8cZROJDnVAmZhVGVa3CBOI4dhFfMAU9mwzAWH0owjmt
        QtHOoQ+cajcQEvvkl4UTnScoEXwVVqKHNWAAq/myDRtZr1yCMokmbc0PjCftIfHr
        a+50dYZEVL9D8Cq1dQKFsmPCPPZvUmHQKXQTUr4usY72zf9IUPH6n5D2tkpNo253
        lWEVptVKHH21XhNpp+ROY7DTB0xLFzIirXh5Rwx5OkGO7n1gfUM4B1i1z3A6uXhX
        sP7wf45OaFscPMVGmVFOgP1VRdNsBfPodT1NG87ATQRkCAsNAQgAoMcJTSrAPMrj
        u0kMHGlE2/D+7TkKnJ5Gtw38EMxDX/kKBiKhI7WoT3OKjT/GrpXSIn1TfMWHh2oQ
        mBP9g0dXnr9dNB7eQMtq8dVU9cVg63U05tSbckoCiLqnVU5nG7NdUGd8n1QPFPw5
        wRdT/BWZ/NsruWZ9DLIoCqSE73Ez4p7KVu0Nfm62D4Z87ejOfsObcLRZuLkjK9Mn
        0te5LMZ4xTTTzSSia3mxNwVtKE8r7ihf+f6vCvDzCD23OnqeSeQnOoxlvdBLOyWT
        QkFWP/OdYIPBLAVG12aUAPq79TW4B04LWIw7LjbXenszI6M1LqUQgP+PHegMTs2O
        EQtLJHJJNQARAQABwsGEBBgBCgAPBQJkCAsNBQkPCZwAAhsuASkJEPGijuZ8EXZo
        wF0gBBkBCgAGBQJkCAsNAAoJEKLCBxPVXHfTJPQH/3mUPJGxlsdRFsFW3xvNEfRX
        EGdV9sQOhgcV+/ZLmnrWTpjBFfzWXJDetyM3awKmrMbggnPmavJyXjCB+Skrsqjf
        qO7mlc4oi9MGdSnsZ8UBjKQhNJYGSQWN7AmfFs+FOLopvlpDh5nmfxEiS+4DAxu2
        3Ur0GN93QJ7FbIpKGhtH20XtVl1Gfj6ZA7jwY50kY3rhw7qzw22e4a+URAi52ReN
        ZlElL7qQCiYGk2FYwhPYj4WCGmrx7mAGAdI/Xsqtgpwon1YkFuo3psZP9IXrskls
        XP2Y9NDnYZM/nV0RCBRoJKvJL2daJyQ9iHmfeF0Hh7AxmboQWZo2tnnOqprOwAVU
        dAgArROMqK7Ng+j3yAAY9xuHmI2GVHSqK/UPiO+XGvuGWDLzlrgT7ehpCSIeg/sF
        0ZfE5fYV3758kAQEclpejV71mL2pedBwzigD3IH6Mlit5slwqlmsBWCN64DwGJLp
        aKsdbBcglUixuO5q0dLEHHXYVgUUqrV7rEdW5s+4LiROcHgQCLIDzZOYjCqGYex4
        YhWPFPmReFd48qDQAFDtU0teUeeMTMWHQCGQq2eZLJtHpG0axrqKi3kl5K5TbFR6
        FpwkW3HhQn8p48PWS78MJVZZvFD+GDOa8xLQR3ylkzdI3ODO9Cuzfo+sWJIQk/gB
        bGCnEBJJosoJebVF8ZpXI+Qbg87ATQRkCAsNAQgAwPpK+5OCM0OuNoErYCTNHama
        5VrlHjc3glUQUIIGYhZtfQiINPIB0gjPURkOmJHZdFWQccE+JLlX0hVLHVaisr7q
        izSI8VZ4/YUYfTJHltTLiu9PoYw922UQo7fRLglUmvv4nctBkT+T2YWzJNNQaffR
        Ac1wLhFSklDPxAvY+xJ1vCYABYF5gml6lLNEy0BD3+w8rGIfmXi92P6CtxSi6Msx
        zD+p8jib4rKuWICj79+DtDvzglmeoSCzFjINQ2UkbULRAOZWDwoJlt247SPWSKpi
        0fabbaAwHIeoCPYoOWlpx/3jdXDmBB9HEGUUk2q8eHaHUkQdyfm5uxU188VUfwAR
        AQABwsGEBBgBCgAPBQJkCAsNBQkPCZwAAhsuASkJEPGijuZ8EXZowF0gBBkBCgAG
        BQJkCAsNAAoJEFIxvQO1BHFkFNUIAKNXypvVxFXm7w97+6teXRUWlL8N+qlCaJlO
        dVmAeLXZTE7k/r+IeYR53Xf4oS9kAqVkB9VzyBSvBjNmpKHv84UMbPMm44M8ESsc
        Cf9drVrW9Cuw3qwkuVYXnlnhukxLm/1ivSl2Tw/ywwpShGdhQc9KnPPSYtGEMAhM
        /dqXUtZs/akOScoyaU9cNNEEQVlzGmKh0T1Qb4xuFd9dqNC9wJ2aGDXcGFnDvAoq
        YSZZl5KWY/11AqBR9smeMyZrK8SAAw8dFPpVNsLWGdTKrywfSjcBUqasoI2QvFJB
        Nbmu7JILvEsMXtA2vjJ3SQtOVZs744mo9fi8Jpu/V7P7v+88u8EYWwf+OgQUJT/e
        WzslyV2/ST9+ozxfsGwpl9hlzmPQ4B+a7wNPTqRwCrJgaVIz3Q3LzV06wv7b0YmU
        Vz1j3Zv2SrQntYGR6F4Whi/j4vLl19eI0LhnxcOw4/Ry4pQ8NnypF63Vz7XpNEaf
        vF/P82FwXHR0OvOhEt3UgGdxvC69VF8tHlqaXjMLvmoBMrk1oi2ZDONo/3v9xwzO
        EnxlN5I7ah3n9aBt+D0NZ8EU2qfclMNEEI4viGzB++BEUMbflmbnFdt2Nmbqk1pe
        bknJV8p6m/r56kBPDvk5uqd/L2+j50MrAu4RFNIy4qx+ub1MxqU+MZGjFa3O46Al
        ftfswLBW+es4fQ==
        =0FYC
        -----END PGP PUBLIC KEY BLOCK-----
    
  3. 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
    
  1. IBM Cloud コンソールで、生成した GPG 鍵の保管先となる Key Protect インスタンスを選択します。

  2. 「追加」 アイコン 「追加」アイコン をクリックして、新しい鍵をインスタンスに追加します。

  3. キーをインポートするオプションを選択します。

  4. キータイプを「 標準キー」にする。

  5. キー名フィールドに適切な名前を付ける。 保存されたGPG鍵は、この名前を使って後で取り出すことができる。

  6. 鍵素材 」フィールドにエクスポートした鍵をコピーします。

    鍵をコピーして 「鍵素材」 フィールドに貼り付けるときに、鍵の末尾に余分な行がないことを確認してください。

  7. 「拡張オプション」 セクションを展開し、デフォルトとして 「鍵リングの選択」 オプションを選択します。

  8. 「鍵の追加」 をクリックして、鍵を鍵保護に追加します。

    キープロテクトにキーを追加する
    キープロテクトにキーを追加する

Key Protectについて詳しくは、 Key Protectについて を参照してください。

Secrets Manager への鍵の保管

GPG 鍵を Secrets Manager インスタンスに保管する前に、単一の base64 エンコードする必要があります。

  1. 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
      
  2. IBM Cloud コンソールで、前の手順で生成した GPG 鍵を保存する Secrets Manager インスタンスを選択します。

  3. 「追加」 アイコン 「追加」アイコン をクリックして、新しい鍵をインスタンスに追加します。

  4. その他の秘密タイプオプションを選択します。

    その他の秘密タイプ
    その他の秘密タイプ

  5. キータイプを「 標準キー」にする。

  6. 名前フィールドに適切な名前を付ける。 保存されたGPG鍵は、この名前を使って後で取り出すことができる。

  7. シークレット値としてオプションを選択し、 シークレット値フィールドに先ほどエクスポートしたキーを貼り付けます。

    鍵をコピーして 「秘密値」 フィールドに貼り付けるときに、鍵の末尾に余分な行がないことを確認してください。

  8. 「追加」 をクリックして、 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