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

如何配置仅允许AWS内部资源访问的S3专属IAM用户

解决方案:限制IAM用户访问仅允许自身AWS账户内的资源

因为aws:SourceIp不支持私有IP,且无法使用IAM角色,你可以通过基于账户身份的条件判断来实现需求,核心是利用IAM的aws:PrincipalAccount或aws:PrincipalArn条件键,结合允许+拒绝的策略组合精准控制访问范围。

正确的策略配置示例

1. 授予S3基础访问权限

先创建允许该IAM用户访问目标S3桶的策略,按需添加具体操作:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject"
                // 根据实际需求补充其他S3操作
            ],
            "Resource": [
                "arn:aws:s3:::你的存储桶名称",
                "arn:aws:s3:::你的存储桶名称/*"
            ]
        }
    ]
}

2. 添加拒绝策略,阻断外部账户访问

再创建拒绝策略,仅允许自身AWS账户内的资源使用该密钥访问S3:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "*",
            "Resource": [
                "arn:aws:s3:::你的存储桶名称",
                "arn:aws:s3:::你的存储桶名称/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:PrincipalAccount": "你的AWS账户ID"
                }
            }
        }
    ]
}

关键说明

  • aws:PrincipalAccount会验证请求关联的AWS账户ID,只有来自你指定账户的请求才不会触发拒绝规则。
  • 需将上述两个策略同时附加到目标IAM用户,实现「允许合法操作+拒绝外部账户使用」的效果。
  • 如果需要更精准控制(比如仅允许特定EC2实例、Lambda函数),可结合aws:SourceArn指定具体资源ARN,示例:
    "Condition": {
        "ArnLike": {
            "aws:SourceArn": "arn:aws:ec2:你的区域:你的账户ID:instance/*"
        }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 09:00:06