|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
|
これは未公開の文書です Admission Controller 1.34-dev. |
確認 SUSE Security Admission Controller
SUSE Security Admission Controller スタックはさまざまな証明と保証を提供します:
-
来歴の証明:ビルドプロセスやビルド依存関係の情報を提供し、ビルドの再現を支援します。https://slsa.dev/spec/v1.0/[SLSA] 標準を実装します(私たちの場合はレベル 3)。
-
SBOM の証明:ソフトウェアの依存関係を含みます。ダウンストリームの消費者が Admission Controller とその依存関係の脆弱性を確認するのに役立ちます。
-
署名されたアーティファクト:アーティファクトが本物かどうかを示し、サプライチェーンのセキュリティを提供します。これには成果物だけでなく、来歴の証明およびSBOMの証明も含まれます。
Admission Controller アーティファクト、来歴の証明、および SBOM は、https://docs.sigstore.dev[Sigstore] を使用して署名され、キーなしのワークフローで行われます。これは、署名証明書に次の情報が含まれていることを意味し、* はその後の任意の文字に一致します:
-
サブジェクト:
https://github.com/kubewarden/* -
x509 certificate extension for GHA, "github_workflow_repository":
kubewarden/*
|
このチュートリアルで使用される`--certificate-identity-regexp`コサインCLIフラグのサブジェクトは、説明を簡素化するために`https://github.com/kubewarden/* より安全なチェックを希望する場合は、完全なURLを使用する必要があります: https://github.com/kubewarden/policy-server/.github/workflows/container-image.yml@refs/tags/v1.30.0 URLには、完全なリポジトリパス、ワークフローファイルパス、およびバージョンタグが含まれていることに注意してください。このベストプラクティスに従うことで、完全なURLを使用してコサインCLIフラグ`--certificate-identity`を利用できます。 |
Admission Controllerチームは、セキュアなサプライチェーンを改善し、全体のスタックをSLSAレベル3に準拠させるための努力もしています。したがって、主要なアーティファクトにはSBOMおよび来歴ファイルも含まれています。次のセクションでは、Admission Controllerチームが生成したさまざまなアーティファクトを検証する方法と、SBOMおよび来歴ファイルを使用してアーティファクトのセキュアなサプライチェーンを確保する方法を示します。
コンテナイメージ
Admission Controllerチームが生成したキーレス署名されたコンテナイメージを検証するには、cosign CLIツールを使用できます。たとえば、`kubewarden/policy-server`イメージを検証するには、次のコマンドを実行できます:
cosign verify ghcr.io/kubewarden/policy-server:v1.30.0 \
--certificate-identity-regexp 'https://github.com/kubewarden/*' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
Verification for ghcr.io/kubewarden/policy-server:v1.30.0 --
The following checks were performed on each of these signatures:
- The cosign claims were validated
- Existence of the claims in the transparency log was verified offline
- The code-signing certificate was verified using trusted certificate authority certificates
<snipped json>
返されたJSON内の証明書が正しい発行者、サブジェクト、および`github_workflow_repository`拡張を含んでいることを確認できます。
また、slsactlで確認することもできます。
たとえば、バージョン1.30.0の場合:
slsactl verify ghcr.io/kubewarden/policy-server:v1.30.0
同様のことがAdmission Controllerチームが生成した他のすべてのイメージ、たとえば`kubewarden/kubewarden-controller`や`kubewarden/audit-scanner`にも当てはまります。
すべてのコンテナイメージには、イメージのセキュアなサプライチェーンを確保するために使用できるSBOMおよび来歴ファイルもあります。コンポーネントのリリースページまたはOCIレジストリのコンテナイメージに添付された証明書ファイルを見つけることができます。
私たちはDockerを使用してイメージとその証明書を構築します。しかし、コサインコマンドhttps://github.com/sigstore/cosign/issues/2688[はまだ]OCIレジストリからDockerによって生成された証明の検証をサポートしていません。 このため、リリースページまたはレジストリからファイルをダウンロードし、ローカルで検証する必要があります。OCIレジストリから証明ファイルをダウンロードしたい場合は、https://docs.docker.com/build/metadata/attestations/attestation-storage/[Dockerドキュメント]に従い、`crane`や`docker`自体のようなツールを使用してレジストリからファイルをダウンロードできます。
リリースページからAdmission Controllerコンポーネントの証明ファイルをダウンロードする際は、それらを確認してください。
$ cosign verify-blob --bundle audit-scanner-attestation-amd64-checksum-cosign.bundle \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
--certificate-identity="https://github.com/kubewarden/audit-scanner/.github/workflows/attestation.yml@refs/tags/v1.30.0" \
audit-scanner-attestation-amd64-checksum.txt
Verified OK
ファイルの整合性が確認されたので、SBOMおよび来歴ファイルを確認できます。 これらは、`slsactlを使用してコンテナイメージから取得できます。 たとえば、バージョン1.30.0の場合:
slsactl download provenance ghcr.io/kubewarden/policy-server:v1.30.0
slsactl download sbom ghcr.io/kubewarden/policy-server:v1.30.0
Helmチャート
Admission Controller Helmチャートは、`https://`従来のHelmリポジトリのhttps://charts.kubewarden.io.にあります。
同じHelmチャートは、Sigstoreのキーレス署名を介して署名され、Helmチャートとその来歴の証明をOCIアーティファクトとして保持するOCIリポジトリにプッシュされます。
Helmチャートは、必要なすべてのアーティファクトをリストしたhttps://hauler.dev[Hauler]マニフェストとともに公開されます。
Haulerによる検証
Haulerは、ダウンロード時にアーティファクトを自動的に検証します。詳細については、当社のドキュメントを参照してください。
手動での検証
Helm 3.8.0以降、HelmはOCIレジストリをサポートしていますが、それらの制約により、`helm`を介して検索することはできません。https://github.com/orgs/kubewarden/packages?tab=packages&q=charts[GitHubコンテナレジストリのチャートのリスト]を見つけることができます。
Helmチャートを検証するには、`cosign`がインストールされている必要があります。次に、例えば次のコマンドを実行します。
cosign verify ghcr.io/kubewarden/charts/kubewarden-defaults:1.5.4 \ --certificate-identity-regexp 'https://github.com/kubewarden/*' \ --certificate-oidc-issuer https://token.actions.githubusercontent.com Verification for ghcr.io/kubewarden/charts/kubewarden-defaults:1.5.4 -- The following checks were performed on each of these signatures: - The cosign claims were validated - Existence of the claims in the transparency log was verified offline - The code-signing certificate was verified using trusted certificate authority certificates <snipped json>
その後、返されたjson内の証明書が正しい発行者、サブジェクト、および`github_workflow_repository`拡張機能を含んでいることを確認できます。
チャートのアテステーションは、アーティファクト階層化としてOCIレジストリにプッシュされます。それらを検証する方法については、コンテナイメージセクションを参照してください。
Admission Controllerチャートは、チャート内に`imagelist.txt`および(関連する場合は`policylist.txt`)を含めて出荷されます。したがって、すでにチャートを検証している場合は、それらのリストを使用して消費されたコンテナイメージとポリシーを検証できます。
Admission ControllerはHelmチャートに関する通常の慣行に従っています。したがって、https://github.com/cvila84/helm-image[helm-image]のようなプラグインを使用することで、Helmチャート内のすべてのイメージを見つけることもできます。または、次のスクリプトを使用します:
#!/usr/bin/env bash
helm pull --untar kubewarden/kubewarden-controller && \
helm pull --untar kubewarden/kubewarden-defaults && \
{ helm template ./kubewarden-controller; helm template ./kubewarden-defaults } \
| yq '..|.image? | select(.)' \
| sort -u | sed 's/"//g'
これにより、次のようになります:
ghcr.io/kubewarden/kubewarden-controller:v0.5.5 ghcr.io/kubewarden/policy-server:v0.3.1 ghcr.io/kubewarden/kubectl:v1.21.4
そのリスト内の各イメージについて、前のセクションの指示に従ってSigstoreの署名を確認できます。
kwctl
kwctlバイナリはhttps://docs.sigstore.dev/cosign/signing/signing_with_blobs/[Sigstoreのブロブ署名]を使用して署名されています。
kwctl`リリースをダウンロードすると、各zipファイルには検証に使用できるSigstoreバンドルファイルが含まれています:`kwctl-*bundle.sigstore。
kwctlを検証するには、cosignをインストールし、次のコマンドを実行する必要があります:
cosign verify-blob \ --bundle kwctl-linux-x86_64.bundle.sigstore \ --certificate-identity-regexp 'https://github.com/kubewarden/*' \ --certificate-oidc-issuer https://token.actions.githubusercontent.com \ kwctl-linux-x86_64 Verified OK
その後、返されたjson内の証明書が正しい発行者、サブジェクト、および`github_workflow_repository`拡張を含んでいることを確認できます。
SBOMは署名され、プロジェクトのhttps://github.com/kubewarden/kwctl/releases[GitHub Releases]に公開されています。
kwctl`の来歴アテステーションは、https://cli.github.com/manual/gh_attestation_verify[`gh attestation verify]を使用して検証されます。例えば、`gh attestation verify kwctl-linux-x86_64 --repo kubewarden/kwctl`を使用します。
ポリシー
Admission Controllerチームによって維持されているポリシーもSigstoreプロジェクトを使用して署名されています。通常のコンテナイメージと同様に、`cosign`を使用してそれらを検証できます。
cosign verify ghcr.io/kubewarden/policies/verify-image-signatures:v0.2.5 \ --certificate-identity-regexp 'https://github.com/kubewarden/*' \ --certificate-oidc-issuer https://token.actions.githubusercontent.com Verification for ghcr.io/kubewarden/policies/verify-image-signatures:v0.2.5 -- The following checks were performed on each of these signatures: - The cosign claims were validated - Existence of the claims in the transparency log was verified offline - The code-signing certificate was verified using trusted certificate authority certificates <snipped json>
その後、返されたjson内の証明書が正しい発行者、サブジェクト、および`github_workflow_repository`拡張機能を含んでいることを確認できます。