You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止使用AmazonSageMakerFullAccess的IAM用户访问全部S3存储桶?

解决IAM用户通过AmazonSageMakerFullAccess访问所有S3桶的问题

我明白你的困扰——给IAM用户附加AmazonSageMakerFullAccess策略后,本意是让它仅操作SageMaker相关资源,结果却能访问所有S3桶。这是因为AmazonSageMakerFullAccess这个托管策略里包含了广泛的S3权限(毕竟SageMaker经常需要和S3交互,比如存储数据集、模型输出等),所以默认允许用户访问所有S3资源。

要解决这个问题,核心是遵循最小权限原则,限制该用户的S3访问权限,下面是两种可行的方案:

方案一:创建自定义SageMaker权限策略(推荐)

放弃直接使用AmazonSageMakerFullAccess,而是创建一个自定义策略,只授予用户SageMaker所需的核心权限,同时仅允许访问特定的S3资源(比如命名包含sagemaker的桶,或者你指定的专属桶)。

举个例子,自定义策略可以这样写:

{
    "Version": "2012-10-17",
    "Statement": [
        // 授予SageMaker核心操作权限
        {
            "Effect": "Allow",
            "Action": [
                "sagemaker:*"
            ],
            "Resource": "*"
        },
        // 仅允许访问命名包含sagemaker的S3桶及内容
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::*sagemaker*",
                "arn:aws:s3:::*sagemaker*/*"
            ]
        }
    ]
}

把这个自定义策略附加到你的IAM用户上,就能确保用户只能操作SageMaker资源,且仅能访问符合命名规则的S3桶。

方案二:添加拒绝所有S3访问的策略(快速临时方案)

如果你想快速阻止用户访问所有S3桶,同时保留AmazonSageMakerFullAccess的其他权限,可以创建一个拒绝所有S3操作的策略,附加到该用户身上(IAM中拒绝权限会覆盖允许权限)。

拒绝策略示例:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::*",
                "arn:aws:s3:::*/*"
            ]
        }
    ]
}

不过要注意:如果你的SageMaker任务需要访问特定S3桶,你需要在这个拒绝策略之后,再添加一个允许策略,明确授予对那些必要S3桶的访问权限(比如命名包含sagemaker的桶),否则SageMaker的相关操作会失败。

额外提醒

不管用哪种方案,都要确保你测试一下用户的权限:切换到该用户账号,尝试访问非SageMaker相关的S3桶,确认无法访问;同时验证SageMaker的核心操作(比如创建笔记本实例、运行训练任务)是否正常工作。

内容的提问来源于stack exchange,提问作者Harry Moreno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:32:28