14.3. Cosign OCI のサポート
Cosign は、コンテナーイメージの署名および検証に使用できるツールです。ECDSA-P256
署名アルゴリズムおよび Red Hat の Simple Signing ペイロード形式を使用して、PKIX ファイルに保存される公開鍵を作成します。秘密鍵は暗号化された PEM ファイルとして保存されます。
Cosign は現在、以下をサポートしています。
- ハードウェアおよび KMS の署名
- 自身の PKI を使用
- OIDC PKI
- 組み込みのバイナリー透過性およびタイムスタンプサービス
Cosign を直接インストールするには、次の手順を実行します。
前提条件
- Go バージョン 1.16 以降がインストールされている。
手順
次の
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
次のコマンドを入力して、Cosign 用のキーと値のペアを生成します。
$ cosign generate-key-pair
出力例
Enter password for private key: Enter again: Private key written to cosign.key Public key written to cosign.pub
次のコマンドを入力して、キーと値のペアに署名します。
$ cosign sign -key cosign.key quay.io/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.io
出力例
Username: Password: Login Succeeded!
次のコマンドを入力して、更新された認可設定を確認します。
$ cat ~/.docker/config.json { "auths": { "quay-server.example.com": { "auth": "cXVheWFkbWluOnBhc3N3b3Jk" } }