8.7. 개인 키 및 Rekor로 sigstore 서명으로 컨테이너 이미지에 서명
Podman 버전 4.4부터 Rekor 서버와 함께 컨테이너 서명의 sigstore 형식을 사용할 수 있습니다. 공용 rekor.sigstore.dev 서버에 공용 서명을 업로드할 수도 있으므로 Cosign과의 상호 운용성이 증가합니다. 그런 다음 cosign verify
명령을 사용하여 Rekor를 명시적으로 비활성화하지 않고도 서명을 확인할 수 있습니다.
사전 요구 사항
-
container-tools
meta-package가 설치되어 있습니다.
절차
sigstore 공용/개인 키 쌍을 생성합니다.
$ skopeo generate-sigstore-key --output-prefix myKey
-
공개 및 개인 키
myKey.pub
및myKey.private
이 생성됩니다.
-
공개 및 개인 키
/etc/containers/registries.conf.d/default.yaml
파일에 다음 내용을 추가합니다.docker: <registry>: use-sigstore-attachments: true
use-sigstore-attachments
옵션을 설정하면 Podman 및 Skopeo가 이미지와 함께 컨테이너 sigstore 서명을 읽고 쓰고 서명된 이미지와 동일한 리포지토리에 저장할 수 있습니다.참고/etc/containers/registries.d
디렉터리의 YAML 파일에서 레지스트리 또는 리포지토리 구성 섹션을 편집할 수 있습니다. 단일 범위(default-docker, registry 또는 namespace)는/etc/containers/registries.d
디렉터리 내의 하나의 파일에만 존재할 수 있습니다./etc/containers/registries.d/default.yaml
파일에서 시스템 전체 레지스트리 구성을 편집할 수도 있습니다. 모든 YAML 파일을 읽고 파일 이름이 임의의 것입니다.
현재 디렉터리에서
Containerfile
을 사용하여 컨테이너 이미지를 빌드합니다.$ podman build -t <registry>/<namespace>/<image>
file.yml
파일을 생성합니다.privateKeyFile: "/home/user/sigstore/myKey.private" privateKeyPassphraseFile: "/mnt/user/sigstore-myKey-passphrase" rekorURL: "https://<your-rekor-server>"
-
file.yml
은 sigstore 서명을 생성하는 데 필요한 옵션을 저장하는 데 사용되는 sigstore 서명 매개 변수 YAML 파일입니다.
-
이미지에 서명하고 레지스트리에 푸시합니다.
$ podman push --sign-by-sigstore=file.yml <registry>/<namespace>/<image>
-
또는 유사한
--sign-by-sigstore
옵션과 함께skopeo copy
명령을 사용하여 컨테이너 레지스트리에서 이동하는 동안 기존 이미지에 서명할 수 있습니다.
-
또는 유사한
공용 서버에 대한 제출에는 서명에 대한 공개 키 및 메타데이터에 대한 데이터가 포함되어 있습니다.
검증
다음 방법 중 하나를 사용하여 컨테이너 이미지가 올바르게 서명되었는지 확인합니다.
cosign verify
명령을 사용합니다.$ cosign verify <registry>/<namespace>/<image> --key myKey.pub
podman pull
명령을 사용합니다./etc/containers/policy.json
파일에rekorPublicKeyPath
또는rekorPublicKeyData
필드를 추가합니다.{ ... "transports": { "docker": { "<registry>/<namespace>": [ { "type": "sigstoreSigned", "rekorPublicKeyPath": "/path/to/local/public/key/file", } ] ... } } ... }
이미지를 가져옵니다.
$ podman pull <registry>/<namespace>/<image>
-
podman pull
명령은 구성된 대로 서명 존재를 강제 시행하며 추가 옵션은 필요하지 않습니다.
-
추가 리소스
-
podman-push
man 페이지 -
podman-build
man 페이지 -
container-registries.d
man page - sigstore: 소프트웨어 공급망 신뢰 및 보안에 대한 오픈 응답