AWSControlTowerServiceRolePolicy

Last Modified

Sep 10, 2026

September 10, 2026 at 08:03 PM UTC

Version

v22

Total Versions

21

Created

Sep 10, 2026

Actions

85

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 take over other users or roles

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

    • sts-001sts:AssumeRolescoped
      • sts:AssumeRole: on arn:aws:iam::*:role/AWSControlTowerExecution, arn:aws:iam::*:role/AWSControlTowerBlueprintAccess

    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 launch resources that run as a more privileged role

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

    • cloudformation-001iam:PassRole + cloudformation:CreateStackscoped
      • iam:PassRole: on arn:aws:iam::*:role/service-role/AWSControlTowerStackSetRole, arn:aws:iam::*:role/service-role/AWSControlTowerCloudTrailRole, arn:aws:iam::*:role/service-role/AWSControlTowerConfigAggregatorRoleForOrganizations
      • cloudformation:CreateStack: on arn:aws:cloudformation:*:*:type/resource/AWS-IAM-Role
    • cloudformation-003iam:PassRole + cloudformation:CreateStackSet + cloudformation:CreateStackInstancesscoped
      • iam:PassRole: on arn:aws:iam::*:role/service-role/AWSControlTowerStackSetRole, arn:aws:iam::*:role/service-role/AWSControlTowerCloudTrailRole, arn:aws:iam::*:role/service-role/AWSControlTowerConfigAggregatorRoleForOrganizations
      • cloudformation:CreateStackSet: on arn:aws:cloudformation:*:*:type/resource/AWS-IAM-Role
      • cloudformation:CreateStackInstances: on arn:aws:cloudformation:*:*:type/resource/AWS-IAM-Role
    • cloudformation-004iam:PassRole + cloudformation:UpdateStackSetscoped
      • iam:PassRole: on arn:aws:iam::*:role/service-role/AWSControlTowerStackSetRole, arn:aws:iam::*:role/service-role/AWSControlTowerCloudTrailRole, arn:aws:iam::*:role/service-role/AWSControlTowerConfigAggregatorRoleForOrganizations
      • cloudformation:UpdateStackSet: on arn:aws:cloudformation:*:*:type/resource/AWS-IAM-Role

    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.

    • cloudformation-002cloudformation:UpdateStackscoped
      • cloudformation:UpdateStack: on arn:aws:cloudformation:*:*:type/resource/AWS-IAM-Role

    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.

Policy Document

View on GitHub
{
  "PolicyVersion": {
    "Document": {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "cloudformation:CreateStack",
            "cloudformation:CreateStackInstances",
            "cloudformation:CreateStackSet",
            "cloudformation:DeleteStack",
            "cloudformation:DeleteStackInstances",
            "cloudformation:DeleteStackSet",
            "cloudformation:DescribeStackInstance",
            "cloudformation:DescribeStacks",
            "cloudformation:DescribeStackSet",
            "cloudformation:DescribeStackSetOperation",
            "cloudformation:ListStackInstances",
            "cloudformation:UpdateStack",
            "cloudformation:UpdateStackInstances",
            "cloudformation:UpdateStackSet"
          ],
          "Resource": [
            "arn:aws:cloudformation:*:*:type/resource/AWS-IAM-Role"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "cloudformation:CreateStack",
            "cloudformation:CreateStackInstances",
            "cloudformation:CreateStackSet",
            "cloudformation:DeleteStack",
            "cloudformation:DeleteStackInstances",
            "cloudformation:DeleteStackSet",
            "cloudformation:DescribeStackInstance",
            "cloudformation:DescribeStacks",
            "cloudformation:DescribeStackSet",
            "cloudformation:DescribeStackSetOperation",
            "cloudformation:GetTemplate",
            "cloudformation:ListStackInstances",
            "cloudformation:UpdateStack",
            "cloudformation:UpdateStackInstances",
            "cloudformation:UpdateStackSet"
          ],
          "Resource": [
            "arn:aws:cloudformation:*:*:stack/AWSControlTower*/*",
            "arn:aws:cloudformation:*:*:stack/StackSet-AWSControlTower*/*",
            "arn:aws:cloudformation:*:*:stackset/AWSControlTower*:*",
            "arn:aws:cloudformation:*:*:stackset-target/AWSControlTower*/*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "cloudtrail:CreateTrail",
            "cloudtrail:DeleteTrail",
            "cloudtrail:GetTrailStatus",
            "cloudtrail:StartLogging",
            "cloudtrail:StopLogging",
            "cloudtrail:UpdateTrail",
            "cloudtrail:PutEventSelectors",
            "logs:CreateLogStream",
            "logs:PutLogEvents",
            "logs:PutRetentionPolicy"
          ],
          "Resource": [
            "arn:aws:logs:*:*:log-group:aws-controltower/CloudTrailLogs*:*",
            "arn:aws:cloudtrail:*:*:trail/aws-controltower*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "s3:GetObject"
          ],
          "Resource": [
            "arn:aws:s3:::aws-controltower*/*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "sts:AssumeRole"
          ],
          "Resource": [
            "arn:aws:iam::*:role/AWSControlTowerExecution",
            "arn:aws:iam::*:role/AWSControlTowerBlueprintAccess"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "cloudtrail:DescribeTrails",
            "ec2:DescribeAvailabilityZones",
            "iam:ListRoles",
            "logs:CreateLogGroup",
            "logs:DescribeLogGroups",
            "organizations:CreateAccount",
            "organizations:DescribeAccount",
            "organizations:DescribeCreateAccountStatus",
            "organizations:DescribeOrganization",
            "organizations:DescribeOrganizationalUnit",
            "organizations:DescribePolicy",
            "organizations:ListAccounts",
            "organizations:ListAccountsForParent",
            "organizations:ListAWSServiceAccessForOrganization",
            "organizations:ListChildren",
            "organizations:ListOrganizationalUnitsForParent",
            "organizations:ListParents",
            "organizations:ListPoliciesForTarget",
            "organizations:ListTargetsForPolicy",
            "organizations:ListRoots",
            "organizations:MoveAccount",
            "servicecatalog:AssociatePrincipalWithPortfolio"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "iam:GetRole",
            "iam:GetUser",
            "iam:ListAttachedRolePolicies",
            "iam:GetRolePolicy"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "iam:PassRole"
          ],
          "Resource": [
            "arn:aws:iam::*:role/service-role/AWSControlTowerStackSetRole",
            "arn:aws:iam::*:role/service-role/AWSControlTowerCloudTrailRole",
            "arn:aws:iam::*:role/service-role/AWSControlTowerConfigAggregatorRoleForOrganizations"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "config:DeleteConfigurationAggregator",
            "config:PutConfigurationAggregator",
            "config:TagResource"
          ],
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "aws:ResourceTag/aws-control-tower": "managed-by-control-tower"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "organizations:EnableAWSServiceAccess",
            "organizations:DisableAWSServiceAccess"
          ],
          "Resource": "*",
          "Condition": {
            "StringLike": {
              "organizations:ServicePrincipal": [
                "config.amazonaws.com",
                "cloudtrail.amazonaws.com"
              ]
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": "iam:CreateServiceLinkedRole",
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "iam:AWSServiceName": "cloudtrail.amazonaws.com"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "account:EnableRegion",
            "account:ListRegions",
            "account:GetRegionOptStatus"
          ],
          "Resource": "*"
        },
        {
          "Sid": "AllowActionsForCloudFormationHooksIntegration",
          "Effect": "Allow",
          "Action": [
            "cloudformation:SetTypeConfiguration",
            "cloudformation:DeactivateType",
            "cloudformation:ActivateType"
          ],
          "Resource": "arn:aws:cloudformation:*:*:type/hook/AWS-ControlTower*"
        },
        {
          "Sid": "AllowBatchDescribeTypeConfigurationsForHookConfigFetch",
          "Effect": "Allow",
          "Action": "cloudformation:BatchDescribeTypeConfigurations",
          "Resource": "*"
        },
        {
          "Sid": "AllowActionsForCloudFormationStackSetOrganizationsTrustedAccess",
          "Effect": "Allow",
          "Action": [
            "cloudformation:ActivateOrganizationsAccess",
            "cloudformation:DescribeOrganizationsAccess"
          ],
          "Resource": "*"
        },
        {
          "Sid": "CloudFormationTagOnCreate",
          "Effect": "Allow",
          "Action": [
            "cloudformation:TagResource",
            "cloudformation:UntagResource"
          ],
          "Resource": [
            "arn:aws:cloudformation:*:*:type/resource/AWS-IAM-Role",
            "arn:aws:cloudformation:*:*:stack/AWSControlTower*/*",
            "arn:aws:cloudformation:*:*:stack/StackSet-AWSControlTower*/*",
            "arn:aws:cloudformation:*:*:stackset/AWSControlTower*:*",
            "arn:aws:cloudformation:*:*:stackset-target/AWSControlTower*/*"
          ],
          "Condition": {
            "StringEquals": {
              "cloudformation:CreateAction": [
                "CreateStack",
                "UpdateStack"
              ]
            }
          }
        }
      ]
    },
    "VersionId": "v22",
    "IsDefaultVersion": true,
    "CreateDate": "2026-09-10T19:47:08+00:00"
  }
}

Version History (26 recorded)

Raw history
v22updated

2 actions added

01a1050
v21updated

scope changed, no action added or removed

4adb806
v20updated

1 action added

db08132

AWSControlTowerServiceRolePolicy - Policy Version v19

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

Mar 12, 2026

ffa4ff3

AWSControlTowerServiceRolePolicy - Policy Version v19

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

Feb 12, 2026

d87861f

AWSControlTowerServiceRolePolicy - Policy Version v16

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

Feb 12, 2026

ff9ca6e

AWSControlTowerServiceRolePolicy - Policy Version v13

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

Nov 6, 2025

5e6f81f

AWSControlTowerServiceRolePolicy - Policy Version v12

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

Oct 10, 2025

2cba49b

Update detected

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

Jan 13, 2025

f17ece5

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.

Apr 12, 2023

8880ea2

Update detected

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

Oct 31, 2022

7daa91f

Update detected

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

Jun 20, 2022

e25fe31

Update detected

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

Jun 5, 2021

14b7a14

Update detected

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

Nov 10, 2020

48514de

Update detected

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

Aug 10, 2020

e589c1c

Update detected

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

May 12, 2020

6de7058

Update detected

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

Sep 16, 2019

49aa1d0

Update detected

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

Sep 16, 2019

71619cf