第3章 ポリシーの作成
Conforma ポリシー は、ルールまたは一連のルールおよびコンフォーム固有のアノテーションです。complianta は、Red Hat 製品に必要なすべてのポリシールールを確認するなど、いくつかのタイプのポリシーチェックを実行できます。complianta は、Open Policy Agent (OPA)と呼ばれる汎用ポリシーエンジンを使用します。OPA は、Rego を使用してポリシールールを定義します。これは、Conforma ポリシーにある OPA のポリシールールも Rego で定義されていることを意味します。
手順
次の例のように、新しいポリシールールを定義する Rego ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - METADATA
-
コードの最初の 10 行は
METADATAコメントブロックで設定されます。これは、Conforma がルールアノテーションを指定して、成功および違反のレポートにこれらのアノテーションの詳細を含めることができるようにする方法です。 short_name-
この 1 つのポリシールールは、新しいポリシールールの
が、Supply-chain Levels for Software Artifacts (SLSA)の出所と一致することを検証します。builder.id input.attestationsinputは、コンテナーイメージ、その署名、およびそのアテステーションに関するすべての情報が含まれる Rego オブジェクトです。inputオブジェクトのinput.attestations属性には、イメージに関連付けられたアテステーションのリストが含まれます。ヒントinputオブジェクトを JSON ファイルに保存して使用可能な値を表示できます。これは、新しいポリシールールを記述する際に役立ちます。inputオブジェクトをinput.jsonという名前の JSON ファイルとして保存するには、次の例のようなコマンドを実行します。ec validate image --public-key cosign.pub \ --image "$REPOSITORY:latest" \ --policy policy.yaml \ --output policy-input=input.json
$ ec validate image --public-key cosign.pub \ --image "$REPOSITORY:latest" \ --policy policy.yaml \ --output policy-input=input.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
新しいポリシールールを使用するためのポリシー設定を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例のように、新しいポリシーを使用してコンテナーイメージを検証し、成功および違反レポートの追加情報を表示します。
ec validate image --public-key cosign.pub \ --image "$REPOSITORY:latest" \ --policy policy.yaml \ --show-successes --info --output yaml
$ ec validate image --public-key cosign.pub \ --image "$REPOSITORY:latest" \ --policy policy.yaml \ --show-successes --info --output yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
-
成功と違反のレポートをチェックして、新しいルールが
successesリストに含まれていることを確認します。
3.1. ポリシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
インライン JSON または YAML 文字列を使用して Conforma ポリシーを設定できます。このポリシーは、config または contract とも呼ばれ、実行するポリシーを適用するために使用するルールとデータを Conforma で検索する場所を指定します。1 つのルールや特定のルールパッケージを追加または除外することもできます。
手順
次の例のように、コマンドラインでポリシーを JSON または YAML 文字列として設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション) 次の例のように、Conforma ポリシーから特定のルールパッケージを除外します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドにより、指定したパッケージ内のルールを除く全パッケージの全ルールが追加されます。
(オプション) 次の例のように、1 つのルールを除外します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドにより、
unacceptable_task_bundleルールを除くattestation_task_bundleパッケージのすべてのルールが追加されます。(オプション) 次の例のように、特定のパッケージのルールのみを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドにより、指定したパッケージのルールのみが追加されます。
(オプション) 特定パッケージの一部のルールのみを追加します。つまり、次の例のように、
includeとexcludeの両方を指定して、Conforma ポリシーに含めるルールのみを選択できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow アスタリスク(*)アスタリスク (*) はワイルドカードとして機能し、すべてのパッケージにマッチします。部分的な名前とは一致しません。たとえば、s*" が、s で始まるすべてのパッケージに一致させるように指定することはできません。
これらのコマンドにより、
attestation_task_bundleパッケージのunacceptable_task_bundleルール のみ を追加し、そのパッケージ内の他のルールをすべて除外することが指定されます。
(オプション) 次の例のように、特定のチェックを除外して、そのチェックが失敗した場合や完了しなかった場合でも、Conforma がコンテナーイメージを検証できるようにします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、特定されたチェックのいずれかが失敗した場合、または完了しない場合でも、Conforma がコンテナーイメージの妥当性を検証できることを指定します。
(オプション)
config.policy.includeコマンドまたはconfig.policy.excludeコマンドのいずれかを文字列のリストとともに実行して、パッケージ内のルールのデフォルト設定を変更します。文字列のリストには、次のいずれかを含める必要があります。
- パッケージ名
- Available rule collections リストのパッケージから選択します。
- ルール名
-
attestation_type.unknown_att_typeのように、ドット(.)で区切られたパッケージとルールコードを入力し、ルール名を指定します。ルールコードは、アップストリームの Conforma ドキュメントの Attestation type の下に見つけることができます。 - パッケージ名:term
- ポリシールールによっては、アイテムのリストを処理します。"パッケージ名" 文字列に "項目" を付加すると、そのリストから特定の項目を除外または追加できます。これは "パッケージ名" と同様に機能しますが、その項目にマッチするパッケージ内のポリシールールにのみ適用される点が異なります。たとえば、テストパッケージを実行する場合は、特定のテストケースを無視して、他のすべてのテストケースを追加することができます。
- rule name:term
- これは、パッケージに 項目 を追加または除外するのではなく、特定のパッケージ ポリシールール を含めるか除外できる点を除き、package name:term と似ています。
- @collection name
-
これを文字列に追加して、事前定義されたルールのコレクションを指定します。コレクション名の前に
@記号を付けます。利用可能なルールコレクションから選択します。