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
HighAn 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.
- 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.
- 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
- iam:PassRole: on arn:aws:iam::*:role/DataPipelineDefaultRole, arn:aws:iam::*:role/DataPipelineDefaultResourceRole, arn:aws:iam::*:role/EMR_EC2_DefaultRole
- iam:PassRole: on arn:aws:iam::*:role/DataPipelineDefaultRole, arn:aws:iam::*:role/DataPipelineDefaultResourceRole, arn:aws:iam::*:role/EMR_EC2_DefaultRole
- iam:PassRole: on arn:aws:iam::*:role/DataPipelineDefaultRole, arn:aws:iam::*:role/DataPipelineDefaultResourceRole, arn:aws:iam::*:role/EMR_EC2_DefaultRole
- iam:PassRole: on arn:aws:iam::*:role/DataPipelineDefaultRole, arn:aws:iam::*:role/DataPipelineDefaultResourceRole, arn:aws:iam::*:role/EMR_EC2_DefaultRole
- iam:PassRole: on arn:aws:iam::*:role/DataPipelineDefaultRole, arn:aws:iam::*:role/DataPipelineDefaultResourceRole, arn:aws:iam::*:role/EMR_EC2_DefaultRole
- iam:PassRole: on arn:aws:iam::*:role/DataPipelineDefaultRole, arn:aws:iam::*:role/DataPipelineDefaultResourceRole, arn:aws:iam::*:role/EMR_EC2_DefaultRole
- iam:PassRole: on arn:aws:iam::*:role/DataPipelineDefaultRole, arn:aws:iam::*:role/DataPipelineDefaultResourceRole, arn:aws:iam::*:role/EMR_EC2_DefaultRole
1 more path
- 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 moreUse 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 history1 action added
scope changed, no action added or removed
Update detected
No recorded action delta - this version predates the change index. View the raw diff.
Sep 18, 2024
aafbae9Update detected
No recorded action delta - this version predates the change index. View the raw diff.
May 13, 2024
1b36617Update detected
No recorded action delta - this version predates the change index. View the raw diff.
Dec 3, 2019
1c2c035Update detected
No recorded action delta - this version predates the change index. View the raw diff.
Sep 16, 2019
49aa1d0Update detected
No recorded action delta - this version predates the change index. View the raw diff.
Sep 16, 2019
71619cfUpdate 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
5016d52Update
No recorded action delta - this version predates the change index. View the raw diff.
Aug 22, 2019
c998ecbI 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
9d2dff1First commit
No recorded action delta - this version predates the change index. View the raw diff.
Feb 10, 2019
ad4c2e8