Description
Add a k8s.authCanI operation to check RBAC permissions for users and service accounts. This is essential for verifying RBAC configuration in tasks like create-simple-rbac, fix-rbac-wrong-resource, and setup-dev-cluster.
Current bash tasks use patterns like:
kubectl auth can-i get pods --as=system:serviceaccount:ns:sa -n namespace
kubectl auth can-i create pods --as=user -n namespace
kubectl auth can-i list pods --as=user -A (cluster-wide check)
Requirements
- Support checking permissions for a specific verb and resource
- Support impersonation via
--as (user or service account)
- Support namespace-scoped and cluster-wide checks
- Support an
expect block for inline verification of allowed/denied
Example Usage
- k8s.authCanI:
verb: get
resource: pods
as: system:serviceaccount:create-simple-rbac:reader-sa
namespace: create-simple-rbac
expect:
allowed: true
- k8s.authCanI:
verb: delete
resource: pods
as: system:serviceaccount:create-simple-rbac:reader-sa
namespace: create-simple-rbac
expect:
allowed: false
Acceptance Criteria
Description
Add a
k8s.authCanIoperation to check RBAC permissions for users and service accounts. This is essential for verifying RBAC configuration in tasks like create-simple-rbac, fix-rbac-wrong-resource, and setup-dev-cluster.Current bash tasks use patterns like:
kubectl auth can-i get pods --as=system:serviceaccount:ns:sa -n namespacekubectl auth can-i create pods --as=user -n namespacekubectl auth can-i list pods --as=user -A(cluster-wide check)Requirements
--as(user or service account)expectblock for inline verification of allowed/deniedExample Usage
Acceptance Criteria
alice)system:serviceaccount:ns:sa-name)expect.allowedfor inline verification