12.3. 클러스터 이미지 정책 CR 생성


ClusterImagePolicy 사용자 정의 리소스(CR)를 사용하면 클러스터 관리자가 전체 클러스터에 대한 sigstore 서명 확인 정책을 구성할 수 있습니다. 이 기능을 활성화하면, Machine Config Operator(MCO)가 ClusterImagePolicy 객체를 감시하고 클러스터의 모든 노드에서 /etc/containers/policy.json/etc/containers/registries.d/sigstore-registries.yaml 파일을 업데이트합니다.

다음 예제에서는 ClusterImagePolicy 객체를 구성하는 방법에 대한 일반적인 지침을 보여줍니다. 매개변수에 대한 자세한 내용은 "클러스터 및 이미지 정책 매개변수 정보"를 참조하세요.

사전 요구 사항

  • 서명 작업을 위해 sigstore 지원 공개 키 인프라(PKI) 또는 Cosign 공개 키와 개인 키 쌍이 있습니다.
  • 이미지에 서명하기 위한 서명 프로세스가 마련되어 있습니다.
  • Cosign 서명을 사용하는 경우 Cosign 서명을 지원하는 레지스트리에 액세스할 수 있습니다.
  • 클러스터에 필요한 기술 미리 보기 기능을 활성화하려면 FeatureGate CR인 cluster를 편집해야 합니다.

    $ oc edit featuregate cluster
    Copy to Clipboard Toggle word wrap

    FeatureGate CR 예시

    apiVersion: config.openshift.io/v1
    kind: FeatureGate
    metadata:
      name: cluster
    spec:
      featureSet: TechPreviewNoUpgrade 
    1
    Copy to Clipboard Toggle word wrap

    1
    필수 SigstoreImageVerification 기능을 활성화합니다.
    주의

    클러스터에서 TechPreviewNoUpgrade 기능 세트를 활성화하면 실행 취소할 수 없으며 사소한 버전 업데이트가 방지됩니다. 이 기능 세트를 사용하면 테스트 클러스터에서 이러한 기술 미리 보기 기능을 활성화하여 전체적으로 테스트할 수 있습니다. 프로덕션 클러스터에서 이 기능 세트를 활성화하지 마십시오.

    변경 사항을 저장하면 새로운 머신 구성이 생성되고, 머신 구성 풀이 업데이트되며, 변경 사항이 적용되는 동안 각 노드의 스케줄링이 비활성화됩니다.

프로세스

  1. 다음 예제와 유사한 클러스터 이미지 정책 객체를 만듭니다. 이러한 매개변수에 대한 구체적인 내용은 "이미지 정책 매개변수 정보"를 참조하세요.

    공개 키 정책과 MatchRepoDigestOrExact 일치 정책이 포함된 클러스터 이미지 정책 개체의 예

    apiVersion: config.openshift.io/v1alpha1
    kind: ClusterImagePolicy 
    1
    
    metadata:
      name: p1
    spec:
      scopes: 
    2
    
        - example.com
      policy: 
    3
    
        rootOfTrust: 
    4
    
          policyType: PublicKey 
    5
    
          publicKey:
            keyData: a2V5RGF0YQ== 
    6
    
            rekorKeyData: cmVrb3JLZXlEYXRh 
    7
    
        signedIdentity: 
    8
    
          matchPolicy: MatchRepoDigestOrExact
    Copy to Clipboard Toggle word wrap

    1
    ClusterImagePolicy 객체를 생성합니다.
    2
    이 정책에 할당된 저장소 또는 이미지 목록을 정의합니다. 클러스터 이미지 정책에서 해당 정책이 quay.io/openshift-release-dev/ocp-releasequay.io/openshift-release-dev/ocp-v4.0-art-dev 저장소에 있는 OpenShift Container Platform 이미지의 배포를 차단하지 않는지 확인하세요. 이러한 저장소의 이미지는 클러스터 작동에 필요합니다.
    3
    이미지가 어떻게 검증되는지 정의하는 매개변수를 지정합니다.
    4
    정책에 대한 신뢰 루트를 정의합니다.
    5
    신뢰의 루트(공개 키 또는 Fulcio 인증서) 를 정의하는 정책 유형을 지정합니다. 여기에는 Rekor 검증을 거친 공개 키가 있습니다.
    6
    공개 키 정책의 경우 PEM 형식으로 base64로 인코딩된 공개 키를 지정합니다. 최대 길이는 8192자입니다.
    7
    선택 사항: PEM 형식의 base64로 인코딩된 Rekor 공개 키를 지정합니다. 최대 길이는 8192자입니다.
    8
    선택 사항: 서명의 신원과 실제 이미지의 신원을 확인하기 위해 다음 프로세스 중 하나를 지정합니다.
    • MatchRepoDigestOrExact.
    • 매치리포지토리 .
    • ExactRepository . exactRepository 매개변수를 지정해야 합니다.
    • 리맵아이덴티티 . prefixsignedPrefix 매개변수를 지정해야 합니다.

    Fulcio 인증서 정책과 remapIdentity 일치 정책이 포함된 클러스터 이미지 정책 개체의 예

    apiVersion: config.openshift.io/v1alpha1
    kind: ClusterImagePolicy 
    1
    
    metadata:
      name: p1
    spec:
      scopes: 
    2
    
        - example.com
      policy: 
    3
    
        rootOfTrust: 
    4
    
          policyType: FulcioCAWithRekor 
    5
    
          fulcioCAWithRekor: 
    6
    
            fulcioCAData: a2V5RGF0YQ==
            fulcioSubject:
              oidcIssuer: "https://expected.OIDC.issuer/"
              signedEmail: "expected-signing-user@example.com"
            rekorKeyData: cmVrb3JLZXlEYXRh 
    7
    
        signedIdentity:
          matchPolicy: RemapIdentity 
    8
    
          remapIdentity:
            prefix: example.com 
    9
    
            signedPrefix: mirror-example.com 
    10
    Copy to Clipboard Toggle word wrap

    1
    ClusterImagePolicy 객체를 생성합니다.
    2
    이 정책에 할당된 저장소 또는 이미지 목록을 정의합니다. 클러스터 이미지 정책에서 해당 정책이 quay.io/openshift-release-dev/ocp-releasequay.io/openshift-release-dev/ocp-v4.0-art-dev 저장소에 있는 OpenShift Container Platform 이미지의 배포를 차단하지 않는지 확인하세요. 이러한 저장소의 이미지는 클러스터 작동에 필요합니다.
    3
    이미지가 어떻게 검증되는지 정의하는 매개변수를 지정합니다.
    4
    정책에 대한 신뢰 루트를 정의합니다.
    5
    신뢰의 루트(공개 키 또는 Fulcio 인증서) 를 정의하는 정책 유형을 지정합니다. 여기에는 Rekor 검증이 필요한 Fulcio 인증서가 있습니다.
    6
    Fulcio 인증서 정책의 경우 다음 매개변수가 필요합니다.
    • fulcioCAData : PEM 형식의 base64로 인코딩된 Fulcio 인증서를 지정합니다. 최대 길이는 8192자입니다.
    • fulcioSubject : OIDC 발급자와 Fulcio 인증 구성의 이메일을 지정합니다.
    7
    PEM 형식의 base64로 인코딩된 Rekor 공개 키를 지정합니다. policyTypeFulcioCAWithRekor 인 경우 이 매개변수가 필요합니다. 최대 길이는 8192자입니다.
    8
    선택 사항: 서명의 신원과 실제 이미지의 신원을 확인하기 위해 다음 프로세스 중 하나를 지정합니다.
    • MatchRepoDigestOrExact.
    • 매치리포지토리 .
    • ExactRepository . exactRepository 매개변수를 지정해야 합니다.
    • 리맵아이덴티티 . prefixsignedPrefix 매개변수를 지정해야 합니다.
    9
    remapIdentity 일치 정책의 경우, 범위가 지정된 이미지 접두사와 일치해야 하는 접두사를 지정합니다. 두 가지가 일치하면 범위가 지정된 이미지 접두사는 signedPrefix 값으로 대체됩니다. 최대 길이는 512자입니다.
    10
    remapIdentity 일치 정책의 경우, 필요한 경우 다시 매핑할 이미지 접두사를 지정합니다. 최대 길이는 512자입니다.
  2. 클러스터 이미지 정책 객체를 생성합니다.

    $ oc create -f <file_name>.yaml
    Copy to Clipboard Toggle word wrap

    MCO(Machine Config Operator)는 클러스터의 MCP(Machine Config Pool)를 업데이트합니다.

검증

  • 클러스터의 노드가 업데이트되면 클러스터 이미지 정책이 구성되었는지 확인할 수 있습니다.

    1. 다음 명령을 실행하여 노드의 디버그 포드를 시작합니다.

      $ oc debug node/<node_name>
      Copy to Clipboard Toggle word wrap
    2. 다음 명령을 실행하여 디버그 셸에서 /host를 루트 디렉터리로 설정합니다.

      sh-5.1# chroot /host/
      Copy to Clipboard Toggle word wrap
    3. 다음 명령을 실행하여 policy.json 파일을 검사합니다.

      sh-5.1# cat /etc/containers/policy.json
      Copy to Clipboard Toggle word wrap

      새 클러스터 이미지 정책을 보여주는 공개 키가 있는 클러스터 이미지 정책 개체에 대한 예시 출력

      # ...
        "transports": {
      # ...
          "docker": {
            "example.com": [
              {
                "type": "sigstoreSigned",
                "keyData": "a2V5RGF0YQ==",
                "rekorPublicKeyData": "cmVrb3JLZXlEYXRh",
                "signedIdentity": {
                  "type": "matchRepoDigestOrExact"
                }
              }
            ],
      # ...
      Copy to Clipboard Toggle word wrap

      새로운 클러스터 이미지 정책을 보여주는 Fulcio 인증서가 있는 클러스터 이미지 정책 개체에 대한 예시 출력

      # ...
        "transports": {
      # ...
          "docker": {
            "example.com": [
              {
                "type": "sigstoreSigned",
                "fulcio": {
                  "caData": "a2V5RGF0YQ==",
                  "oidcIssuer": "https://expected.OIDC.issuer/",
                  "subjectEmail": "expected-signing-user@example.com"
                },
                "rekorPublicKeyData": "cmVrb3JLZXlEYXRh",
                "signedIdentity": {
                  "type": "remapIdentity",
                  "prefix": "example.com",
                  "signedPrefix": "mirror-example.com"
                }
              }
            ],
      # ...
      Copy to Clipboard Toggle word wrap

    4. 다음 명령을 실행하여 sigstore-registries.yaml 파일을 살펴보세요.

      sh-5.1# cat /etc/containers/registries.d/sigstore-registries.yaml
      Copy to Clipboard Toggle word wrap

      범위가 지정된 레지스트리가 추가되었음을 보여주는 예제 출력

      docker:
        example.com:
          use-sigstore-attachments: true 
      1
      
        quay.io/openshift-release-dev/ocp-release:
          use-sigstore-attachments: true
      Copy to Clipboard Toggle word wrap

      1
      true인 경우 sigstore 서명이 이미지와 함께 읽혀질 것임을 지정합니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat