ROSAInstallerPolicy

Last Modified

Mar 12, 2026

March 12, 2026 at 09:28 PM UTC

Version

v10

Total Versions

6

Created

Feb 12, 2026

Actions

57

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, on arn:*:iam::*:role/*-ROSA-Worker-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": [
        {
          "Sid": "ReadPermissions",
          "Effect": "Allow",
          "Action": [
            "ec2:DescribeAvailabilityZones",
            "ec2:DescribeInternetGateways",
            "ec2:DescribeInstances",
            "ec2:DescribeInstanceTypes",
            "ec2:DescribeRegions",
            "ec2:DescribeReservedInstancesOfferings",
            "ec2:DescribeRouteTables",
            "ec2:DescribeSecurityGroups",
            "ec2:DescribeSecurityGroupRules",
            "ec2:DescribeSubnets",
            "ec2:DescribeVpcAttribute",
            "ec2:DescribeVpcs",
            "ec2:DescribeInstanceTypeOfferings",
            "ec2:DescribeCapacityReservations",
            "elasticloadbalancing:DescribeAccountLimits",
            "elasticloadbalancing:DescribeLoadBalancers",
            "iam:GetOpenIDConnectProvider",
            "iam:GetRole",
            "route53:GetHostedZone",
            "route53:ListHostedZones",
            "route53:ListHostedZonesByName",
            "route53:ListResourceRecordSets",
            "route53:GetAccountLimit",
            "servicequotas:GetServiceQuota"
          ],
          "Resource": "*"
        },
        {
          "Sid": "PassRoleToEC2",
          "Action": [
            "iam:PassRole"
          ],
          "Resource": [
            "arn:*:iam::*:role/*-ROSA-Worker-Role"
          ],
          "Effect": "Allow",
          "Condition": {
            "StringEquals": {
              "iam:PassedToService": [
                "ec2.amazonaws.com"
              ]
            }
          }
        },
        {
          "Sid": "ManageInstanceProfiles",
          "Effect": "Allow",
          "Action": [
            "iam:AddRoleToInstanceProfile",
            "iam:RemoveRoleFromInstanceProfile",
            "iam:DeleteInstanceProfile",
            "iam:GetInstanceProfile"
          ],
          "Resource": [
            "arn:aws:iam::*:instance-profile/rosa-service-managed-*"
          ]
        },
        {
          "Sid": "CreateInstanceProfiles",
          "Effect": "Allow",
          "Action": [
            "iam:CreateInstanceProfile",
            "iam:TagInstanceProfile"
          ],
          "Resource": [
            "arn:aws:iam::*:instance-profile/rosa-service-managed-*"
          ],
          "Condition": {
            "StringEquals": {
              "aws:RequestTag/red-hat-managed": "true"
            }
          }
        },
        {
          "Sid": "GetSecretValue",
          "Effect": "Allow",
          "Action": [
            "secretsmanager:GetSecretValue"
          ],
          "Resource": [
            "*"
          ],
          "Condition": {
            "StringEquals": {
              "aws:ResourceTag/red-hat-managed": "true"
            }
          }
        },
        {
          "Sid": "Route53ManageRecords",
          "Effect": "Allow",
          "Action": [
            "route53:ChangeResourceRecordSets"
          ],
          "Resource": "*",
          "Condition": {
            "ForAllValues:StringLike": {
              "route53:ChangeResourceRecordSetsNormalizedRecordNames": [
                "*.openshiftapps.com",
                "*.devshift.org",
                "*.hypershift.local",
                "*.openshiftusgov.com",
                "*.devshiftusgov.com"
              ]
            }
          }
        },
        {
          "Sid": "Route53Manage",
          "Effect": "Allow",
          "Action": [
            "route53:ChangeTagsForResource",
            "route53:CreateHostedZone",
            "route53:DeleteHostedZone"
          ],
          "Resource": "*"
        },
        {
          "Sid": "CreateTags",
          "Effect": "Allow",
          "Action": [
            "ec2:CreateTags"
          ],
          "Resource": [
            "arn:aws:ec2:*:*:instance/*",
            "arn:aws:ec2:*:*:volume/*"
          ],
          "Condition": {
            "StringEquals": {
              "ec2:CreateAction": [
                "RunInstances"
              ]
            }
          }
        },
        {
          "Sid": "RunInstancesNoCondition",
          "Effect": "Allow",
          "Action": "ec2:RunInstances",
          "Resource": [
            "arn:aws:ec2:*:*:subnet/*",
            "arn:aws:ec2:*:*:network-interface/*",
            "arn:aws:ec2:*:*:security-group/*",
            "arn:aws:ec2:*:*:snapshot/*"
          ]
        },
        {
          "Sid": "RunInstancesRestrictedRequestTag",
          "Effect": "Allow",
          "Action": "ec2:RunInstances",
          "Resource": [
            "arn:aws:ec2:*:*:instance/*",
            "arn:aws:ec2:*:*:volume/*"
          ],
          "Condition": {
            "StringEquals": {
              "aws:RequestTag/red-hat-managed": "true"
            }
          }
        },
        {
          "Sid": "RunInstancesRedHatOwnedAMIs",
          "Effect": "Allow",
          "Action": [
            "ec2:RunInstances"
          ],
          "Resource": [
            "arn:aws:ec2:*:*:image/*"
          ],
          "Condition": {
            "StringEquals": {
              "ec2:Owner": [
                "531415883065",
                "251351625822",
                "210686502322"
              ]
            }
          }
        },
        {
          "Sid": "ManageInstancesRestrictedResourceTag",
          "Effect": "Allow",
          "Action": [
            "ec2:TerminateInstances",
            "ec2:GetConsoleOutput"
          ],
          "Resource": "arn:aws:ec2:*:*:instance/*",
          "Condition": {
            "StringEquals": {
              "aws:ResourceTag/red-hat-managed": "true"
            }
          }
        },
        {
          "Sid": "CreateGrantRestrictedResourceTag",
          "Effect": "Allow",
          "Action": [
            "kms:CreateGrant"
          ],
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "aws:ResourceTag/red-hat": "true"
            },
            "StringLike": {
              "kms:ViaService": "ec2.*.amazonaws.com"
            },
            "Bool": {
              "kms:GrantIsForAWSResource": true
            }
          }
        },
        {
          "Sid": "ManagedKMSRestrictedResourceTag",
          "Effect": "Allow",
          "Action": [
            "kms:DescribeKey",
            "kms:GenerateDataKeyWithoutPlaintext"
          ],
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "aws:ResourceTag/red-hat": "true"
            }
          }
        },
        {
          "Sid": "CreateSecurityGroups",
          "Effect": "Allow",
          "Action": [
            "ec2:CreateSecurityGroup"
          ],
          "Resource": [
            "arn:aws:ec2:*:*:security-group*/*"
          ],
          "Condition": {
            "StringEquals": {
              "aws:RequestTag/red-hat-managed": "true"
            }
          }
        },
        {
          "Sid": "DeleteSecurityGroup",
          "Effect": "Allow",
          "Action": [
            "ec2:DeleteSecurityGroup"
          ],
          "Resource": [
            "arn:aws:ec2:*:*:security-group*/*"
          ],
          "Condition": {
            "StringEquals": {
              "aws:ResourceTag/red-hat-managed": "true"
            }
          }
        },
        {
          "Sid": "SecurityGroupIngressEgress",
          "Effect": "Allow",
          "Action": [
            "ec2:AuthorizeSecurityGroupIngress",
            "ec2:AuthorizeSecurityGroupEgress",
            "ec2:RevokeSecurityGroupIngress",
            "ec2:RevokeSecurityGroupEgress"
          ],
          "Resource": [
            "arn:aws:ec2:*:*:security-group*/*"
          ],
          "Condition": {
            "StringEquals": {
              "aws:ResourceTag/red-hat-managed": "true"
            }
          }
        },
        {
          "Sid": "CreateSecurityGroupsVPCNoCondition",
          "Effect": "Allow",
          "Action": [
            "ec2:CreateSecurityGroup"
          ],
          "Resource": [
            "arn:aws:ec2:*:*:vpc/*"
          ]
        },
        {
          "Sid": "CreateTagsRestrictedActions",
          "Effect": "Allow",
          "Action": [
            "ec2:CreateTags"
          ],
          "Resource": [
            "arn:aws:ec2:*:*:security-group/*"
          ],
          "Condition": {
            "StringEquals": {
              "ec2:CreateAction": [
                "CreateSecurityGroup"
              ]
            }
          }
        },
        {
          "Sid": "CreateTagsK8sSubnet",
          "Effect": "Allow",
          "Action": [
            "ec2:CreateTags"
          ],
          "Resource": [
            "arn:aws:ec2:*:*:subnet/*"
          ],
          "Condition": {
            "ForAllValues:StringLike": {
              "aws:TagKeys": [
                "kubernetes.io/cluster/*"
              ]
            }
          }
        },
        {
          "Sid": "DeleteTagsK8sSubnet",
          "Effect": "Allow",
          "Action": [
            "ec2:DeleteTags"
          ],
          "Resource": [
            "arn:aws:ec2:*:*:subnet/*"
          ],
          "Condition": {
            "Null": {
              "aws:TagKeys": "false"
            },
            "ForAllValues:StringLike": {
              "aws:TagKeys": [
                "kubernetes.io/cluster/*"
              ]
            }
          }
        },
        {
          "Sid": "ListPoliciesAttachedToRoles",
          "Effect": "Allow",
          "Action": [
            "iam:ListAttachedRolePolicies",
            "iam:ListRolePolicies"
          ],
          "Resource": "arn:aws:iam::*:role/*",
          "Condition": {
            "StringEquals": {
              "aws:ResourceTag/red-hat-managed": "true"
            }
          }
        }
      ]
    },
    "VersionId": "v10",
    "IsDefaultVersion": true,
    "CreateDate": "2026-02-12T18:00:41+00:00"
  }
}

Version History (11 recorded)

Raw history
v10updated

scope changed, no action added or removed

588245d

ROSAInstallerPolicy - Policy Version v10

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

Feb 12, 2026

84c0c38

ROSAInstallerPolicy - Policy Version v8

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

Feb 12, 2026

f9f5d2d

ROSAInstallerPolicy - Policy Version v6

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

Aug 11, 2025

35f840d

Update detected

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

Apr 11, 2025

d532fd6

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 10, 2024

f145cef

Update detected

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

Jan 26, 2024

c8ff896

Update detected

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

Jan 26, 2024

96d8820

Update detected

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

Jun 6, 2023

2a9b4ae