AmazonDataZoneEnvironmentRolePermissionsBoundary

Last Modified

Mar 12, 2026

March 12, 2026 at 09:27 PM UTC

Version

v4

Total Versions

5

Created

Nov 17, 2023

Actions

397

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 2 documented escalation paths, but only on named resources or under a condition. Review that scope before trusting it.

    • glue-003iam:PassRole + glue:CreateJob + glue:StartJobRunscoped
      • iam:PassRole: condition iam:PassedToService, on arn:aws:iam::*:role/datazone*
      • glue:StartJobRun: condition aws:ResourceTag/AmazonDataZoneEnvironment
    • glue-005iam:PassRole + glue:UpdateJob + glue:StartJobRunscoped
      • iam:PassRole: condition iam:PassedToService, on arn:aws:iam::*:role/datazone*
      • glue:UpdateJob: condition aws:ResourceTag/AmazonDataZoneEnvironment
      • glue:StartJobRun: condition aws:ResourceTag/AmazonDataZoneEnvironment

    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 Glue connection passwords, on any resource with no condition.

    glue:GetConnection

    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 4 permissions management actions across 1 service (datazone) on any resource, enough to share resources outside the account.

    datazone:addpolicygrantdatazone:deletedomainsharingpolicydatazone:putdomainsharingpolicydatazone:removepolicygrant

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

  • Medium

    Full access to 2 services on every resource

    Uses datazone:*, sqlworkbench:* with Resource "*" and no condition, so every action AWS adds to those services later is granted too.

    datazone:*sqlworkbench:*

    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 (4)

  • Warning / POLICY_SIZE_EXCEEDS_IDENTITY_POLICY_QUOTA

    The 11830 characters in the identity policy, excluding whitespace, exceed the 10240 character maximum for inline and managed policies. We recommend that you use multiple granular policies. AWS docs

  • Suggestion / REDUNDANT_ACTION

    The 2 action(s) are redundant because they provide similar permissions. Update the policy to remove the redundant action such as: logs:DescribeMetricFilters. AWS docs

  • Suggestion / EQUIVALENT_TO_NULL_FALSE

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

  • Suggestion / EQUIVALENT_TO_NULL_FALSE

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

Policy Document

View on GitHub
{
  "PolicyVersion": {
    "Document": {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "CreateGlueConnection",
          "Effect": "Allow",
          "Action": [
            "ec2:CreateTags",
            "ec2:DeleteTags"
          ],
          "Resource": [
            "arn:aws:ec2:*:*:network-interface/*"
          ],
          "Condition": {
            "ForAllValues:StringEquals": {
              "aws:TagKeys": [
                "aws-glue-service-resource"
              ]
            }
          }
        },
        {
          "Sid": "GlueOperations",
          "Effect": "Allow",
          "Action": [
            "glue:*DataQuality*",
            "glue:BatchCreatePartition",
            "glue:BatchDeleteConnection",
            "glue:BatchDeletePartition",
            "glue:BatchDeleteTable",
            "glue:BatchDeleteTableVersion",
            "glue:BatchGetJobs",
            "glue:BatchGetWorkflows",
            "glue:BatchStopJobRun",
            "glue:BatchUpdatePartition",
            "glue:CreateBlueprint",
            "glue:CreateConnection",
            "glue:CreateCrawler",
            "glue:CreateDatabase",
            "glue:CreateJob",
            "glue:CreatePartition",
            "glue:CreatePartitionIndex",
            "glue:CreateTable",
            "glue:CreateWorkflow",
            "glue:DeleteBlueprint",
            "glue:DeleteColumnStatisticsForPartition",
            "glue:DeleteColumnStatisticsForTable",
            "glue:DeleteConnection",
            "glue:DeleteCrawler",
            "glue:DeleteJob",
            "glue:DeletePartition",
            "glue:DeletePartitionIndex",
            "glue:DeleteTable",
            "glue:DeleteTableVersion",
            "glue:DeleteWorkflow",
            "glue:GetColumnStatisticsForPartition",
            "glue:GetColumnStatisticsForTable",
            "glue:GetConnection",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:GetTable",
            "glue:GetTables",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:ListSchemas",
            "glue:ListJobs",
            "glue:NotifyEvent",
            "glue:PutWorkflowRunProperties",
            "glue:ResetJobBookmark",
            "glue:ResumeWorkflowRun",
            "glue:SearchTables",
            "glue:StartBlueprintRun",
            "glue:StartCrawler",
            "glue:StartCrawlerSchedule",
            "glue:StartJobRun",
            "glue:StartWorkflowRun",
            "glue:StopCrawler",
            "glue:StopCrawlerSchedule",
            "glue:StopWorkflowRun",
            "glue:UpdateBlueprint",
            "glue:UpdateColumnStatisticsForPartition",
            "glue:UpdateColumnStatisticsForTable",
            "glue:UpdateConnection",
            "glue:UpdateCrawler",
            "glue:UpdateCrawlerSchedule",
            "glue:UpdateDatabase",
            "glue:UpdateJob",
            "glue:UpdatePartition",
            "glue:UpdateTable",
            "glue:UpdateWorkflow"
          ],
          "Resource": "*",
          "Condition": {
            "Null": {
              "aws:ResourceTag/AmazonDataZoneEnvironment": "false"
            }
          }
        },
        {
          "Sid": "PassRole",
          "Effect": "Allow",
          "Action": [
            "iam:PassRole"
          ],
          "Resource": [
            "arn:aws:iam::*:role/datazone*"
          ],
          "Condition": {
            "StringEquals": {
              "iam:PassedToService": "glue.amazonaws.com"
            }
          }
        },
        {
          "Sid": "SameAccountKmsOperations",
          "Effect": "Allow",
          "Action": [
            "kms:DescribeKey",
            "kms:Decrypt",
            "kms:ListKeys"
          ],
          "Resource": "*",
          "Condition": {
            "StringNotEquals": {
              "aws:ResourceAccount": "${aws:PrincipalAccount}"
            }
          }
        },
        {
          "Sid": "KmsOperationsWithResourceTag",
          "Effect": "Allow",
          "Action": [
            "kms:DescribeKey",
            "kms:Decrypt",
            "kms:ListKeys",
            "kms:Encrypt",
            "kms:GenerateDataKey",
            "kms:Verify",
            "kms:Sign"
          ],
          "Resource": "*",
          "Condition": {
            "Null": {
              "aws:ResourceTag/AmazonDataZoneEnvironment": "false"
            }
          }
        },
        {
          "Sid": "AnalyticsOperations",
          "Effect": "Allow",
          "Action": [
            "datazone:*",
            "sqlworkbench:*"
          ],
          "Resource": "*"
        },
        {
          "Sid": "QueryOperations",
          "Effect": "Allow",
          "Action": [
            "athena:BatchGetNamedQuery",
            "athena:BatchGetPreparedStatement",
            "athena:BatchGetQueryExecution",
            "athena:CreateNamedQuery",
            "athena:CreateNotebook",
            "athena:CreatePreparedStatement",
            "athena:CreatePresignedNotebookUrl",
            "athena:DeleteNamedQuery",
            "athena:DeleteNotebook",
            "athena:DeletePreparedStatement",
            "athena:ExportNotebook",
            "athena:GetDatabase",
            "athena:GetDataCatalog",
            "athena:GetNamedQuery",
            "athena:GetPreparedStatement",
            "athena:GetQueryExecution",
            "athena:GetQueryResults",
            "athena:GetQueryRuntimeStatistics",
            "athena:GetTableMetadata",
            "athena:GetWorkGroup",
            "athena:ImportNotebook",
            "athena:ListDatabases",
            "athena:ListDataCatalogs",
            "athena:ListEngineVersions",
            "athena:ListNamedQueries",
            "athena:ListPreparedStatements",
            "athena:ListQueryExecutions",
            "athena:ListTableMetadata",
            "athena:ListTagsForResource",
            "athena:ListWorkGroups",
            "athena:StartCalculationExecution",
            "athena:StartQueryExecution",
            "athena:StartSession",
            "athena:StopCalculationExecution",
            "athena:StopQueryExecution",
            "athena:TerminateSession",
            "athena:UpdateNamedQuery",
            "athena:UpdateNotebook",
            "athena:UpdateNotebookMetadata",
            "athena:UpdatePreparedStatement",
            "ec2:CreateNetworkInterface",
            "ec2:DeleteNetworkInterface",
            "ec2:Describe*",
            "glue:BatchCreatePartition",
            "glue:BatchDeletePartition",
            "glue:BatchDeleteTable",
            "glue:BatchDeleteTableVersion",
            "glue:BatchGetJobs",
            "glue:BatchGetPartition",
            "glue:BatchGetWorkflows",
            "glue:BatchUpdatePartition",
            "glue:CreateBlueprint",
            "glue:CreateConnection",
            "glue:CreateCrawler",
            "glue:CreateDatabase",
            "glue:CreateJob",
            "glue:CreatePartition",
            "glue:CreatePartitionIndex",
            "glue:CreateTable",
            "glue:CreateWorkflow",
            "glue:DeleteColumnStatisticsForPartition",
            "glue:DeleteColumnStatisticsForTable",
            "glue:DeletePartition",
            "glue:DeletePartitionIndex",
            "glue:DeleteTable",
            "glue:DeleteTableVersion",
            "glue:GetColumnStatisticsForPartition",
            "glue:GetColumnStatisticsForTable",
            "glue:GetConnection",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:GetTable",
            "glue:GetTables",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:ListSchemas",
            "glue:ListJobs",
            "glue:NotifyEvent",
            "glue:SearchTables",
            "glue:UpdateColumnStatisticsForPartition",
            "glue:UpdateColumnStatisticsForTable",
            "glue:UpdateDatabase",
            "glue:UpdatePartition",
            "glue:UpdateTable",
            "iam:GetRole",
            "iam:GetRolePolicy",
            "iam:ListGroups",
            "iam:ListRolePolicies",
            "iam:ListRoles",
            "iam:ListUsers",
            "logs:DescribeLogGroups",
            "logs:DescribeLogStreams",
            "logs:DescribeMetricFilters",
            "logs:DescribeQueries",
            "logs:DescribeQueryDefinitions",
            "logs:DescribeMetricFilters",
            "logs:StartQuery",
            "logs:StopQuery",
            "logs:GetLogEvents",
            "logs:GetLogGroupFields",
            "logs:GetQueryResults",
            "logs:GetLogRecord",
            "logs:PutLogEvents",
            "logs:CreateLogStream",
            "logs:FilterLogEvents",
            "lakeformation:GetDataAccess",
            "lakeformation:GetDataLakeSettings",
            "lakeformation:GetResourceLFTags",
            "lakeformation:ListPermissions",
            "redshift-data:ListTables",
            "redshift-data:DescribeTable",
            "redshift-data:ListSchemas",
            "redshift-data:ListDatabases",
            "redshift-data:ExecuteStatement",
            "redshift-data:GetStatementResult",
            "redshift-data:DescribeStatement",
            "redshift:CreateClusterUser",
            "redshift:DescribeClusters",
            "redshift:DescribeDataShares",
            "redshift:GetClusterCredentials",
            "redshift:GetClusterCredentialsWithIAM",
            "redshift:JoinGroup",
            "redshift-serverless:ListNamespaces",
            "redshift-serverless:ListWorkgroups",
            "redshift-serverless:GetNamespace",
            "redshift-serverless:GetWorkgroup",
            "redshift-serverless:GetCredentials",
            "secretsmanager:ListSecrets",
            "tag:GetResources"
          ],
          "Resource": "*"
        },
        {
          "Sid": "QueryOperationsWithResourceTag",
          "Effect": "Allow",
          "Action": [
            "athena:GetQueryResultsStream"
          ],
          "Resource": "*",
          "Condition": {
            "Null": {
              "aws:ResourceTag/AmazonDataZoneEnvironment": "false"
            }
          }
        },
        {
          "Sid": "SecretsManagerOperationsWithTagKeys",
          "Effect": "Allow",
          "Action": [
            "secretsmanager:CreateSecret",
            "secretsmanager:TagResource"
          ],
          "Resource": "arn:aws:secretsmanager:*:*:secret:AmazonDataZone-*",
          "Condition": {
            "StringLike": {
              "aws:ResourceTag/AmazonDataZoneDomain": "*",
              "aws:ResourceTag/AmazonDataZoneProject": "*"
            },
            "Null": {
              "aws:TagKeys": "false"
            },
            "ForAllValues:StringEquals": {
              "aws:TagKeys": [
                "AmazonDataZoneDomain",
                "AmazonDataZoneProject"
              ]
            }
          }
        },
        {
          "Sid": "DataZoneS3Buckets",
          "Effect": "Allow",
          "Action": [
            "s3:AbortMultipartUpload",
            "s3:DeleteObject",
            "s3:DeleteObjectVersion",
            "s3:GetObject",
            "s3:PutObject",
            "s3:PutObjectRetention",
            "s3:ReplicateObject",
            "s3:RestoreObject"
          ],
          "Resource": [
            "arn:aws:s3:::*/datazone/*"
          ]
        },
        {
          "Sid": "DataZoneS3BucketLocation",
          "Effect": "Allow",
          "Action": [
            "s3:GetBucketLocation"
          ],
          "Resource": "*"
        },
        {
          "Sid": "ListDataZoneS3Bucket",
          "Effect": "Allow",
          "Action": [
            "s3:ListBucket"
          ],
          "Resource": [
            "*"
          ],
          "Condition": {
            "StringLike": {
              "s3:prefix": [
                "*/datazone/*",
                "datazone/*"
              ]
            }
          }
        },
        {
          "Sid": "NotDeniedOperations",
          "Effect": "Deny",
          "NotAction": [
            "datazone:*",
            "sqlworkbench:*",
            "athena:BatchGetNamedQuery",
            "athena:BatchGetPreparedStatement",
            "athena:BatchGetQueryExecution",
            "athena:CreateNamedQuery",
            "athena:CreateNotebook",
            "athena:CreatePreparedStatement",
            "athena:CreatePresignedNotebookUrl",
            "athena:DeleteNamedQuery",
            "athena:DeleteNotebook",
            "athena:DeletePreparedStatement",
            "athena:ExportNotebook",
            "athena:GetDatabase",
            "athena:GetDataCatalog",
            "athena:GetNamedQuery",
            "athena:GetPreparedStatement",
            "athena:GetQueryExecution",
            "athena:GetQueryResults",
            "athena:GetQueryResultsStream",
            "athena:GetQueryRuntimeStatistics",
            "athena:GetTableMetadata",
            "athena:GetWorkGroup",
            "athena:ImportNotebook",
            "athena:ListDatabases",
            "athena:ListDataCatalogs",
            "athena:ListEngineVersions",
            "athena:ListNamedQueries",
            "athena:ListPreparedStatements",
            "athena:ListQueryExecutions",
            "athena:ListTableMetadata",
            "athena:ListTagsForResource",
            "athena:ListWorkGroups",
            "athena:StartCalculationExecution",
            "athena:StartQueryExecution",
            "athena:StartSession",
            "athena:StopCalculationExecution",
            "athena:StopQueryExecution",
            "athena:TerminateSession",
            "athena:UpdateNamedQuery",
            "athena:UpdateNotebook",
            "athena:UpdateNotebookMetadata",
            "athena:UpdatePreparedStatement",
            "ec2:CreateNetworkInterface",
            "ec2:CreateTags",
            "ec2:DeleteNetworkInterface",
            "ec2:DeleteTags",
            "ec2:Describe*",
            "glue:*DataQuality*",
            "glue:BatchCreatePartition",
            "glue:BatchDeleteConnection",
            "glue:BatchDeletePartition",
            "glue:BatchDeleteTable",
            "glue:BatchDeleteTableVersion",
            "glue:BatchGetJobs",
            "glue:BatchGetPartition",
            "glue:BatchGetWorkflows",
            "glue:BatchStopJobRun",
            "glue:BatchUpdatePartition",
            "glue:CreateBlueprint",
            "glue:CreateConnection",
            "glue:CreateCrawler",
            "glue:CreateDatabase",
            "glue:CreateJob",
            "glue:CreatePartition",
            "glue:CreatePartitionIndex",
            "glue:CreateTable",
            "glue:CreateWorkflow",
            "glue:DeleteBlueprint",
            "glue:DeleteColumnStatisticsForPartition",
            "glue:DeleteColumnStatisticsForTable",
            "glue:DeleteConnection",
            "glue:DeleteCrawler",
            "glue:DeleteJob",
            "glue:DeletePartition",
            "glue:DeletePartitionIndex",
            "glue:DeleteTable",
            "glue:DeleteTableVersion",
            "glue:DeleteWorkflow",
            "glue:GetColumnStatisticsForPartition",
            "glue:GetColumnStatisticsForTable",
            "glue:GetConnection",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:GetTable",
            "glue:GetTables",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:ListSchemas",
            "glue:ListJobs",
            "glue:NotifyEvent",
            "glue:PutWorkflowRunProperties",
            "glue:ResetJobBookmark",
            "glue:ResumeWorkflowRun",
            "glue:SearchTables",
            "glue:StartBlueprintRun",
            "glue:StartCrawler",
            "glue:StartCrawlerSchedule",
            "glue:StartJobRun",
            "glue:StartWorkflowRun",
            "glue:StopCrawler",
            "glue:StopCrawlerSchedule",
            "glue:StopWorkflowRun",
            "glue:UpdateBlueprint",
            "glue:UpdateColumnStatisticsForPartition",
            "glue:UpdateColumnStatisticsForTable",
            "glue:UpdateConnection",
            "glue:UpdateCrawler",
            "glue:UpdateCrawlerSchedule",
            "glue:UpdateDatabase",
            "glue:UpdateJob",
            "glue:UpdatePartition",
            "glue:UpdateTable",
            "glue:UpdateWorkflow",
            "iam:GetRole",
            "iam:GetRolePolicy",
            "iam:List*",
            "iam:PassRole",
            "kms:DescribeKey",
            "kms:Decrypt",
            "kms:Encrypt",
            "kms:GenerateDataKey",
            "kms:ListKeys",
            "kms:Verify",
            "kms:Sign",
            "logs:DescribeLogGroups",
            "logs:DescribeLogStreams",
            "logs:DescribeMetricFilters",
            "logs:DescribeQueries",
            "logs:DescribeQueryDefinitions",
            "logs:StartQuery",
            "logs:StopQuery",
            "logs:GetLogEvents",
            "logs:GetLogGroupFields",
            "logs:GetQueryResults",
            "logs:GetLogRecord",
            "logs:PutLogEvents",
            "logs:CreateLogStream",
            "logs:FilterLogEvents",
            "lakeformation:GetDataAccess",
            "lakeformation:GetDataLakeSettings",
            "lakeformation:GetResourceLFTags",
            "lakeformation:ListPermissions",
            "redshift-data:ListTables",
            "redshift-data:DescribeTable",
            "redshift-data:ListSchemas",
            "redshift-data:ListDatabases",
            "redshift-data:ExecuteStatement",
            "redshift-data:GetStatementResult",
            "redshift-data:DescribeStatement",
            "redshift:CreateClusterUser",
            "redshift:DescribeClusters",
            "redshift:DescribeDataShares",
            "redshift:GetClusterCredentials",
            "redshift:GetClusterCredentialsWithIAM",
            "redshift:JoinGroup",
            "redshift-serverless:ListNamespaces",
            "redshift-serverless:ListWorkgroups",
            "redshift-serverless:GetNamespace",
            "redshift-serverless:GetWorkgroup",
            "redshift-serverless:GetCredentials",
            "s3:AbortMultipartUpload",
            "s3:DeleteObject",
            "s3:DeleteObjectVersion",
            "s3:GetObject",
            "s3:GetBucketLocation",
            "s3:ListBucket",
            "s3:PutObject",
            "s3:PutObjectRetention",
            "s3:ReplicateObject",
            "s3:RestoreObject",
            "secretsmanager:CreateSecret",
            "secretsmanager:ListSecrets",
            "secretsmanager:TagResource",
            "tag:GetResources"
          ],
          "Resource": [
            "*"
          ]
        }
      ]
    },
    "VersionId": "v4",
    "IsDefaultVersion": true,
    "CreateDate": "2023-11-17T23:29:08+00:00"
  }
}

Version History (8 recorded)

Raw history

AmazonDataZoneEnvironmentRolePermissionsBoundary - Policy Version v4

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

Mar 12, 2026

e404fe9

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.

Nov 18, 2023

0245e64

Update detected

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

Sep 29, 2023

a253c14

Update detected

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

Sep 29, 2023

4eef745

Update detected

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

Sep 14, 2023

a613573

Update detected

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

Sep 12, 2023

da03a34