Kubetier
T0

CI pipeline to cluster admin

Cluster admin

Nothing in this route starts with a Kubernetes API call. The pipeline held the deploy credential, and a deploy credential that can create RoleBindings can grant itself anything a ClusterRole already defines.

Step 1: compromise the pipeline holding the credential. This step is not governed by RBAC.compromise the pipelineholding the credential1Step 2: bind a high-privilege ClusterRole into the namespace. Tier T1. audit: RequestResponse.2Step 3: read every Secret in the namespace. Tier T1. audit: RequestResponse.read every Secret in thenamespace3Step 4: mint a long-lived token for a privileged ServiceAccount. Tier T1. audit: RequestResponse.4Step 5: add every verb to a ClusterRole already bound to you. Tier T0. audit: RequestResponse.add every verb to aClusterRole already...5CI pipeline (holds the deploy credential)CI pipelineholds the deploycredentialCI ServiceAccount (rolebindings create)CI ServiceAccountrolebindings createRoleBinding to a high-privilege ClusterRoleRoleBinding to ahigh-privilege...Namespace SecretsNamespace SecretsLong-lived token for a privileged SALong-lived token for aprivileged SACluster adminCluster admin
  • RBAC
  • external
  • governed by RBAC
  • not governed by RBAC