aws-eks-access-entry-cluster-admin-config-control

CreateAccessEntry + AssociateAccessPolicy with AmazonEKSClusterAdminPolicy also grants the principal ability to modify cluster access configuration, enabling chaining to downstream cluster-auth-mode control paths.

derived aws emits CanModifyConfiguration

match

A conjunctive graph pattern. Variables (?x) bind node ids; every clause must hold.

{'principal': None} HasPermission {'cluster': None}

where

?principal has EFFECTIVE eks:CreateAccessEntry on ?cluster ?principal has EFFECTIVE eks:AssociateAccessPolicy on ?cluster ?principal can associate policyArn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy with accessScope.type=cluster node_type(?cluster) == KubernetesCluster

emit

source typeIdentity
target typeKubernetesCluster
source?principal
target?cluster
permissionseks:CreateAccessEntry eks:AssociateAccessPolicy
conditionsiam_permission condition_expression scp_or_org_policy
state logicACTIVE if both eks:CreateAccessEntry and eks:AssociateAccessPolicy are present at cluster scope (same gate as CanGrantPermission above). CONDITIONAL(iam_permission) if either action is missing or scoped narrowly. BLOCKED if an SCP or permission boundary denies either action.

Narrative

{principal.name} can modify cluster {cluster.name}'s access configuration via eks:CreateAccessEntry and eks:AssociateAccessPolicy, controlling which IAM principals receive cluster-admin access.

Raw rule rules/derived/aws/eks.yaml

id: aws-eks-access-entry-cluster-admin-config-control
emits: CanModifyConfiguration
description: CreateAccessEntry + AssociateAccessPolicy with AmazonEKSClusterAdminPolicy also grants the
  principal ability to modify cluster access configuration, enabling chaining to downstream cluster-auth-mode
  control paths.
match:
- - principal: null
  - HasPermission
  - cluster: null
where:
- ?principal has EFFECTIVE eks:CreateAccessEntry on ?cluster
- ?principal has EFFECTIVE eks:AssociateAccessPolicy on ?cluster
- ?principal can associate policyArn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy
  with accessScope.type=cluster
- node_type(?cluster) == KubernetesCluster
emit:
  source_type: Identity
  target_type: KubernetesCluster
  source: ?principal
  target: ?cluster
  permissions:
  - eks:CreateAccessEntry
  - eks:AssociateAccessPolicy
  conditions:
  - iam_permission
  - condition_expression
  - scp_or_org_policy
  state_logic: ACTIVE if both eks:CreateAccessEntry and eks:AssociateAccessPolicy are present at cluster
    scope (same gate as CanGrantPermission above). CONDITIONAL(iam_permission) if either action is missing
    or scoped narrowly. BLOCKED if an SCP or permission boundary denies either action.
  confidence: 0.95
  derived_from:
  - eks:CreateAccessEntry effective permission on ?cluster
  - eks:AssociateAccessPolicy effective permission on ?cluster with AmazonEKSClusterAdminPolicy
  false_positive_note: This emit models the configuration control aspect of cluster-admin access (ability
    to manage access entries), separate from the CanGrantPermission to a receiving IAM principal. Both
    are aspects of the same capability.
  narrative: '{principal.name} can modify cluster {cluster.name}''s access configuration via eks:CreateAccessEntry
    and eks:AssociateAccessPolicy, controlling which IAM principals receive cluster-admin access.'
move · open · esc close