Privilege boundaries
The operator writes Argo CD Applications that Argo CD applies with its own broad identity, and it pushes the charts they install. Treat it as a tier-0 component, like Argo CD itself: installed and upgraded by platform administrators, with its images verified and its actions audited. Its RBAC and admission policies keep each identity’s privileges explicit and stop accidental or casual misuse; they do not contain a fully compromised operator.
Identities
The chart creates no role for editing the ClusterRuntime. Grant it to the
runtime administrators yourself, and keep them apart from approvers, so nobody
both changes the runtime and approves the result.
Deployment validation is cluster-admin-equivalent with every AICR version:
enable it (validation.enabled) only where that is acceptable.
Admission policies
All are ValidatingAdmissionPolicies; the operator uses no webhooks and no mutating admission. Their parameters (registry prefix, namespace allowlist, AICR image) are rendered into the policies themselves, which only administrators can edit.
Constraints on the operator. These bind only the operator’s ServiceAccount and are deleted with it:
Protection of operator state. These bind everyone and are kept on uninstall:
The CRDs add their own rules: a rollout’s spec is immutable except its approval, and an approval or revocation is set once and never cleared.
The aicr AppProject is enforced by Argo CD independently: sources limited to
the registry’s charts/ and wrappers/, destinations limited to the component
namespaces on the in-cluster server.
Namespaces and Pod Security
The chart keeps every namespace it creates on uninstall, so removing the
chart never removes the GPU stack. The operator creates no namespaces, and
Argo CD’s CreateNamespace stays off: a plan that renders a release into any
other namespace is refused before it reaches Argo CD (NamespaceNotAllowed).
The operator and AICR’s recipe, bundle and upgrade-check Jobs run as non-root
with a read-only root file system, all capabilities dropped, RuntimeDefault
seccomp and size-limited scratch space.
Credentials
- With the
awsprovider, the operator’s AWS identity mints ECR tokens. It refreshes Argo CD’srepo-credsSecret, and gives each AICR Job that pushes a per-run docker config Secret, owned by the Job and deleted with it, even when the operator is stopped. Scope the identity’s repository prefix to one cluster: it can push there. - With
static, you provide every Secret, and the operator only reads its own copy by name. - Credentials never appear in plans, values, status, Events, logs or evidence; errors name the Secret, never its content. Approvers can read assessment reports but no Secret.
Network egress
The chart ships no NetworkPolicy. If you restrict egress, allow:
Tenants
Tenants should have no access to the operator’s kinds, the Argo CD
Applications, the operator, Job, discovery and validation namespaces, or GPU
Operator operands. Give them dedicated namespaces with the restricted Pod
Security profile and quotas. Namespace isolation is not GPU or fabric
isolation; what each profile isolates is part of its qualification
(support policy).