混沌から明確さへ: コンプライアンスのためのポリシー エンジンのナビゲート

全ての記事

ブログ シリーズの第 2 部へようこそ。ここでは、Valint の強力な機能をさらに詳しく掘り下げます。この記事では、Valint のポリシー エンジンと、サプライ チェーン全体のコンプライアンスを確保する上でのその重要な役割に焦点を当てます。
前回のブログ投稿では、 Valint の設計原則.

ポリシーエンジンの仕組み

Valint のポリシー エンジンは、サプライ チェーンから収集された証拠と照合して検証されたポリシーに編成された一連のルールに基づいて動作します。その主要なコンポーネントを分析してみましょう。

証拠: ポリシーによって自動的に使用されることを目的とした不変オブジェクト。これらのオブジェクトには、ポリシーの適用を有効にし、コンプライアンス要件を満たすために必要なメタデータが含まれています。証拠コンテンツには、アーティファクト、イベント、設定に関するメタデータが含まれますが、実際のレポート、構成、またはスキャンを収集することもできます。証拠は署名された形式と署名されていない形式の両方で提出される場合があります。 Intotoに従うことをお勧めします 認証仕様 署名されたものを利用して 証明 それぞれ、署名されていない形式です。

  • 証明書 (別名、検証可能な署名付き証拠): 特定の事柄に関連する検証可能な証拠 環境コンテキスト、何らかの形式の PKI 署名を使用して信頼を伝えます。

ポリシー: これらは、サプライチェーンが満たさなければならない要件を定義し、検証、コンプライアンスの詳細、証拠の最終的な判断などのさまざまな側面をカバーします。例として、組織には「コンテナ イメージ ポリシー」があるとします。

ポリシールール: ポリシーはルールで構成され、それぞれが特定のコンプライアンス チェックを表します。例には、署名と ID の検証、SBOM コンポーネントの検証、重大な脆弱性がないことの検証などが含まれます。前の例に従って、「コンテナ イメージ ポリシー」は次のルールで構成されます。

  • イメージ署名を強制します。
  • 特定のラベルに準拠しない画像について警告します。

バンドル: 全体として便利に参照できるポリシーとルールのコレクション。バンドルは、ポリシーのセットをコードとして管理および適用するための、モジュール化された体系的な方法を提供します。 Scribe のデフォルト ポリシー バンドルは以下で公開されています https://github.com/scribe-public/sample-policies、ぜひ参考にしてください。

Valint でのポリシーの使用

Valint を使用すると、ユーザーはパブリック リポジトリまたはプライベート リポジトリからコードとしてポリシーを使用できるようになり、柔軟性とカスタマイズ オプションが提供されます。開始するには、Valint をインストールし、コンプライアンスのニーズに応じてポリシーを定義するだけです。

インストール: まず、提供されたスクリプトを使用して Valint をインストールします。ターミナルで次のコマンドを実行します。

curl -sSfL https://get.scribesecurity.com/install.sh | sh -s — -t valint

ポリシー定義: 次に、組織のコンプライアンス要件に従ってポリシーを定義します。次のような YAML ファイルを作成します。 my_policy.yamlを作成し、目的のルールをカプセル化するように構造化します。ポリシー ファイルがどのようになるかの例を次に示します。

名前: my_image_policy デフォルト: 証拠: 署名: 真のルール: - 使用: 画像/fresh-image@v1 使用: max_days: 100 - 使用: 画像/verify-labels-exist@v1 レベル: 警告: ラベル: # 必要な画像be label (Dockerfile LABEL コマンド) - Maintainer # メンテナー ラベルが必要です。 - org.opencontainers.image.source # 画像にはソースのラベルが付いている必要があります

この例では、という名前のポリシーを定義しました。 my_image_policy、証拠アーティファクトに署名すること、および画像は過去 100 日以内に作成することが義務付けられています。さらに、画像に特定のラベルが欠けている場合は警告が発行されます。

チェックアウトしてお気軽に その他のルール 私たちはすぐに使えるサポートを行っています。

証拠の作成: ポリシーを評価する前に、必要な証拠を生成する必要があります。 Valint を使用してターゲット イメージの証拠を作成します。

valint bom nginx:latest -o attest

このコマンドは、 nginx:latest 画像を作成し、画像 ID や作成時間などのメタデータが含まれていることを確認します。デフォルトでは、Valint は シグストア 証拠生成の署名者としてサービスを提供し、OIDC ID を証明書にバインドします。ただし、Valint は独自の x509 署名用の PKI キーと CA チェーン。

シグストアログイン

署名に使用する OIDC 識別子を選択するだけです。

最後に、証拠生成プロセスの成功とそのアイデンティティを確認して、その整合性と信頼性を確認できます。

[2024-03-26 12:41:55] 情報証明: [信頼できる] 署名成功、CA: fulcio-signer、CN: sigstore-intermediate、メール: [your_identity@gmail.com]、URI: [] ... [2024-03-26 12:41:55] 情報証明: 証拠が正常に生成されました

ポリシーの評価: ポリシーを定義し、証拠を生成したら、サプライ チェーンのコンポーネントに対してポリシーを評価します。を活用してください。 valint verify コマンドの後にターゲット イメージとポリシー ファイルを続けます。

valint verify nginx:latest --policy my_policy.yaml

評価の概要:

評価が完了したら、Valint ログによって提供される概要表を確認してください。

表

この特定のケースでは、Valint 分析により次のことが示されています。 nginx:latest 画像は鮮度要件を十分に満たしていますが、予想どおり、ラベル付け基準に準拠していません。提供された表には、各ルールの評価ステータスが簡潔にまとめられており、証拠が適切に署名されているかどうかが示されています。

SARIF 形式の結果:

さらに、Valint によって生成された SARIF 形式の結果を探索して、評価、違反、レベル、および証拠の参照を詳細に示すもう 1 つの証拠としてプッシュできます。

サポートされている管理プラットフォーム:

この標準化された形式は、GitHub、Azure、Scribe SAAS などのさまざまなセキュリティ管理システムからサポートされています。 Scribe プラットフォームは、ポリシーの結果を処理するだけでなく、証拠管理を容易にし、脆弱性管理、指標追跡などの広範な機能を提供します。

情報プレビュー:

ポリシーの結果で入手可能な情報をざっと確認するには、次の手順を実行します。

スクリーンショット

{ "バージョン": "2.1.0", "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", "runs": [ { "tool": { "driver": { "informationUri": "https://scribesecurity.com", "name": "valint", "rules": [ { "id": "fresh -image", "name": "新鮮な画像", "shortDescription": { "text": "画像がしきい値より古くないことを確認するルール" }, }, { "id": "labels", "name": "Labels", "shortDescription": { "text": "画像に必要なラベルがすべてあることを確認するルール" }, }, "results": [ { "ruleId": "fresh-image" , "ruleIndex": 0, "kind": "pass", }, { "ruleId": "labels", "ruleIndex": 1, "kind": "fail", "level": "warning", "policy .violation": { "type": "ラベルがありません", "details": [ { "label": "not_found" }, { "label": "org.opencontainers.image.source" } }, ... ] }

ポリシーバンドル

Valint のバンドルはコード パッケージとしてのポリシーであり、本質的には Gitリポジトリ 一連のポリシーとルールをホストします。ユーザーは、Valint が提供するサンプル リポジトリをフォークし、ニーズに応じてカスタマイズすることで、独自のバンドルをセットアップできます。

フォークしてカスタマイズ: Valint'sをフォークすることから始めます サンプル リポジトリ。組織のニーズに合わせてポリシーとルールをカスタマイズします。

Valint へのプロビジョニング: カスタム バンドルを Valint に提供します。

valint verify --bundle https://github.com/my_org/my_bundle.git \ --policy my_policy.yaml

カスタムルール

ルールをカスタマイズするときの基本的な責任は、証拠ペイロードを解析し、定義されたコンプライアンス基準に基づいて違反を報告することです。既存のルールを変更する場合でも、新しいルールを作成する場合でも。

コンプライアンス基準の定義: 組織のポリシー、セキュリティ標準、または規制に基づいてコンプライアンス基準を定義します。

証拠基準の定義: コンプライアンスを伝えるために期待される証拠を定義します。

コンプライアンスの評価と違反の報告: 証拠ペイロードを使用して、定義された基準に対する準拠性を評価します。コンポーネントが要件を満たしていない場合は、違反を報告します。
Valint は、署名と証拠の発信元の要件をあらゆるカスタム ルールですぐに利用できるようにします。

Valint は現在雇用しています オーパ・レゴ 近い将来、Python ルールが統合される予定であるため、ルールの策定に関してはエキサイティングな展望が待っています。

次は何ですか?

Gatekeeper との統合が可能になりました。弊社を参照してください。 ドキュメント 詳細については。このエキサイティングな開発について詳しく説明する今後のブログ投稿にご期待ください。

SLSA や SSDF などのセキュリティ フレームワークを実装する高レベルのポリシーを含む、ポリシーの取り組みを検討する今後のブログ投稿にご注目ください。

Python 愛好家にとって嬉しいニュースです。最新のアップデートには広範な Python サポートが含まれており、互換性が大幅に向上しています。これにより、ポリシー作成者は Python を使用してルールをカスタマイズし、その膨大なライブラリを活用できるようになります。

まとめ

要約すると、Valint のポリシー エンジンは、サプライ チェーン内のコンプライアンスを確保するための堅牢なソリューションを提供します。証拠、ポリシー、バンドルなどのコンポーネントを活用することで、組織はコンプライアンスの取り組みを合理化し、リスクを効果的に軽減できます。

このコンテンツは、エンドツーエンドのソフトウェア サプライ チェーン セキュリティ ソリューションの大手プロバイダーである Scribe Security によって提供されており、ソフトウェア サプライ チェーン全体のコード成果物とコード開発および配信プロセスに最先端のセキュリティを提供しています。 詳しくはこちら。