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

求助:配置S3 Bucket Policy实现同IAM角色下EC2实例的差异化访问

正确的S3桶策略配置方案

原策略失效的核心问题是依赖EC2实例的IP地址做权限控制——EC2实例的公网/内网IP可能随重启、配置变更发生变化,IP填写错误也会导致逻辑混乱。更可靠的方式是直接用EC2实例的ARN(唯一固定标识)区分InstanceA和InstanceB。

以下是调整后的有效策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowInstanceAAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::211125774119:role/s3-it-role"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::classic",
                "arn:aws:s3:::classic/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:SourceInstanceARN": "arn:aws:ec2:你的区域ID:211125774119:instance/InstanceA的实例ID"
                }
            }
        },
        {
            "Sid": "DenyInstanceBAccess",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::211125774119:role/s3-it-role"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::classic",
                "arn:aws:s3:::classic/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:SourceInstanceARN": "arn:aws:ec2:你的区域ID:211125774119:instance/InstanceB的实例ID"
                }
            }
        }
    ]
}

配置说明:

  • 替换你的区域ID为EC2实例所在AWS区域(比如us-east-1、cn-north-1)
  • 替换InstanceA的实例ID和InstanceB的实例ID为对应EC2实例的实际ID(格式类似i-0abcdef1234567890)
  • 第一条规则仅允许绑定s3-it-role角色的请求来自InstanceA时,对classic桶执行所有S3操作
  • 第二条规则明确拒绝绑定该角色的请求来自InstanceB时,对桶的所有操作

验证步骤:

  1. 保存策略并应用到classic桶
  2. 在InstanceA上执行S3操作(比如aws s3 ls s3://classic),确认可正常访问
  3. 在InstanceB上执行相同操作,确认返回访问拒绝错误

内容的提问来源于stack exchange,提问作者Kotesh Ushkamalla

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 17:55:21