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

如何编写IAM策略让Dev环境EC2仅访问带dev前缀的S3存储桶?

限制Dev环境EC2访问前缀为dev-的S3存储桶的IAM策略方案

先明确:s3:prefix这个条件确实仅作用于存储桶内的对象路径前缀,而非存储桶名称本身。要实现仅允许Dev环境EC2访问名称以dev-开头的S3桶,需要通过资源匹配+条件判断结合实现。

核心思路

  • 匹配所有名称以dev-开头的存储桶及其内部所有对象
  • 限制仅允许Dev环境VPC内的EC2实例发起请求
  • 确保仅访问本账号下的存储桶,避免跨账号误操作

完整IAM策略示例

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::dev-*",
                "arn:aws:s3:::dev-*/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:SourceVpc": "vpc-xxxxxx",  // 替换为你的Dev环境VPC ID
                    "aws:ResourceAccount": "123456789012"  // 替换为你的AWS账号ID
                }
            }
        }
    ]
}

策略细节说明

  • 资源配置:arn:aws:s3:::dev-*匹配所有名称以dev-开头的存储桶;arn:aws:s3:::dev-*/*匹配这些桶内的所有对象。
  • 条件限制:
    • aws:SourceVpc:仅允许来自指定Dev环境VPC的请求,直接排除Test环境EC2的访问权限。
    • aws:ResourceAccount:确保仅能访问本账号下的存储桶,防止恶意利用通配符访问其他账号的同名前缀桶。
  • 动作列表:根据实际业务需求调整允许的S3操作,比如仅需读权限时,保留GetObject和ListBucket即可,移除写/删操作。

额外注意事项

  • 需将该策略关联到Dev环境EC2实例绑定的IAM角色上,且EC2实例必须处于指定的Dev VPC内。
  • 若需更精细的对象访问控制(比如仅允许访问桶内特定路径),可在资源中添加路径匹配,例如arn:aws:s3:::dev-*/data/*。

内容的提问来源于stack exchange,提问作者J R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 08:32:02