1.3. Tekton 체인에서 데이터에 서명하기 위한 보안


클러스터 관리자는 키 쌍을 생성하고 Tekton Chains를 사용하여 Kubernetes 시크릿을 사용하여 아티팩트에 서명할 수 있습니다. Tekton 체인이 작동하려면 암호화된 키의 개인 키와 암호가 openshift-pipelines 네임스페이스에 signing-secrets 시크릿의 일부로 존재해야 합니다.

현재 Tekton 체인은 x509cosign 서명 스키마를 지원합니다.

참고

지원되는 서명 체계 중 하나만 사용하십시오.

x509 서명 스키마

Tekton 체인과 함께 x509 서명 체계를 사용하려면 다음 요구 사항을 충족해야 합니다.

  • x509.pem 구조와 함께 signing-secrets 에 개인 키를 저장합니다.
  • 개인 키를 암호화되지 않은 PKCS #8 PEM 파일로 저장합니다.
  • 키는 ed25519 또는 ecdsa 유형입니다.

코인 서명 서명 체계

Tekton 체인과 cosign 서명 스키마를 사용하려면 다음 요구 사항을 충족해야 합니다.

  • cosign.key 구조를 사용하여 서명- 비밀번호에 개인 키를 저장합니다.
  • cosign.password 구조를 사용하여 signing-secrets 에 암호를 저장합니다.
  • ENCRYPTED COSIGN PRIVATE KEY 유형의 암호화된 PEM 파일로 개인 키를 저장합니다.

1.3.1. TektonConfig CR을 사용하여 cosign 키 쌍 생성

Tekton Chains 보안에 cosign 서명 스키마를 사용하려면 TektonConfig CR(사용자 정의 리소스)에서 generateSigningSecret 필드를 true 로 설정하여 ECDSA 암호화를 사용하는 cosign 키 쌍을 생성할 수 있습니다.

사전 요구 사항

  • OpenShift CLI(oc) 유틸리티를 설치했습니다.
  • openshift-pipelines 네임스페이스에 대한 관리 권한이 있는 OpenShift Container Platform 클러스터에 로그인되어 있습니다.

프로세스

  1. 다음 명령을 실행하여 TektonConfig CR을 편집합니다.

    $ oc edit TektonConfig config
    Copy to Clipboard Toggle word wrap
  2. TektonConfig CR에서 generateSigningSecret 값을 true 로 설정합니다.

    TektonConfig CR을 사용하여 ECDSA cosign 키 쌍을 생성하는 예

    apiVersion: operator.tekton.dev/v1
    kind: TektonConfig
    metadata:
      name: config
    spec:
    # ...
      chain:
        disabled: false
        generateSigningSecret: true 
    1
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    기본값은 false입니다. 값을 true 로 설정하면 ecdsa 키 쌍이 생성됩니다.
  3. 몇 분 후에 시크릿에서 공개 키를 추출하여 저장하여 아티팩트 강화를 확인할 수 있습니다. 다음 명령을 실행하여 키를 추출합니다.

    $ oc extract -n openshift-pipelines secret/signing-secrets --keys=cosign.pub
    Copy to Clipboard Toggle word wrap

결과

OpenShift Pipelines Operator는 ecdsa 유형 cosign 키 쌍을 생성하여 openshift-pipelines 네임스페이스의 signing-secrets 시크릿에 저장합니다. 보안에는 다음 파일이 포함됩니다.

  • cosign.key: 개인 키
  • cosign.password: 개인 키의 암호를 해독하기 위한 암호
  • cosign.pub 공개 키

signing-secrets 시크릿이 이미 존재하는 경우 Operator에서 보안을 덮어쓰지 않습니다.

현재 디렉터리의 cosign.pub 파일에는 시크릿에서 추출된 공개 키가 포함되어 있습니다.

주의

generateSigningSecret 필드를 true 에서 false 로 설정하면 Red Hat OpenShift Pipelines Operator가 signing-secrets 시크릿의 모든 값을 재정의하고 유효성을 검사합니다.

Red Hat OpenShift Pipelines Operator는 다음과 같은 보안 기능을 제공하지 않습니다.

  • 키 교체
  • 키 사용량 감사
  • 키에 대한 적절한 액세스 제어

1.3.2. cosign 툴을 사용하여 수동으로 서명 보안 생성

cosign 툴을 사용하여 Tekton 체인에 공동 서명 스키마를 사용할 수 있습니다.

사전 요구 사항

프로세스

  1. 다음 명령을 실행하여 cosign.keycosign.pub 키 쌍을 생성합니다.

    $ cosign generate-key-pair k8s://openshift-pipelines/signing-secrets
    Copy to Clipboard Toggle word wrap

    cosign은 암호를 입력하라는 메시지를 표시한 다음 Kubernetes 시크릿을 생성합니다.

  2. 암호화된 cosign.key 개인 키와 cosign.password 암호 해독 암호를 signing-secrets Kubernetes 시크릿에 저장합니다. 개인 키가 ENCRYPTED COSIGN PRIVATE KEY 유형의 암호화된 PEM 파일로 저장되었는지 확인합니다.

1.3.3. skopeo 툴을 사용하여 수동으로 서명 보안 생성

skopeo 툴을 사용하여 키를 생성하고 Tekton 체인과 함께 cosign 서명 스키마에 사용할 수 있습니다.

사전 요구 사항

  • Linux 시스템에 skopeo 패키지를 설치했습니다.

프로세스

  1. 다음 명령을 실행하여 공개/개인 키 쌍을 생성합니다.

    $ skopeo generate-sigstore-key --output-prefix <mykey> 
    1
    Copy to Clipboard Toggle word wrap
    1
    & lt;mykey >를 선택한 키 이름으로 바꿉니다.

    Skopeo는 개인 키에 대한 암호를 입력하라는 메시지를 표시한 다음 <mykey> .private 및 <mykey > .pub 라는 키 파일을 만듭니다.

  2. 다음 명령을 실행하여 base64 툴을 사용하여 < mykey>.pub 파일을 인코딩합니다.

    $ base64 -w 0 <mykey>.pub > b64.pub
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 base64 툴을 사용하여 < mykey>.private 파일을 인코딩합니다.

    $ base64 -w 0 <mykey>.private > b64.private
    Copy to Clipboard Toggle word wrap
  4. 다음 명령을 실행하여 base64 툴을 사용하여 passhprase를 인코딩합니다.

    $ echo -n '<passphrase>' | base64 -w 0 > b64.passphrase 
    1
    Copy to Clipboard Toggle word wrap
    1
    & lt;passphrase& gt;를 키 쌍에 사용한 암호로 바꿉니다.
  5. 다음 명령을 실행하여 openshift-pipelines 네임스페이스에 signing-secrets 시크릿을 생성합니다.

    $ oc create secret generic signing-secrets -n openshift-pipelines
    Copy to Clipboard Toggle word wrap
  6. 다음 명령을 실행하여 signing-secrets 시크릿을 편집합니다.

    $ oc edit secret -n openshift-pipelines signing-secrets
    Copy to Clipboard Toggle word wrap

    다음과 같은 방식으로 시크릿 데이터에 인코딩된 키를 추가합니다.

    apiVersion: v1
    data:
      cosign.key: <Encoded <mykey>.private> 
    1
    
      cosign.password: <Encoded passphrase> 
    2
    
      cosign.pub: <Encoded <mykey>.pub> 
    3
    
    immutable: true
    kind: Secret
    metadata:
      name: signing-secrets
    # ...
    type: Opaque
    Copy to Clipboard Toggle word wrap
    1
    & lt;Encoded <mykey>.private >을 b64.private 파일의 내용으로 바꿉니다.
    2
    & lt;Encoded passphrase& gt;를 b64.passphrase 파일의 콘텐츠로 바꿉니다.
    3
    & lt;Encoded <mykey>.pub >를 b64.pub 파일의 내용으로 바꿉니다.

1.3.4. "비밀번호가 이미 있음" 오류 해결

signing-secret 시크릿이 이미 채워진 경우 이 보안을 생성하는 명령에서 다음 오류 메시지를 출력할 수 있습니다.

Error from server (AlreadyExists): secrets "signing-secrets" already exists
Copy to Clipboard Toggle word wrap

보안을 삭제하여 이 오류를 해결할 수 있습니다.

프로세스

  1. 다음 명령을 실행하여 signing-secret 시크릿을 삭제합니다.

    $ oc delete secret signing-secrets -n openshift-pipelines
    Copy to Clipboard Toggle word wrap
  2. 키 쌍을 다시 생성하여 선호하는 서명 스키마를 사용하여 시크릿에 저장합니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat