검색

1.6. Tekton Chain을 사용하여 이미지와 검증에 서명 및 확인

download PDF

클러스터 관리자는 Tekton Chains를 사용하여 다음 작업을 수행하여 image 및 provenances에 서명하고 확인할 수 있습니다.

  • 암호화된 x509 키 쌍을 생성하여 Kubernetes 시크릿으로 저장합니다.
  • 이미지, 이미지 서명 및 서명된 이미지 테스트를 저장하기 위해 OCI 레지스트리에 대한 인증을 설정합니다.
  • 검증 정보를 생성하고 서명하도록 Tekton 체인을 구성합니다.
  • 작업 실행에 Kaniko로 이미지를 생성합니다.
  • 서명된 이미지와 서명된 인증서를 확인합니다.

사전 요구 사항

다음 사항이 클러스터에 설치되어 있는지 확인합니다.

  • Red Hat OpenShift Pipelines Operator
  • Tekton 체인
  • cosign
  • Rekor
  • jq

프로세스

  1. 암호화된 x509 키 쌍을 생성하여 Kubernetes 시크릿으로 저장합니다.

    $ cosign generate-key-pair k8s://openshift-pipelines/signing-secrets

    메시지가 표시되면 암호를 입력합니다. cosign은 생성된 개인 키를 openshift-pipelines 네임스페이스에 signing-secrets Kubernetes 시크릿의 일부로 저장하고 공개 키를 cosign.pub 로컬 파일에 씁니다.

  2. 이미지 레지스트리에 대한 인증을 구성합니다.

    1. OCI 레지스트리로 서명을 푸시하도록 Tekton 체인 컨트롤러를 구성하려면 작업 실행의 서비스 계정과 연결된 인증 정보를 사용합니다. 자세한 내용은 " OCI 레지스트리에 인증" 섹션을 참조하십시오.
    2. 이미지를 빌드하고 레지스트리로 내보내는 Kaniko 작업에 대한 인증을 구성하려면 필요한 인증 정보가 포함된 docker config.json 파일의 Kubernetes 시크릿을 생성합니다.

      $ oc create secret generic <docker_config_secret_name> \ 1
        --from-file <path_to_config.json> 2
      1
      docker config secret 이름으로 대체합니다.
      2
      docker config.json 파일의 경로로 바꿉니다.
  3. chain-config 개체에서 artifacts.taskrun.format,artifacts.taskrun.storagetransparency.enabled 매개변수를 설정하여 Tekton 체인을 구성합니다.

    $ oc patch configmap chains-config -n openshift-pipelines -p='{"data":{"artifacts.taskrun.format": "in-toto"}}'
    
    $ oc patch configmap chains-config -n openshift-pipelines -p='{"data":{"artifacts.taskrun.storage": "oci"}}'
    
    $ oc patch configmap chains-config -n openshift-pipelines -p='{"data":{"transparency.enabled": "true"}}'
  4. Kaniko 작업을 시작합니다.

    1. Kaniko 작업을 클러스터에 적용합니다.

      $ oc apply -f examples/kaniko/kaniko.yaml 1
      1
      Kaniko 작업의 URI 또는 파일 경로로 바꿉니다.
    2. 적절한 환경 변수를 설정합니다.

      $ export REGISTRY=<url_of_registry> 1
      
      $ export DOCKERCONFIG_SECRET_NAME=<name_of_the_secret_in_docker_config_json> 2
      1
      이미지를 내보낼 레지스트리의 URL을 바꿉니다.
      2
      docker config.json 파일의 보안 이름으로 바꿉니다.
    3. Kaniko 작업을 시작합니다.

      $ tkn task start --param IMAGE=$REGISTRY/kaniko-chains --use-param-defaults --workspace name=source,emptyDir="" --workspace name=dockerconfig,secret=$DOCKERCONFIG_SECRET_NAME kaniko-chains

      모든 단계가 완료될 때까지 이 작업의 로그를 관찰합니다. 인증에 성공하면 최종 이미지가 $REGISTRY/kaniko-chains 로 푸시됩니다.

  5. Tekton 체인에서 인증 정보를 생성하고 서명할 때까지 1분 정도 기다린 다음 작업 실행 시 chain.tekton.dev/signed=true 주석의 가용성을 확인합니다.

    $ oc get tr <task_run_name> \ 1
    -o json | jq -r .metadata.annotations
    
    {
      "chains.tekton.dev/signed": "true",
      ...
    }
    1
    작업 실행 이름으로 대체합니다.
  6. 이미지와 인증을 확인합니다.

    $ cosign verify --key cosign.pub $REGISTRY/kaniko-chains
    
    $ cosign verify-attestation --key cosign.pub $REGISTRY/kaniko-chains
  7. Rekor에서 이미지의 출처를 확인합니다.

    1. $REGISTRY/kaniko-chains 이미지의 다이제스트를 가져옵니다. 작업 실행을 검색하거나 이미지를 가져와 다이제스트를 추출할 수 있습니다.
    2. Rekor를 검색하여 이미지의 sha256 다이제스트와 일치하는 모든 항목을 찾습니다.

      $ rekor-cli search --sha <image_digest> 1
      
      <uuid_1> 2
      <uuid_2> 3
      ...
      1
      이미지를 sha256 다이제스트로 대체합니다.
      2
      첫 번째 일치는 UUID(Universally unique identifier)입니다.
      3
      두 번째 일치하는 UUID입니다.

      검색 결과에는 일치하는 항목의 UUID가 표시됩니다. 해당 UUID 중 하나에 인증 정보가 있습니다.

    3. 테스트를 확인하십시오.

      $ rekor-cli get --uuid <uuid> --format json | jq -r .Attestation | base64 --decode | jq
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.