Skip to main content
IAM Policy Map

SageMakerStudioProjectUserRolePolicy

OperatorAWS managedActivePermissions reviewedShow on mapCompare

Summary

Amazon SageMaker Studio creates IAM roles for projects users to perform data analytics, artificial intelligence, and machine learning actions, and uses this policy when creating these roles to define the permissions.

Permissions imported from the AWS Managed Policy Reference Guide; other sections pending editorial review.

Identity

ARN
arn:aws:iam::aws:policy/SageMakerStudioProjectUserRolePolicy
Default version
v76
Created
Last edited
Services
airflow, athena, bedrock, cloudformation, cloudwatch, codecommit, codeconnections, codestar-connections, codewhisperer, datazone, dynamodb, ec2, ecr, elasticmapreduce, emr-containers, emr-serverless, glue, iam, kms, lakeformation, lambda, logs, pricing, q, quicksight, ram, redshift, redshift-data, redshift-serverless, s3, scheduler, secretsmanager, sqlworkbench, sqs, sso, sts, tag

Control-plane actions (556)

By access level: 74 List, 16 Permissions management, 221 Read, 13 Tagging, 232 Write.

Control-plane actions by service
ServiceGrantedAccess levels and limitsGranted by
MWAA4 of 121 List, 1 Read, 2 Write; 3 restricted, 2 conditionalairflow:CreateWebLoginToken, airflow:GetEnvironment, airflow:ListEnvironments, airflow:UpdateEnvironment
Athena47 of 865 List, 23 Read, 19 Write; 44 restricted, 39 conditionalathena:BatchGetNamedQuery, athena:BatchGetPreparedStatement, athena:BatchGetQueryExecution, athena:CreateNamedQuery, athena:CreateNotebook, athena:CreatePreparedStatement, athena:CreatePresignedNotebookUrl, athena:DeleteNamedQuery, athena:DeleteNotebook, athena:DeletePreparedStatement, athena:ExportNotebook, athena:GetCalculationExecution and 35 more
Bedrock40 of 23210 List, 11 Read, 1 Tagging, 18 Write; 40 restricted, 39 conditionalbedrock:BatchDeleteEvaluationJob, bedrock:CreateAgentAlias, bedrock:CreateBlueprint, bedrock:CreateBlueprintVersion, bedrock:CreateDataAutomationProject, bedrock:CreateEvaluationJob, bedrock:CreatePrompt, bedrock:CreatePromptVersion, bedrock:DeleteAgentAlias, bedrock:DeleteAgentVersion, bedrock:DeleteBlueprint, bedrock:DeleteDataAutomationProject and 28 more
CloudFormation3 of 1042 List, 1 Read; 3 restricted, 3 conditionalcloudformation:DescribeStacks, cloudformation:GetTemplate, cloudformation:ListStackResources
CodeCommit61 of 915 List, 31 Read, 25 Write; 61 restricted, 61 conditionalcodecommit:BatchDescribeMergeConflicts, codecommit:BatchGetCommits, codecommit:BatchGetPullRequests, codecommit:BatchGetRepositories, codecommit:CreateBranch, codecommit:CreateCommit, codecommit:CreatePullRequest, codecommit:DeleteBranch, codecommit:DeleteFile, codecommit:DescribeMergeConflicts, codecommit:DescribePullRequestEvents, codecommit:GetBlob and 49 more
CodeConnections5 of 382 List, 3 Read; 2 restricted, 2 conditionalcodeconnections:GetConnection, codeconnections:GetHost, codeconnections:ListConnections, codeconnections:ListTagsForResource, codeconnections:UseConnection
CodeStar Connections5 of 382 List, 3 Read; 2 restricted, 2 conditionalcodestar-connections:GetConnection, codestar-connections:GetHost, codestar-connections:ListConnections, codestar-connections:ListTagsForResource, codestar-connections:UseConnection
CodeWhisperer1 of 191 Read; 0 restricted, 0 conditionalcodewhisperer:GenerateRecommendations
DataZone21 of 2784 List, 9 Read, 8 Write; 21 restricted, 0 conditionaldatazone:*Compute*, datazone:CreateConnection, datazone:DeleteConnection, datazone:GetConnection, datazone:GetDomain, datazone:GetDomainExecutionRoleCredentials, datazone:GetEnvironment, datazone:GetEnvironmentBlueprintConfiguration, datazone:GetProject, datazone:GetUserProfile, datazone:ListConnections, datazone:ListEnvironmentBlueprints and 4 more
DynamoDB1 of 681 List; 0 restricted, 0 conditionaldynamodb:ListTables
EC213 of 8347 List, 2 Tagging, 4 Write; 6 restricted, 6 conditionalec2:AttachNetworkInterface, ec2:CreateNetworkInterface, ec2:CreateTags, ec2:DeleteNetworkInterface, ec2:DeleteTags, ec2:DescribeInstanceTypes, ec2:DescribeNetworkInterfaces, ec2:DescribeRouteTables, ec2:DescribeSecurityGroups, ec2:DescribeSubnets, ec2:DescribeVpcEndpoints, ec2:DescribeVpcs and 1 more
Elastic Container Registry13 of 651 List, 3 Read, 2 Tagging, 7 Write; 13 restricted, 13 conditionalecr:BatchCheckLayerAvailability, ecr:BatchDeleteImage, ecr:CompleteLayerUpload, ecr:CreateRepository, ecr:DeleteRepository, ecr:DescribeRepositories, ecr:InitiateLayerUpload, ecr:ListImages, ecr:ListTagsForResource, ecr:PutImage, ecr:TagResource, ecr:UntagResource and 1 more
EMR25 of 885 List, 9 Read, 1 Tagging, 10 Write; 20 restricted, 20 conditionalelasticmapreduce:*Session*, elasticmapreduce:AddTags, elasticmapreduce:CreatePersistentAppUI, elasticmapreduce:DescribeCluster, elasticmapreduce:DescribePersistentAppUI, elasticmapreduce:GetClusterSessionCredentials, elasticmapreduce:GetManagedScalingPolicy, elasticmapreduce:GetOnClusterAppUIPresignedURL, elasticmapreduce:GetPersistentAppUIPresignedURL, elasticmapreduce:ListBootstrapActions, elasticmapreduce:ListClusters, elasticmapreduce:ListInstanceFleets and 4 more
EMR Containers8 of 251 List, 3 Read, 1 Tagging, 3 Write; 8 restricted, 8 conditionalemr-containers:*ManagedEndpoint*, emr-containers:DescribeSecurityConfiguration, emr-containers:DescribeVirtualCluster, emr-containers:TagResource
EMR Serverless15 of 251 List, 6 Read, 1 Tagging, 7 Write; 15 restricted, 15 conditionalemr-serverless:*Session*, emr-serverless:AccessInteractiveEndpoints, emr-serverless:AccessLivyEndpoints, emr-serverless:GetApplication, emr-serverless:GetDashboardForJobRun, emr-serverless:GetJobRun, emr-serverless:GetResourceDashboard, emr-serverless:StartApplication, emr-serverless:StartJobRun, emr-serverless:StopApplication, emr-serverless:TagResource
Glue142 of 3069 List, 12 Permissions management, 49 Read, 2 Tagging, 70 Write; 130 restricted, 64 conditionalglue:*ColumnStatistics*, glue:*DataQuality*, glue:*Database*, glue:*Partition*, glue:*Session*, glue:*Statement*, glue:*Table*, glue:BatchCreatePartition, glue:BatchDeletePartition, glue:BatchDeleteTable, glue:BatchDeleteTableVersion, glue:BatchGetJobs and 91 more
IAM3 of 1901 List, 1 Read, 1 Write; 2 restricted, 2 conditionaliam:GetRole, iam:ListRoles, iam:PassRole
KMS12 of 582 List, 2 Permissions management, 2 Read, 6 Write; 12 restricted, 12 conditionalkms:CreateGrant, kms:Decrypt, kms:DescribeKey, kms:Encrypt, kms:GenerateDataKey, kms:GenerateDataKeyWithoutPlaintext, kms:GetPublicKey, kms:ListAliases, kms:ListGrants, kms:ReEncryptFrom, kms:ReEncryptTo, kms:RevokeGrant
Lake Formation11 of 682 List, 2 Permissions management, 3 Read, 4 Write; 0 restricted, 0 conditionallakeformation:BatchGrantPermissions, lakeformation:BatchRevokePermissions, lakeformation:CreateDataCellsFilter, lakeformation:DeleteDataCellsFilter, lakeformation:DescribeResource, lakeformation:GetDataAccess, lakeformation:GetDataCellsFilter, lakeformation:GetResourceLFTags, lakeformation:ListDataCellsFilter, lakeformation:ListPermissions, lakeformation:UpdateDataCellsFilter
CloudWatch Logs12 of 1332 List, 7 Read, 3 Write; 10 restricted, 0 conditionallogs:CreateLogGroup, logs:CreateLogStream, logs:DescribeLogGroups, logs:DescribeLogStreams, logs:FilterLogEvents, logs:GetLogEvents, logs:GetLogGroupFields, logs:GetLogRecord, logs:GetQueryResults, logs:PutLogEvents, logs:StartQuery, logs:StopQuery
Price List1 of 51 Read; 0 restricted, 0 conditionalpricing:GetProducts
Q2 of 542 Write; 0 restricted, 0 conditionalq:SendMessage, q:StartConversation
QuickSight12 of 3579 Read, 1 Tagging, 2 Write; 12 restricted, 8 conditionalquicksight:CreateDataSet, quicksight:CreateFolderMembership, quicksight:DescribeAccountSubscription, quicksight:DescribeDataSet, quicksight:DescribeDataSource, quicksight:DescribeFolder, quicksight:DescribeFolderPermissions, quicksight:DescribeGroup, quicksight:DescribeUser, quicksight:ListFolderMembers, quicksight:PassDataSource, quicksight:TagResource
Resource Access Manager11 of 392 List, 2 Read, 7 Write; 9 restricted, 9 conditionalram:AcceptResourceShareInvitation, ram:AssociateResourceShare, ram:AssociateResourceSharePermission, ram:CreateResourceShare, ram:DeleteResourceShare, ram:DisassociateResourceShare, ram:GetResourceShareInvitations, ram:GetResourceShares, ram:ListResourceSharePermissions, ram:ListResources, ram:UpdateResourceShare
Redshift3 of 1671 List, 1 Read, 1 Write; 2 restricted, 2 conditionalredshift:DescribeClusters, redshift:DescribeTags, redshift:GetClusterCredentialsWithIAM
Redshift Data API11 of 122 List, 6 Read, 3 Write; 11 restricted, 11 conditionalredshift-data:BatchExecuteStatement, redshift-data:CancelStatement, redshift-data:DescribeStatement, redshift-data:DescribeTable, redshift-data:ExecuteStatement, redshift-data:GetStagingBucketLocation, redshift-data:GetStatementResult, redshift-data:ListDatabases, redshift-data:ListSchemas, redshift-data:ListStatements, redshift-data:ListTables
Redshift Serverless7 of 693 List, 3 Read, 1 Write; 5 restricted, 5 conditionalredshift-serverless:GetCredentials, redshift-serverless:GetManagedWorkgroup, redshift-serverless:GetNamespace, redshift-serverless:GetWorkgroup, redshift-serverless:ListNamespaces, redshift-serverless:ListTagsForResource, redshift-serverless:ListWorkgroups
S314 of 15513 Read, 1 Write; 14 restricted, 14 conditionals3:GetAccountPublicAccessBlock, s3:GetBucketAcl, s3:GetBucketLocation, s3:GetBucketPublicAccessBlock, s3:GetEncryptionConfiguration, s3:GetObject*, s3:ReplicateObject
EventBridge Scheduler5 of 132 Read, 3 Write; 5 restricted, 5 conditionalscheduler:CreateSchedule, scheduler:DeleteSchedule, scheduler:GetSchedule, scheduler:GetScheduleGroup, scheduler:UpdateSchedule
Secrets Manager4 of 271 List, 2 Read, 1 Write; 3 restricted, 3 conditionalsecretsmanager:DescribeSecret, secretsmanager:GetSecretValue, secretsmanager:ListSecrets, secretsmanager:PutSecretValue
SQL Workbench32 of 792 List, 11 Read, 1 Tagging, 18 Write; 15 restricted, 14 conditionalsqlworkbench:*QCustomContext, sqlworkbench:AssociateNotebookWithTab, sqlworkbench:BatchGetNotebookCell, sqlworkbench:CreateConnection, sqlworkbench:CreateNotebook*, sqlworkbench:DeleteNotebook*, sqlworkbench:DeleteTab, sqlworkbench:DriverExecute, sqlworkbench:ExportNotebook, sqlworkbench:GetAutocompletion*, sqlworkbench:GetNotebook, sqlworkbench:GetQSql* and 9 more
SQS6 of 203 Read, 3 Write; 6 restricted, 6 conditionalsqs:ChangeMessageVisibility, sqs:DeleteMessage, sqs:GetQueueAttributes, sqs:GetQueueUrl, sqs:ReceiveMessage, sqs:SendMessage
IAM Identity Center1 of 1261 Read; 1 restricted, 1 conditionalsso:DescribeApplication
STS4 of 161 Tagging, 3 Write; 4 restricted, 4 conditionalsts:AssumeRole, sts:SetContext, sts:SetSourceIdentity, sts:TagSession
Resource Group Tagging1 of 91 Read; 1 restricted, 1 conditionaltag:GetResources
MWAA: 4 actions
  • airflow:CreateWebLoginToken (Write)
  • airflow:GetEnvironment (Read)
  • airflow:ListEnvironments (List)
  • airflow:UpdateEnvironment (Write)
Athena: 47 actions
  • athena:BatchGetNamedQuery (Read)
  • athena:BatchGetPreparedStatement (Read)
  • athena:BatchGetQueryExecution (Read)
  • athena:CreateNamedQuery (Write)
  • athena:CreateNotebook (Write)
  • athena:CreatePreparedStatement (Write)
  • athena:CreatePresignedNotebookUrl (Write)
  • athena:DeleteNamedQuery (Write)
  • athena:DeleteNotebook (Write)
  • athena:DeletePreparedStatement (Write)
  • athena:ExportNotebook (Write)
  • athena:GetCalculationExecution (Read)
  • athena:GetCalculationExecutionCode (Read)
  • athena:GetCalculationExecutionStatus (Read)
  • athena:GetDataCatalog (Read)
  • athena:GetDatabase (Read)
  • athena:GetNamedQuery (Read)
  • athena:GetNotebookMetadata (Read)
  • athena:GetPreparedStatement (Read)
  • athena:GetQueryExecution (Read)
  • athena:GetQueryResults (Read)
  • athena:GetQueryResultsStream (Read)
  • athena:GetQueryRuntimeStatistics (Read)
  • athena:GetSession (Read)
  • athena:GetSessionStatus (Read)
  • athena:GetTableMetadata (Read)
  • athena:GetWorkGroup (Read)
  • athena:ImportNotebook (Write)
  • athena:ListDataCatalogs (List)
  • athena:ListDatabases (List)
  • athena:ListEngineVersions (Read)
  • athena:ListNamedQueries (List)
  • athena:ListPreparedStatements (List)
  • athena:ListQueryExecutions (Read)
  • athena:ListTableMetadata (Read)
  • athena:ListTagsForResource (Read)
  • athena:ListWorkGroups (List)
  • athena:StartCalculationExecution (Write)
  • athena:StartQueryExecution (Write)
  • athena:StartSession (Write)
  • athena:StopCalculationExecution (Write)
  • athena:StopQueryExecution (Write)
  • athena:TerminateSession (Write)
  • athena:UpdateNamedQuery (Write)
  • athena:UpdateNotebook (Write)
  • athena:UpdateNotebookMetadata (Write)
  • athena:UpdatePreparedStatement (Write)
Bedrock: 40 actions
  • bedrock:BatchDeleteEvaluationJob (Write)
  • bedrock:CreateAgentAlias (Write)
  • bedrock:CreateBlueprint (Write)
  • bedrock:CreateBlueprintVersion (Write)
  • bedrock:CreateDataAutomationProject (Write)
  • bedrock:CreateEvaluationJob (Write)
  • bedrock:CreatePrompt (Write)
  • bedrock:CreatePromptVersion (Write)
  • bedrock:DeleteAgentAlias (Write)
  • bedrock:DeleteAgentVersion (Write)
  • bedrock:DeleteBlueprint (Write)
  • bedrock:DeleteDataAutomationProject (Write)
  • bedrock:DeletePrompt (Write)
  • bedrock:GetAgentAlias (Read)
  • bedrock:GetAgentVersion (Read)
  • bedrock:GetBlueprint (Read)
  • bedrock:GetDataAutomationProject (Read)
  • bedrock:GetEvaluationJob (Read)
  • bedrock:GetInferenceProfile (Read)
  • bedrock:GetIngestionJob (Read)
  • bedrock:GetKnowledgeBase (Read)
  • bedrock:GetPrompt (Read)
  • bedrock:InvokeModelWithResponseStream (Read)
  • bedrock:ListAgentActionGroups (List)
  • bedrock:ListAgentAliases (List)
  • bedrock:ListAgentKnowledgeBases (List)
  • bedrock:ListAgentVersions (List)
  • bedrock:ListEvaluationJobs (List)
  • bedrock:ListFoundationModels (List)
  • bedrock:ListInferenceProfiles (List)
  • bedrock:ListIngestionJobs (List)
  • bedrock:ListKnowledgeBases (List)
  • bedrock:ListPrompts (List)
  • bedrock:ListTagsForResource (Read)
  • bedrock:StartIngestionJob (Write)
  • bedrock:StopEvaluationJob (Write)
  • bedrock:TagResource (Tagging)
  • bedrock:UpdateAgentAlias (Write)
  • bedrock:UpdateBlueprint (Write)
  • bedrock:UpdateDataAutomationProject (Write)
CloudFormation: 3 actions
  • cloudformation:DescribeStacks (List)
  • cloudformation:GetTemplate (Read)
  • cloudformation:ListStackResources (List)
CodeCommit: 61 actions
  • codecommit:BatchDescribeMergeConflicts (Read)
  • codecommit:BatchGetCommits (Read)
  • codecommit:BatchGetPullRequests (Read)
  • codecommit:BatchGetRepositories (Read)
  • codecommit:CreateBranch (Write)
  • codecommit:CreateCommit (Write)
  • codecommit:CreatePullRequest (Write)
  • codecommit:DeleteBranch (Write)
  • codecommit:DeleteFile (Write)
  • codecommit:DescribeMergeConflicts (Read)
  • codecommit:DescribePullRequestEvents (Read)
  • codecommit:GetBlob (Read)
  • codecommit:GetBranch (Read)
  • codecommit:GetComment (Read)
  • codecommit:GetCommentReactions (Read)
  • codecommit:GetCommentsForComparedCommit (Read)
  • codecommit:GetCommentsForPullRequest (Read)
  • codecommit:GetCommit (Read)
  • codecommit:GetCommitHistory (Read)
  • codecommit:GetCommitsFromMergeBase (Read)
  • codecommit:GetDifferences (Read)
  • codecommit:GetFile (Read)
  • codecommit:GetFolder (Read)
  • codecommit:GetMergeCommit (Read)
  • codecommit:GetMergeConflicts (Read)
  • codecommit:GetMergeOptions (Read)
  • codecommit:GetObjectIdentifier (Read)
  • codecommit:GetPullRequest (Read)
  • codecommit:GetPullRequestApprovalStates (Read)
  • codecommit:GetPullRequestOverrideState (Read)
  • codecommit:GetReferences (Read)
  • codecommit:GetRepository (Read)
  • codecommit:GetRepositoryTriggers (Read)
  • codecommit:GetTree (Read)
  • codecommit:GetUploadArchiveStatus (Read)
  • codecommit:GitPull (Read)
  • codecommit:GitPush (Write)
  • codecommit:ListAssociatedApprovalRuleTemplatesForRepository (List)
  • codecommit:ListBranches (List)
  • codecommit:ListFileCommitHistory (List)
  • codecommit:ListPullRequests (List)
  • codecommit:ListTagsForResource (List)
  • codecommit:MergeBranchesByFastForward (Write)
  • codecommit:MergeBranchesBySquash (Write)
  • codecommit:MergeBranchesByThreeWay (Write)
  • codecommit:MergePullRequestByFastForward (Write)
  • codecommit:MergePullRequestBySquash (Write)
  • codecommit:MergePullRequestByThreeWay (Write)
  • codecommit:PostCommentForComparedCommit (Write)
  • codecommit:PostCommentForPullRequest (Write)
  • codecommit:PostCommentReply (Write)
  • codecommit:PutCommentReaction (Write)
  • codecommit:PutFile (Write)
  • codecommit:UpdateComment (Write)
  • codecommit:UpdateDefaultBranch (Write)
  • codecommit:UpdatePullRequestApprovalRuleContent (Write)
  • codecommit:UpdatePullRequestApprovalState (Write)
  • codecommit:UpdatePullRequestDescription (Write)
  • codecommit:UpdatePullRequestStatus (Write)
  • codecommit:UpdatePullRequestTitle (Write)
  • codecommit:UpdateRepositoryDescription (Write)
CodeConnections: 5 actions
  • codeconnections:GetConnection (Read)
  • codeconnections:GetHost (Read)
  • codeconnections:ListConnections (List)
  • codeconnections:ListTagsForResource (List)
  • codeconnections:UseConnection (Read)
CodeStar Connections: 5 actions
  • codestar-connections:GetConnection (Read)
  • codestar-connections:GetHost (Read)
  • codestar-connections:ListConnections (List)
  • codestar-connections:ListTagsForResource (List)
  • codestar-connections:UseConnection (Read)
CodeWhisperer: 1 actions
  • codewhisperer:GenerateRecommendations (Read)
DataZone: 21 actions
  • datazone:CreateConnection (Write)
  • datazone:DeleteConnection (Write)
  • datazone:GetCompute (Read)
  • datazone:GetConnection (Read)
  • datazone:GetDomain (Read)
  • datazone:GetDomainExecutionRoleCredentials (Read)
  • datazone:GetEnvironment (Read)
  • datazone:GetEnvironmentBlueprintConfiguration (Read)
  • datazone:GetNotebookCompute (Read)
  • datazone:GetProject (Read)
  • datazone:GetUserProfile (Read)
  • datazone:ListConnections (List)
  • datazone:ListEnvironmentBlueprints (List)
  • datazone:ListEnvironments (List)
  • datazone:ListProjects (List)
  • datazone:PostLineageEvent (Write)
  • datazone:StartCompute (Write)
  • datazone:StartNotebookCompute (Write)
  • datazone:StopCompute (Write)
  • datazone:StopNotebookCompute (Write)
  • datazone:UpdateConnection (Write)
DynamoDB: 1 actions
  • dynamodb:ListTables (List)
EC2: 13 actions
  • ec2:AttachNetworkInterface (Write)
  • ec2:CreateNetworkInterface (Write)
  • ec2:CreateTags (Tagging)
  • ec2:DeleteNetworkInterface (Write)
  • ec2:DeleteTags (Tagging)
  • ec2:DescribeInstanceTypes (List)
  • ec2:DescribeNetworkInterfaces (List)
  • ec2:DescribeRouteTables (List)
  • ec2:DescribeSecurityGroups (List)
  • ec2:DescribeSubnets (List)
  • ec2:DescribeVpcEndpoints (List)
  • ec2:DescribeVpcs (List)
  • ec2:DetachNetworkInterface (Write)
Elastic Container Registry: 13 actions
  • ecr:BatchCheckLayerAvailability (Read)
  • ecr:BatchDeleteImage (Write)
  • ecr:CompleteLayerUpload (Write)
  • ecr:CreateRepository (Write)
  • ecr:DeleteRepository (Write)
  • ecr:DescribeRepositories (Read)
  • ecr:InitiateLayerUpload (Write)
  • ecr:ListImages (List)
  • ecr:ListTagsForResource (Read)
  • ecr:PutImage (Write)
  • ecr:TagResource (Tagging)
  • ecr:UntagResource (Tagging)
  • ecr:UploadLayerPart (Write)
EMR: 25 actions
  • elasticmapreduce:AddTags (Tagging)
  • elasticmapreduce:CreatePersistentAppUI (Write)
  • elasticmapreduce:CreateStudioSessionMapping (Write)
  • elasticmapreduce:DeleteStudioSessionMapping (Write)
  • elasticmapreduce:DescribeCluster (Read)
  • elasticmapreduce:DescribePersistentAppUI (Read)
  • elasticmapreduce:GetClusterSessionCredentials (Write)
  • elasticmapreduce:GetManagedScalingPolicy (Read)
  • elasticmapreduce:GetOnClusterAppUIPresignedURL (Write)
  • elasticmapreduce:GetPersistentAppUIPresignedURL (Write)
  • elasticmapreduce:GetSession (Read)
  • elasticmapreduce:GetSessionEndpoint (Write)
  • elasticmapreduce:GetStudioSessionMapping (Read)
  • elasticmapreduce:ListBootstrapActions (Read)
  • elasticmapreduce:ListClusters (List)
  • elasticmapreduce:ListInstanceFleets (Read)
  • elasticmapreduce:ListInstanceGroups (Read)
  • elasticmapreduce:ListInstances (Read)
  • elasticmapreduce:ListReleaseLabels (List)
  • elasticmapreduce:ListSessions (List)
  • elasticmapreduce:ListStudioSessionMappings (List)
  • elasticmapreduce:ListSupportedInstanceTypes (List)
  • elasticmapreduce:StartSession (Write)
  • elasticmapreduce:TerminateSession (Write)
  • elasticmapreduce:UpdateStudioSessionMapping (Write)
EMR Containers: 8 actions
  • emr-containers:CreateManagedEndpoint (Write)
  • emr-containers:DeleteManagedEndpoint (Write)
  • emr-containers:DescribeManagedEndpoint (Read)
  • emr-containers:DescribeSecurityConfiguration (Read)
  • emr-containers:DescribeVirtualCluster (Read)
  • emr-containers:GetManagedEndpointSessionCredentials (Write)
  • emr-containers:ListManagedEndpoints (List)
  • emr-containers:TagResource (Tagging)
EMR Serverless: 15 actions
  • emr-serverless:AccessInteractiveEndpoints (Write)
  • emr-serverless:AccessLivyEndpoints (Write)
  • emr-serverless:GetApplication (Read)
  • emr-serverless:GetDashboardForJobRun (Read)
  • emr-serverless:GetJobRun (Read)
  • emr-serverless:GetResourceDashboard (Read)
  • emr-serverless:GetSession (Read)
  • emr-serverless:GetSessionEndpoint (Read)
  • emr-serverless:ListSessions (List)
  • emr-serverless:StartApplication (Write)
  • emr-serverless:StartJobRun (Write)
  • emr-serverless:StartSession (Write)
  • emr-serverless:StopApplication (Write)
  • emr-serverless:TagResource (Tagging)
  • emr-serverless:TerminateSession (Write)
Glue: 142 actions
  • glue:AccessDataQualityRuntimeConfiguration (Read)
  • glue:BatchCreatePartition (Write)
  • glue:BatchDeletePartition (Write)
  • glue:BatchDeleteTable (Write)
  • glue:BatchDeleteTableVersion (Write)
  • glue:BatchGetJobs (Read)
  • glue:BatchGetPartition (Read)
  • glue:BatchGetTableOptimizer (Read)
  • glue:BatchStopJobRun (Write)
  • glue:BatchUpdatePartition (Write)
  • glue:CancelDataQualityRuleRecommendationRun (Write)
  • glue:CancelDataQualityRulesetEvaluationRun (Write)
  • glue:CancelStatement (Write)
  • glue:CreateBlueprint (Write)
  • glue:CreateColumnStatisticsTaskSettings (Write)
  • glue:CreateDataQualityRuleset (Write)
  • glue:CreateDatabase (Write)
  • glue:CreateIntegrationTableProperties (Write)
  • glue:CreateJob (Write)
  • glue:CreatePartition (Write)
  • glue:CreatePartitionIndex (Write)
  • glue:CreateSession (Write)
  • glue:CreateTable (Write)
  • glue:CreateTableOptimizer (Write)
  • glue:CreateWorkflow (Write)
  • glue:DeleteBlueprint (Write)
  • glue:DeleteColumnStatisticsForPartition (Write)
  • glue:DeleteColumnStatisticsForTable (Write)
  • glue:DeleteColumnStatisticsTaskSettings (Write)
  • glue:DeleteDataQualityRuleset (Write)
  • glue:DeleteDatabase (Write)
  • glue:DeleteIntegrationTableProperties (Write)
  • glue:DeleteJob (Write)
  • glue:DeletePartition (Write)
  • glue:DeletePartitionIndex (Write)
  • glue:DeleteResourcePolicy (Permissions management)
  • glue:DeleteSession (Write)
  • glue:DeleteTable (Write)
  • glue:DeleteTableOptimizer (Write)
  • glue:DeleteTableVersion (Write)
  • glue:DeleteWorkflow (Write)
  • glue:DescribeConnectionType (Permissions management)
  • glue:DescribeEntity (Permissions management)
  • glue:GetCatalog (Read)
  • glue:GetCatalogImportStatus (Read)
  • glue:GetCatalogs (Read)
  • glue:GetClassifier (Read)
  • glue:GetClassifiers (Read)
  • glue:GetColumnStatisticsForPartition (Read)
  • glue:GetColumnStatisticsForTable (Read)
  • glue:GetColumnStatisticsTaskRun (Read)
  • glue:GetColumnStatisticsTaskRuns (Read)
  • glue:GetColumnStatisticsTaskSettings (Read)
  • glue:GetCompletion (Read)
  • glue:GetConnection (Read)
  • glue:GetConnections (Read)
  • glue:GetDashboardUrl (Read)
  • glue:GetDataPreviewStatement (Permissions management)
  • glue:GetDataQualityModel (Read)
  • glue:GetDataQualityModelResult (Read)
  • glue:GetDataQualityResult (Read)
  • glue:GetDataQualityRuleRecommendationRun (Read)
  • glue:GetDataQualityRuleset (Read)
  • glue:GetDataQualityRulesetEvaluationRun (Read)
  • glue:GetDatabase (Read)
  • glue:GetDatabases (Read)
  • glue:GetEntityRecords (Read)
  • glue:GetGeneratedCode (Read)
  • glue:GetIntegrationTableProperties (Read)
  • glue:GetJob (Read)
  • glue:GetJobRun (Read)
  • glue:GetJobRuns (Read)
  • glue:GetPartition (Read)
  • glue:GetPartitionIndexes (Read)
  • glue:GetPartitions (Read)
  • glue:GetSession (Read)
  • glue:GetSessionEndpoint (Read)
  • glue:GetStatement (Read)
  • glue:GetSystemLogsForSession (Read)
  • glue:GetTable (Read)
  • glue:GetTableOptimizer (Read)
  • glue:GetTableVersion (Read)
  • glue:GetTableVersions (Read)
  • glue:GetTables (Read)
  • glue:GetTags (Read)
  • glue:GetUserDefinedFunction (Read)
  • glue:GetUserDefinedFunctions (Read)
  • glue:ListColumnStatisticsTaskRuns (Read)
  • glue:ListConnectionTypes (Permissions management)
  • glue:ListCrawls (List)
  • glue:ListDataQualityResults (List)
  • glue:ListDataQualityRuleRecommendationRuns (List)
  • glue:ListDataQualityRulesetEvaluationRuns (List)
  • glue:ListDataQualityRulesets (List)
  • glue:ListEntities (Permissions management)
  • glue:ListJobs (List)
  • glue:ListSessions (List)
  • glue:ListStatements (List)
  • glue:ListTableOptimizerRuns (List)
  • glue:ManagedConnector (Permissions management)
  • glue:NotifyEvent (Write)
  • glue:PassConnection (Write)
  • glue:PublishDataQuality (Write)
  • glue:PutDataQualityProfileAnnotation (Write)
  • glue:PutDataQualityStatisticAnnotation (Write)
  • glue:PutResourcePolicy (Permissions management)
  • glue:PutWorkflowRunProperties (Write)
  • glue:RefreshOAuth2Tokens (Permissions management)
  • glue:RenameTable (Write)
  • glue:ResumeWorkflowRun (Write)
  • glue:RunDataPreviewStatement (Permissions management)
  • glue:RunStatement (Write)
  • glue:SearchTables (Read)
  • glue:StartBlueprintRun (Write)
  • glue:StartColumnStatisticsTaskRun (Write)
  • glue:StartColumnStatisticsTaskRunSchedule (Write)
  • glue:StartCompletion (Write)
  • glue:StartDataQualityRuleRecommendationRun (Write)
  • glue:StartDataQualityRulesetEvaluationRun (Write)
  • glue:StartJobRun (Write)
  • glue:StartWorkflowRun (Write)
  • glue:StopColumnStatisticsTaskRun (Write)
  • glue:StopColumnStatisticsTaskRunSchedule (Write)
  • glue:StopSession (Write)
  • glue:StopWorkflowRun (Write)
  • glue:TagResource (Tagging)
  • glue:TestConnection (Permissions management)
  • glue:UntagResource (Tagging)
  • glue:UpdateBlueprint (Write)
  • glue:UpdateCatalog (Write)
  • glue:UpdateColumnStatisticsForPartition (Write)
  • glue:UpdateColumnStatisticsForTable (Write)
  • glue:UpdateColumnStatisticsTaskSettings (Write)
  • glue:UpdateDataQualityRuleset (Write)
  • glue:UpdateDatabase (Write)
  • glue:UpdateIntegrationTableProperties (Write)
  • glue:UpdateJob (Write)
  • glue:UpdatePartition (Write)
  • glue:UpdateTable (Write)
  • glue:UpdateTableOptimizer (Write)
  • glue:UpdateWorkflow (Write)
  • glue:UseGlueStudio (Permissions management)
IAM: 3 actions
  • iam:GetRole (Read)
  • iam:ListRoles (List)
  • iam:PassRole (Write)
KMS: 12 actions
  • kms:CreateGrant (Permissions management)
  • kms:Decrypt (Write)
  • kms:DescribeKey (Read)
  • kms:Encrypt (Write)
  • kms:GenerateDataKey (Write)
  • kms:GenerateDataKeyWithoutPlaintext (Write)
  • kms:GetPublicKey (Read)
  • kms:ListAliases (List)
  • kms:ListGrants (List)
  • kms:ReEncryptFrom (Write)
  • kms:ReEncryptTo (Write)
  • kms:RevokeGrant (Permissions management)
Lake Formation: 11 actions
  • lakeformation:BatchGrantPermissions (Permissions management)
  • lakeformation:BatchRevokePermissions (Permissions management)
  • lakeformation:CreateDataCellsFilter (Write)
  • lakeformation:DeleteDataCellsFilter (Write)
  • lakeformation:DescribeResource (Read)
  • lakeformation:GetDataAccess (Write)
  • lakeformation:GetDataCellsFilter (Read)
  • lakeformation:GetResourceLFTags (Read)
  • lakeformation:ListDataCellsFilter (List)
  • lakeformation:ListPermissions (List)
  • lakeformation:UpdateDataCellsFilter (Write)
CloudWatch Logs: 12 actions
  • logs:CreateLogGroup (Write)
  • logs:CreateLogStream (Write)
  • logs:DescribeLogGroups (List)
  • logs:DescribeLogStreams (List)
  • logs:FilterLogEvents (Read)
  • logs:GetLogEvents (Read)
  • logs:GetLogGroupFields (Read)
  • logs:GetLogRecord (Read)
  • logs:GetQueryResults (Read)
  • logs:PutLogEvents (Write)
  • logs:StartQuery (Read)
  • logs:StopQuery (Read)
Price List: 1 actions
  • pricing:GetProducts (Read)
Q: 2 actions
  • q:SendMessage (Write)
  • q:StartConversation (Write)
QuickSight: 12 actions
  • quicksight:CreateDataSet (Write)
  • quicksight:CreateFolderMembership (Write)
  • quicksight:DescribeAccountSubscription (Read)
  • quicksight:DescribeDataSet (Read)
  • quicksight:DescribeDataSource (Read)
  • quicksight:DescribeFolder (Read)
  • quicksight:DescribeFolderPermissions (Read)
  • quicksight:DescribeGroup (Read)
  • quicksight:DescribeUser (Read)
  • quicksight:ListFolderMembers (Read)
  • quicksight:PassDataSource (Read)
  • quicksight:TagResource (Tagging)
Resource Access Manager: 11 actions
  • ram:AcceptResourceShareInvitation (Write)
  • ram:AssociateResourceShare (Write)
  • ram:AssociateResourceSharePermission (Write)
  • ram:CreateResourceShare (Write)
  • ram:DeleteResourceShare (Write)
  • ram:DisassociateResourceShare (Write)
  • ram:GetResourceShareInvitations (Read)
  • ram:GetResourceShares (Read)
  • ram:ListResourceSharePermissions (List)
  • ram:ListResources (List)
  • ram:UpdateResourceShare (Write)
Redshift: 3 actions
  • redshift:DescribeClusters (List)
  • redshift:DescribeTags (Read)
  • redshift:GetClusterCredentialsWithIAM (Write)
Redshift Data API: 11 actions
  • redshift-data:BatchExecuteStatement (Write)
  • redshift-data:CancelStatement (Write)
  • redshift-data:DescribeStatement (Read)
  • redshift-data:DescribeTable (Read)
  • redshift-data:ExecuteStatement (Write)
  • redshift-data:GetStagingBucketLocation (Read)
  • redshift-data:GetStatementResult (Read)
  • redshift-data:ListDatabases (Read)
  • redshift-data:ListSchemas (Read)
  • redshift-data:ListStatements (List)
  • redshift-data:ListTables (List)
Redshift Serverless: 7 actions
  • redshift-serverless:GetCredentials (Write)
  • redshift-serverless:GetManagedWorkgroup (Read)
  • redshift-serverless:GetNamespace (Read)
  • redshift-serverless:GetWorkgroup (Read)
  • redshift-serverless:ListNamespaces (List)
  • redshift-serverless:ListTagsForResource (List)
  • redshift-serverless:ListWorkgroups (List)
S3: 14 actions
  • s3:GetAccountPublicAccessBlock (Read)
  • s3:GetBucketAcl (Read)
  • s3:GetBucketLocation (Read)
  • s3:GetBucketPublicAccessBlock (Read)
  • s3:GetEncryptionConfiguration (Read)
  • s3:GetObjectAnnotation (Read)
  • s3:GetObjectAttributes (Read)
  • s3:GetObjectTorrent (Read)
  • s3:GetObjectVersionAnnotation (Read)
  • s3:GetObjectVersionAnnotationForReplication (Read)
  • s3:GetObjectVersionAttributes (Read)
  • s3:GetObjectVersionForReplication (Read)
  • s3:GetObjectVersionTorrent (Read)
  • s3:ReplicateObject (Write)
EventBridge Scheduler: 5 actions
  • scheduler:CreateSchedule (Write)
  • scheduler:DeleteSchedule (Write)
  • scheduler:GetSchedule (Read)
  • scheduler:GetScheduleGroup (Read)
  • scheduler:UpdateSchedule (Write)
Secrets Manager: 4 actions
  • secretsmanager:DescribeSecret (Read)
  • secretsmanager:GetSecretValue (Read)
  • secretsmanager:ListSecrets (List)
  • secretsmanager:PutSecretValue (Write)
SQL Workbench: 32 actions
  • sqlworkbench:AssociateNotebookWithTab (Write)
  • sqlworkbench:BatchGetNotebookCell (Read)
  • sqlworkbench:CreateConnection (Write)
  • sqlworkbench:CreateNotebook (Write)
  • sqlworkbench:CreateNotebookCell (Write)
  • sqlworkbench:CreateNotebookFromVersion (Write)
  • sqlworkbench:CreateNotebookVersion (Write)
  • sqlworkbench:DeleteNotebook (Write)
  • sqlworkbench:DeleteNotebookCell (Write)
  • sqlworkbench:DeleteNotebookVersion (Write)
  • sqlworkbench:DeleteQCustomContext (Write)
  • sqlworkbench:DeleteTab (Write)
  • sqlworkbench:DriverExecute (Write)
  • sqlworkbench:ExportNotebook (Read)
  • sqlworkbench:GetAutocompletionMetadata (Read)
  • sqlworkbench:GetAutocompletionResource (Read)
  • sqlworkbench:GetNotebook (Read)
  • sqlworkbench:GetQCustomContext (Read)
  • sqlworkbench:GetQSqlPromptQuotas (Read)
  • sqlworkbench:GetQSqlRecommendations (Read)
  • sqlworkbench:GetQueryExecutionHistory (Read)
  • sqlworkbench:GetSchemaInference (Read)
  • sqlworkbench:GetUserInfo (Read)
  • sqlworkbench:ListQueryExecutionHistory (List)
  • sqlworkbench:ListTabs (List)
  • sqlworkbench:PassAccountSettings (Write)
  • sqlworkbench:PutQCustomContext (Write)
  • sqlworkbench:PutTab (Write)
  • sqlworkbench:TagResource (Tagging)
  • sqlworkbench:UpdateNotebook (Write)
  • sqlworkbench:UpdateNotebookCellContent (Write)
  • sqlworkbench:UpdateNotebookCellLayout (Write)
SQS: 6 actions
  • sqs:ChangeMessageVisibility (Write)
  • sqs:DeleteMessage (Write)
  • sqs:GetQueueAttributes (Read)
  • sqs:GetQueueUrl (Read)
  • sqs:ReceiveMessage (Read)
  • sqs:SendMessage (Write)
IAM Identity Center: 1 actions
  • sso:DescribeApplication (Read)
STS: 4 actions
  • sts:AssumeRole (Write)
  • sts:SetContext (Write)
  • sts:SetSourceIdentity (Write)
  • sts:TagSession (Tagging)
Resource Group Tagging: 1 actions
  • tag:GetResources (Read)

Data-plane actions (32)

By access level: 3 List, 17 Read, 1 Tagging, 11 Write.

Data-plane actions by service
ServiceGrantedAccess levels and limitsGranted by
MWAAAll 1 actions (see the MWAA page)1 Write; 1 restricted, 0 conditionalairflow:InvokeRestApi
Bedrock9 of 377 Read, 2 Write; 9 restricted, 9 conditionalbedrock:ApplyGuardrail, bedrock:GetDataAutomationStatus, bedrock:InvokeAgent, bedrock:InvokeDataAutomationAsync, bedrock:InvokeFlow, bedrock:InvokeInlineAgent, bedrock:InvokeModel, bedrock:Retrieve, bedrock:RetrieveAndGenerate
CloudWatch3 of 52 Read, 1 Write; 1 restricted, 1 conditionalcloudwatch:GetMetricData, cloudwatch:GetMetricStatistics, cloudwatch:PutMetricData
Lambda1 of 141 Write; 1 restricted, 1 conditionallambda:InvokeFunction
S318 of 253 List, 8 Read, 1 Tagging, 6 Write; 18 restricted, 18 conditionals3:AbortMultipartUpload, s3:DeleteObject, s3:DeleteObjectVersion, s3:GetObject*, s3:ListBucket, s3:ListBucketVersions, s3:ListMultipartUploadParts, s3:PutObject, s3:PutObjectRetention, s3:PutObjectTagging, s3:RestoreObject
Bedrock: 9 actions
  • bedrock:ApplyGuardrail (Read)
  • bedrock:GetDataAutomationStatus (Read)
  • bedrock:InvokeAgent (Read)
  • bedrock:InvokeDataAutomationAsync (Write)
  • bedrock:InvokeFlow (Read)
  • bedrock:InvokeInlineAgent (Read)
  • bedrock:InvokeModel (Read)
  • bedrock:Retrieve (Read)
  • bedrock:RetrieveAndGenerate (Write)
CloudWatch: 3 actions
  • cloudwatch:GetMetricData (Read)
  • cloudwatch:GetMetricStatistics (Read)
  • cloudwatch:PutMetricData (Write)
Lambda: 1 actions
  • lambda:InvokeFunction (Write)
S3: 18 actions
  • s3:AbortMultipartUpload (Write)
  • s3:DeleteObject (Write)
  • s3:DeleteObjectVersion (Write)
  • s3:GetObject (Read)
  • s3:GetObjectAcl (Read)
  • s3:GetObjectLegalHold (Read)
  • s3:GetObjectRetention (Read)
  • s3:GetObjectTagging (Read)
  • s3:GetObjectVersion (Read)
  • s3:GetObjectVersionAcl (Read)
  • s3:GetObjectVersionTagging (Read)
  • s3:ListBucket (List)
  • s3:ListBucketVersions (List)
  • s3:ListMultipartUploadParts (List)
  • s3:PutObject (Write)
  • s3:PutObjectRetention (Write)
  • s3:PutObjectTagging (Tagging)
  • s3:RestoreObject (Write)

Excluded and conditional actions

No patterns are excluded by NotAction or Deny statements.

Resource scope and attachment

Resource scope across granted actions: mixed.

Can be attached: Yes, to users, groups and roles.

Why this tier

  • Grants 272 write, tagging or permissions-management actions, short of full control of any service.
  • Grants data-plane write actions on a data store, but only for scoped resources or under conditions.
  • Grants iam:PassRole, but only for scoped roles or under conditions (for example iam:PassedToService).

Guidance

Pending editorial review. The permission data on this page comes straight from AWS; this section will be filled in once a reviewed guide exists.

Same service

Same domain

Frequently asked questions

Pending editorial review. The permission data on this page comes straight from AWS; this section will be filled in once a reviewed guide exists.

Policy JSON

Download policy.json

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CodeCommit",
      "Effect": "Allow",
      "Action": [
        "codecommit:BatchGetCommits",
        "codecommit:BatchGetPullRequests",
        "codecommit:BatchGetRepositories",
        "codecommit:BatchDescribeMergeConflicts",
        "codecommit:CreateBranch",
        "codecommit:CreateCommit",
        "codecommit:CreatePullRequest",
        "codecommit:DeleteBranch",
        "codecommit:DeleteFile",
        "codecommit:DescribeMergeConflicts",
        "codecommit:DescribePullRequestEvents",
        "codecommit:GetBlob",
        "codecommit:GetBranch",
        "codecommit:GetComment",
        "codecommit:GetCommentReactions",
        "codecommit:GetCommentsForComparedCommit",
        "codecommit:GetCommentsForPullRequest",
        "codecommit:GetCommit",
        "codecommit:GetCommitHistory",
        "codecommit:GetCommitsFromMergeBase",
        "codecommit:GetDifferences",
        "codecommit:GetFile",
        "codecommit:GetFolder",
        "codecommit:GetMergeCommit",
        "codecommit:GetMergeConflicts",
        "codecommit:GetMergeOptions",
        "codecommit:GetObjectIdentifier",
        "codecommit:GetPullRequest",
        "codecommit:GetPullRequestApprovalStates",
        "codecommit:GetPullRequestOverrideState",
        "codecommit:GetReferences",
        "codecommit:GetRepository",
        "codecommit:GetRepositoryTriggers",
        "codecommit:GetTree",
        "codecommit:GetUploadArchiveStatus",
        "codecommit:GitPull",
        "codecommit:GitPush",
        "codecommit:ListAssociatedApprovalRuleTemplatesForRepository",
        "codecommit:ListBranches",
        "codecommit:ListFileCommitHistory",
        "codecommit:ListPullRequests",
        "codecommit:ListTagsForResource",
        "codecommit:MergeBranchesByFastForward",
        "codecommit:MergeBranchesBySquash",
        "codecommit:MergeBranchesByThreeWay",
        "codecommit:MergePullRequestByFastForward",
        "codecommit:MergePullRequestBySquash",
        "codecommit:MergePullRequestByThreeWay",
        "codecommit:UpdateComment",
        "codecommit:UpdateDefaultBranch",
        "codecommit:UpdatePullRequestApprovalRuleContent",
        "codecommit:UpdatePullRequestApprovalState",
        "codecommit:UpdatePullRequestDescription",
        "codecommit:UpdatePullRequestStatus",
        "codecommit:UpdatePullRequestTitle",
        "codecommit:UpdateRepositoryDescription",
        "codecommit:PostCommentForComparedCommit",
        "codecommit:PostCommentForPullRequest",
        "codecommit:PostCommentReply",
        "codecommit:PutCommentReaction",
        "codecommit:PutFile"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "CodeCommitKms",
      "Effect": "Allow",
      "Action": [
        "kms:ReEncryptFrom",
        "kms:ReEncryptTo",
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlaintext"
      ],
      "Resource": "arn:aws:kms:*:*:key/${aws:PrincipalTag/KmsKeyId}",
      "Condition": {
        "Null": {
          "kms:EncryptionContext:aws:codecommit:id": "false"
        },
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        },
        "StringLike": {
          "kms:ViaService": [
            "codecommit.*.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "CodeWhisperer",
      "Effect": "Allow",
      "Action": [
        "codewhisperer:GenerateRecommendations"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowGlueCreateEni",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateNetworkInterface"
      ],
      "Resource": "arn:aws:ec2:*:*:network-interface/*",
      "Condition": {
        "Null": {
          "aws:TagKeys": "true"
        },
        "StringEquals": {
          "glue:RoleAssumedBy": "glue.amazonaws.com"
        }
      }
    },
    {
      "Sid": "GlueENIonSG",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateNetworkInterface"
      ],
      "Resource": "arn:aws:ec2:*:*:security-group/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}",
          "glue:RoleAssumedBy": "glue.amazonaws.com"
        }
      }
    },
    {
      "Sid": "GlueENIonSubnet",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateNetworkInterface"
      ],
      "Resource": "arn:aws:ec2:*:*:subnet/*",
      "Condition": {
        "StringEquals": {
          "glue:RoleAssumedBy": "glue.amazonaws.com"
        }
      }
    },
    {
      "Sid": "GlueNetwork",
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteNetworkInterface",
        "ec2:AttachNetworkInterface"
      ],
      "Resource": "arn:aws:ec2:*:*:network-interface/*",
      "Condition": {
        "Null": {
          "aws:ResourceTag/aws-glue-service-resource": "false"
        },
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}",
          "glue:RoleAssumedBy": "glue.amazonaws.com"
        }
      }
    },
    {
      "Sid": "GlueEniOnInstance",
      "Effect": "Allow",
      "Action": [
        "ec2:AttachNetworkInterface"
      ],
      "Resource": "arn:aws:ec2:*:*:instance/*",
      "Condition": {
        "StringEquals": {
          "glue:RoleAssumedBy": "glue.amazonaws.com"
        },
        "StringNotEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "AllowDescribeGlueEni",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeNetworkInterfaces"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "glue:RoleAssumedBy": "glue.amazonaws.com"
        }
      }
    },
    {
      "Sid": "GlueSecret",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:DescribeSecret",
        "secretsmanager:GetSecretValue"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}",
          "glue:RoleAssumedBy": "glue.amazonaws.com"
        }
      }
    },
    {
      "Sid": "GlueKernelPermissions",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcEndpoints",
        "ec2:DescribeSubnets",
        "ec2:DescribeRouteTables",
        "ec2:DescribeSecurityGroups",
        "glue:ListSessions",
        "ec2:DescribeVpcs"
      ],
      "Resource": "*"
    },
    {
      "Sid": "GlueCreateAndTagPermissions",
      "Effect": "Allow",
      "Action": [
        "glue:CreateSession",
        "glue:CreateBlueprint",
        "glue:CreateJob",
        "glue:CreateDataQualityRuleset",
        "glue:CreateWorkflow",
        "glue:TagResource"
      ],
      "Resource": [
        "arn:aws:glue:*:*:session/*",
        "arn:aws:glue:*:*:blueprint/*",
        "arn:aws:glue:*:*:job/*",
        "arn:aws:glue:*:*:dataQualityRuleset/*",
        "arn:aws:glue:*:*:workflow/*"
      ],
      "Condition": {
        "ForAllValues:StringLike": {
          "aws:TagKeys": [
            "AmazonDataZone*",
            "ProjectUserTag*"
          ]
        },
        "Null": {
          "aws:TagKeys": "false"
        },
        "StringEquals": {
          "aws:PrincipalTag/EnableGlueWorkloadsPermissions": "true",
          "aws:RequestTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}",
          "aws:ResourceAccount": "${aws:PrincipalAccount}",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "GlueTagSessionPermissions",
      "Effect": "Allow",
      "Action": [
        "glue:TagResource",
        "glue:UntagResource"
      ],
      "Resource": [
        "arn:aws:glue:*:*:session/*",
        "arn:aws:glue:*:*:blueprint/*",
        "arn:aws:glue:*:*:job/*",
        "arn:aws:glue:*:*:dataQualityRuleset/*",
        "arn:aws:glue:*:*:workflow/*"
      ],
      "Condition": {
        "ForAllValues:StringLike": {
          "aws:TagKeys": [
            "ProjectUserTag*"
          ]
        },
        "ForAllValues:StringNotLike": {
          "aws:TagKeys": [
            "AmazonDataZone*"
          ]
        },
        "StringEquals": {
          "aws:PrincipalTag/EnableGlueWorkloadsPermissions": "true",
          "aws:ResourceAccount": "${aws:PrincipalAccount}",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "GluePermissions",
      "Effect": "Allow",
      "Action": [
        "glue:*Session*",
        "glue:*Statement*",
        "glue:GetDashboardUrl",
        "glue:NotifyEvent",
        "glue:StartBlueprintRun",
        "glue:PutWorkflowRunProperties",
        "glue:DeleteJob",
        "glue:DeleteWorkflow",
        "glue:DeleteBlueprint",
        "glue:UpdateWorkflow",
        "glue:UpdateJob",
        "glue:StartWorkflowRun",
        "glue:ResumeWorkflowRun",
        "glue:UpdateBlueprint",
        "glue:BatchStopJobRun",
        "glue:StopWorkflowRun",
        "glue:StartJobRun",
        "glue:*DataQuality*",
        "glue:GetJobRun",
        "glue:GetJobRuns",
        "glue:BatchGetJobs",
        "glue:GetJob"
      ],
      "Resource": [
        "arn:aws:glue:*:*:session/*",
        "arn:aws:glue:*:*:blueprint/*",
        "arn:aws:glue:*:*:job/*",
        "arn:aws:glue:*:*:dataQualityRuleset/*",
        "arn:aws:glue:*:*:workflow/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableGlueWorkloadsPermissions": "true",
          "aws:ResourceAccount": "${aws:PrincipalAccount}",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "GlueDQ",
      "Effect": "Allow",
      "Action": "glue:ListDataQuality*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableGlueWorkloadsPermissions": "true"
        }
      }
    },
    {
      "Sid": "GlueDQVetl",
      "Effect": "Allow",
      "Action": [
        "glue:*DataQuality*"
      ],
      "Resource": [
        "arn:aws:glue:*:*:dataQualityRuleset/dq_etl_ruleset_${aws:PrincipalTag/AmazonDataZoneProject}_*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableGlueWorkloadsPermissions": "true"
        }
      }
    },
    {
      "Sid": "GlueListJobs",
      "Effect": "Allow",
      "Action": [
        "glue:ListJobs"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableGlueWorkloadsPermissions": "true",
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "GlueVisualETL",
      "Effect": "Allow",
      "Action": [
        "glue:GetGeneratedCode"
      ],
      "Resource": "*"
    },
    {
      "Sid": "GlueCompletions",
      "Effect": "Allow",
      "Action": [
        "glue:StartCompletion",
        "glue:GetCompletion"
      ],
      "Resource": [
        "arn:aws:glue:*:*:completion/*",
        "arn:aws:glue:*:*:job/*"
      ]
    },
    {
      "Sid": "GlueJobRunnerSessionLog",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:log-group:/aws-glue/*"
    },
    {
      "Sid": "EC2TagsForGlue",
      "Effect": "Allow",
      "Action": [
        "ec2:DeleteTags",
        "ec2:CreateTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:network-interface/*"
      ],
      "Condition": {
        "ForAllValues:StringLike": {
          "aws:TagKeys": [
            "aws-glue-*"
          ]
        },
        "Null": {
          "aws:TagKeys": "false"
        },
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}",
          "glue:RoleAssumedBy": "glue.amazonaws.com"
        }
      }
    },
    {
      "Sid": "GlueKmsPermissions",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": [
        "arn:aws:kms:*:*:key/${aws:PrincipalTag/DefaultGlueCatalogKmsKeyId}",
        "arn:aws:kms:*:*:key/${aws:PrincipalTag/KmsKeyId}"
      ],
      "Condition": {
        "StringEquals": {
          "kms:EncryptionContext:glue_catalog_id": "${aws:PrincipalAccount}"
        },
        "StringLike": {
          "kms:ViaService": [
            "glue.*.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "EMRS",
      "Effect": "Allow",
      "Action": [
        "emr-serverless:AccessInteractiveEndpoints",
        "emr-serverless:AccessLivyEndpoints",
        "emr-serverless:GetApplication",
        "emr-serverless:StartApplication",
        "emr-serverless:StopApplication",
        "emr-serverless:GetDashboardForJobRun",
        "emr-serverless:GetJobRun",
        "emr-serverless:*Session*",
        "emr-serverless:GetResourceDashboard",
        "emr-serverless:TagResource",
        "emr-serverless:StartJobRun"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "AirflowActionsForTaggedEnvironments",
      "Effect": "Allow",
      "Action": [
        "airflow:GetEnvironment",
        "airflow:UpdateEnvironment"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "AirflowListEnvironments",
      "Effect": "Allow",
      "Action": [
        "airflow:ListEnvironments"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AirflowUiApiAccess",
      "Effect": "Allow",
      "Action": [
        "airflow:CreateWebLoginToken",
        "airflow:InvokeRestApi"
      ],
      "Resource": [
        "arn:aws:airflow:*:*:role/DataZoneMWAAEnv-${aws:PrincipalTag/AmazonDataZoneDomain}-${aws:PrincipalTag/AmazonDataZoneProject}-${aws:PrincipalTag/AmazonDataZoneScopeName}/User"
      ]
    },
    {
      "Sid": "AirflowCloudwatchLogsActions",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogStream",
        "logs:CreateLogGroup",
        "logs:DescribeLogStreams",
        "logs:PutLogEvents",
        "logs:GetLogEvents",
        "logs:GetLogRecord",
        "logs:GetLogGroupFields",
        "logs:GetQueryResults"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:airflow-DataZoneMWAAEnv-${aws:PrincipalTag/AmazonDataZoneDomain}-${aws:PrincipalTag/AmazonDataZoneProject}-${aws:PrincipalTag/AmazonDataZoneScopeName}-*",
        "arn:aws:logs:*:*:log-group:/aws/bedrock-agentcore/agent-builder/${aws:PrincipalTag/AmazonDataZoneProject}/evaluations*"
      ]
    },
    {
      "Sid": "AirflowCloudwatchActions",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:PutMetricData"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "cloudwatch:namespace": "AmazonMWAA"
        }
      }
    },
    {
      "Sid": "CWPutMetrics",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:PutMetricData"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "cloudwatch:namespace": [
            "Glue",
            "AWS/Glue",
            "Glue Data Quality",
            "bedrock-agentcore"
          ]
        }
      }
    },
    {
      "Sid": "AirflowS3GetAccountPublicAccessBlock",
      "Effect": "Allow",
      "Action": "s3:GetAccountPublicAccessBlock",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "AirflowSqsActions",
      "Effect": "Allow",
      "Action": [
        "sqs:ChangeMessageVisibility",
        "sqs:DeleteMessage",
        "sqs:GetQueueAttributes",
        "sqs:GetQueueUrl",
        "sqs:ReceiveMessage",
        "sqs:SendMessage"
      ],
      "Resource": [
        "arn:aws:sqs:*:*:airflow-celery-*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "AirflowS3BucketActions",
      "Effect": "Allow",
      "Action": [
        "s3:GetEncryptionConfiguration",
        "s3:GetBucketPublicAccessBlock"
      ],
      "Resource": "arn:aws:s3:::${aws:PrincipalTag/DomainBucketName}",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "DataLakeS3BucketActions",
      "Effect": "Allow",
      "Action": [
        "s3:GetBucketLocation"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "DataLakeCrossAccountS3Permissions",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject*",
        "s3:ListMultipartUploadParts",
        "s3:ListBucket"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "DataLakeCrossAccountKMSPermissions",
      "Effect": "Allow",
      "Action": [
        "kms:ListGrants",
        "kms:GetPublicKey",
        "kms:DescribeKey"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "kms:ViaService": "s3.*.amazonaws.com"
        },
        "StringNotEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "XAcctKmsDecrypt",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt"
      ],
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "kms:EncryptionContextKeys": "aws:s3:arn"
        },
        "StringLike": {
          "kms:ViaService": "s3.*.amazonaws.com"
        },
        "StringNotEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "ListDomainS3BucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:ListBucketVersions"
      ],
      "Resource": "arn:aws:s3:::${aws:PrincipalTag/DomainBucketName}",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        },
        "StringLike": {
          "s3:prefix": [
            "${aws:PrincipalTag/AmazonDataZoneDomain}/${aws:PrincipalTag/AmazonDataZoneProject}",
            "${aws:PrincipalTag/AmazonDataZoneDomain}/${aws:PrincipalTag/AmazonDataZoneProject}/*"
          ]
        },
        "StringNotEquals": {
          "aws:PrincipalTag/AmazonDataZoneDomain": "",
          "aws:PrincipalTag/AmazonDataZoneProject": "",
          "aws:PrincipalTag/DomainBucketName": ""
        }
      }
    },
    {
      "Sid": "AirflowListDomainS3Permissions",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": "arn:aws:s3:::${aws:PrincipalTag/DomainBucketName}",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        },
        "StringNotEquals": {
          "aws:PrincipalTag/DomainBucketName": ""
        }
      }
    },
    {
      "Sid": "ListDomainBucketFromAthenaCatalog",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::${aws:PrincipalTag/DomainBucketName}"
      ],
      "Condition": {
        "ArnEquals": {
          "lambda:SourceFunctionArn": "arn:aws:lambda:*:*:function:athenafederatedcatalog_*"
        },
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "DomainS3BucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject*",
        "s3:PutObject",
        "s3:PutObjectRetention",
        "s3:RestoreObject",
        "s3:ReplicateObject",
        "s3:DeleteObject",
        "s3:DeleteObjectVersion",
        "s3:ListMultipartUploadParts",
        "s3:AbortMultipartUpload"
      ],
      "Resource": "arn:aws:s3:::${aws:PrincipalTag/DomainBucketName}/${aws:PrincipalTag/AmazonDataZoneDomain}/${aws:PrincipalTag/AmazonDataZoneProject}/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        },
        "StringNotEquals": {
          "aws:PrincipalTag/AmazonDataZoneDomain": "",
          "aws:PrincipalTag/AmazonDataZoneProject": "",
          "aws:PrincipalTag/DomainBucketName": ""
        }
      }
    },
    {
      "Sid": "S3BucketAcl",
      "Effect": "Allow",
      "Action": "s3:GetBucketAcl",
      "Resource": "arn:aws:s3:::${aws:PrincipalTag/DomainBucketName}",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "BREvalS3Tag",
      "Effect": "Allow",
      "Action": "s3:PutObjectTagging",
      "Resource": "arn:aws:s3:::${aws:PrincipalTag/DomainBucketName}/${aws:PrincipalTag/AmazonDataZoneDomain}/${aws:PrincipalTag/AmazonDataZoneProject}/genAI/assets/evaluations/*",
      "Condition": {
        "ForAllValues:StringEquals": {
          "s3:RequestObjectTagKeys": [
            "BasicValidationStatus",
            "ContainsReferenceResponseForAllPrompts"
          ]
        },
        "StringEquals": {
          "s3:RequestObjectTag/BasicValidationStatus": [
            "valid",
            "invalid"
          ],
          "s3:RequestObjectTag/ContainsReferenceResponseForAllPrompts": [
            "true",
            "false"
          ]
        },
        "StringNotEquals": {
          "aws:PrincipalTag/AmazonDataZoneDomain": "",
          "aws:PrincipalTag/AmazonDataZoneProject": "",
          "aws:PrincipalTag/DomainBucketName": ""
        }
      }
    },
    {
      "Sid": "DomainS3BucketKmsPermissions",
      "Effect": "Allow",
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:*:*:key/${aws:PrincipalTag/KmsKeyId}",
      "Condition": {
        "ArnLike": {
          "kms:EncryptionContext:aws:s3:arn": [
            "arn:aws:s3:::${aws:PrincipalTag/DomainBucketName}",
            "arn:aws:s3:::${aws:PrincipalTag/DomainBucketName}/*"
          ]
        },
        "StringLike": {
          "kms:ViaService": "s3.*.amazonaws.com"
        }
      }
    },
    {
      "Sid": "DZDomainKMSKeyXAcctPerm",
      "Effect": "Allow",
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:*:*:key/${aws:PrincipalTag/DomainKmsKeyId}",
      "Condition": {
        "StringEquals": {
          "kms:EncryptionContext:aws:datazone:domainId": "${aws:PrincipalTag/AmazonDataZoneDomain}"
        },
        "StringLike": {
          "kms:ViaService": "datazone.*.amazonaws.com"
        }
      }
    },
    {
      "Sid": "ListLogGroupsPermissions",
      "Effect": "Allow",
      "Action": [
        "logs:DescribeLogGroups"
      ],
      "Resource": "*"
    },
    {
      "Sid": "GlueJobLogGroup",
      "Effect": "Allow",
      "Action": [
        "logs:DescribeLogStreams",
        "logs:StartQuery",
        "logs:GetLogEvents",
        "logs:GetLogRecord",
        "logs:GetLogGroupFields",
        "logs:GetQueryResults",
        "logs:PutLogEvents",
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:FilterLogEvents"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:${aws:PrincipalTag/LogGroupName}/*"
      ]
    },
    {
      "Sid": "ProjectLogGroup",
      "Effect": "Allow",
      "Action": [
        "logs:DescribeLogStreams",
        "logs:StartQuery",
        "logs:GetLogEvents",
        "logs:GetLogRecord",
        "logs:GetLogGroupFields",
        "logs:GetQueryResults",
        "logs:PutLogEvents",
        "logs:CreateLogStream",
        "logs:FilterLogEvents"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:${aws:PrincipalTag/LogGroupName}",
        "arn:aws:logs:*:*:log-group:${aws:PrincipalTag/LogGroupName}:log-stream:*",
        "arn:aws:logs:*:*:log-group:/aws/bedrock-agentcore/agent-builder/${aws:PrincipalTag/AmazonDataZoneProject}/evaluations"
      ]
    },
    {
      "Sid": "CloudWatchStopQuery",
      "Effect": "Allow",
      "Action": [
        "logs:StopQuery"
      ],
      "Resource": "*"
    },
    {
      "Sid": "DataLakeAthenaPermissions",
      "Effect": "Allow",
      "Action": [
        "athena:TerminateSession",
        "athena:CreatePreparedStatement",
        "athena:StopCalculationExecution",
        "athena:StartQueryExecution",
        "athena:UpdatePreparedStatement",
        "athena:BatchGetNamedQuery",
        "athena:BatchGetPreparedStatement",
        "athena:BatchGetQueryExecution",
        "athena:UpdateNotebook",
        "athena:DeleteNotebook",
        "athena:DeletePreparedStatement",
        "athena:UpdateNotebookMetadata",
        "athena:DeleteNamedQuery",
        "athena:GetCalculationExecution",
        "athena:GetCalculationExecutionCode",
        "athena:GetCalculationExecutionStatus",
        "athena:GetNamedQuery",
        "athena:GetNotebookMetadata",
        "athena:GetPreparedStatement",
        "athena:GetQueryExecution",
        "athena:GetQueryResults",
        "athena:GetQueryResultsStream",
        "athena:GetQueryRuntimeStatistics",
        "athena:GetSession",
        "athena:GetSessionStatus",
        "athena:GetWorkGroup",
        "athena:UpdateNamedQuery",
        "athena:CreateNamedQuery",
        "athena:ExportNotebook",
        "athena:StopQueryExecution",
        "athena:StartCalculationExecution",
        "athena:StartSession",
        "athena:CreatePresignedNotebookUrl",
        "athena:CreateNotebook",
        "athena:ImportNotebook",
        "athena:ListQueryExecutions",
        "athena:ListTagsForResource",
        "athena:ListNamedQueries",
        "athena:ListPreparedStatements"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "AthenaDataCatalogPermissions",
      "Effect": "Allow",
      "Action": [
        "athena:GetDatabase",
        "athena:GetDataCatalog",
        "athena:GetTableMetadata",
        "athena:ListDatabases",
        "athena:ListTableMetadata"
      ],
      "Resource": [
        "arn:aws:athena:*:*:datacatalog/AwsDataCatalog",
        "arn:aws:athena:*:*:datacatalog/awsdatacatalog"
      ]
    },
    {
      "Sid": "AthenaListPermissions",
      "Effect": "Allow",
      "Action": [
        "athena:ListDataCatalogs",
        "athena:ListEngineVersions",
        "athena:ListWorkGroups"
      ],
      "Resource": "*"
    },
    {
      "Sid": "DataZoneUserPermissions",
      "Effect": "Allow",
      "Action": [
        "datazone:CreateConnection",
        "datazone:DeleteConnection",
        "datazone:GetConnection",
        "datazone:GetDomain",
        "datazone:GetDomainExecutionRoleCredentials",
        "datazone:GetEnvironment",
        "datazone:GetEnvironmentBlueprintConfiguration",
        "datazone:GetProject",
        "datazone:GetUserProfile",
        "datazone:ListConnections",
        "datazone:ListEnvironments",
        "datazone:ListEnvironmentBlueprints",
        "datazone:ListProjects",
        "datazone:UpdateConnection",
        "datazone:PostLineageEvent",
        "datazone:*Compute*"
      ],
      "Resource": "arn:aws:datazone:*:*:domain/${aws:PrincipalTag/AmazonDataZoneDomain}"
    },
    {
      "Sid": "CodeConnectionsUser",
      "Effect": "Allow",
      "Action": [
        "codeconnections:GetConnection",
        "codeconnections:UseConnection",
        "codestar-connections:GetConnection",
        "codestar-connections:UseConnection"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-all-datazone-projects": "true"
        }
      }
    },
    {
      "Sid": "GlueGetDefaultDatabase",
      "Effect": "Allow",
      "Action": [
        "glue:GetDatabase"
      ],
      "Resource": [
        "arn:aws:glue:*:*:catalog",
        "arn:aws:glue:*:*:database/default"
      ]
    },
    {
      "Sid": "AllowGlueGetDatabasesExceptDefault",
      "Effect": "Allow",
      "Action": "glue:GetDatabases",
      "NotResource": "arn:aws:glue:*:*:database/default",
      "Condition": {
        "StringEquals": {
          "glue:LakeFormationPermissions": "Enabled"
        }
      }
    },
    {
      "Sid": "GlueListDatabasesOnNoDatabases",
      "Effect": "Allow",
      "Action": [
        "glue:GetDatabases"
      ],
      "Resource": "arn:aws:glue:*:*:catalog"
    },
    {
      "Sid": "GlueFileUploadPermissions",
      "Effect": "Allow",
      "Action": [
        "glue:GetClassifier",
        "glue:GetClassifiers",
        "glue:UseGlueStudio"
      ],
      "Resource": "*"
    },
    {
      "Sid": "GlueProjectConnectionPermissions",
      "Effect": "Allow",
      "Action": [
        "glue:PassConnection",
        "glue:GetConnection",
        "glue:GetConnections",
        "glue:RefreshOAuth2Tokens"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "GlueGetConnectionOnlyOnCatalog",
      "Effect": "Allow",
      "Action": [
        "glue:GetConnection",
        "glue:GetConnections",
        "glue:RefreshOAuth2Tokens"
      ],
      "Resource": "arn:aws:glue:*:*:catalog"
    },
    {
      "Sid": "GlueDatalakePermissions",
      "Effect": "Allow",
      "Action": [
        "glue:CreateTable",
        "glue:DeleteTable",
        "glue:BatchDeleteTable",
        "glue:UpdateTable",
        "glue:BatchCreatePartition",
        "glue:CreatePartition",
        "glue:DeletePartition",
        "glue:BatchDeletePartition",
        "glue:UpdatePartition",
        "glue:BatchGetPartition",
        "glue:BatchGetTableOptimizer",
        "glue:GetCatalogImportStatus",
        "glue:GetColumnStatisticsForPartition",
        "glue:GetColumnStatisticsForTable",
        "glue:GetColumnStatisticsTaskRun",
        "glue:GetColumnStatisticsTaskRuns",
        "glue:GetDatabase",
        "glue:DeleteDatabase",
        "glue:GetPartition",
        "glue:GetPartitionIndexes",
        "glue:GetPartitions",
        "glue:GetTable",
        "glue:GetTableOptimizer",
        "glue:GetTableVersion",
        "glue:GetTableVersions",
        "glue:GetTables",
        "glue:SearchTables",
        "glue:ListTableOptimizerRuns",
        "glue:CreatePartitionIndex",
        "glue:BatchUpdatePartition",
        "glue:DeleteTableVersion",
        "glue:DeleteColumnStatisticsForPartition",
        "glue:DeleteColumnStatisticsForTable",
        "glue:DeletePartitionIndex",
        "glue:UpdateColumnStatisticsForPartition",
        "glue:UpdateColumnStatisticsForTable",
        "glue:BatchDeleteTableVersion",
        "glue:GetCatalogs",
        "glue:GetCatalog"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "glue:LakeFormationPermissions": "Enabled"
        }
      }
    },
    {
      "Sid": "S3TCatalogPermissions",
      "Effect": "Allow",
      "Action": [
        "glue:*ColumnStatistics*",
        "glue:*Database*",
        "glue:*Partition*",
        "glue:*Table*",
        "glue:GetCatalog*",
        "glue:GetUserDefinedFunction*"
      ],
      "Resource": "arn:*:glue:*:*:catalog/s3tablescatalog"
    },
    {
      "Sid": "GlueCrawler",
      "Effect": "Allow",
      "Action": "glue:ListCrawls",
      "Resource": "arn:aws:glue:*:*:crawler/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "GlueGlobalTempDb",
      "Effect": "Allow",
      "Action": [
        "glue:CreateDatabase",
        "glue:DeleteDatabase",
        "glue:GetDatabase"
      ],
      "Resource": [
        "arn:aws:glue:*:*:database/global_temp",
        "arn:aws:glue:*:*:catalog"
      ]
    },
    {
      "Sid": "GlueDefaultCatalogs",
      "Effect": "Allow",
      "Action": [
        "glue:GetCatalog",
        "glue:UpdateCatalog"
      ],
      "Resource": [
        "arn:aws:glue:*:*:catalog"
      ],
      "Condition": {
        "StringEquals": {
          "glue:LakeFormationPermissions": "Enabled"
        }
      }
    },
    {
      "Sid": "GlueNonDefaultCatalogs",
      "Effect": "Allow",
      "Action": [
        "glue:GetCatalog",
        "glue:UpdateCatalog"
      ],
      "Resource": [
        "arn:aws:glue:*:*:catalog/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}",
          "glue:LakeFormationPermissions": "Enabled"
        }
      }
    },
    {
      "Sid": "GlueCatalogDb",
      "Effect": "Allow",
      "Action": [
        "glue:CreateDatabase",
        "glue:DeleteDatabase",
        "glue:GetDatabase"
      ],
      "Resource": [
        "arn:aws:glue:*:*:database/*",
        "arn:aws:glue:*:*:catalog/*"
      ]
    },
    {
      "Sid": "LFforDL",
      "Effect": "Allow",
      "Action": [
        "lakeformation:GetDataAccess",
        "lakeformation:GetResourceLFTags"
      ],
      "Resource": "*"
    },
    {
      "Sid": "IAMListRoles",
      "Effect": "Allow",
      "Action": [
        "iam:ListRoles"
      ],
      "Resource": "*"
    },
    {
      "Sid": "IAMGetRole",
      "Effect": "Allow",
      "Action": [
        "iam:GetRole"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "AllowAssumeAccessRole",
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRole"
      ],
      "Resource": "*",
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalTag/AmazonDataZoneProject": ""
        }
      }
    },
    {
      "Sid": "SetSourceIdentityForAssumeAccessRole",
      "Effect": "Allow",
      "Action": "sts:SetSourceIdentity",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "sts:SourceIdentity": "${aws:PrincipalTag/datazone:userId}"
        }
      }
    },
    {
      "Sid": "TagSessionForAssumeAccessRole",
      "Effect": "Allow",
      "Action": "sts:TagSession",
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "AmazonDataZoneProject",
            "AmazonDataZoneDomain"
          ]
        },
        "StringEquals": {
          "aws:RequestTag/AmazonDataZoneDomain": "${aws:PrincipalTag/AmazonDataZoneDomain}",
          "aws:RequestTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "SetContextForTIP",
      "Effect": "Allow",
      "Action": [
        "sts:SetContext"
      ],
      "Resource": [
        "arn:aws:sts::*:self"
      ],
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:CalledVia": [
            "sqlworkbench.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "StsContext",
      "Effect": "Allow",
      "Action": "sts:SetContext",
      "Resource": "*",
      "Condition": {
        "ForAllValues:ArnEquals": {
          "sts:RequestContextProviders": [
            "arn:aws:iam::aws:contextProvider/IdentityCenter"
          ]
        },
        "Null": {
          "sts:RequestContextProviders": "false"
        }
      }
    },
    {
      "Sid": "GlueConnectionPermissions",
      "Effect": "Allow",
      "Action": [
        "glue:GetConnection",
        "glue:GetConnections",
        "glue:GetTags"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "UnrestrictedAccessGlueEntities",
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType"
      ],
      "Resource": "*"
    },
    {
      "Sid": "GlueEntities",
      "Effect": "Allow",
      "Action": [
        "glue:ListEntities",
        "glue:DescribeEntity",
        "glue:GetEntityRecords"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowPassRoleOnProjectRoles",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": "arn:aws:iam::*:role/${aws:PrincipalTag/RoleName}",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}",
          "iam:PassedToService": [
            "airflow-serverless.amazonaws.com",
            "sagemaker.amazonaws.com",
            "glue.amazonaws.com",
            "airflow.amazonaws.com",
            "emr-serverless.amazonaws.com",
            "elasticmapreduce.amazonaws.com",
            "scheduler.amazonaws.com",
            "access-grants.s3.amazonaws.com",
            "pods.eks.amazonaws.com",
            "bedrock-agentcore.amazonaws.com",
            "agent-registry.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "SQLWorkBench",
      "Effect": "Allow",
      "Action": [
        "sqlworkbench:PutTab",
        "sqlworkbench:DeleteTab",
        "sqlworkbench:DriverExecute",
        "sqlworkbench:GetUserInfo",
        "sqlworkbench:ListTabs",
        "sqlworkbench:GetAutocompletion*",
        "sqlworkbench:PassAccountSettings",
        "sqlworkbench:ListQueryExecutionHistory",
        "sqlworkbench:GetQueryExecutionHistory",
        "sqlworkbench:CreateConnection",
        "sqlworkbench:*QCustomContext",
        "sqlworkbench:GetQSql*",
        "sqlworkbench:GetSchemaInference"
      ],
      "Resource": "*"
    },
    {
      "Sid": "SQLWorkBenchActions",
      "Effect": "Allow",
      "Action": "sqlworkbench:AssociateNotebookWithTab",
      "Resource": "arn:*:sqlworkbench:*:*:notebook/*"
    },
    {
      "Sid": "SQLWorkBenchNotebookActions",
      "Effect": "Allow",
      "Action": [
        "sqlworkbench:CreateNotebook*",
        "sqlworkbench:GetNotebook",
        "sqlworkbench:UpdateNotebook*",
        "sqlworkbench:DeleteNotebook*",
        "sqlworkbench:ExportNotebook",
        "sqlworkbench:BatchGetNotebookCell",
        "sqlworkbench:TagResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}",
          "aws:ResourceTag/sqlworkbench-resource-owner": "${aws:userid}"
        }
      }
    },
    {
      "Sid": "RSDataIAMSession",
      "Effect": "Allow",
      "Action": [
        "redshift-data:DescribeStatement",
        "redshift-data:GetStatementResult",
        "redshift-data:CancelStatement",
        "redshift-data:ListStatements"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "redshift-data:statement-owner-iam-userid": "${aws:userid}"
        }
      }
    },
    {
      "Sid": "RedshiftDataActions",
      "Effect": "Allow",
      "Action": [
        "redshift-data:BatchExecuteStatement",
        "redshift-data:ExecuteStatement",
        "redshift-data:DescribeTable",
        "redshift-data:ListDatabases",
        "redshift-data:ListSchemas",
        "redshift-data:ListTables"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "ExistingRedshiftCompute",
      "Effect": "Allow",
      "Action": [
        "redshift-serverless:GetWorkgroup",
        "redshift-serverless:GetNamespace",
        "redshift-serverless:ListTagsForResource",
        "redshift-serverless:GetCredentials",
        "redshift:DescribeTags",
        "redshift:GetClusterCredentialsWithIAM",
        "redshift-data:BatchExecuteStatement",
        "redshift-data:ExecuteStatement",
        "redshift-data:DescribeTable",
        "redshift-data:ListDatabases",
        "redshift-data:ListSchemas",
        "redshift-data:ListTables"
      ],
      "Resource": "*",
      "Condition": {
        "Null": {
          "aws:ResourceTag/AmazonDataZoneEnvironment": "true"
        },
        "StringEquals": {
          "aws:ResourceTag/for-use-with-all-datazone-projects": "true"
        }
      }
    },
    {
      "Sid": "RedshiftWithoutResourceType",
      "Effect": "Allow",
      "Action": [
        "redshift-serverless:ListNamespaces",
        "redshift-serverless:ListWorkgroups",
        "redshift:DescribeClusters"
      ],
      "Resource": "*"
    },
    {
      "Sid": "RSWgTagged",
      "Effect": "Allow",
      "Action": [
        "redshift-serverless:GetWorkgroup",
        "redshift-serverless:ListTagsForResource",
        "redshift-serverless:GetNamespace",
        "redshift:DescribeTags"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "RSExistCatalog",
      "Effect": "Allow",
      "Action": [
        "redshift:GetClusterCredentialsWithIAM"
      ],
      "Resource": "arn:aws:redshift:*:*:dbname:*/*",
      "Condition": {
        "Bool": {
          "aws:ViaAWSService": "true"
        }
      }
    },
    {
      "Sid": "AllowListSecrets",
      "Effect": "Allow",
      "Action": "secretsmanager:ListSecrets",
      "Resource": "*"
    },
    {
      "Sid": "ComputeCredentials",
      "Effect": "Allow",
      "Action": [
        "emr-containers:*ManagedEndpoint*",
        "emr-containers:TagResource",
        "emr-containers:DescribeSecurityConfiguration",
        "emr-containers:DescribeVirtualCluster",
        "redshift-serverless:GetCredentials",
        "redshift:GetClusterCredentialsWithIAM"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "RSDataMWg",
      "Effect": "Allow",
      "Action": [
        "redshift-data:BatchExecuteStatement",
        "redshift-data:ExecuteStatement",
        "redshift-data:DescribeStatement",
        "redshift-data:GetStatementResult",
        "redshift-data:CancelStatement",
        "redshift-data:GetStagingBucketLocation",
        "redshift-serverless:GetManagedWorkgroup"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "redshift-data:glue-catalog-arn": "arn:aws:glue:*:*:catalog/*"
        }
      }
    },
    {
      "Sid": "RssCreds",
      "Effect": "Allow",
      "Action": [
        "redshift-serverless:GetCredentials"
      ],
      "Resource": "arn:aws:redshift-serverless:*:*:workgroup/*",
      "Condition": {
        "Bool": {
          "aws:ViaAWSService": "true"
        },
        "ForAnyValue:StringEquals": {
          "aws:CalledVia": [
            "redshift-data.amazonaws.com",
            "sqlworkbench.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "AllowTagGetResources",
      "Effect": "Allow",
      "Action": "tag:GetResources",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:CalledViaLast": "sqlworkbench.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AllowGetSecretForRedShift",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue",
        "secretsmanager:PutSecretValue"
      ],
      "Resource": "arn:aws:secretsmanager:*:*:secret:*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "CloudWatchMetricsPermissions",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:GetMetricData",
        "cloudwatch:GetMetricStatistics"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AmazonQChatPermissions",
      "Effect": "Allow",
      "Action": [
        "q:StartConversation",
        "q:SendMessage"
      ],
      "Resource": "*"
    },
    {
      "Sid": "EMRClusterWithDataZoneTags",
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:DescribeCluster",
        "elasticmapreduce:ListInstances",
        "elasticmapreduce:ListInstanceFleets",
        "elasticmapreduce:ListInstanceGroups",
        "elasticmapreduce:ListBootstrapActions",
        "elasticmapreduce:GetManagedScalingPolicy",
        "elasticmapreduce:GetOnClusterAppUIPresignedURL",
        "elasticmapreduce:*Session*",
        "elasticmapreduce:AddTags"
      ],
      "Resource": [
        "arn:aws:elasticmapreduce:*:*:cluster/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "EMRClusterInfoPermissions",
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:ListReleaseLabels",
        "elasticmapreduce:ListSupportedInstanceTypes",
        "elasticmapreduce:ListClusters",
        "elasticmapreduce:CreatePersistentAppUI",
        "elasticmapreduce:DescribePersistentAppUI",
        "pricing:GetProducts"
      ],
      "Resource": "*"
    },
    {
      "Sid": "EMRGetClusterSessionCreds",
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:GetClusterSessionCredentials"
      ],
      "Resource": [
        "arn:aws:elasticmapreduce:*:*:cluster/*"
      ],
      "Condition": {
        "ArnLike": {
          "elasticmapreduce:ExecutionRoleArn": "arn:aws:iam::*:role/${aws:PrincipalTag/RoleName}"
        },
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "EmrContainersSSO",
      "Effect": "Allow",
      "Action": [
        "sso:DescribeApplication"
      ],
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringLike": {
          "aws:CalledVia": [
            "emr-containers.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "EMRPersistentAppUI",
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:GetPersistentAppUIPresignedURL"
      ],
      "Resource": "*",
      "Condition": {
        "ArnLike": {
          "elasticmapreduce:ExecutionRoleArn": "arn:aws:iam::*:role/${aws:PrincipalTag/RoleName}"
        }
      }
    },
    {
      "Sid": "KmsWithEncrypt",
      "Effect": "Allow",
      "Action": [
        "kms:CreateGrant",
        "kms:ReEncryptFrom",
        "kms:ReEncryptTo",
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlaintext"
      ],
      "Resource": "arn:aws:kms:*:*:key/${aws:PrincipalTag/KmsKeyId}",
      "Condition": {
        "Null": {
          "kms:EncryptionContextKeys": "false"
        },
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        },
        "StringLike": {
          "kms:ViaService": [
            "datazone.*.amazonaws.com",
            "sqs.*.amazonaws.com",
            "sagemaker.*.amazonaws.com",
            "bedrock.*.amazonaws.com",
            "s3.*.amazonaws.com",
            "scheduler.*.amazonaws.com",
            "glue.*.amazonaws.com",
            "secretsmanager.*.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "EBDecrypt",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:*:*:key/${aws:PrincipalTag/KmsKeyId}",
      "Condition": {
        "Null": {
          "kms:EncryptionContext:aws:scheduler:schedule:arn": "false"
        }
      }
    },
    {
      "Sid": "KmsPermissions",
      "Effect": "Allow",
      "Action": [
        "kms:CreateGrant",
        "kms:ReEncryptFrom",
        "kms:ReEncryptTo",
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlaintext"
      ],
      "Resource": "arn:aws:kms:*:*:key/${aws:PrincipalTag/KmsKeyId}",
      "Condition": {
        "Null": {
          "kms:EncryptionContextKeys": "false"
        },
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        },
        "StringLike": {
          "kms:ViaService": [
            "emr-serverless.*.amazonaws.com",
            "redshift.*.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "KmsManagement",
      "Effect": "Allow",
      "Action": [
        "kms:ListGrants",
        "kms:RevokeGrant",
        "kms:DescribeKey"
      ],
      "Resource": "arn:aws:kms:*:*:key/${aws:PrincipalTag/KmsKeyId}",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        },
        "StringLike": {
          "kms:ViaService": [
            "sqs.*.amazonaws.com",
            "sagemaker.*.amazonaws.com",
            "emr-serverless.*.amazonaws.com",
            "s3.*.amazonaws.com",
            "redshift.*.amazonaws.com",
            "codecommit.*.amazonaws.com",
            "scheduler.*.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "AwsOwnedKmsKeyPermissions",
      "Effect": "Allow",
      "Action": [
        "kms:CreateGrant",
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlaintext"
      ],
      "Resource": [
        "arn:aws:kms:*:*:key/*"
      ],
      "Condition": {
        "Null": {
          "kms:EncryptionContextKeys": "false"
        },
        "StringLike": {
          "kms:ViaService": [
            "s3.*.amazonaws.com",
            "sqs.*.amazonaws.com",
            "sagemaker.*.amazonaws.com"
          ]
        },
        "StringNotEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "AwsOwnedKmsManagement",
      "Effect": "Allow",
      "Action": [
        "kms:DescribeKey"
      ],
      "Resource": [
        "arn:aws:kms:*:*:key/*"
      ],
      "Condition": {
        "StringLike": {
          "kms:ViaService": [
            "sqs.*.amazonaws.com",
            "sagemaker.*.amazonaws.com"
          ]
        },
        "StringNotEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "ListKMS",
      "Effect": "Allow",
      "Action": [
        "kms:ListAliases"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "EC2PermissionsForNotebookExecution",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeInstanceTypes"
      ],
      "Resource": "*"
    },
    {
      "Sid": "InvokeBRModel",
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": [
        "arn:aws:bedrock:*::foundation-model/*",
        "arn:aws:bedrock:*:*:custom-model/*",
        "arn:aws:bedrock:*:*:provisioned-model/*"
      ],
      "Condition": {
        "Null": {
          "bedrock:InferenceProfileArn": "false"
        },
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockIDEPermissions": "true"
        }
      }
    },
    {
      "Sid": "BedrockInvokeModelPermissions",
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": [
        "arn:aws:bedrock:*::foundation-model/*",
        "arn:aws:bedrock:*:*:custom-model/*",
        "arn:aws:bedrock:*:*:provisioned-model/*"
      ],
      "Condition": {
        "ArnLike": {
          "bedrock:InferenceProfileArn": "arn:aws:bedrock:*:*:application-inference-profile/*"
        },
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockPermissions": "true"
        }
      }
    },
    {
      "Sid": "ACInvoke",
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": [
        "arn:aws:bedrock:*:*:inference-profile/*",
        "arn:aws:bedrock:*::foundation-model/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockPermissions": "true"
        }
      }
    },
    {
      "Sid": "InvokeBedrockModel",
      "Effect": "Allow",
      "Action": [
        "bedrock:GetInferenceProfile",
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": "arn:aws:bedrock:*:*:application-inference-profile/*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockIDEPermissions": "true",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "BRInvokeAppProfile",
      "Effect": "Allow",
      "Action": [
        "bedrock:GetInferenceProfile",
        "bedrock:InvokeModel",
        "bedrock:InvokeModelWithResponseStream"
      ],
      "Resource": "arn:aws:bedrock:*:*:application-inference-profile/*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockPermissions": "true",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "AccessBedrockResourcePermissions",
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeAgent",
        "bedrock:Retrieve",
        "bedrock:ListIngestionJobs",
        "bedrock:StartIngestionJob",
        "bedrock:GetIngestionJob",
        "bedrock:ApplyGuardrail",
        "bedrock:ListPrompts",
        "bedrock:GetPrompt",
        "bedrock:CreatePrompt",
        "bedrock:DeletePrompt",
        "bedrock:CreatePromptVersion",
        "bedrock:InvokeFlow",
        "bedrock:GetEvaluationJob",
        "bedrock:CreateEvaluationJob",
        "bedrock:StopEvaluationJob",
        "bedrock:BatchDeleteEvaluationJob",
        "bedrock:ListTagsForResource",
        "bedrock:CreateAgentAlias",
        "bedrock:ListAgentAliases",
        "bedrock:GetAgentVersion",
        "bedrock:ListAgentVersions",
        "bedrock:DeleteAgentVersion",
        "bedrock:DeleteAgentAlias",
        "bedrock:GetAgentAlias",
        "bedrock:UpdateAgentAlias"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockIDEPermissions": "true",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "BedrockResourceAccessPermissions",
      "Effect": "Allow",
      "Action": [
        "bedrock:ApplyGuardrail",
        "bedrock:BatchDeleteEvaluationJob",
        "bedrock:CreateAgentAlias",
        "bedrock:CreateBlueprint",
        "bedrock:CreateBlueprintVersion",
        "bedrock:CreateDataAutomationProject",
        "bedrock:CreateEvaluationJob",
        "bedrock:CreatePrompt",
        "bedrock:CreatePromptVersion",
        "bedrock:DeleteAgentAlias",
        "bedrock:DeleteAgentVersion",
        "bedrock:DeleteBlueprint",
        "bedrock:DeleteDataAutomationProject",
        "bedrock:DeletePrompt",
        "bedrock:GetAgentAlias",
        "bedrock:GetAgentVersion",
        "bedrock:GetBlueprint",
        "bedrock:GetDataAutomationProject",
        "bedrock:GetDataAutomationStatus",
        "bedrock:GetEvaluationJob",
        "bedrock:GetKnowledgeBase",
        "bedrock:GetIngestionJob",
        "bedrock:GetPrompt",
        "bedrock:InvokeAgent",
        "bedrock:InvokeDataAutomationAsync",
        "bedrock:InvokeFlow",
        "bedrock:ListAgentAliases",
        "bedrock:ListAgentVersions",
        "bedrock:ListIngestionJobs",
        "bedrock:ListPrompts",
        "bedrock:ListTagsForResource",
        "bedrock:Retrieve",
        "bedrock:StartIngestionJob",
        "bedrock:StopEvaluationJob",
        "bedrock:UpdateAgentAlias",
        "bedrock:UpdateBlueprint",
        "bedrock:UpdateDataAutomationProject",
        "bedrock:ListAgentActionGroups",
        "bedrock:ListAgentKnowledgeBases"
      ],
      "Resource": "arn:aws:bedrock:*:*:*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockPermissions": "true",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "BREvalFM",
      "Effect": "Allow",
      "Action": "bedrock:CreateEvaluationJob",
      "Resource": [
        "arn:aws:bedrock:*::foundation-model/*",
        "arn:aws:bedrock:*:*:custom-model/*"
      ]
    },
    {
      "Sid": "BRCreateEval",
      "Effect": "Allow",
      "Action": "bedrock:CreateEvaluationJob",
      "Resource": [
        "arn:aws:bedrock:*:*:custom-model/*",
        "arn:aws:bedrock:*::foundation-model/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockPermissions": "true"
        }
      }
    },
    {
      "Sid": "InvokeDataAutomationAsyncPermissions",
      "Effect": "Allow",
      "Action": [
        "bedrock:InvokeDataAutomationAsync"
      ],
      "Resource": [
        "arn:aws:bedrock:*:*:data-automation-profile/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockPermissions": "true"
        }
      }
    },
    {
      "Sid": "InvokeBedrockInlineAgentPermissions",
      "Effect": "Allow",
      "Action": "bedrock:InvokeInlineAgent",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockIDEPermissions": "true",
          "bedrock:InlineAgentName": "${datazone:userId}"
        },
        "StringNotEquals": {
          "bedrock:InlineAgentName": ""
        }
      }
    },
    {
      "Sid": "BedrockInvokeInlineAgentPermissions",
      "Effect": "Allow",
      "Action": "bedrock:InvokeInlineAgent",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockPermissions": "true",
          "bedrock:InlineAgentName": "${datazone:userId}"
        },
        "StringNotEquals": {
          "bedrock:InlineAgentName": ""
        }
      }
    },
    {
      "Sid": "BRRAG",
      "Effect": "Allow",
      "Action": "bedrock:RetrieveAndGenerate",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockIDEPermissions": "true"
        }
      }
    },
    {
      "Sid": "ListBedrockEvaluationJobPermissions",
      "Effect": "Allow",
      "Action": "bedrock:ListEvaluationJobs",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockIDEPermissions": "true"
        }
      }
    },
    {
      "Sid": "BedrockNoResourcePermissions",
      "Effect": "Allow",
      "Action": [
        "bedrock:ListEvaluationJobs",
        "bedrock:RetrieveAndGenerate",
        "bedrock:ListFoundationModels",
        "bedrock:ListInferenceProfiles",
        "bedrock:ListKnowledgeBases"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockPermissions": "true"
        }
      }
    },
    {
      "Sid": "PassRoleToBedrockEvaluation",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::*:role/AmazonBedrockEvaluationRole-${aws:PrincipalTag/AmazonDataZoneProject}-*",
        "arn:aws:iam::*:role/AmazonBedrockServiceRole-${aws:PrincipalTag/AmazonDataZoneProject}-*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockIDEPermissions": "true",
          "iam:PassedToService": [
            "bedrock.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "IamPassRoleToBedrock",
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": [
        "arn:aws:iam::*:role/AmazonBedrockEvaluationRole-${aws:PrincipalTag/AmazonDataZoneProject}-*",
        "arn:aws:iam::*:role/AmazonBedrockServiceRole-${aws:PrincipalTag/AmazonDataZoneProject}-*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockPermissions": "true",
          "iam:PassedToService": "bedrock.amazonaws.com"
        }
      }
    },
    {
      "Sid": "TagBedrockResourcePermissions",
      "Effect": "Allow",
      "Action": "bedrock:TagResource",
      "Resource": "*",
      "Condition": {
        "ForAllValues:StringLike": {
          "aws:TagKeys": [
            "AmazonDataZone*",
            "AmazonBedrockManaged",
            "ProjectUserTag*"
          ]
        },
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockIDEPermissions": "true",
          "aws:RequestTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "BedrockTagResourcePermissions",
      "Effect": "Allow",
      "Action": "bedrock:TagResource",
      "Resource": "arn:aws:bedrock:*:*:*",
      "Condition": {
        "ForAllValues:StringLike": {
          "aws:TagKeys": [
            "AmazonBedrockManaged",
            "AmazonDataZone*",
            "ProjectUserTag*"
          ]
        },
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockPermissions": "true",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        },
        "StringEqualsIfExists": {
          "aws:RequestTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "BedrockKmsPermissions",
      "Effect": "Allow",
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:*:*:key/${aws:PrincipalTag/KmsKeyId}",
      "Condition": {
        "Null": {
          "kms:EncryptionContext:aws:bedrock:arn": "false"
        },
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockIDEPermissions": "true",
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        },
        "StringLike": {
          "kms:ViaService": "bedrock.*.amazonaws.com"
        }
      }
    },
    {
      "Sid": "KmsViaBedrockPermissions",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": "arn:aws:kms:*:*:key/${aws:PrincipalTag/KmsKeyId}",
      "Condition": {
        "ForAllValues:StringLike": {
          "kms:EncryptionContextKeys": [
            "aws:bedrock*:arn",
            "aws:bedrock:guardrail-id"
          ]
        },
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockPermissions": "true",
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        },
        "StringLike": {
          "kms:ViaService": "bedrock.*.amazonaws.com"
        }
      }
    },
    {
      "Sid": "SecretPermissionsForBedrockIDE",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:DescribeSecret",
        "secretsmanager:PutSecretValue"
      ],
      "Resource": "arn:aws:secretsmanager:*:*:secret:amazon-bedrock-ide/*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockIDEPermissions": "true",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "SecretsManagerPermissionsForBedrock",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:DescribeSecret",
        "secretsmanager:PutSecretValue"
      ],
      "Resource": "arn:aws:secretsmanager:*:*:secret:amazon-bedrock*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockPermissions": "true",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "SecretKmsPermissionsForBedrockIDE",
      "Effect": "Allow",
      "Action": [
        "kms:GenerateDataKey",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:*:*:key/${aws:PrincipalTag/KmsKeyId}",
      "Condition": {
        "ArnLike": {
          "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:*:*:secret:amazon-bedrock-ide/*"
        },
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockIDEPermissions": "true",
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        },
        "StringLike": {
          "kms:ViaService": "secretsmanager.*.amazonaws.com"
        }
      }
    },
    {
      "Sid": "BRKmsSM",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Resource": "arn:aws:kms:*:*:key/${aws:PrincipalTag/KmsKeyId}",
      "Condition": {
        "ArnLike": {
          "kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:*:*:secret:amazon-bedrock*"
        },
        "StringEquals": {
          "aws:PrincipalTag/EnableAmazonBedrockPermissions": "true",
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        },
        "StringLike": {
          "kms:ViaService": "secretsmanager.*.amazonaws.com"
        }
      }
    },
    {
      "Sid": "InvokeFunctionForAmazonBedrockIDE",
      "Effect": "Allow",
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:*:*:function:amazon-bedrock-ide-*",
      "Condition": {
        "StringEquals": {
          "aws:CalledViaFirst": "bedrock.amazonaws.com",
          "aws:PrincipalTag/EnableAmazonBedrockIDEPermissions": "true",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "LambdaInvokeFunctionViaBedrock",
      "Effect": "Allow",
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:*:*:function:amazon-bedrock*",
      "Condition": {
        "StringEquals": {
          "aws:CalledViaFirst": "bedrock.amazonaws.com",
          "aws:PrincipalTag/EnableAmazonBedrockPermissions": "true",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "DZEnvCfn",
      "Effect": "Allow",
      "Action": [
        "cloudformation:GetTemplate",
        "cloudformation:DescribeStacks",
        "cloudformation:ListStackResources"
      ],
      "Resource": "arn:aws:cloudformation:*:*:stack/DataZone-Env-*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "GetGlueUserDefinedFuncLF",
      "Effect": "Allow",
      "Action": [
        "glue:GetUserDefinedFunction",
        "glue:GetUserDefinedFunctions"
      ],
      "Resource": [
        "arn:aws:glue:*:*:catalog",
        "arn:aws:glue:*:*:catalog/*",
        "arn:aws:glue:*:*:database/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}",
          "glue:LakeFormationPermissions": "Enabled"
        }
      }
    },
    {
      "Sid": "GlueGetUserDefinedFunc",
      "Effect": "Allow",
      "Action": [
        "glue:GetUserDefinedFunction",
        "glue:GetUserDefinedFunctions"
      ],
      "Resource": [
        "arn:aws:glue:*:*:userDefinedFunction/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "DataConnectionAllProjectResources",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue",
        "secretsmanager:PutSecretValue",
        "glue:GetConnections"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-all-datazone-projects": "true"
        }
      }
    },
    {
      "Sid": "DataConnectionLambdaLogs",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams"
      ],
      "Resource": [
        "arn:aws:logs:*:*:log-group:/aws/lambda/athenafederatedcatalog*",
        "arn:aws:logs:*:*:log-group:/aws/bedrock-agentcore/runtimes/*"
      ]
    },
    {
      "Sid": "DataConnOpen",
      "Effect": "Allow",
      "Action": [
        "dynamodb:ListTables",
        "glue:ManagedConnector",
        "glue:TestConnection",
        "codeconnections:GetHost",
        "codeconnections:ListConnections",
        "codeconnections:ListTagsForResource",
        "codestar-connections:GetHost",
        "codestar-connections:ListConnections",
        "codestar-connections:ListTagsForResource"
      ],
      "Resource": "*"
    },
    {
      "Sid": "DataConnectionEC2",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateNetworkInterface",
        "ec2:DescribeSubnets",
        "ec2:DetachNetworkInterface"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "ec2:Vpc": "${aws:PrincipalTag/vpcArn}"
        }
      }
    },
    {
      "Sid": "DataConnectionDeleteENI",
      "Effect": "Allow",
      "Action": "ec2:DeleteNetworkInterface",
      "Resource": "arn:aws:ec2:*:*:*/*",
      "Condition": {
        "StringEqualsIfExists": {
          "ec2:Vpc": "${aws:PrincipalTag/vpcArn}"
        }
      }
    },
    {
      "Sid": "DataConnectionDescribeENI",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeNetworkInterfaces"
      ],
      "Resource": "*"
    },
    {
      "Sid": "PrivateECRPermissions",
      "Effect": "Allow",
      "Action": [
        "ecr:BatchCheckLayerAvailability",
        "ecr:CompleteLayerUpload",
        "ecr:DeleteRepository",
        "ecr:InitiateLayerUpload",
        "ecr:PutImage",
        "ecr:BatchDeleteImage",
        "ecr:ListTagsForResource",
        "ecr:DescribeRepositories",
        "ecr:ListImages",
        "ecr:UploadLayerPart"
      ],
      "Resource": "arn:aws:ecr:*:*:repository/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "CreateECRRepositoryPermission",
      "Effect": "Allow",
      "Action": "ecr:CreateRepository",
      "Resource": "arn:aws:ecr:*:*:repository/*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "ECRTagResourcePermission",
      "Effect": "Allow",
      "Action": "ecr:TagResource",
      "Resource": "arn:aws:ecr:*:*:repository/*",
      "Condition": {
        "ForAllValues:StringLike": {
          "aws:TagKeys": [
            "AmazonDataZoneProject",
            "ProjectUserTag*"
          ]
        },
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        },
        "StringEqualsIfExists": {
          "aws:RequestTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "ECRUntagResourcePermission",
      "Effect": "Allow",
      "Action": [
        "ecr:UntagResource"
      ],
      "Resource": "arn:aws:ecr:*:*:repository/*",
      "Condition": {
        "ForAllValues:StringLike": {
          "aws:TagKeys": [
            "ProjectUserTag*"
          ]
        },
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "LFResourceSharingPermissions",
      "Effect": "Allow",
      "Action": [
        "lakeformation:BatchGrantPermissions",
        "lakeformation:BatchRevokePermissions",
        "lakeformation:ListPermissions",
        "lakeformation:DescribeResource",
        "ram:GetResourceShareInvitations",
        "lakeformation:CreateDataCellsFilter",
        "lakeformation:ListDataCellsFilter",
        "lakeformation:DeleteDataCellsFilter",
        "lakeformation:GetDataCellsFilter",
        "lakeformation:UpdateDataCellsFilter",
        "ram:ListResources"
      ],
      "Resource": "*"
    },
    {
      "Sid": "XAcctLFCreate",
      "Effect": "Allow",
      "Action": [
        "ram:CreateResourceShare"
      ],
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:CalledVia": [
            "lakeformation.amazonaws.com"
          ]
        },
        "StringEqualsIfExists": {
          "ram:RequestedResourceType": [
            "glue:Table",
            "glue:Database",
            "glue:Catalog"
          ]
        }
      }
    },
    {
      "Sid": "XAcctRAMGlue",
      "Effect": "Allow",
      "Action": [
        "glue:DeleteResourcePolicy",
        "glue:PutResourcePolicy"
      ],
      "Resource": [
        "arn:aws:glue:*:*:catalog",
        "arn:aws:glue:*:*:catalog/*",
        "arn:aws:glue:*:*:database/*",
        "arn:aws:glue:*:*:table/*"
      ],
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:CalledVia": [
            "ram.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "XAcctRAMLF",
      "Effect": "Allow",
      "Action": [
        "ram:AssociateResourceShare",
        "ram:DisassociateResourceShare",
        "ram:DeleteResourceShare",
        "ram:ListResourceSharePermissions",
        "ram:UpdateResourceShare"
      ],
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:CalledVia": [
            "lakeformation.amazonaws.com"
          ]
        },
        "StringLike": {
          "ram:ResourceShareName": [
            "LakeFormation*"
          ]
        }
      }
    },
    {
      "Sid": "RAMGetResourceSharesViaLakeFormation",
      "Effect": "Allow",
      "Action": [
        "ram:GetResourceShares"
      ],
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:CalledVia": [
            "lakeformation.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "XAcctRAMInvite",
      "Effect": "Allow",
      "Action": [
        "ram:AcceptResourceShareInvitation"
      ],
      "Resource": "arn:aws:ram:*:*:resource-share-invitation/*",
      "Condition": {
        "StringLike": {
          "ram:ResourceShareName": [
            "LakeFormation*",
            "DataZoneS3AG*"
          ]
        }
      }
    },
    {
      "Sid": "XAcctRAMLFHybrid",
      "Effect": "Allow",
      "Action": "ram:AssociateResourceSharePermission",
      "Resource": "*",
      "Condition": {
        "ArnLike": {
          "ram:PermissionArn": "arn:aws:ram::aws:permission/AWSRAMLFEnabled*"
        },
        "ForAnyValue:StringEquals": {
          "aws:CalledVia": [
            "lakeformation.amazonaws.com"
          ]
        }
      }
    },
    {
      "Sid": "EventBridgeScheduleActions",
      "Effect": "Allow",
      "Action": [
        "scheduler:CreateSchedule",
        "scheduler:GetSchedule",
        "scheduler:UpdateSchedule",
        "scheduler:DeleteSchedule"
      ],
      "Resource": [
        "arn:aws:scheduler:*:*:schedule/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "EventBridgeScheduleGroupActions",
      "Effect": "Allow",
      "Action": [
        "scheduler:GetScheduleGroup"
      ],
      "Resource": [
        "arn:aws:scheduler:*:*:schedule-group/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "QSFolderDS",
      "Effect": "Allow",
      "Action": [
        "quicksight:DescribeDataSource",
        "quicksight:DescribeFolder",
        "quicksight:DescribeFolderPermissions",
        "quicksight:ListFolderMembers"
      ],
      "Resource": [
        "arn:aws:quicksight:*:*:folder/*",
        "arn:aws:quicksight:*:*:datasource/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "ManageQuickSightOtherResources",
      "Effect": "Allow",
      "Action": [
        "quicksight:DescribeDataSet",
        "quicksight:DescribeAccountSubscription",
        "quicksight:DescribeUser",
        "quicksight:DescribeGroup"
      ],
      "Resource": [
        "arn:aws:quicksight:*:*:*"
      ]
    },
    {
      "Sid": "ManagePassDataSourcePermissions",
      "Effect": "Allow",
      "Action": [
        "quicksight:PassDataSource"
      ],
      "Resource": "arn:aws:quicksight:*:*:datasource/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "ManageCreateDataSetPermissions",
      "Effect": "Allow",
      "Action": [
        "quicksight:CreateDataSet",
        "quicksight:TagResource"
      ],
      "Resource": "arn:aws:quicksight:*:*:dataset/*",
      "Condition": {
        "ForAllValues:StringLike": {
          "aws:TagKeys": [
            "AmazonDataZone*"
          ]
        },
        "Null": {
          "aws:TagKeys": "false"
        },
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        },
        "StringEqualsIfExists": {
          "aws:RequestTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    },
    {
      "Sid": "CreateFolderMembership",
      "Effect": "Allow",
      "Action": [
        "quicksight:CreateFolderMembership"
      ],
      "Resource": "arn:aws:quicksight:*:*:folder/sagemaker-*-assets",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/AmazonDataZoneAssetsFolder": "true",
          "aws:ResourceTag/AmazonDataZoneProject": "${aws:PrincipalTag/AmazonDataZoneProject}"
        }
      }
    }
  ]
}

Version history

Current version v76, edited by AWS on 2026-10-29. Version history is recorded from 2026-11-11. Earlier versions are in the IAM console under Policy versions.

Attach snippets

AWS CLI

aws iam attach-role-policy --role-name ROLE_NAME --policy-arn arn:aws:iam::aws:policy/SageMakerStudioProjectUserRolePolicy
aws iam attach-user-policy --user-name USER_NAME --policy-arn arn:aws:iam::aws:policy/SageMakerStudioProjectUserRolePolicy
aws iam attach-group-policy --group-name GROUP_NAME --policy-arn arn:aws:iam::aws:policy/SageMakerStudioProjectUserRolePolicy

CloudFormation

Resources:
  ExampleRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument: {}  # replace with your trust policy
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/SageMakerStudioProjectUserRolePolicy

Terraform

resource "aws_iam_role_policy_attachment" "sagemakerstudioprojectuserrolepolicy" {
  role       = aws_iam_role.example.name
  policy_arn = "arn:aws:iam::aws:policy/SageMakerStudioProjectUserRolePolicy"
}

CDK (TypeScript)

role.addManagedPolicy(
  iam.ManagedPolicy.fromAwsManagedPolicyName("SageMakerStudioProjectUserRolePolicy"),
);

Sources

Pending editorial review. No editorial sources are listed yet.