Skip to main content
IAM Policy Map

AmazonSageMakerCanvasFullAccess

OperatorAWS managedActiveReviewedShow on mapCompare

Summary

Provides full access to Amazon SageMaker Canvas resources and operations, plus select access to related services. The Amazon SageMaker AI Developer Guide says it is intended to help customers experiment and get started with all the capabilities of SageMaker Canvas.

Permissions imported from the AWS Managed Policy Reference Guide; other sections reviewed against the listed AWS sources.

Identity

ARN
arn:aws:iam::aws:policy/AmazonSageMakerCanvasFullAccess
Default version
v11
Created
Last edited
Services
application-autoscaling, athena, cloudwatch, ec2, ecr, emr-serverless, forecast, glue, iam, kms, logs, quicksight, rds, redshift, redshift-data, s3, sagemaker, secretsmanager

Control-plane actions (122)

By access level: 18 List, 1 Permissions management, 48 Read, 3 Tagging, 52 Write.

Control-plane actions by service
ServiceGrantedAccess levels and limitsGranted by
Application Auto Scaling3 of 141 Read, 2 Write; 3 restricted, 3 conditionalapplication-autoscaling:DescribeScalingActivities, application-autoscaling:PutScalingPolicy, application-autoscaling:RegisterScalableTarget
Athena3 of 862 List, 1 Read; 3 restricted, 3 conditionalathena:ListDataCatalogs, athena:ListDatabases, athena:ListTableMetadata
CloudWatch3 of 1601 Read, 2 Write; 2 restricted, 2 conditionalcloudwatch:DeleteAlarms, cloudwatch:DescribeAlarms, cloudwatch:PutMetricAlarm
EC26 of 8345 List, 1 Write; 0 restricted, 0 conditionalec2:CreateVpcEndpoint, ec2:DescribeSecurityGroups, ec2:DescribeSubnets, ec2:DescribeVpcEndpointServices, ec2:DescribeVpcEndpoints, ec2:DescribeVpcs
Elastic Container Registry3 of 653 Read; 0 restricted, 0 conditionalecr:BatchGetImage, ecr:GetAuthorizationToken, ecr:GetDownloadUrlForLayer
EMR Serverless11 of 252 List, 2 Read, 1 Tagging, 6 Write; 11 restricted, 11 conditionalemr-serverless:CancelJobRun, emr-serverless:CreateApplication, emr-serverless:GetApplication, emr-serverless:GetJobRun, emr-serverless:ListApplications, emr-serverless:ListJobRuns, emr-serverless:StartApplication, emr-serverless:StartJobRun, emr-serverless:StopApplication, emr-serverless:TagResource, emr-serverless:UpdateApplication
Forecast26 of 7013 Read, 1 Tagging, 12 Write; 26 restricted, 0 conditionalforecast:CreateAutoPredictor, forecast:CreateDataset, forecast:CreateDatasetGroup, forecast:CreateDatasetImportJob, forecast:CreateExplainability, forecast:CreateExplainabilityExport, forecast:CreateForecast, forecast:CreateForecastEndpoint, forecast:CreateForecastExportJob, forecast:CreatePredictor, forecast:CreatePredictorBacktestExportJob, forecast:DeleteResourceTree and 14 more
Glue4 of 3064 Read; 4 restricted, 3 conditionalglue:GetDatabases, glue:GetPartitions, glue:GetTables, glue:SearchTables
IAM3 of 1901 Read, 2 Write; 3 restricted, 2 conditionaliam:CreateServiceLinkedRole, iam:GetRole, iam:PassRole
KMS1 of 581 Read; 1 restricted, 1 conditionalkms:DescribeKey
CloudWatch Logs3 of 1333 Write; 3 restricted, 0 conditionallogs:CreateLogGroup, logs:CreateLogStream, logs:PutLogEvents
QuickSight1 of 3571 List; 1 restricted, 1 conditionalquicksight:ListNamespaces
RDS1 of 1731 List; 0 restricted, 0 conditionalrds:DescribeDBInstances
Redshift1 of 1671 Write; 1 restricted, 0 conditionalredshift:GetClusterCredentials
Redshift Data API7 of 121 List, 4 Read, 2 Write; 0 restricted, 0 conditionalredshift-data:CancelStatement, redshift-data:DescribeStatement, redshift-data:DescribeTable, redshift-data:ExecuteStatement, redshift-data:GetStatementResult, redshift-data:ListSchemas, redshift-data:ListTables
S34 of 1551 List, 2 Read, 1 Write; 3 restricted, 0 conditionals3:CreateBucket, s3:GetBucketCors, s3:GetBucketLocation, s3:ListAllMyBuckets
SageMaker38 of 4415 List, 13 Read, 1 Tagging, 19 Write; 31 restricted, 0 conditionalsagemaker:AddTags, sagemaker:CreateAutoMLJob, sagemaker:CreateAutoMLJobV2, sagemaker:CreateCompilationJob, sagemaker:CreateEndpoint, sagemaker:CreateEndpointConfig, sagemaker:CreateModel, sagemaker:CreateModelPackage, sagemaker:CreateModelPackageGroup, sagemaker:CreateProcessingJob, sagemaker:CreateTrainingJob, sagemaker:CreateTransformJob and 26 more
Secrets Manager4 of 271 Permissions management, 2 Read, 1 Write; 4 restricted, 0 conditionalsecretsmanager:CreateSecret, secretsmanager:DescribeSecret, secretsmanager:GetSecretValue, secretsmanager:PutResourcePolicy
Application Auto Scaling: 3 actions
  • application-autoscaling:DescribeScalingActivities (Read)
  • application-autoscaling:PutScalingPolicy (Write)
  • application-autoscaling:RegisterScalableTarget (Write)
Athena: 3 actions
  • athena:ListDataCatalogs (List)
  • athena:ListDatabases (List)
  • athena:ListTableMetadata (Read)
CloudWatch: 3 actions
  • cloudwatch:DeleteAlarms (Write)
  • cloudwatch:DescribeAlarms (Read)
  • cloudwatch:PutMetricAlarm (Write)
EC2: 6 actions
  • ec2:CreateVpcEndpoint (Write)
  • ec2:DescribeSecurityGroups (List)
  • ec2:DescribeSubnets (List)
  • ec2:DescribeVpcEndpointServices (List)
  • ec2:DescribeVpcEndpoints (List)
  • ec2:DescribeVpcs (List)
Elastic Container Registry: 3 actions
  • ecr:BatchGetImage (Read)
  • ecr:GetAuthorizationToken (Read)
  • ecr:GetDownloadUrlForLayer (Read)
EMR Serverless: 11 actions
  • emr-serverless:CancelJobRun (Write)
  • emr-serverless:CreateApplication (Write)
  • emr-serverless:GetApplication (Read)
  • emr-serverless:GetJobRun (Read)
  • emr-serverless:ListApplications (List)
  • emr-serverless:ListJobRuns (List)
  • emr-serverless:StartApplication (Write)
  • emr-serverless:StartJobRun (Write)
  • emr-serverless:StopApplication (Write)
  • emr-serverless:TagResource (Tagging)
  • emr-serverless:UpdateApplication (Write)
Forecast: 26 actions
  • forecast:CreateAutoPredictor (Write)
  • forecast:CreateDataset (Write)
  • forecast:CreateDatasetGroup (Write)
  • forecast:CreateDatasetImportJob (Write)
  • forecast:CreateExplainability (Write)
  • forecast:CreateExplainabilityExport (Write)
  • forecast:CreateForecast (Write)
  • forecast:CreateForecastEndpoint (Write)
  • forecast:CreateForecastExportJob (Write)
  • forecast:CreatePredictor (Write)
  • forecast:CreatePredictorBacktestExportJob (Write)
  • forecast:DeleteResourceTree (Write)
  • forecast:DescribeAutoPredictor (Read)
  • forecast:DescribeDataset (Read)
  • forecast:DescribeDatasetImportJob (Read)
  • forecast:DescribeExplainability (Read)
  • forecast:DescribeExplainabilityExport (Read)
  • forecast:DescribeForecast (Read)
  • forecast:DescribeForecastEndpoint (Read)
  • forecast:DescribeForecastExportJob (Read)
  • forecast:DescribePredictor (Read)
  • forecast:DescribePredictorBacktestExportJob (Read)
  • forecast:GetAccuracyMetrics (Read)
  • forecast:GetRecentForecastContext (Read)
  • forecast:InvokeForecastEndpoint (Read)
  • forecast:TagResource (Tagging)
Glue: 4 actions
  • glue:GetDatabases (Read)
  • glue:GetPartitions (Read)
  • glue:GetTables (Read)
  • glue:SearchTables (Read)
IAM: 3 actions
  • iam:CreateServiceLinkedRole (Write)
  • iam:GetRole (Read)
  • iam:PassRole (Write)
KMS: 1 actions
  • kms:DescribeKey (Read)
CloudWatch Logs: 3 actions
  • logs:CreateLogGroup (Write)
  • logs:CreateLogStream (Write)
  • logs:PutLogEvents (Write)
QuickSight: 1 actions
  • quicksight:ListNamespaces (List)
RDS: 1 actions
  • rds:DescribeDBInstances (List)
Redshift: 1 actions
  • redshift:GetClusterCredentials (Write)
Redshift Data API: 7 actions
  • redshift-data:CancelStatement (Write)
  • redshift-data:DescribeStatement (Read)
  • redshift-data:DescribeTable (Read)
  • redshift-data:ExecuteStatement (Write)
  • redshift-data:GetStatementResult (Read)
  • redshift-data:ListSchemas (Read)
  • redshift-data:ListTables (List)
S3: 4 actions
  • s3:CreateBucket (Write)
  • s3:GetBucketCORS (Read)
  • s3:GetBucketLocation (Read)
  • s3:ListAllMyBuckets (List)
SageMaker: 38 actions
  • sagemaker:AddTags (Tagging)
  • sagemaker:CreateAutoMLJob (Write)
  • sagemaker:CreateAutoMLJobV2 (Write)
  • sagemaker:CreateCompilationJob (Write)
  • sagemaker:CreateEndpoint (Write)
  • sagemaker:CreateEndpointConfig (Write)
  • sagemaker:CreateModel (Write)
  • sagemaker:CreateModelPackage (Write)
  • sagemaker:CreateModelPackageGroup (Write)
  • sagemaker:CreateProcessingJob (Write)
  • sagemaker:CreateTrainingJob (Write)
  • sagemaker:CreateTransformJob (Write)
  • sagemaker:DeleteApp (Write)
  • sagemaker:DeleteEndpoint (Write)
  • sagemaker:DeleteEndpointConfig (Write)
  • sagemaker:DeleteModel (Write)
  • sagemaker:DescribeAutoMLJob (Read)
  • sagemaker:DescribeAutoMLJobV2 (Read)
  • sagemaker:DescribeCompilationJob (Read)
  • sagemaker:DescribeDomain (Read)
  • sagemaker:DescribeEndpoint (Read)
  • sagemaker:DescribeEndpointConfig (Read)
  • sagemaker:DescribeModel (Read)
  • sagemaker:DescribeModelPackage (Read)
  • sagemaker:DescribeModelPackageGroup (Read)
  • sagemaker:DescribeProcessingJob (Read)
  • sagemaker:DescribeTrainingJob (Read)
  • sagemaker:DescribeTransformJob (Read)
  • sagemaker:DescribeUserProfile (Read)
  • sagemaker:ListCandidatesForAutoMLJob (List)
  • sagemaker:ListEndpoints (List)
  • sagemaker:ListModelPackageGroups (List)
  • sagemaker:ListModelPackages (List)
  • sagemaker:ListTags (List)
  • sagemaker:StopAutoMLJob (Write)
  • sagemaker:StopTrainingJob (Write)
  • sagemaker:StopTransformJob (Write)
  • sagemaker:UpdateEndpointWeightsAndCapacities (Write)
Secrets Manager: 4 actions
  • secretsmanager:CreateSecret (Write)
  • secretsmanager:DescribeSecret (Read)
  • secretsmanager:GetSecretValue (Read)
  • secretsmanager:PutResourcePolicy (Permissions management)

Data-plane actions (6)

By access level: 1 List, 3 Read, 2 Write.

Data-plane actions by service
ServiceGrantedAccess levels and limitsGranted by
S34 of 251 List, 1 Read, 2 Write; 3 restricted, 0 conditionals3:DeleteObject, s3:GetObject, s3:ListBucket, s3:PutObject
SageMaker2 of 192 Read; 2 restricted, 0 conditionalsagemaker:InvokeEndpoint, sagemaker:InvokeEndpointAsync
S3: 4 actions
  • s3:DeleteObject (Write)
  • s3:GetObject (Read)
  • s3:ListBucket (List)
  • s3:PutObject (Write)
SageMaker: 2 actions
  • sagemaker:InvokeEndpoint (Read)
  • sagemaker:InvokeEndpointAsync (Read)

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 58 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

Practical scope

Statements allow sagemaker model package, training, processing, AutoML, hosting and endpoint actions (some on all resources, some on model-package and model-package-group ARNs, and hosting actions on ARNs containing Canvas or canvas), EC2 VPC actions (ec2:CreateVpcEndpoint and describe actions), ECR, CloudWatch Logs, Glue, Athena, Redshift Data API, Secrets Manager (by ARN or by tag), Amazon Forecast, EMR Serverless, QuickSight namespace listing, Application Auto Scaling, and S3 actions. s3:GetObject, s3:PutObject, s3:DeleteObject, s3:CreateBucket, s3:GetBucketCors and s3:GetBucketLocation apply to the patterns arn:aws:s3:::*SageMaker*, arn:aws:s3:::*Sagemaker* and arn:aws:s3:::*sagemaker*. Because * in an IAM resource pattern also matches /, these match any S3 ARN containing the word, so they cover buckets with the word in the name and objects whose key contains it in any bucket (for example arn:aws:s3:::any-bucket/sagemaker/x); for s3:CreateBucket only buckets named that way apply. s3:GetObject is also allowed on jumpstart-cache-prod-* buckets, and s3:ListBucket and s3:ListAllMyBuckets on all resources. iam:PassRole on role/* is allowed only when iam:PassedToService is sagemaker.amazonaws.com, and separately only for forecast.amazonaws.com. iam:PassRole for EMR Serverless is limited to AmazonSageMakerCanvasEMRSExecutionAccess-* roles. kms:DescribeKey requires the resource tag Source=SageMakerCanvas.

Use cases

  • Use Amazon SageMaker Canvas capabilities, including building, registering and hosting models, from a SageMaker Domain or user profile.

Best practices

  • AWS managed policies don't grant least privilege permissions. The IAM User Guide suggests using IAM Access Analyzer to see which permissions principals actually use, then writing a custom policy or generating one with only the required permissions.

Security considerations

  • iam:PassRole is allowed on all roles when the target service is sagemaker.amazonaws.com or forecast.amazonaws.com. The IAM User Guide says a user needs permission to pass a role to an AWS service before the service can be configured with it.
  • The AWS guide says the policy is meant for experimenting and getting started. It suggests building scoped down versions for production workloads.
  • The policy allows s3:DeleteObject and s3:PutObject on arn:aws:s3:::*SageMaker*, *Sagemaker* and *sagemaker*, which also match objects whose key contains the word in any bucket. It also allows secretsmanager:GetSecretValue on secrets named AmazonSageMaker-* or tagged SageMaker=true.
  • You cannot change the permissions in an AWS managed policy. If AWS updates the policy, the update affects every user, group and role it is attached to.

Assignment guidance

You can attach this policy to your users, groups and roles. The reference page also links to guidance on creating a permission set using AWS managed policies in IAM Identity Center. The reference description says this policy should be attached to the Amazon SageMaker Domain/User Profile execution role. For production, the Amazon SageMaker AI Developer Guide suggests scoped down versions you build yourself.

Same service

Same domain

Frequently asked questions

When should I attach AmazonSageMakerCanvasFullAccess?
The reference description says it should be attached to the Amazon SageMaker Domain/User Profile execution role. The Amazon SageMaker AI Developer Guide says it is intended for experimenting and getting started with all SageMaker Canvas capabilities.
What does AmazonSageMakerCanvasFullAccess grant?
It allows full SageMaker Canvas operations and select access to related services: SageMaker model and training actions, S3 actions on patterns containing SageMaker, Sagemaker or sagemaker (matching buckets so named and objects with the word in the key), jumpstart-cache-prod-* reads and bucket listing, ECR, CloudWatch Logs, Redshift Data API, Secrets Manager, Forecast, Glue, Athena, EMR Serverless and Application Auto Scaling, with iam:PassRole conditioned to specific services.
What are the security risks of AmazonSageMakerCanvasFullAccess?
It can pass roles to SageMaker and Forecast, write and delete any S3 object whose ARN contains SageMaker, Sagemaker or sagemaker, including objects in other buckets with the word in the key, and read secrets named AmazonSageMaker-* or tagged SageMaker=true. The AWS guide suggests scoped down versions for production workloads. AWS managed policies do not grant least privilege permissions, and an AWS update to the policy affects every identity it is attached to.

Policy JSON

Download policy.json

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SageMakerUserDetailsAndPackageOperations",
      "Effect": "Allow",
      "Action": [
        "sagemaker:DescribeDomain",
        "sagemaker:DescribeUserProfile",
        "sagemaker:ListTags",
        "sagemaker:ListModelPackages",
        "sagemaker:ListModelPackageGroups",
        "sagemaker:ListEndpoints"
      ],
      "Resource": "*"
    },
    {
      "Sid": "SageMakerPackageGroupOperations",
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateModelPackageGroup",
        "sagemaker:CreateModelPackage",
        "sagemaker:DescribeModelPackageGroup",
        "sagemaker:DescribeModelPackage"
      ],
      "Resource": [
        "arn:aws:sagemaker:*:*:model-package/*",
        "arn:aws:sagemaker:*:*:model-package-group/*"
      ]
    },
    {
      "Sid": "SageMakerTrainingOperations",
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateCompilationJob",
        "sagemaker:CreateEndpoint",
        "sagemaker:CreateEndpointConfig",
        "sagemaker:CreateModel",
        "sagemaker:CreateProcessingJob",
        "sagemaker:CreateAutoMLJob",
        "sagemaker:CreateAutoMLJobV2",
        "sagemaker:CreateTrainingJob",
        "sagemaker:CreateTransformJob",
        "sagemaker:DeleteEndpoint",
        "sagemaker:DescribeCompilationJob",
        "sagemaker:DescribeEndpoint",
        "sagemaker:DescribeEndpointConfig",
        "sagemaker:DescribeModel",
        "sagemaker:DescribeProcessingJob",
        "sagemaker:DescribeAutoMLJob",
        "sagemaker:DescribeAutoMLJobV2",
        "sagemaker:DescribeTrainingJob",
        "sagemaker:DescribeTransformJob",
        "sagemaker:ListCandidatesForAutoMLJob",
        "sagemaker:StopAutoMLJob",
        "sagemaker:StopTrainingJob",
        "sagemaker:StopTransformJob",
        "sagemaker:AddTags",
        "sagemaker:DeleteApp"
      ],
      "Resource": [
        "arn:aws:sagemaker:*:*:*Canvas*",
        "arn:aws:sagemaker:*:*:*canvas*",
        "arn:aws:sagemaker:*:*:*model-compilation-*"
      ]
    },
    {
      "Sid": "SageMakerHostingOperations",
      "Effect": "Allow",
      "Action": [
        "sagemaker:DeleteEndpointConfig",
        "sagemaker:DeleteModel",
        "sagemaker:InvokeEndpoint",
        "sagemaker:UpdateEndpointWeightsAndCapacities",
        "sagemaker:InvokeEndpointAsync"
      ],
      "Resource": [
        "arn:aws:sagemaker:*:*:*Canvas*",
        "arn:aws:sagemaker:*:*:*canvas*"
      ]
    },
    {
      "Sid": "EC2VPCOperation",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateVpcEndpoint",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcs",
        "ec2:DescribeVpcEndpoints",
        "ec2:DescribeVpcEndpointServices"
      ],
      "Resource": "*"
    },
    {
      "Sid": "ECROperations",
      "Effect": "Allow",
      "Action": [
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer",
        "ecr:GetAuthorizationToken"
      ],
      "Resource": "*"
    },
    {
      "Sid": "IAMGetOperations",
      "Effect": "Allow",
      "Action": [
        "iam:GetRole"
      ],
      "Resource": "arn:aws:iam::*:role/*"
    },
    {
      "Sid": "IAMPassOperation",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": "arn:aws:iam::*:role/*",
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    },
    {
      "Sid": "LoggingOperation",
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:log-group:/aws/sagemaker/*"
    },
    {
      "Sid": "S3Operations",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject",
        "s3:CreateBucket",
        "s3:GetBucketCors",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::*SageMaker*",
        "arn:aws:s3:::*Sagemaker*",
        "arn:aws:s3:::*sagemaker*"
      ]
    },
    {
      "Sid": "ReadSageMakerJumpstartArtifacts",
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": [
        "arn:aws:s3:::jumpstart-cache-prod-us-west-2/*",
        "arn:aws:s3:::jumpstart-cache-prod-us-east-1/*",
        "arn:aws:s3:::jumpstart-cache-prod-us-east-2/*",
        "arn:aws:s3:::jumpstart-cache-prod-eu-west-1/*",
        "arn:aws:s3:::jumpstart-cache-prod-eu-central-1/*",
        "arn:aws:s3:::jumpstart-cache-prod-ap-south-1/*",
        "arn:aws:s3:::jumpstart-cache-prod-ap-northeast-2/*",
        "arn:aws:s3:::jumpstart-cache-prod-ap-northeast-1/*",
        "arn:aws:s3:::jumpstart-cache-prod-ap-southeast-1/*",
        "arn:aws:s3:::jumpstart-cache-prod-ap-southeast-2/*"
      ]
    },
    {
      "Sid": "S3ListOperations",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:ListAllMyBuckets"
      ],
      "Resource": "*"
    },
    {
      "Sid": "GlueOperations",
      "Effect": "Allow",
      "Action": "glue:SearchTables",
      "Resource": [
        "arn:aws:glue:*:*:table/*/*",
        "arn:aws:glue:*:*:database/*",
        "arn:aws:glue:*:*:catalog"
      ]
    },
    {
      "Sid": "SecretsManagerARNBasedOperation",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:DescribeSecret",
        "secretsmanager:GetSecretValue",
        "secretsmanager:CreateSecret",
        "secretsmanager:PutResourcePolicy"
      ],
      "Resource": [
        "arn:aws:secretsmanager:*:*:secret:AmazonSageMaker-*"
      ]
    },
    {
      "Sid": "SecretManagerTagBasedOperation",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:DescribeSecret",
        "secretsmanager:GetSecretValue"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "secretsmanager:ResourceTag/SageMaker": "true"
        }
      }
    },
    {
      "Sid": "RedshiftOperations",
      "Effect": "Allow",
      "Action": [
        "redshift-data:ExecuteStatement",
        "redshift-data:DescribeStatement",
        "redshift-data:CancelStatement",
        "redshift-data:GetStatementResult",
        "redshift-data:ListSchemas",
        "redshift-data:ListTables",
        "redshift-data:DescribeTable"
      ],
      "Resource": "*"
    },
    {
      "Sid": "RedshiftGetCredentialsOperation",
      "Effect": "Allow",
      "Action": [
        "redshift:GetClusterCredentials"
      ],
      "Resource": [
        "arn:aws:redshift:*:*:dbuser:*/sagemaker_access*",
        "arn:aws:redshift:*:*:dbname:*"
      ]
    },
    {
      "Sid": "ForecastOperations",
      "Effect": "Allow",
      "Action": [
        "forecast:CreateExplainabilityExport",
        "forecast:CreateExplainability",
        "forecast:CreateForecastEndpoint",
        "forecast:CreateAutoPredictor",
        "forecast:CreateDatasetImportJob",
        "forecast:CreateDatasetGroup",
        "forecast:CreateDataset",
        "forecast:CreateForecast",
        "forecast:CreateForecastExportJob",
        "forecast:CreatePredictorBacktestExportJob",
        "forecast:CreatePredictor",
        "forecast:DescribeExplainabilityExport",
        "forecast:DescribeExplainability",
        "forecast:DescribeAutoPredictor",
        "forecast:DescribeForecastEndpoint",
        "forecast:DescribeDatasetImportJob",
        "forecast:DescribeDataset",
        "forecast:DescribeForecast",
        "forecast:DescribeForecastExportJob",
        "forecast:DescribePredictorBacktestExportJob",
        "forecast:GetAccuracyMetrics",
        "forecast:InvokeForecastEndpoint",
        "forecast:GetRecentForecastContext",
        "forecast:DescribePredictor",
        "forecast:TagResource",
        "forecast:DeleteResourceTree"
      ],
      "Resource": [
        "arn:aws:forecast:*:*:*Canvas*"
      ]
    },
    {
      "Sid": "RDSOperation",
      "Effect": "Allow",
      "Action": "rds:DescribeDBInstances",
      "Resource": "*"
    },
    {
      "Sid": "IAMPassOperationForForecast",
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": "arn:aws:iam::*:role/*",
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "forecast.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AutoscalingOperations",
      "Effect": "Allow",
      "Action": [
        "application-autoscaling:PutScalingPolicy",
        "application-autoscaling:RegisterScalableTarget"
      ],
      "Resource": "arn:aws:application-autoscaling:*:*:scalable-target/*",
      "Condition": {
        "StringEquals": {
          "application-autoscaling:service-namespace": "sagemaker",
          "application-autoscaling:scalable-dimension": "sagemaker:variant:DesiredInstanceCount"
        }
      }
    },
    {
      "Sid": "AsyncEndpointOperations",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:DescribeAlarms",
        "sagemaker:DescribeEndpointConfig"
      ],
      "Resource": "*"
    },
    {
      "Sid": "DescribeScalingOperations",
      "Effect": "Allow",
      "Action": [
        "application-autoscaling:DescribeScalingActivities"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "SageMakerCloudWatchUpdate",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:PutMetricAlarm",
        "cloudwatch:DeleteAlarms"
      ],
      "Resource": [
        "arn:aws:cloudwatch:*:*:alarm:TargetTracking*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:CalledViaLast": "application-autoscaling.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AutoscalingSageMakerEndpointOperation",
      "Action": "iam:CreateServiceLinkedRole",
      "Effect": "Allow",
      "Resource": "arn:aws:iam::*:role/aws-service-role/sagemaker.application-autoscaling.amazonaws.com/AWSServiceRoleForApplicationAutoScaling_SageMakerEndpoint",
      "Condition": {
        "StringLike": {
          "iam:AWSServiceName": "sagemaker.application-autoscaling.amazonaws.com"
        }
      }
    },
    {
      "Sid": "AthenaOperation",
      "Action": [
        "athena:ListTableMetadata",
        "athena:ListDataCatalogs",
        "athena:ListDatabases"
      ],
      "Effect": "Allow",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "GlueOperation",
      "Action": [
        "glue:GetDatabases",
        "glue:GetPartitions",
        "glue:GetTables"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:glue:*:*:table/*",
        "arn:aws:glue:*:*:catalog",
        "arn:aws:glue:*:*:database/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "QuicksightOperation",
      "Action": [
        "quicksight:ListNamespaces"
      ],
      "Effect": "Allow",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "AllowUseOfKeyInAccount",
      "Effect": "Allow",
      "Action": [
        "kms:DescribeKey"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Source": "SageMakerCanvas",
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "EMRServerlessCreateApplicationOperation",
      "Effect": "Allow",
      "Action": "emr-serverless:CreateApplication",
      "Resource": "arn:aws:emr-serverless:*:*:/*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/sagemaker:is-canvas-resource": "True",
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "EMRServerlessListApplicationOperation",
      "Effect": "Allow",
      "Action": "emr-serverless:ListApplications",
      "Resource": "arn:aws:emr-serverless:*:*:/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "EMRServerlessApplicationOperations",
      "Effect": "Allow",
      "Action": [
        "emr-serverless:UpdateApplication",
        "emr-serverless:StopApplication",
        "emr-serverless:GetApplication",
        "emr-serverless:StartApplication"
      ],
      "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "EMRServerlessStartJobRunOperation",
      "Effect": "Allow",
      "Action": "emr-serverless:StartJobRun",
      "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/sagemaker:is-canvas-resource": "True",
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "EMRServerlessListJobRunOperation",
      "Effect": "Allow",
      "Action": "emr-serverless:ListJobRuns",
      "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "EMRServerlessJobRunOperations",
      "Effect": "Allow",
      "Action": [
        "emr-serverless:GetJobRun",
        "emr-serverless:CancelJobRun"
      ],
      "Resource": "arn:aws:emr-serverless:*:*:/applications/*/jobruns/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "EMRServerlessTagResourceOperation",
      "Effect": "Allow",
      "Action": "emr-serverless:TagResource",
      "Resource": "arn:aws:emr-serverless:*:*:/*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/sagemaker:is-canvas-resource": "True",
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    },
    {
      "Sid": "IAMPassOperationForEMRServerless",
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": [
        "arn:aws:iam::*:role/service-role/AmazonSageMakerCanvasEMRSExecutionAccess-*",
        "arn:aws:iam::*:role/AmazonSageMakerCanvasEMRSExecutionAccess-*"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "emr-serverless.amazonaws.com",
          "aws:ResourceAccount": "${aws:PrincipalAccount}"
        }
      }
    }
  ]
}

Version history

Current version v11, edited by AWS on 2024-08-16. 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/AmazonSageMakerCanvasFullAccess
aws iam attach-user-policy --user-name USER_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerCanvasFullAccess
aws iam attach-group-policy --group-name GROUP_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerCanvasFullAccess

CloudFormation

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

Terraform

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

CDK (TypeScript)

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

Sources