Deploying Helm charts with least privilege means defining only the permissions a workload needs, nothing more. In Kubernetes, excessive RBAC grants give attackers space to move. By making roles and service accounts precise, you cut that risk.
Start with your values file. Strip the chart of default service accounts if they come with cluster-admin. Replace them with a custom service account scoped to the namespace. Bind it using RoleBindings, not ClusterRoleBindings, unless absolutely required. Audit every verb in the Role—get, list, watch—remove what the application will never use.
Make security part of the chart itself. Embed RBAC manifests into the Helm template so they deploy alongside the app. This keeps least privilege baked into the release instead of relying on manual steps later. Version control these RBAC rules so any creep in permissions can be spotted in code review.
When dealing with third-party Helm charts, use overrides. A values.yaml can disable extra controllers or components that require broader permissions. Run helm template before deployment to inspect generated RBAC YAML. If you see * wildcards in verbs or resources, tighten them before applying.