无法在Amazon SageMaker Canvas中限制S3文件夹访问权限
问题解决:SageMaker Studio/Canvas 限制用户访问指定S3组织文件夹
问题背景
开发的多组织应用中,需要限制用户仅访问各自组织对应的S3文件夹(bucket-name/ULID,ULID为组织ID),但配置基于aws:PrincipalTag/org_id的S3权限策略后,用户在SageMaker Studio/Canvas中访问目标文件夹时出现权限错误,仅当ListBucket的prefix设为*时才能正常访问(但会暴露所有内容)。
核心原因
- SageMaker的权限执行主体:Studio/Canvas实际通过SageMaker执行角色而非IAM用户直接访问S3,若仅给IAM用户打
org_id标签,执行角色会话无法继承该标签,导致策略中的变量${aws:PrincipalTag/org_id}为空。 - Canvas的S3访问模式:Canvas浏览S3时会先请求根目录列表,原策略仅允许
org_id/*的前缀,无法匹配根目录访问请求,触发权限拦截。
解决方案
步骤1:配置SageMaker执行角色的会话标签传递
确保执行角色能继承IAM用户的org_id标签:
- 进入SageMaker控制台,打开对应Domain的User Settings
- 编辑目标User Profile,在Session Tags中添加标签:
- 键:
org_id - 值:
${aws:PrincipalTag/org_id}
- 键:
- 保存配置,重启Studio会话使标签生效。
步骤2:修正ListBucket策略
调整策略适配Canvas的根目录访问需求,允许用户看到自己的组织文件夹:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListOrgFolderAndRootNavigation", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::my-bucket-name", "Condition": { "StringLike": { "s3:prefix": [ "", "${aws:PrincipalTag/org_id}/", "${aws:PrincipalTag/org_id}/*" ] }, "StringEqualsIfExists": { "s3:delimiter": "/" } } } ] }
- 空
prefix允许根目录列表,但通过delimiter: "/"限制仅显示根目录下的“文件夹”前缀 - 同时覆盖
org_id/和org_id/*,确保进入组织文件夹后能浏览内部内容
步骤3:修正对象操作策略
确保策略覆盖组织文件夹本身及内部所有对象,并附加到SageMaker执行角色(而非IAM用户):
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowObjectOperationsInOrgFolder", "Action": [ "s3:PutObject", "s3:ListMultipartUploadParts", "s3:GetObject", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:GetObjectVersion" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::my-bucket-name/${aws:PrincipalTag/org_id}", "arn:aws:s3:::my-bucket-name/${aws:PrincipalTag/org_id}/*" ] } ] }
- 添加
arn:aws:s3:::my-bucket-name/${aws:PrincipalTag/org_id}确保能访问文件夹元数据 - 补充
s3:GetObjectVersion适配Canvas可能的版本控制需求
步骤4:补充必要的基础权限
在自定义的SageMaker权限策略中添加S3基础操作,避免Canvas因缺少权限报错:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetBucketLocation", "Resource": "arn:aws:s3:::my-bucket-name" } ] }
验证方法
- 使用目标用户身份启动SageMaker Studio/Canvas
- 尝试导入数据,选择对应S3存储桶
- 确认仅能看到自己组织的文件夹,且可正常上传、查看、删除文件夹内的文件
内容的提问来源于stack exchange,提问作者Wasyn
相关产品推荐
相关产品推荐

