12.4. 이미지 정책 CR 생성
ImagePolicy
사용자 정의 리소스(CR)를 사용하면 클러스터 관리자나 애플리케이션 개발자가 특정 네임스페이스에 대한 sigstore 서명 확인 정책을 구성할 수 있습니다. MCO는 다양한 네임스페이스에서 ImagePolicy
인스턴스를 감시하고 클러스터의 모든 노드에서 /etc/crio/policies/<namespace>.json
및 /etc/containers/registries.d/sigstore-registries.yaml
파일을 업데이트합니다.
이미지 정책의 범위가 지정된 이미지나 저장소가 클러스터 이미지 정책의 범위가 지정된 이미지나 저장소 중 하나 아래에 중첩되어 있는 경우, 클러스터 이미지 정책의 정책만 적용됩니다. 하지만 이미지 정책 객체는 오류 메시지와 함께 생성됩니다. 예를 들어, 이미지 정책이 example.com/global/image를
지정하고 클러스터 이미지 정책이 example.com/global을
지정하는 경우 네임스페이스는 클러스터 이미지 정책에서 정책을 상속합니다.
다음 예제에서는 ImagePolicy
객체를 구성하는 방법에 대한 일반적인 지침을 보여줍니다. 매개변수에 대한 자세한 내용은 "클러스터 및 이미지 정책 매개변수 정보"를 참조하세요.
사전 요구 사항
- Sigstore 지원 공개 키 인프라(PKI)가 있거나 서명 작업을 위해 Cosign 공개 및 개인 키 쌍을 제공합니다.
- 이미지에 서명하기 위한 서명 프로세스가 마련되어 있습니다.
- Cosign 서명을 사용하는 경우 Cosign 서명을 지원하는 레지스트리에 액세스할 수 있습니다.
OpenShift Container Platform 릴리스 이미지 저장소(
quay.io/openshift-release-dev/ocp-release
및quay.io/openshift-release-dev/ocp-v4.0-art-dev
)에 대한 레지스트리 미러가 구성된 경우 Technology Preview 기능 세트를 활성화하기 전에 OpenShift Container Platform 릴리스 이미지의 sigstore 서명을 미러 레지스트리로 미러링해야 합니다. 그렇지 않으면 릴리스 저장소에 대한 서명 검증을 강제하는 기본OpenShift
클러스터 이미지 정책이 클러스터 버전 운영자가 CVO Pod를 새 노드로 이동하는 기능을 차단하여 기능 세트 변경으로 인한 노드 업데이트를 방지합니다.oc image mirror
명령을 사용하면 서명을 미러링할 수 있습니다. 예를 들면 다음과 같습니다.oc image mirror quay.io/openshift-release-dev/ocp-release:sha256-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.sig \ mirror.com/image/repo:sha256-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.sig
$ oc image mirror quay.io/openshift-release-dev/ocp-release:sha256-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.sig \ mirror.com/image/repo:sha256-1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef.sig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 클러스터에 필요한 기술 미리 보기 기능을 활성화하려면
FeatureGate
CR인cluster를
편집해야 합니다.oc edit featuregate cluster
$ oc edit featuregate cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow FeatureGate
CR 예시Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 필수
SigstoreImageVerification
기능을 활성화합니다.
주의클러스터에서
TechPreviewNoUpgrade
기능 세트를 활성화하면 실행 취소할 수 없으며 사소한 버전 업데이트가 방지됩니다. 이 기능 세트를 사용하면 테스트 클러스터에서 이러한 기술 미리 보기 기능을 활성화하여 전체적으로 테스트할 수 있습니다. 프로덕션 클러스터에서 이 기능 세트를 활성화하지 마십시오.변경 사항을 저장하면 새로운 머신 구성이 생성되고, 머신 구성 풀이 업데이트되며, 변경 사항이 적용되는 동안 각 노드의 스케줄링이 비활성화됩니다.
프로세스
다음 예제와 유사한 이미지 정책 객체를 만듭니다. 이러한 매개변수에 대한 구체적인 내용은 "클러스터 및 이미지 정책 매개변수 정보"를 참조하세요.
공개 키 정책과
MatchRepository
일치 정책이 포함된 이미지 정책 객체의 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
ImagePolicy
객체를 생성합니다.- 2
- 이미지 정책이 적용되는 네임스페이스를 지정합니다.
- 3
- 이 정책에 할당된 저장소 또는 이미지 목록을 정의합니다.
- 4
- 이미지가 어떻게 검증되는지 정의하는 매개변수를 지정합니다.
- 5
- 정책에 대한 신뢰 루트를 정의합니다.
- 6
- 신뢰의 루트(공개 키 또는 Fulcio 인증서) 를 정의하는 정책 유형을 지정합니다. 여기에는 Rekor 검증을 거친 공개 키가 있습니다.
- 7
- 공개 키 정책의 경우 PEM 형식으로 base64로 인코딩된 공개 키를 지정합니다. 최대 길이는 8192자입니다.
- 8
- 선택 사항: PEM 형식의 base64로 인코딩된 Rekor 공개 키를 지정합니다. 최대 길이는 8192자입니다.
- 9
- 선택 사항: 서명의 신원과 실제 이미지의 신원을 확인하기 위해 다음 프로세스 중 하나를 지정합니다.
-
MatchRepoDigestOrExact
. -
매치리포지토리
. -
ExactRepository
.exactRepository
매개변수를 지정해야 합니다. -
리맵아이덴티티
.prefix
및signedPrefix
매개변수를 지정해야 합니다.
-
Fulcio 인증서 정책과
ExactRepository
일치 정책이 포함된 이미지 정책 객체 예시Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
ImagePolicy
객체를 생성합니다.- 2
- 이미지 정책이 적용되는 네임스페이스를 지정합니다.
- 3
- 이 정책에 할당된 저장소 또는 이미지 목록을 정의합니다.
- 4
- 이미지가 어떻게 검증되는지 정의하는 매개변수를 지정합니다.
- 5
- 정책에 대한 신뢰 루트를 정의합니다.
- 6
- 신뢰의 루트(공개 키 또는 Fulcio 인증서) 를 정의하는 정책 유형을 지정합니다. 여기에는 Rekor 검증이 필요한 Fulcio 인증서가 있습니다.
- 7
- Fulcio 인증서 정책의 경우 다음 매개변수가 필요합니다.
-
fulcioCAData
: PEM 형식의 base64로 인코딩된 Fulcio 인증서를 지정합니다. 최대 길이는 8192자입니다. -
fulcioSubject
: OIDC 발급자와 Fulcio 인증 구성의 이메일을 지정합니다.
-
- 8
- PEM 형식으로 base64로 인코딩된 Rekor 공개 키를 지정합니다. 이 매개변수는
policyType
이FulcioCAWithRekor
인 경우 필요합니다. 최대 길이는 8192자입니다. - 9
- 선택 사항: 서명의 신원과 실제 이미지의 신원을 확인하기 위해 다음 프로세스 중 하나를 지정합니다.
-
MatchRepoDigestOrExact
. -
매치리포지토리
. -
ExactRepository
.exactRepository
매개변수를 지정해야 합니다. -
리맵아이덴티티
.prefix
및signedPrefix
매개변수를 지정해야 합니다.
-
- 10
정확한Repository
일치 정책의 경우 이미지 ID 및 서명이 포함된 리포지토리를 지정합니다.
이미지 정책 오브젝트를 생성합니다.
oc create -f <file_name>.yaml
$ oc create -f <file_name>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MCO(Machine Config Operator)는 클러스터의 MCP(Machine config pool)를 업데이트합니다.
검증
클러스터의 노드가 업데이트되면 이미지 정책이 구성되어 있는지 확인할 수 있습니다.
다음 명령을 실행하여 노드의 디버그 Pod를 시작합니다.
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 디버그 쉘 내에서
/host
를 root 디렉터리로 설정합니다.chroot /host/
sh-5.1# chroot /host/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 &
lt;namespace>.json
파일을 검사합니다.cat /etc/crio/policies/<namespace>.json
sh-5.1# cat /etc/crio/policies/<namespace>.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 이미지 정책을 표시하는 공개 키가 있는 이미지 정책 오브젝트의 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 이미지 정책을 표시하는 Fulcio 인증서가 있는 이미지 정책 오브젝트의 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
sigstore-registries.yaml
파일을 검사합니다.cat /etc/containers/registries.d/sigstore-registries.yaml
sh-5.1# cat /etc/containers/registries.d/sigstore-registries.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 범위가 지정된 레지스트리가 추가되었음을 보여주는 출력 예
docker: example.io/crio/signed: use-sigstore-attachments: true quay.io/openshift-release-dev/ocp-release: use-sigstore-attachments: true
docker: example.io/crio/signed: use-sigstore-attachments: true
1 quay.io/openshift-release-dev/ocp-release: use-sigstore-attachments: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
true
인 경우 sigstore 서명을 이미지와 함께 읽도록 지정합니다.
다음 명령을 실행하여 crio 로그에 sigstore 서명 확인이 있는지 확인합니다.
journalctl -u crio | grep -A 100 "Pulling image: example.io/crio"
sh-5.1# journalctl -u crio | grep -A 100 "Pulling image: example.io/crio"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 타임스탬프가 제거된 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow