AmazonEKSLocalOutpostServiceRolePolicy

Last Modified

Mar 12, 2026

March 12, 2026 at 09:27 PM UTC

Version

v3

Total Versions

3

Created

Jun 26, 2025

Actions

39

Risk

Medium

The same capabilities in a scoped form, resource policy writes, reads across all data, or full access to a whole service. Read from this policy document alone: trust policies, boundaries and SCPs in your account still decide what actually succeeds. How this is assessed

  • Medium

    Can launch resources that run as a more privileged role

    Grants the actions of 1 documented escalation path, but only on named resources or under a condition. Review that scope before trusting it.

    • ec2-001iam:PassRole + ec2:RunInstancesscoped
      • iam:PassRole: condition iam:PassedToService

    Use with caution: Check which roles, users or policies fall inside the scope shown above. Within it the escalation works as documented, so keep privileged principals out of it.

  • Medium

    Can take over existing resources that run as another role

    Grants the actions of 1 documented escalation path, but only on named resources or under a condition. Review that scope before trusting it.

    • ssm-001ssm:StartSessionscoped
      • ssm:StartSession: condition ssm:resourceTag/eks-local:controlplane-name, on arn:aws:ec2:*:*:instance/*

    Use with caution: Check which roles, users or policies fall inside the scope shown above. Within it the escalation works as documented, so keep privileged principals out of it.

IAM Access Analyzer (8)

  • Suggestion / EQUIVALENT_TO_NULL_FALSE

    We recommend replacing the key aws:RequestTag/eks-local:controlplane-name in the condition block of StringLike with {aws:RequestTag/eks-local:controlplane-name: false} to ensure better enforcement of the condition. AWS docs

  • Suggestion / EQUIVALENT_TO_NULL_FALSE

    We recommend replacing the key aws:ResourceTag/eks-local:controlplane-name in the condition block of StringLike with {aws:ResourceTag/eks-local:controlplane-name: false} to ensure better enforcement of the condition. AWS docs

  • Suggestion / EQUIVALENT_TO_NULL_FALSE

    We recommend replacing the key aws:RequestTag/eks-local:controlplane-name in the condition block of StringLike with {aws:RequestTag/eks-local:controlplane-name: false} to ensure better enforcement of the condition. AWS docs

  • Suggestion / EQUIVALENT_TO_NULL_FALSE

    We recommend replacing the key aws:RequestTag/eks-local:controlplane-name in the condition block of StringLike with {aws:RequestTag/eks-local:controlplane-name: false} to ensure better enforcement of the condition. AWS docs

  • Suggestion / EQUIVALENT_TO_NULL_FALSE

    We recommend replacing the key aws:ResourceTag/eks-local:controlplane-name in the condition block of StringLike with {aws:ResourceTag/eks-local:controlplane-name: false} to ensure better enforcement of the condition. AWS docs

  • Suggestion / EQUIVALENT_TO_NULL_FALSE

    We recommend replacing the key aws:RequestTag/eks-local:controlplane-name in the condition block of StringLike with {aws:RequestTag/eks-local:controlplane-name: false} to ensure better enforcement of the condition. AWS docs

  • Suggestion / EQUIVALENT_TO_NULL_FALSE

    We recommend replacing the key aws:ResourceTag/eks-local:controlplane-name in the condition block of StringLike with {aws:ResourceTag/eks-local:controlplane-name: false} to ensure better enforcement of the condition. AWS docs

  • Suggestion / EQUIVALENT_TO_NULL_FALSE

    We recommend replacing the key ssm:resourceTag/eks-local:controlplane-name in the condition block of StringLike with {ssm:resourceTag/eks-local:controlplane-name: false} to ensure better enforcement of the condition. AWS docs

Policy Document

View on GitHub
{
  "PolicyVersion": {
    "Document": {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "ec2:DescribeVpcs",
            "ec2:DescribeSubnets",
            "ec2:DescribeRouteTables",
            "ec2:DescribeAddresses",
            "ec2:DescribeImages",
            "ec2:DescribeInstances",
            "ec2:DescribeNetworkInterfaces",
            "ec2:DescribeNetworkInterfaceAttribute",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeVpcAttribute",
            "ec2:DescribePlacementGroups"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "ec2:CreateNetworkInterface"
          ],
          "Resource": "arn:aws:ec2:*:*:network-interface/*",
          "Condition": {
            "StringLike": {
              "aws:RequestTag/eks-local:controlplane-name": "*"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "ec2:CreateNetworkInterface"
          ],
          "Resource": [
            "arn:aws:ec2:*:*:security-group/*",
            "arn:aws:ec2:*:*:subnet/*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "ec2:ModifyNetworkInterfaceAttribute"
          ],
          "Resource": [
            "arn:aws:ec2:*:*:instance/*",
            "arn:aws:ec2:*:*:security-group/*",
            "arn:aws:ec2:*:*:network-interface/*"
          ],
          "Condition": {
            "StringLike": {
              "aws:ResourceTag/eks-local:controlplane-name": "*"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "ec2:CreateSecurityGroup"
          ],
          "Resource": "arn:aws:ec2:*:*:security-group/*",
          "Condition": {
            "StringLike": {
              "aws:RequestTag/eks-local:controlplane-name": "*"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "ec2:CreateSecurityGroup"
          ],
          "Resource": "arn:aws:ec2:*:*:vpc/*"
        },
        {
          "Effect": "Allow",
          "Action": "ec2:RunInstances",
          "Resource": "arn:aws:ec2:*:*:instance/*",
          "Condition": {
            "StringLike": {
              "aws:RequestTag/eks-local:controlplane-name": "*"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": "ec2:RunInstances",
          "Resource": [
            "arn:aws:ec2:*:*:volume/*",
            "arn:aws:ec2:*:*:image/*",
            "arn:aws:ec2:*:*:launch-template/*",
            "arn:aws:ec2:*:*:network-interface/*",
            "arn:aws:ec2:*:*:security-group/*",
            "arn:aws:ec2:*:*:subnet/*",
            "arn:aws:ec2:*:*:placement-group/*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "ec2:AuthorizeSecurityGroupIngress",
            "ec2:RevokeSecurityGroupIngress",
            "ec2:DeleteNetworkInterface",
            "ec2:DeleteSecurityGroup",
            "ec2:TerminateInstances",
            "ec2:GetConsoleOutput"
          ],
          "Resource": "*",
          "Condition": {
            "StringLike": {
              "aws:ResourceTag/eks-local:controlplane-name": "*"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": "ec2:CreateTags",
          "Resource": [
            "arn:aws:ec2:*:*:security-group/*",
            "arn:aws:ec2:*:*:network-interface/*",
            "arn:aws:ec2:*:*:instance/*"
          ],
          "Condition": {
            "ForAnyValue:StringLike": {
              "aws:TagKeys": [
                "kubernetes.io/cluster/*",
                "eks*"
              ]
            },
            "StringEquals": {
              "ec2:CreateAction": [
                "CreateNetworkInterface",
                "CreateSecurityGroup",
                "RunInstances"
              ]
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "secretsmanager:TagResource"
          ],
          "Resource": "arn:aws:secretsmanager:*:*:secret:eks-local.cluster.x-k8s.io/*",
          "Condition": {
            "ForAnyValue:StringLike": {
              "aws:TagKeys": [
                "kubernetes.io/cluster/*",
                "eks*"
              ]
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "secretsmanager:CreateSecret"
          ],
          "Resource": "arn:aws:secretsmanager:*:*:secret:eks-local.cluster.x-k8s.io/*",
          "Condition": {
            "StringLike": {
              "aws:RequestTag/eks-local:controlplane-name": "*"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": "secretsmanager:DeleteSecret",
          "Resource": "arn:aws:secretsmanager:*:*:secret:eks-local.cluster.x-k8s.io/*",
          "Condition": {
            "StringLike": {
              "aws:ResourceTag/eks-local:controlplane-name": "*"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": "secretsmanager:DescribeSecret",
          "Resource": "arn:aws:secretsmanager:*:*:secret:eks-local.cluster.x-k8s.io/*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "iam:PassRole"
          ],
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "iam:PassedToService": "ec2.amazonaws.com"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "iam:GetInstanceProfile",
            "iam:DeleteInstanceProfile",
            "iam:RemoveRoleFromInstanceProfile"
          ],
          "Resource": "arn:aws:iam::*:instance-profile/eks-local-*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "ssm:StartSession"
          ],
          "Resource": "arn:aws:ec2:*:*:instance/*",
          "Condition": {
            "StringLike": {
              "ssm:resourceTag/eks-local:controlplane-name": "*"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "ssm:StartSession"
          ],
          "Resource": "arn:aws:ssm:*::document/AmazonEKS-ControlPlaneInstanceProxy"
        },
        {
          "Effect": "Allow",
          "Action": [
            "ssmmessages:OpenDataChannel"
          ],
          "Resource": "arn:aws:ssm:*:*:session/*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "ssm:ResumeSession",
            "ssm:TerminateSession"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "outposts:GetOutpost"
          ],
          "Resource": "*"
        }
      ]
    },
    "VersionId": "v3",
    "IsDefaultVersion": true,
    "CreateDate": "2025-06-26T18:22:07+00:00"
  }
}

Version History (6 recorded)

Raw history

AmazonEKSLocalOutpostServiceRolePolicy - Policy Version v3

No recorded action delta - this version predates the change index. View the raw diff.

Mar 12, 2026

845fa53

Update detected

No recorded action delta - this version predates the change index. View the raw diff.

Jun 26, 2025

e0a5ddf

Update detected

No recorded action delta - this version predates the change index. View the raw diff.

Sep 18, 2024

aafbae9

Update detected

No recorded action delta - this version predates the change index. View the raw diff.

May 13, 2024

1b36617

Update detected

No recorded action delta - this version predates the change index. View the raw diff.

Oct 24, 2022

83d8e9d

Update detected

No recorded action delta - this version predates the change index. View the raw diff.

Aug 23, 2022

94491d4