Helm 프러비넌스와 무결성
Helm 프러비넌스와 무결성
Helm에는 차트 사용자가 차트의 무결성과 출처를 검증하는 데 도움이 되는 프러비넌스 도구가 있어요. GNUPG를 기반으로 한 업계 표준 도구를 사용해 Helm은 차트 사용자에게 다음 기능을 제공할 수 있어요:
-
차트가 게시된 이후로 변조되지 않았는지 검증해요.
-
차트가 특정인에 의해 게시됐는지 검증해요.
-
차트가 서명 데이터를 담은 프러비넌스 파일과 함께 게시됐는지 검증해요.
차트 관리자도 이 도구를 사용해 내려 받은 차트가 진짜인지 검증하고, 차트에 서명하거나 차트 소유권을 증명할 수 있어요.
출처: 문서
본문
워크플로우
0단계: 필요한 도구 설치
차트의 무결성과 출처를 확인하려면 다음 도구를 설치해요.
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 명령에 있어요.