참고
계속하기 전에 push-to-registry에 설명된 대로, attest 작업에서 속성을 설정하는 것을 포함하여 컨테이너 이미지에 대한 빌드 출처를 사용 설정했는지 확인하세요. 이는 정책 컨트롤러가 증명을 확인하는 데 필요합니다.
Kubernetes 어드미션 컨트롤러 기본 사용법
GitHub 아티팩트 증명을 적용하기 위한 허용 컨트롤러를 설정하려면 다음을 수행해야 합니다.
-
[Sigstore Policy Controller](#deploy-the-sigstore-policy-controller)를 배포합니다. -
[GitHub `TrustRoot` 및 `ClusterImagePolicy`를 클러스터에 추가합니다](#add-the-github-trustroot-and-a-clusterimagepolicy). -
[네임스페이스에서 정책을 사용하도록 설정합니다](#enable-the-policy-in-your-namespace).
Sigstore Policy Controller 배포
Sigstore 정책 컨트롤러는 패키지화되어 Helm 차트를 통해 제공되었습니다. 시작하기 전에 다음과 같은 필수 구성 요소가 있는지 확인합니다.
- 버전 1.27 이상이 있는 Kubernetes 클러스터
-
[Helm](https://helm.sh/docs/intro/install/) 3.0 이상 -
[kubectl](https://kubernetes.io/docs/tasks/tools/)
먼저 Sigstore Policy Controller를 배포하는 Helm 차트를 설치합니다.
helm upgrade policy-controller --install --atomic \ --create-namespace --namespace artifact-attestations \ oci://ghcr.io/sigstore/helm-charts/policy-controller \ --version 0.10.5
helm upgrade policy-controller --install --atomic \
--create-namespace --namespace artifact-attestations \
oci://ghcr.io/sigstore/helm-charts/policy-controller \
--version 0.10.5
그러면 Policy Controller가 artifact-attestations 네임스페이스에 설치됩니다. 이 시점에서는 정책이 구성되지 않았으며 증명을 적용하지 않습니다.
GitHub TrustRoot 및 ClusterImagePolicy 추가
정책 컨트롤러가 배포되면 GitHub TrustRoot 및 ClusterImagePolicy를 클러스터에 추가해야 합니다. 제공된 Helm 차트를 사용하여 이 작업을 수행합니다.
MY-ORGANIZATION을 GitHub 조직의 이름(예: github 또는octocat-inc)으로 바꿔야 합니다.
helm upgrade trust-policies --install --atomic \ --namespace artifact-attestations \ oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \ --version v0.7.0 \ --set policy.enabled=true \ --set policy.organization=MY-ORGANIZATION
helm upgrade trust-policies --install --atomic \
--namespace artifact-attestations \
oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \
--version v0.7.0 \
--set policy.enabled=true \
--set policy.organization=MY-ORGANIZATION
이제 GitHub 트러스트 루트와 아티팩트 증명 정책을 클러스터에 설치했습니다. 이 정책은 GitHub 조직 내에서 시작되지 않은 아티팩트를 거부합니다.
네임스페이스에서 정책 사용하도록 설정
경고
이 정책은 적용해야 하는 네임스페이스를 지정할 때까지 적용되지 않습니다.
클러스터의 각 네임스페이스는 독립적으로 정책을 적용할 수 있습니다. 네임스페이스에서 적용을 사용하도록 설정하기 위해 네임스페이스에 다음 레이블을 추가할 수 있습니다.
metadata:
labels:
policy.sigstore.dev/include: "true"
레이블이 추가되면 GitHub 아티팩트 증명 정책이 네임스페이스에 적용됩니다.
또는 다음을 실행할 수 있습니다.
kubectl label namespace MY-NAMESPACE policy.sigstore.dev/include=true
kubectl label namespace MY-NAMESPACE policy.sigstore.dev/include=true
이미지 매칭
기본적으로 trust-policies Helm 차트와 함께 설치된 정책은 모든 이미지를 클러스터에 허용하기 전에 모든 이미지에 대한 증명을 확인합니다. 이미지의 하위 집합에 대해서만 증명을 적용하려는 경우, Helm 값 policy.images 및 policy.exemptImages을(를) 사용하여 일치시킬 이미지 목록을 지정할 수 있습니다. 이러한 값은 이미지 이름과 일치하는 GLOB 패턴 목록으로 설정할 수 있습니다. 글로빙 구문은 Go의 filepath 시맨틱을 따르며, 슬래시를 포함한 모든 문자 시퀀스와 일치하도록 ** 기능이 추가되었습니다.
예를 들어, ghcr.io/MY-ORGANIZATION/* 패턴과 일치하는 이미지에 대해 인증을 적용하고 유효한 인증 없이 busybox을(를) 허용하려면 다음과 같이 실행할 수 있습니다.
helm upgrade trust-policies --install --atomic \ --namespace artifact-attestations \ oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \ --version v0.7.0 \ --set policy.enabled=true \ --set policy.organization=MY-ORGANIZATION \ --set-json 'policy.exemptImages=["index.docker.io/library/busybox**"]' \ --set-json 'policy.images=["ghcr.io/MY-ORGANIZATION/**"]'
helm upgrade trust-policies --install --atomic \
--namespace artifact-attestations \
oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \
--version v0.7.0 \
--set policy.enabled=true \
--set policy.organization=MY-ORGANIZATION \
--set-json 'policy.exemptImages=["index.docker.io/library/busybox**"]' \
--set-json 'policy.images=["ghcr.io/MY-ORGANIZATION/**"]'
이미지가 Docker Hub에서 시작되더라도 모든 패턴은 정규화된 이름을 사용해야 합니다. 이 예에서 busybox 이미지를 제외하려면 모든 이미지 버전과 일치하도록 도메인 및 이중별 글로브를 포함한 전체 이름(index.docker.io/library/busybox**)을 제공해야 합니다.
허용하려는 모든 이미지는 반드시 __ 목록의 glob 패턴과 일치 policy.images 한다는 점을 유념하세요. 이미지가 패턴과 일치하지 않으면 거부됩니다. 또한 이미지가 policy.images와 policy.exemptImages에 모두 일치하는 경우 거부됩니다.
고급 사용
Helm 차트를 사용하여 구성할 수 있는 옵션의 전체 집합을 보기 위해 다음 명령 중 하나를 실행할 수 있습니다. 정책 컨트롤러 옵션의 경우:
helm show values oci://ghcr.io/sigstore/helm-charts/policy-controller --version 0.10.5
helm show values oci://ghcr.io/sigstore/helm-charts/policy-controller --version 0.10.5
신뢰 정책 옵션의 경우:
helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies --version v0.7.0
helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies --version v0.7.0
Sigstore Policy Controller에 대한 자세한 내용은 Sigstore Policy Controller 설명서를 참조하세요.