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


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

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

기본 openshift 클러스터 이미지 정책은 필요한 OpenShift Container Platform 이미지에 대한 sigstore 지원을 제공합니다. 이 클러스터 이미지 정책은 기술 프리뷰 기능을 활성화한 클러스터에서만 활성화됩니다. 이 클러스터 이미지 정책 오브젝트를 제거하거나 수정하지 않아야 합니다. openshift 로 시작하는 클러스터 이미지 정책 이름은 향후 시스템 사용을 위해 예약되어 있습니다.

중요

기본 openshift 클러스터 이미지 정책은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

사전 요구 사항

  • PKI(Sigstore 지원 공개 키 인프라) 키, BYOPK(Bring Your Own Public Key Infrastructure) 인증서 또는 서명 작업에 Cosign 공개 및 개인 키 쌍을 제공합니다.
  • 이미지에 서명하기 위한 서명 프로세스가 있습니다.
  • Cosign 서명을 사용하는 경우 Cosign 서명을 지원하는 레지스트리에 액세스할 수 있습니다.
  • 기술 프리뷰 기능 세트를 활성화하기 전에 OpenShift Container Platform 릴리스 이미지 리포지토리, quay.io/openshift-release-dev /ocp-release -dev/ocp-v4.0-art-dev 에 레지스트리 미러가 구성된 경우 OpenShift Container Platform 릴리스 이미지의 sigstore 서명을 미러 레지스트리에 미러링해야 합니다. 그렇지 않으면 릴리스 리포지토리에 대한 서명 확인을 적용하는 기본 openshift 클러스터 이미지 정책은 Cluster Version Operator가 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
    Copy to Clipboard Toggle word wrap
  • 신뢰의 루트로 BYOPKI 인증서를 사용하는 경우 cluster 라는 FeatureGate CR을 편집하여 클러스터에 필요한 기술 프리뷰 기능을 활성화했습니다.

    $ 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
    필요한 SigstoreImageVerificationPKI 기능을 활성화합니다.
    주의

    클러스터에서 TechPreviewNoUpgrade 기능 세트를 활성화하면 취소할 수 없으며 마이너 버전 업데이트를 방지할 수 없습니다. 이 기능 세트를 사용하면 테스트 클러스터에서 이러한 기술 프리뷰 기능을 완전히 테스트할 수 있습니다. 프로덕션 클러스터에서 이 기능 세트를 활성화하지 마십시오.

프로세스

  1. 다음 예와 유사한 클러스터 이미지 정책 오브젝트를 생성합니다. 이러한 매개변수에 대한 자세한 내용은 "이미지 정책 매개변수 정보"를 참조하십시오.

    공개 키 정책 및 MatchRepoDigestOrExact 일치 정책이 있는 클러스터 이미지 정책 오브젝트의 예

    apiVersion: config.openshift.io/v1
    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
    신뢰의 루트, 공개 키, BYOPKI 인증서 또는 Fulcio 인증서 를 정의하는 정책 유형을 지정합니다. 이 예에서는 공개 키를 Rekor 확인과 함께 사용합니다.
    6
    공개 키 정책의 경우 PEM 형식으로 base64로 인코딩된 공개 키를 지정합니다. 최대 길이는 8192자입니다.
    7
    선택 사항: base64로 인코딩된 Rekor 공개 키를 PEM 형식으로 지정합니다. 최대 길이는 8192자입니다.
    8
    선택 사항: 서명 및 실제 이미지 ID의 ID를 확인하려면 다음 프로세스 중 하나를 지정합니다.
    • MatchRepoDigestOrExact.
    • MatchRepository.
    • ExactRepository. exactRepository 매개변수를 지정해야 합니다.
    • RemapIdentity. prefixsignedPrefix 매개변수를 지정해야 합니다.

    BYOPKI 정책 및 MatchRepository 일치 정책의 클러스터 이미지 정책 오브젝트의 예

    apiVersion: config.openshift.io/v1alpha1
    kind: ClusterImagePolicy 
    1
    
    metadata:
      name: pki-policy
    spec:
      scopes:
      - example.io 
    2
    
      policy: 
    3
    
        rootOfTrust: 
    4
    
          policyType: PKI 
    5
    
          pki: 
    6
    
            caRootsData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk....URS0tLS0t
            caIntermediatesData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1J....lDQVRFLS0tLS0=
            pkiCertificateSubject: 
    7
    
              email: email@example.com
              hostname: myhost.example.com
        signedIdentity:
          matchPolicy: MatchRepository 
    8
    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
    신뢰의 루트, 공개 키, BYOPKI 인증서 또는 Fulcio 인증서 를 정의하는 정책 유형을 지정합니다. 이 예에서는 BYOPKI 인증서를 사용합니다.
    6
    BYOPKI 인증서의 경우 caRootsData 를 지정합니다. 이 매개변수는 base64로 인코딩된 CA 루트 인증서를 PEM 형식으로 지정합니다. 최대 길이는 8192자입니다. 선택적으로 caIntermediatesData 를 사용하여 PEM 형식으로 base64로 인코딩된 중간 CA 루트 인증서를 지정합니다. 최대 길이는 8192자입니다.
    7
    호스트 이름과 이메일 주소를 사용하여 사용자 ID를 인증하는 SAN(주체 대체 이름)을 지정합니다.
    • 이메일. 인증서가 생성될 때 지정된 이메일 주소를 지정합니다.
    • 호스트 이름. 인증서가 생성될 때 지정된 호스트 이름을 지정합니다.
    8
    BYOPKI 인증서의 경우 MatchRepository 매개변수를 지정하여 서명 및 실제 이미지 ID의 ID를 확인합니다. 기본 서명된 ID는 확인을 위해 서명 ID에 다이제스트 참조가 필요한 matchRepoDigestOrExact 입니다. 이 경우 서명 ID는 리포지토리 참조를 사용하고 이미지 다이제스트를 포함하지 않습니다.

    Fulcio 인증서 정책 및 remapIdentity 일치 정책이 있는 클러스터 이미지 정책 오브젝트의 예

    apiVersion: config.openshift.io/v1
    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
    신뢰의 루트, 공개 키, BYOPKI 인증서 또는 Fulcio 인증서 를 정의하는 정책 유형을 지정합니다. 이 예에서는 필수 Rekor 확인과 함께 Fulcio 인증서를 사용합니다.
    6
    Fulcio 인증서 정책의 경우 다음 매개변수가 필요합니다.
    • fulcioCAData: base64로 인코딩된 Fulcio 인증서를 PEM 형식으로 지정합니다. 최대 길이는 8192자입니다.
    • fulcioSubject: OIDC 발행자 및 Fulcio 인증 구성의 이메일을 지정합니다.
    7
    PEM 형식으로 base64로 인코딩된 Rekor 공개 키를 지정합니다. 이 매개변수는 policyTypeFulcioCAWithRekor 인 경우 필요합니다. 최대 길이는 8192자입니다.
    8
    선택 사항: 서명 및 실제 이미지 ID의 ID를 확인하려면 다음 프로세스 중 하나를 지정합니다.
    • MatchRepoDigestOrExact.
    • MatchRepository.
    • ExactRepository. exactRepository 매개변수를 지정해야 합니다.
    • RemapIdentity. 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. 다음 명령을 실행하여 노드의 디버그 Pod를 시작합니다.

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

      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

      새 클러스터 이미지 정책을 표시하는 BYOPKI 인증서의 클러스터 이미지 정책 오브젝트의 출력 예

      # ...
        "transports": {
      # ...
          "docker": {
            "example.io": [
              {
                "type": "sigstoreSigned",
                "pki": {
                  "caRootsData": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk....URS0tLS0t",
                  "caIntermediatesData": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1J....lDQVRFLS0tLS0=",
                  "subjectEmail": "email@example.com",
                  "subjectHostname": "myhost.example.com"
                },
                "signedIdentity": {
                  "type": "matchRepository"
                }
              }
            ],
      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