12.2. sigstore サポートの設定について
ClusterImagePolicy および ImagePolicy カスタムリソース (CR) オブジェクトを使用して、クラスター全体または特定の namespace に対して sigstore サポートを有効化および設定できます。これらのオブジェクトには、sigstore ツールを使用して検証するイメージとリポジトリー、および署名の検証方法を指定するポリシーが含まれています。
クラスターイメージポリシー。クラスター管理者は、クラスターイメージポリシーオブジェクトを使用してクラスター全体の sigstore 署名検証ポリシーを設定できます。有効にすると、Machine Config Operator (MCO) は
ClusterImagePolicyオブジェクトを監視し、クラスター内のすべてのノード上の/etc/containers/policy.jsonファイルと/etc/containers/registries.d/sigstore-registries.yamlファイルを更新します。重要デフォルトの
openshiftクラスターイメージポリシーは、必要な OpenShift Container Platform イメージの sigstore サポートを提供します。このクラスターイメージポリシーオブジェクトは、削除または変更しないでください。このクラスターイメージポリシーはテクノロジープレビューであり、テクノロジープレビュー機能が有効なクラスターでのみアクティブになります。openshiftで始まるクラスターイメージポリシー名は、システムで将来使用するために予約されています。OpenShift Container Platform リリースイメージリポジトリー (
quay.io/openshift-release-dev/ocp-releaseおよびquay.io/openshift-release-dev/ocp-v4.0-art-dev) 用にレジストリーミラーが設定されている場合は、テクノロジープレビュー機能セットを有効にする前に、OpenShift Container Platform リリースイメージの sigstore 署名をミラーレジストリーにミラーリングする必要があります。これを行わないと、リリースリポジトリーの署名検証を強制するデフォルトのopenshiftクラスターイメージポリシーにより、Cluster Version Operator が CVO Pod を新しいノードに移動する機能がブロックされ、機能セットの変更に伴うノードの更新が妨げられます。oc image mirrorコマンドを使用して署名をミラーリングできます。以下に例を示します。oc image mirror quay.io/openshift-release-dev/ocp-release:sha256-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.sig \ mirror.com/image/repo:sha256-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.sig
$ oc image mirror quay.io/openshift-release-dev/ocp-release:sha256-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.sig \ mirror.com/image/repo:sha256-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.sigCopy to Clipboard Copied! Toggle word wrap Toggle overflow イメージポリシー。クラスター管理者またはアプリケーション開発者は、イメージポリシーを使用して特定の namespace に対して sigstore 署名検証ポリシーを設定できます。MCO は、さまざまな namespace 内の
ImagePolicyインスタンスを監視し、クラスター内のすべてのノード上の/etc/crio/policies/<namespace>.jsonおよび/etc/containers/registries.d/sigstore-registries.yamlファイルを作成または更新します。イメージポリシー内のイメージまたはリポジトリーがクラスターイメージポリシー内のいずれかのイメージまたはリポジトリーの下にネストされている場合、クラスターイメージポリシーのポリシーのみが適用されます。たとえば、イメージポリシーで
example.com/global/imageが指定され、クラスターイメージポリシーでexample.com/globalが指定されている場合、namespace はクラスターイメージポリシーのポリシーを使用します。イメージポリシーオブジェクトが作成され、次のメッセージのようなエラーが表示されます。競合するイメージアイデンティティーを持つイメージポリシーの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.2.1. クラスターおよびイメージポリシーのパラメーターについて リンクのコピーリンクがクリップボードにコピーされました!
次のパラメーターは、クラスターおよびイメージポリシーに適用されます。これらのパラメーターの使用方法については、「クラスターイメージポリシー CR の作成」および「イメージポリシー CR の作成」を参照してください。
scopesポリシーに割り当てられたリポジトリーとイメージのリストを定義します。次のスコープの少なくとも 1 つをリストする必要があります。
-
個別のイメージ (タグやダイジェストを使用、例:
example.com/namespace/image:latest) -
リポジトリー (タグやダイジェストを省略、例:
example.com) -
リポジトリー namespace (例:
example.com/namespace/) -
レジストリーホスト (ホスト名とポート番号のみを指定するか、
*.example.comのような*.で始まるワイルドカード式)
複数のスコープが同じクラスターまたはイメージポリシー内の 1 つのスコープと一致する場合、最も具体的なスコープのポリシーのみが適用されます。
イメージポリシー内のスコープ指定されたイメージまたはリポジトリーが、クラスターイメージポリシー内のスコープイメージまたはリポジトリーのいずれかの下にネストされている場合、クラスターイメージポリシーのポリシーのみが適用されます。ただし、イメージポリシーオブジェクトは作成されます。たとえば、イメージポリシーで
example.com/global/imageが指定され、クラスターイメージポリシーでexample.com/globalが指定されている場合、namespace はクラスターイメージポリシーからポリシーを継承します。-
個別のイメージ (タグやダイジェストを使用、例:
policyscopesにリストされているソースからのイメージを検証できるようにするための設定が含まれており、検証ポリシーに一致しないイメージの処理方法を定義します。rootOfTrustと、オプションでsignedIdentityを設定する必要があります。rootOfTrust: ポリシーの Root of Trust を指定します。公開鍵、Bring Your Own Public Key Infrastructure (BYOPKI) 証明書、または Fulcio 証明書 のいずれかを設定します。-
publicKey: ポリシーが sigstore 公開鍵に依存していることを示します。base64 でエンコードされた PEM 形式の公開鍵を指定する必要があります。必要に応じて、Rekor 検証 を含めることもできます。 PKI: ポリシーが、Cosign Bring Your Own Public Key Infrastructure (BYOPKI) 検証と互換性のある独自の公開鍵基盤 (PKI) からの証明書に依存していることを示します。base64 でエンコードされた PEM 形式の公開鍵を指定する必要があります。BYOPKI を使用すると、Cosign の Bring-Your-Own PKI 署名ワークフローに準拠しながら、既存の X.509 証明書を使用してコンテナーイメージを検証できます。重要sigstore BYOPKI のサポートはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
FulcioCAWithRekor: ポリシーが Fulcio 証明書に基づくことを示します。次のパラメーターを指定する必要があります。- base64 でエンコードされた PEM 形式の Fulcio CA
- OpenID Connect (OIDC) 発行者
- Fulcio 認証設定のメール
- Rekor 検証
-
signedIdentity: 署名内のイメージと実際のイメージ自体を検証するために使用される方法を指定します。署名アイデンティティーを設定するには、一致ポリシーとして次のいずれかのパラメーターを指定する必要があります。-
MatchRepoDigestOrExact。署名で参照されるイメージは、イメージ自体と同じリポジトリーに存在する必要があります。イメージにタグが付いている場合、署名で参照されるイメージは完全に一致する必要があります。これがデフォルトです。 -
MatchRepository。署名で参照されるイメージは、イメージ自体と同じリポジトリーに存在する必要があります。イメージにタグが付いている場合、署名で参照されるイメージは完全に一致する必要はありません。これは、イメージが正確なイメージバージョンを指定するタグで署名されている場合に、latestタグを含むイメージをプルするのに役立ちます。 -
ExactRepository。署名で参照されるイメージは、exactRepositoryパラメーターで指定されたものと同じリポジトリーに存在する必要があります。exactRepositoryパラメーターを指定する必要があります。 RemapIdentity。スコープ指定されたリポジトリーまたはイメージが指定されたprefixと一致する場合、その接頭辞は指定されたsignedPrefixに置き換えられます。イメージアイデンティティーが一致しない場合、prefixは変更されず、再マッピングは実行されません。このオプションは、ベンダーのリポジトリー構造を保持する他のリポジトリー namespace のミラーの署名を検証する場合に使用できます。prefixとsignedPrefixは、host[:port]文字列に正確に一致するhost[:port]の値、リポジトリー namespace、またはリポジトリーのいずれかになります。prefixとsignedPrefixにタグやダイジェストを含めることはできません。たとえば単一のリポジトリーを指定するには、busyboxではなくexample.com/library/busyboxを使用します。example.com/library/busyboxの親 namespace を指定するには、example.com/libraryを使用できます。次のパラメーターを指定する必要があります。
-
prefix: 一致させるイメージの接頭辞を指定します。 -
signedPrefix: 必要に応じて、再度マッピングするイメージ接頭辞を指定します。
-
-
12.2.2. イメージポリシーの変更または削除 リンクのコピーリンクがクリップボードにコピーされました!
他のカスタムリソース (CR) オブジェクトと同じコマンドを使用して、クラスターイメージポリシーまたはイメージポリシーを変更または削除できます。
既存のポリシーを変更するには、ポリシー YAML を編集し、ファイルに対して oc apply コマンドを実行するか、ClusterImagePolicy または ImagePolicy オブジェクトを直接編集します。どちらの方法でも、変更は同じように適用されます。
クラスターまたは namespace に対して複数のポリシーを作成できます。これにより、イメージまたはリポジトリーごとに異なるポリシーを作成できます。
ClusterImagePolicy および ImagePolicy オブジェクトを削除することで、ポリシーを削除できます。