{"meta":{"title":"Kubernetes アドミッション コントローラーを使用したアーティファクト証明の強制","intro":"アドミッション コントローラーを使用して、Kubernetes クラスターでアーティファクトの構成証明を適用します。","product":"GitHub Actions","breadcrumbs":[{"href":"/ja/actions","title":"GitHub Actions"},{"href":"/ja/actions/how-tos","title":"方法"},{"href":"/ja/actions/how-tos/secure-your-work","title":"作業をセキュリティで保護する"},{"href":"/ja/actions/how-tos/secure-your-work/use-artifact-attestations","title":"アーティファクト検証証明の使用"},{"href":"/ja/actions/how-tos/secure-your-work/use-artifact-attestations/enforce-artifact-attestations","title":"成果物の証明を強制する"}],"documentType":"article"},"body":"# Kubernetes アドミッション コントローラーを使用したアーティファクト証明の強制\n\nアドミッション コントローラーを使用して、Kubernetes クラスターでアーティファクトの構成証明を適用します。\n\n> \\[!NOTE] 先に進む前に、コンテナーイメージのビルドの履歴を有効にし、「`push-to-registry`」属性を [`attest` アクション](https://github.com/actions/attest)に設定したことを、「[コンテナーイメージのビルドの履歴を生成する方法](/ja/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds#generating-build-provenance-for-container-images)」のドキュメントに従って確認します。 これは、ポリシー コントローラーで認証を検証するために必要です。\n\n## Kubernetes アドミッション コントローラーの導入方法\n\nGitHub アーティファクト構成証明を適用するためのアドミッション コントローラーを設定するには、次の操作を行う必要があります:\n\n1. ```\n          [Sigstore ポリシー コントローラーを展開します](#deploy-the-sigstore-policy-controller)。\n   ```\n2. ```\n          [GitHub `TrustRoot` と `ClusterImagePolicy` をクラスターに追加します](#add-the-github-trustroot-and-a-clusterimagepolicy)。\n   ```\n3. ```\n          [名前空間でポリシーを有効にします](#enable-the-policy-in-your-namespace)。\n   ```\n\n### Sigstore ポリシー コントローラーを展開する\n\nSigstore Policy Controller がパッケージ化されており、[Helm チャート](https://github.com/sigstore/helm-charts)から使用できます。 開始する前に、以下の前提条件を確認してください:\n\n* バージョン 1.27 以降の Kubernetes クラスター\n* [RHEL](https://helm.sh/docs/intro/install/) 3.0 以降\n* [kubectl](https://kubernetes.io/docs/tasks/tools/)\n\nまず、Sigstore ポリシー コントローラーをデプロイする Helm チャートをインストールします:\n\n```bash copy\nhelm upgrade policy-controller --install --atomic \\\n  --create-namespace --namespace artifact-attestations \\\n  oci://ghcr.io/sigstore/helm-charts/policy-controller \\\n  --version 0.10.5\n```\n\nこれにより、ポリシー コントローラーが `artifact-attestations` 名前空間にインストールされます。 この時点では、ポリシーは構成されておらず、構成証明は適用されません。\n\n### GitHub `TrustRoot` と `ClusterImagePolicy` を追加します\n\nポリシー コントローラーがデプロイされたら、GitHub `TrustRoot` と `ClusterImagePolicy` をクラスターに追加する必要があります。 これを行うには、提供されている Helm グラフを使用します。\n`MY-ORGANIZATION` を GitHub 組織の名前 (`github` や `octocat-inc` など) に必ず置き換えます。\n\n```bash copy\nhelm upgrade trust-policies --install --atomic \\\n --namespace artifact-attestations \\\n oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \\\n --version v0.7.0 \\\n --set policy.enabled=true \\\n --set policy.organization=MY-ORGANIZATION\n```\n\nこれにより、GitHub 信頼ルートとアーティファクトアテステーションポリシーがクラスターにインストールされました。 このポリシーは、GitHub 組織内から発生していないアーティファクトを拒否します。\n\n### 名前空間でポリシーを有効にする\n\n> \\[!WARNING]\n> このポリシーは、適用する名前空間を指定するまで適用されません。\n\nクラスター内の各名前空間は、ポリシーを個別に適用できます。 名前空間で適用を有効にするには、名前空間に次のラベルを追加します:\n\n```yaml\nmetadata:\n  labels:\n    policy.sigstore.dev/include: \"true\"\n```\n\nラベルが追加されると、GitHub アーティファクト構成証明ポリシーが名前空間に適用されます。\n\nその代わりに、以下を実行する可能性があります:\n\n```bash copy\nkubectl label namespace MY-NAMESPACE policy.sigstore.dev/include=true\n```\n\n### 一致する画像\n\n既定では、`trust-policies` Helm チャートと共にインストールされたポリシーは、クラスターに入る前にすべてのイメージの構成証明を検証します。 イメージのサブセットに対してのみ構成証明を適用する場合は、Helm 値 `policy.images` と `policy.exemptImages` を使用して、照合するイメージの一覧を指定できます。 これらの値は、イメージ名に一致する glob パターンのリストに設定できます。 globbing 構文では、Go [filepath](https://pkg.go.dev/path/filepath#Match) セマンティクスが使用され、スラッシュを含む任意の文字列に一致する `**` が追加されています。\n\nたとえば、パターン `ghcr.io/MY-ORGANIZATION/*` に一致するイメージに構成証明を適用し、有効な構成証明なしで `busybox` を許可するには、以下を実行します:\n\n```bash copy\nhelm upgrade trust-policies --install --atomic \\\n --namespace artifact-attestations \\\n oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \\\n --version v0.7.0 \\\n --set policy.enabled=true \\\n --set policy.organization=MY-ORGANIZATION \\\n --set-json 'policy.exemptImages=[\"index.docker.io/library/busybox**\"]' \\\n --set-json 'policy.images=[\"ghcr.io/MY-ORGANIZATION/**\"]'\n```\n\nイメージが Docker Hub から生成された場合でも、すべてのパターンで完全修飾名を使用する必要があります。 この例では、イメージ `busybox` を除外する場合は、ドメインとダブルスターの glob を含むフル ネームを指定して、すべてのイメージ バージョン (`index.docker.io/library/busybox**`) と一致させる必要があります。\n\n許可するイメージには、\\_\\_ リストに一致する glob パターンが`policy.images`であることに注意してください。 画像がいずれのパターンにも一致しない場合、拒否されます。 さらに、イメージが `policy.images` と `policy.exemptImages` の両方に一致する場合は、拒否されます。\n\nこれらのステップを実行してください：\n\n### 詳細な使用方法\n\nHelm チャートで構成できるオプションの完全なセットを表示するには、次のいずれかのコマンドを実行します。\nポリシー コントローラー オプションの場合:\n\n```bash copy\nhelm show values oci://ghcr.io/sigstore/helm-charts/policy-controller --version 0.10.5\n```\n\n信頼ポリシー オプションの場合:\n\n```bash copy\nhelm show values oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies --version v0.7.0\n```\n\nSigstore ポリシー コントローラーの詳細については、「[Sigstore ポリシー コントローラーのドキュメント](https://docs.sigstore.dev/policy-controller/overview/)」を参照してください。"}