The Helm Client • Command-line client for end users. • The Tiller Server • An in-cluster server that interacts with the Helm client, and interfaces with the Kubernetes API server.
an app running on Kubernetes • Ideal – Tiller performing actions using the rights of the client, instead of the rights of Tiller • Contingent upon the outcome of the Pod Identity Working Group, which has taken on the task of solving the problem in a general way • Solving Helm security is a community effort • Here’s what we can do to secure Helm
uses the default service account in a namespace $ helm init --service-account <service-account> • The command does not create the associated ServiceAccount/Roles/RoleBindings
$ helm secure-tiller --namespace dev-team example-profiles/dev-team/ serviceaccount "dev-team-rbac-profile" created rolebinding "dev-team-tiller-binding" created role "dev-team" created
make Helm secure “by default”? • Make sure RBAC is enabled • Allow only HTTPS, signed charts with at least basic auth or mTLS • Enforce mTLS on gRPC • Default to secrets for release information • Are these really Helm’s decisions to make? • Is the a more Kubernetes “native” way to tackle this problem? • Could we make Helm more Kubernetes ”native”?
namespace • https://github.com/kubernetes/helm/pull/3212 • When enabled, this will reject charts that attempt to install resources outside the target namespace • Helm CRD (Helm 3.0?) • Use RBAC to determine weather a user can perform CRUD operations on a “HelmRelease” custom type • https://engineering.bitnami.com/articles/helm-security.html • https://github.com/wpengine/lostromos
• This can ensure that a request is truly authorized, instead of being able to access an application simply because an entity has network access to it. (In the case of Tiller) • https://github.com/brancz/kube-rbac-proxy/issues/1 @mumoshu • Adds gRPC support
Tiller locally which uses the local kubeconfig to access the Kubernetes API $ helm plugin install https://github.com/adamreese/helm-local $ helm local start $ helm local COMMAND
solve it • Join the Helm development calls • Plugins are a great way to start vetting/solving problem before trying to get a PR into core • Helm 3.0 proposals tomorrow
Quay • https://coreos.com/blog/quay-application-registry-for-kubernetes.html • Secure Deployment of Helm Repositories through Client Side Certificates • https://www.twistlock.com/2017/09/05/secure-deployment-helm- repositories-client-side-certificates/ • Exploring The Security Of Helm • https://engineering.bitnami.com/articles/helm-security.html