Skip to main content

More Info:

Restrict assignment of powerful Kubernetes RBAC roles such as cluster-admin, which confers super-user privileges across all namespaces. Grant privileged roles only to users who genuinely require them.

Risk Level

Medium

Address

Security

Compliance Standards

  • CIS OKE

Triage and Remediation

Remediation

Manual Steps

  1. List all subjects bound to cluster-admin and other powerful roles
    • Run on: any machine with kubectl access to the cluster
    • Command:
    • Also identify other highly privileged bindings (if you use them by convention):
  2. Correlate Kubernetes subjects with OCI identities and roles
    • In OCI Console, for each User, Group, or ServiceAccount from step 1:
      • Locate the corresponding OCI User/Group/Dynamic Group.
      • Review IAM policies granting them access to the cluster (e.g., OKE access policies, manage cluster-family, manage cluster-node-pools, etc.).
    • Using OCI CLI (run on any machine with OCI CLI configured) to list policies for a compartment:
  3. Decide who truly requires cluster-wide super-user privileges
    • For each subject bound to cluster-admin or an equivalent highly privileged role, answer:
      • Is this a break-glass / platform admin account used only for cluster operations?
      • Is this an application/team account that could be scoped to specific namespaces or to less-privileged roles?
      • Is this an OCI tenancy administrator (who already has sufficient privileges without cluster-admin)?
    • Flag any subject that is:
      • Non-operational (e.g., developer, CI/CD, app service account) and
      • Not strictly required to manage the whole cluster.
  4. Replace unnecessary cluster-admin bindings with narrower roles
    • Design or select existing least-privilege ClusterRole/Role (via your IaC/cluster platform templates) that matches the actual operational need (e.g., namespace-scoped admin, read-only, or limited maintenance role).
    • Update your cloud/IaC definitions (Terraform/Resource Manager/other) so that:
      • Only a minimal set of platform operators retain cluster-admin.
      • Other users/groups/service accounts are granted scoped roles instead.
    • Apply the IaC changes through your standard deployment pipeline so that RBAC is reconciled from code rather than ad hoc changes.
  5. Remove or tighten existing over-privileged bindings
    • Once replacement access is defined in cloud/IaC and deployed, remove or edit the excessive bindings (run on any machine with kubectl access):
    • For bindings that must remain, ensure their subjects are restricted to:
      • A very small, auditable set of admin accounts.
      • No generic/shared or application identities.
  6. Verify the final state and document the justification
    • Re-run evidence commands (run on any machine with kubectl access):
    • Confirm:
      • Only explicitly justified admin identities retain cluster-admin.
      • All other users/groups/service accounts are mapped (via OCI IAM + RBAC) to least-privilege roles.
    • Record in your security documentation which identities have cluster-admin, why they need it, and who approved it.
kubectl cannot fix this finding because the over-privileged access is granted through Oracle Cloud Infrastructure IAM / Container Engine for Kubernetes (managed control plane configuration), not via in-cluster objects. Use the cloud console, OCI CLI, or IaC to review and adjust which identities are mapped to cluster-admin, following the guidance in the Manual Steps section.
What output indicates a problem
  • Any human user or broad group listed as a subject of:
    • cluster-admin via ClusterRoleBinding or RoleBinding in any namespace.
    • Custom/high-privilege ClusterRole (wildcard * verbs, impersonate, or full control of roles/clusterroles).
  • RoleBindings to cluster-admin or such high-privilege ClusterRoles in regular (non-kube-system / non-control-plane) namespaces.