10.3. Cosign OCI のサポート

Cosign は、コンテナーイメージの署名および検証に使用できるツールです。ECDSA-P256 署名アルゴリズムおよび Red Hat の Simple Signing ペイロード形式を使用して、PKIX ファイルに保存される公開鍵を作成します。秘密鍵は暗号化された PEM ファイルとして保存されます。

Cosign は現在、以下をサポートしています。

  • ハードウェアおよび KMS の署名
  • 自身の PKI を使用
  • OIDC PKI
  • 組み込みのバイナリー透過性およびタイムスタンプサービス

Cosign を直接インストールするには、次の手順を実行します。

前提条件

  • Go バージョン 1.16 以降がインストールされている。
  • config.yaml ファイルで FEATURE_GENERAL_OCI_SUPPORTtrue に設定している。

手順

  1. 次の go コマンドを入力して、Cosign を直接インストールします。

    $ go install github.com/sigstore/cosign/cmd/cosign@v1.0.0

    出力例

    go: downloading github.com/sigstore/cosign v1.0.0
    go: downloading github.com/peterbourgon/ff/v3 v3.1.0

  2. 次のコマンドを入力して、Cosign 用のキーと値のペアを生成します。

    $ cosign generate-key-pair

    出力例

    Enter password for private key:
    Enter again:
    Private key written to cosign.key
    Public key written to cosign.pub

  3. 次のコマンドを入力して、キーと値のペアに署名します。

    $ cosign sign -key cosign.key quay-server.example.com/user1/busybox:test

    出力例

    Enter password for private key:
    Pushing signature to: quay-server.example.com/user1/busybox:sha256-ff13b8f6f289b92ec2913fa57c5dd0a874c3a7f8f149aabee50e3d01546473e3.sig

    認証に ~./docker/config.json に依存していることが原因で起こる error: signing quay-server.example.com/user1/busybox:test: getting remote image: GET https://quay-server.example.com/v2/user1/busybox/manifests/test: UNAUTHORIZED: access to the requested resource is not authorized; map[] エラーが発生した場合は、次のコマンドを実行する必要がある場合があります。

    $ podman login --authfile ~/.docker/config.json quay-server.example.com

    出力例

    Username:
    Password:
    Login Succeeded!

  4. 次のコマンドを入力して、更新された認可設定を確認します。

    $ cat ~/.docker/config.json
    {
    	"auths": {
    		"quay-server.example.com": {
    			"auth": "cXVheWFkbWluOnBhc3N3b3Jk"
    		}
    	}