第4章 コンテナーイメージへの署名
前提条件
- OpenShift Web コンソールへのアクセス。
- バージョン 4.13 以降の OpenShift 上で実行中の動作している Red Hat Trusted Artifact Signer (RHTAS) インストール。
-
ec
、cosign
、oc
バイナリーファイルがインストールされたワークステーション。
手順
OpenShift クラスターにログインします。
構文
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
例
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
注記コマンドラインログイントークンと URL を確認するには、OpenShift Web コンソール にログインします。ユーザー名をクリックし、Copy login command をクリックします。プロンプトが表示されたら、ユーザー名とパスワードを再度入力し、Display Token をクリックします。
RHTAS にログインします。コンテナーイメージに署名して検証するには、RHTAS シェル環境を必ず設定してください。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd sigstore-ocp source tas-env-variables.sh
cd sigstore-ocp source tas-env-variables.sh
環境変数を手動で設定する方法もあります。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export OPENSHIFT_APPS_SUBDOMAIN=apps.$(oc get dns cluster -o jsonpath='{ .spec.baseDomain }') export OIDC_AUTHENTICATION_REALM=sigstore export FULCIO_URL=https://fulcio.$OPENSHIFT_APPS_SUBDOMAIN export OIDC_ISSUER_URL=https://keycloak-keycloak-system.$OPENSHIFT_APPS_SUBDOMAIN/auth/realms/$OIDC_AUTHENTICATION_REALM export REKOR_URL=https://rekor.$OPENSHIFT_APPS_SUBDOMAIN export TUF_URL=https://tuf.$OPENSHIFT_APPS_SUBDOMAIN
export OPENSHIFT_APPS_SUBDOMAIN=apps.$(oc get dns cluster -o jsonpath='{ .spec.baseDomain }') export OIDC_AUTHENTICATION_REALM=sigstore export FULCIO_URL=https://fulcio.$OPENSHIFT_APPS_SUBDOMAIN export OIDC_ISSUER_URL=https://keycloak-keycloak-system.$OPENSHIFT_APPS_SUBDOMAIN/auth/realms/$OIDC_AUTHENTICATION_REALM export REKOR_URL=https://rekor.$OPENSHIFT_APPS_SUBDOMAIN export TUF_URL=https://tuf.$OPENSHIFT_APPS_SUBDOMAIN
例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow source ./tas-env-vars.sh
$ source ./tas-env-vars.sh
-
oc logout
コマンドを実行して、OpenShift クラスターからログアウトします。 -
署名およびアテストするコンテナーイメージを特定します (例:
IMAGE=quay.io/lucarval/rhtas-test@sha256:6b95efc134c2af3d45472c0a2f88e6085433df058cc210abb2bb061ac4d74359
)。 -
パブリックの Sigstore デプロイメントではなく、Red Hat Trusted Artifact Signer を使用してコンテナーイメージに署名およびアテストすることを RHTAP に指定します。
cosign initialize --mirror=$TUF_URL --root=$TUF_URL/root.json
コマンドを入力します。 次のコマンドを使用してコンテナーイメージに署名します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cosign sign -y --fulcio-url=$FULCIO_URL --rekor-url=$REKOR_URL \ --oidc-issuer=$OIDC_ISSUER_URL $IMAGE
cosign sign -y --fulcio-url=$FULCIO_URL --rekor-url=$REKOR_URL \ --oidc-issuer=$OIDC_ISSUER_URL $IMAGE
- プロンプトが表示されたら、RHTAS をインストールしたときに RHTAP によってインストールされた Keycloak インスタンスにログインします。これは、Keycloak がユーザーを認証できるようにするためです。
次のステップ
これでイメージが署名されました。これで、以下が可能になります。
- SLSA の来歴アテステーションを作成し、コンテナーイメージに関連付けます。
- Red Hat Enterprise Contract でコンテナーイメージを検証します。
関連情報
- Red Hat Trusted Artifact Signer の詳細、特に RHTAP および Enterprise Contract との連携方法については、Red Hat Trusted Artifact Signer デプロイメント を参照してください。
- Keycloak の詳細は、Keycloak.org を参照してください。
4.1. コンテナーイメージに署名してアテストするための署名鍵の生成
コンテナーイメージに署名してアテストするには、署名鍵が必要です。
前提条件
-
cosign
バイナリーファイルがインストールされたワークステーション。
手順
-
CLI で、
cosign generate-key-pair
コマンドを実行します。 - プロンプトが表示されたら、キーペアの新しいパスワードを入力します。パスワードは覚えやすく強力なものにしてください。
検証
これで、作業ディレクトリーに
cosign.pub
とcosign.key
という 2 つの新しいファイルが作成されます。-
cosign.pub
ファイルには、公開署名鍵が含まれています。この鍵は、コンテナーイメージの検証が必要なコラボレーターと共有できます。 -
cosign.key
ファイルは、コンテンツに署名するための秘密鍵です。イメージの署名およびアテステーションの責任者だけがcosign.key
ファイルにアクセスできるようにしてください。
-