Helm 프러비넌스와 무결성

Helm 프러비넌스와 무결성

Helm에는 차트 사용자가 차트의 무결성과 출처를 검증하는 데 도움이 되는 프러비넌스 도구가 있어요. GNUPG를 기반으로 한 업계 표준 도구를 사용해 Helm은 차트 사용자에게 다음 기능을 제공할 수 있어요:

  • 차트가 게시된 이후로 변조되지 않았는지 검증해요.

  • 차트가 특정인에 의해 게시됐는지 검증해요.

  • 차트가 서명 데이터를 담은 프러비넌스 파일과 함께 게시됐는지 검증해요.

차트 관리자도 이 도구를 사용해 내려 받은 차트가 진짜인지 검증하고, 차트에 서명하거나 차트 소유권을 증명할 수 있어요.

출처: 문서

본문

워크플로우

0단계: 필요한 도구 설치

차트의 무결성과 출처를 확인하려면 다음 도구를 설치해요.

  • GnuPGGit을 내려 받아 설치해요.

  • 서명에 사용할 개인 키를 GPG에서 가져오거나 만들어요.

  • 팀 키가 없다면 하나 만드는 것을 고려해요.

1단계: 차트 서명

차트에 서명하려면 제대로 구성된 키가 필요해요.

  • 차트에 서명하려면 ~/.gnupg/ 디렉터리에 적절한 키가 있어야 해요.

  • Helm에 키를 어디서 찾을지 알려 주려면 플러그형 시크릿 관리 플러그인을 사용할 수 있어요.

2단계: 키로 차트 패키징

  • 간단한 차트를 만들어요. (helm create로 만들 수 있어요.)

  • 이제 키로 패키징해요.

$ helm package --sign --key 'example' --keyring ~/.gnupg/secring.gpg mychart

생성된 tarball이 보일 거예요. 그리고 새로 생성된 파일도 보이는데, mychart-0.1.0.tgz.prov 같은 이름의 프러비넌스 파일이에요.

프러비넌스 파일은 표준 텍스트 뷰어로 열면 대략 이렇게 보여요:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

apiVersion: v2
appVersion: 1.0.0
description: A Helm chart for Kubernetes
name: mychart
version: 0.1.0

-----BEGIN PGP SIGNATURE-----

...
-----END PGP SIGNATURE-----

3단계: 차트 제공자와 함께 차트 검증

차트를 검증하려면 서명자의 공개 키가 필요해요:

$ helm verify --keyring pace/keys/pubring.gpg mychart-0.1.0.tgz

결과:

$ Signed by: Example <[email protected]>
Using Key: 3818AF1314E5569E5E4DEB4800B5B77E50FFD22E

Good signature from "Example <[email protected]>"

또한 아카이빙된 차트 파일의 무결성을 확인하려면 브랜치를 git checkout 하고 helm verify로 파일 무결성을 검증해요.

$ helm verify chart.tgz
Signed by: Example <[email protected]>
using key: 3818AF1314E5569E5E4DEB4800B5B77E50FFD22E
[... lots of output ...]

Good signature from "Example <[email protected]>"

차트의 프러비넌스를 확인하려면 체인의 수직 무결성을 검증해요:

$ helm verify chart.tgz --keyring path/to/publickey.gpg

Git과 Docker로 태깅하기

여러 아키텍처로 빌드된 이미지는 콘텐츠 기반 태깅(content-based tagging)이 필요해요. 이는 프러비넌스와 같은 아이디어예요. 이미지의 콘텐츠와 정체성을 검증해요. 태그가 아니라 digest에서 파생돼요.

Helm은 차트를 내려 받을 때와 검증할 때 차트의 프러비넌스를 검증할 수 있어요. --verify 플래그는 helm pull 명령에 있어요.

더 알아보기 (Learn more)