DataScientist

Last Modified

Sep 3, 2026

September 3, 2026 at 12:03 AM UTC

Version

v6

Total Versions

9

Created

Sep 2, 2026

Actions

77

Risk

High

An unrestricted escalation path, identity administration, secret reads or the power to switch off security monitoring. Read from this policy document alone: trust policies, boundaries and SCPs in your account still decide what actually succeeds. How this is assessed

  • High

    Can take over existing resources that run as another role

    Grants every action of 4 documented escalation paths on any resource with no condition.

    • lambda-003lambda:UpdateFunctionCodeunrestricted
    • lambda-004lambda:UpdateFunctionCode + lambda:InvokeFunctionunrestricted
    • sagemaker-004sagemaker:CreatePresignedNotebookInstanceUrlunrestricted
    • sagemaker-005sagemaker:CreateNotebookInstanceLifecycleConfig + sagemaker:StopNotebookInstance + sagemaker:UpdateNotebookInstance + sagemaker:StartNotebookInstanceunrestricted

    Use with caution: List the roles attached to the functions, instances, pipelines or notebooks it can modify: the holder effectively has them too.

  • Medium

    Can launch resources that run as a more privileged role

    Grants the actions of 9 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/DataPipelineDefaultRole, arn:aws:iam::*:role/DataPipelineDefaultResourceRole, arn:aws:iam::*:role/EMR_EC2_DefaultRole
      • cloudformation:CreateStack: condition aws:ResourceAccount
    • ec2-001iam:PassRole + ec2:RunInstancesscoped
      • iam:PassRole: on arn:aws:iam::*:role/DataPipelineDefaultRole, arn:aws:iam::*:role/DataPipelineDefaultResourceRole, arn:aws:iam::*:role/EMR_EC2_DefaultRole
    • ec2-003iam:PassRole + ec2:RequestSpotInstancesscoped
      • iam:PassRole: on arn:aws:iam::*:role/DataPipelineDefaultRole, arn:aws:iam::*:role/DataPipelineDefaultResourceRole, arn:aws:iam::*:role/EMR_EC2_DefaultRole
    • emr-001iam:PassRole + elasticmapreduce:RunJobFlowscoped
      • iam:PassRole: on arn:aws:iam::*:role/DataPipelineDefaultRole, arn:aws:iam::*:role/DataPipelineDefaultResourceRole, arn:aws:iam::*:role/EMR_EC2_DefaultRole
    • lambda-001iam:PassRole + lambda:CreateFunction + lambda:InvokeFunctionscoped
      • iam:PassRole: on arn:aws:iam::*:role/DataPipelineDefaultRole, arn:aws:iam::*:role/DataPipelineDefaultResourceRole, arn:aws:iam::*:role/EMR_EC2_DefaultRole
    • lambda-002iam:PassRole + lambda:CreateFunction + lambda:CreateEventSourceMappingscoped
      • iam:PassRole: on arn:aws:iam::*:role/DataPipelineDefaultRole, arn:aws:iam::*:role/DataPipelineDefaultResourceRole, arn:aws:iam::*:role/EMR_EC2_DefaultRole
    • sagemaker-001iam:PassRole + sagemaker:CreateNotebookInstancescoped
      • iam:PassRole: on arn:aws:iam::*:role/DataPipelineDefaultRole, arn:aws:iam::*:role/DataPipelineDefaultResourceRole, arn:aws:iam::*:role/EMR_EC2_DefaultRole
    • sagemaker-002iam:PassRole + sagemaker:CreateTrainingJobscoped
      • iam:PassRole: on arn:aws:iam::*:role/DataPipelineDefaultRole, arn:aws:iam::*:role/DataPipelineDefaultResourceRole, arn:aws:iam::*:role/EMR_EC2_DefaultRole
    1 more path
    • sagemaker-003iam:PassRole + sagemaker:CreateProcessingJobscoped
      • iam:PassRole: on arn:aws:iam::*:role/DataPipelineDefaultRole, arn:aws:iam::*:role/DataPipelineDefaultResourceRole, arn:aws:iam::*:role/EMR_EC2_DefaultRole

    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 read secrets

    Reads Lambda environment variables, where credentials often live, on any resource with no condition.

    lambda:GetFunctionConfiguration (via lambda:Get*)

    Use with caution: Where the holder needs only some secrets, write your own policy scoped to their ARNs or tags, and limit decryption in the KMS key policies.

  • Medium

    Can rewrite resource policies and sharing

    Grants 21 permissions management actions across 6 services (cloudwatch, dynamodb, elasticfilesystem, elasticmapreduce, lambda, redshift) on any resource, enough to share resources outside the account.

    cloudwatch:assumeaccessprofilecloudwatch:createaccessgrantcloudwatch:createaccessprofilecloudwatch:createdomainaccessgrantfororganizationcloudwatch:deleteaccessgrantcloudwatch:deleteaccessprofilecloudwatch:deletedomainaccessgrantfororganizationcloudwatch:updateaccessprofiledynamodb:deleteresourcepolicydynamodb:putresourcepolicyelasticfilesystem:deletefilesystempolicyelasticfilesystem:putfilesystempolicyand 9 more

    Use with caution: Turn on IAM Access Analyzer external access findings, and keep account-level guards like S3 Block Public Access enabled.

  • Medium

    Can read data in every bucket or table

    Reads any object in any S3 bucket; any DynamoDB table. Read-only is not the same as harmless when the data is the asset.

    s3:GetObject (via s3:Get*)dynamodb:Scan (via dynamodb:*)dynamodb:GetItem (via dynamodb:*)

    Use with caution: Read access to data is still access to data. For people who only need to see configuration, ViewOnlyAccess carries none of these signals.

  • Medium

    Full access to 13 services on every resource

    Uses autoscaling:*, cloudwatch:*, dynamodb:*, elasticfilesystem:*, elasticmapreduce:*, es:*, firehose:*, kinesis:* and 5 more with Resource "*" and no condition, so every action AWS adds to those services later is granted too.

    autoscaling:*cloudwatch:*dynamodb:*elasticfilesystem:*elasticmapreduce:*es:*firehose:*kinesis:*machinelearning:*rds:*redshift:*sagemaker:*sdb:*

    Use with caution: The grant grows every time the service does. For long-lived access, prefer a policy that lists the actions you actually need.

IAM Access Analyzer (1)

  • Suggestion / REDUNDANT_ACTION

    The 3 action(s) are redundant because they provide similar permissions. Update the policy to remove the redundant action such as: sns:ListSubscriptions. AWS docs

Policy Document

View on GitHub
{
  "PolicyVersion": {
    "Document": {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Action": [
            "autoscaling:*",
            "cloudwatch:*",
            "cloudformation:DescribeStackEvents",
            "datapipeline:Describe*",
            "datapipeline:ListPipelines",
            "datapipeline:GetPipelineDefinition",
            "datapipeline:QueryObjects",
            "dynamodb:*",
            "ec2:CancelSpotInstanceRequests",
            "ec2:CancelSpotFleetRequests",
            "ec2:CreateTags",
            "ec2:DeleteTags",
            "ec2:Describe*",
            "ec2:ModifyImageAttribute",
            "ec2:ModifyInstanceAttribute",
            "ec2:ModifySpotFleetRequest",
            "ec2:RequestSpotInstances",
            "ec2:RequestSpotFleet",
            "elasticfilesystem:*",
            "elasticmapreduce:*",
            "es:*",
            "firehose:*",
            "fsx:DescribeFileSystems",
            "iam:GetInstanceProfile",
            "iam:GetRole",
            "iam:GetPolicy",
            "iam:GetPolicyVersion",
            "iam:ListRoles",
            "kinesis:*",
            "kms:List*",
            "lambda:Create*",
            "lambda:Delete*",
            "lambda:Get*",
            "lambda:InvokeFunction",
            "lambda:PublishVersion",
            "lambda:Update*",
            "lambda:List*",
            "machinelearning:*",
            "sdb:*",
            "rds:*",
            "sns:ListSubscriptions",
            "sns:ListTopics",
            "logs:DescribeLogStreams",
            "logs:GetLogEvents",
            "redshift:*",
            "s3:CreateBucket",
            "sns:CreateTopic",
            "sns:Get*",
            "sns:List*"
          ],
          "Effect": "Allow",
          "Resource": "*"
        },
        {
          "Sid": "CloudFormationCreateStackSameAccount",
          "Effect": "Allow",
          "Action": [
            "cloudformation:CreateStack"
          ],
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "aws:ResourceAccount": "${aws:PrincipalAccount}"
            }
          }
        },
        {
          "Sid": "CloudFormationTagOnCreate",
          "Effect": "Allow",
          "Action": [
            "cloudformation:TagResource"
          ],
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "cloudformation:CreateAction": [
                "CreateStack"
              ],
              "aws:ResourceAccount": "${aws:PrincipalAccount}"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "s3:Abort*",
            "s3:DeleteObject",
            "s3:Get*",
            "s3:List*",
            "s3:PutAccelerateConfiguration",
            "s3:PutBucketCors",
            "s3:PutBucketLogging",
            "s3:PutBucketNotification",
            "s3:PutBucketTagging",
            "s3:PutObject",
            "s3:Replicate*",
            "s3:RestoreObject"
          ],
          "Resource": [
            "*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "ec2:RunInstances",
            "ec2:TerminateInstances"
          ],
          "Resource": [
            "*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "iam:PassRole"
          ],
          "Resource": [
            "arn:aws:iam::*:role/DataPipelineDefaultRole",
            "arn:aws:iam::*:role/DataPipelineDefaultResourceRole",
            "arn:aws:iam::*:role/EMR_EC2_DefaultRole",
            "arn:aws:iam::*:role/EMR_DefaultRole",
            "arn:aws:iam::*:role/kinesis-*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "iam:PassRole"
          ],
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "iam:PassedToService": "sagemaker.amazonaws.com"
            }
          }
        },
        {
          "Effect": "Allow",
          "Action": [
            "sagemaker:*"
          ],
          "NotResource": [
            "arn:aws:sagemaker:*:*:domain/*",
            "arn:aws:sagemaker:*:*:user-profile/*",
            "arn:aws:sagemaker:*:*:app/*",
            "arn:aws:sagemaker:*:*:flow-definition/*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "sagemaker:CreatePresignedDomainUrl",
            "sagemaker:DescribeDomain",
            "sagemaker:ListDomains",
            "sagemaker:DescribeUserProfile",
            "sagemaker:ListUserProfiles",
            "sagemaker:*App",
            "sagemaker:ListApps"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "sagemaker:*FlowDefinition",
            "sagemaker:*FlowDefinitions"
          ],
          "Resource": "*",
          "Condition": {
            "StringEqualsIfExists": {
              "sagemaker:WorkteamType": [
                "private-crowd",
                "vendor-crowd"
              ]
            }
          }
        }
      ]
    },
    "VersionId": "v6",
    "IsDefaultVersion": true,
    "CreateDate": "2026-09-02T23:37:07+00:00"
  }
}

Version History (12 recorded)

Raw history
v6updated

1 action added

b8e4864
v5updated

scope changed, no action added or removed

f8d9257

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.

Dec 3, 2019

1c2c035

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

Update detected

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

Sep 16, 2019

8279033

`2019-08-29`

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

Aug 29, 2019

5016d52

Update

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

Aug 22, 2019

c998ecb

I updated my CLI and it looks like it reordered everything and changed the white-space, so everything looks changed, but is not

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

Jul 12, 2019

9d2dff1

First commit

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

Feb 10, 2019

ad4c2e8