areas/devops/kubernetes/skills/rbac-design/SKILL.md
Design minimal-privilege RBAC for workloads, operators, and human access in multi-tenant clusters.
npx skillsauth add sawrus/agent-guides rbac-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Expertise: Kubernetes RBAC — service accounts, Roles, ClusterRoles, namespace isolation, human access patterns.
When onboarding a new service, setting up CI/CD cluster access, auditing permissions, or debugging "forbidden" API errors.
ClusterRole → cluster-scoped permissions (nodes, PVs, namespaces)
Role → namespace-scoped permissions (pods, services, configmaps)
ClusterRoleBinding → binds ClusterRole to subject cluster-wide
RoleBinding → binds Role OR ClusterRole to subject in one namespace
# 1. Dedicated ServiceAccount per workload
apiVersion: v1
kind: ServiceAccount
metadata:
name: order-service
namespace: production
annotations:
# For cloud IAM federation (AWS IRSA, GCP Workload Identity)
eks.amazonaws.com/role-arn: arn:aws:iam::123456789:role/order-service-prod
automountServiceAccountToken: false # disable unless needed
---
# 2. Role — minimal permissions
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: order-service
namespace: production
rules:
- apiGroups: [""]
resources: ["configmaps"]
verbs: ["get", "list", "watch"]
resourceNames: ["order-service-config"] # scope to specific resource
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get"]
resourceNames: ["order-service-tls"]
---
# 3. RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: order-service
namespace: production
subjects:
- kind: ServiceAccount
name: order-service
namespace: production
roleRef:
kind: Role
apiGroupv: rbac.authorization.k8s.io
name: order-service
# Dev read-only access to staging namespace
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: devs-view-staging
namespace: staging
subjects:
- kind: Group
name: developers # from OIDC provider (Dex, Okta, etc.)
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: view # built-in read-only ClusterRole
apiGroup: rbac.authorization.k8s.io
| ClusterRole | Access level |
|:---|:---|
| view | Read-only all namespaced resources |
| edit | Read/write most namespaced resources; no RBAC |
| admin | Full namespace access including RBAC |
| cluster-admin | Full cluster access — never bind to apps |
# CI system gets minimal cluster access
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: ci-deployer
rules:
- apiGroups: ["apps"]
resources: ["deployments", "statefulsets"]
verbs: ["get", "list", "patch", "update"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list"]
# NOT: create/delete pods, access secrets, modify RBAC
# What can a ServiceAccount do?
kubectl auth can-i --list \
--as=system:serviceaccount:production:order-service \
-n production
# Who can do X in namespace Y?
kubectl who-can get secrets -n production # requires kubectl-who-can plugin
# Find all RoleBindings in a namespace
kubectl get rolebindings,clusterrolebindings -n production -o wide
# Check if a specific action is allowed
kubectl auth can-i delete pods -n production \
--as=system:serviceaccount:production:order-service
| Mistake | Risk | Fix |
|:---|:---|:---|
| Using default ServiceAccount | All pods in namespace share permissions | Dedicate one SA per workload |
| verbs: ["*"] | Full resource control | Enumerate exact verbs needed |
| resources: ["*"] | Access to all resources | List explicitly |
| Binding cluster-admin to CI | Breach = full cluster takeover | Use scoped ci-deployer ClusterRole |
| automountServiceAccountToken: true (default) | Token injected into all pods | Set to false unless needed |
testing
QA Expert for writing E2E tests, test scenarios, test plans, and ensuring test coverage quality.
development
Expert UI/UX design intelligence for creating distinctive, high-craft, and mobile-first interfaces. Focuses on premium aesthetics, touch-first ergonomics, and Flutter performance.
development
Code Review Expert for static analysis, security auditing, architecture review, and ensuring code quality standards.
development
Babysit a GitHub pull request after creation by continuously polling review comments, CI checks/workflow runs, and mergeability state until the PR is merged/closed or user help is required. Diagnose failures, retry likely flaky failures up to 3 times, auto-fix/push branch-related issues when appropriate, and keep watching open PRs so fresh review feedback is surfaced promptly. Use when the user asks Codex to monitor a PR, watch CI, handle review comments, or keep an eye on failures and feedback on an open PR.