RBAC
Fine-grained role-based access control for applications
Cased CD Enterprise provides a UI for managing ArgoCD’s role-based access control (RBAC) system.
Overview
Section titled “Overview”ArgoCD RBAC controls:
- Who can perform actions (users, groups)
- What actions they can perform (get, create, update, delete, sync)
- On which resources (applications, clusters, repositories, projects)
Viewing RBAC
Section titled “Viewing RBAC”Navigate to Settings → RBAC in Cased CD to see:
- All defined roles and their permissions
- Which users and groups are assigned to each role
- Permission matrix showing access levels
RBAC syntax
Section titled “RBAC syntax”ArgoCD uses a Casbin-based policy format:
# Permission: p, subject, resource, action, object, effectp, role:developer, applications, get, */*, allow
# Group assignment: g, user/group, roleg, alice, role:developerResources
Section titled “Resources”| Resource | Description |
|---|---|
applications | ArgoCD applications |
clusters | Kubernetes clusters |
repositories | Git repositories |
projects | ArgoCD projects |
accounts | ArgoCD accounts |
certificates | TLS certificates |
gpgkeys | GPG signing keys |
logs | Application logs |
exec | Pod exec access |
Actions
Section titled “Actions”| Action | Description |
|---|---|
get | View/read access |
create | Create new resources |
update | Modify existing resources |
delete | Remove resources |
sync | Sync applications |
override | Override sync settings |
action | Run resource actions |
* | All actions |
Object format
Section titled “Object format”Objects use the format project/application:
*/— All projects, all applicationsdefault/*— All applications in default projectproduction/frontend— Specific application*/frontend-*— Pattern matching
Common roles
Section titled “Common roles”Administrator
Section titled “Administrator”Full access to everything:
p, role:admin, *, *, */*, allowg, admin-team, role:adminDeveloper
Section titled “Developer”Can view and sync applications:
p, role:developer, applications, get, */*, allowp, role:developer, applications, sync, */*, allowp, role:developer, logs, get, */*, allowg, dev-team, role:developerViewer
Section titled “Viewer”Read-only access:
p, role:viewer, applications, get, */*, allowp, role:viewer, clusters, get, *, allowp, role:viewer, repositories, get, *, allowp, role:viewer, projects, get, *, allowg, stakeholders, role:viewerProject-scoped developer
Section titled “Project-scoped developer”Access limited to specific project:
p, role:frontend-dev, applications, get, frontend/*, allowp, role:frontend-dev, applications, sync, frontend/*, allowp, role:frontend-dev, logs, get, frontend/*, allowg, frontend-team, role:frontend-devConfiguring RBAC
Section titled “Configuring RBAC”kubectl patch configmap argocd-rbac-cm -n argocd --type merge -p 'data: policy.csv: | p, role:developer, applications, get, */*, allow p, role:developer, applications, sync, */*, allow g, developers, role:developer policy.default: role:readonly'# values.yaml for ArgoCD Helm chartconfigs: rbac: policy.csv: | p, role:developer, applications, get, */*, allow p, role:developer, applications, sync, */*, allow g, developers, role:developer policy.default: role:readonlyDefault policy
Section titled “Default policy”The policy.default setting determines permissions for authenticated users without explicit roles:
# Read-only access for everyonepolicy.default: role:readonly
# No access by default (most restrictive)policy.default: ""Scopes
Section titled “Scopes”By default, ArgoCD checks the groups claim from OIDC tokens. Configure additional scopes:
# argocd-rbac-cmdata: scopes: "[groups, email]"Testing RBAC
Section titled “Testing RBAC”Use the ArgoCD CLI to test permissions:
# Can user sync applications?argocd account can-i sync applications '*' --as alice
# Can group deploy to production?argocd account can-i sync applications 'production/*' --as-group developersTroubleshooting
Section titled “Troubleshooting””Permission denied” errors
Section titled “”Permission denied” errors”- Check user’s group membership in IdP
- Verify RBAC policy syntax
- Check ArgoCD server logs for policy evaluation
kubectl logs -n argocd deployment/argocd-server | grep -i rbacChanges not taking effect
Section titled “Changes not taking effect”ArgoCD caches RBAC policies. Restart the server to force reload:
kubectl rollout restart deployment argocd-server -n argocd