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

公共S3存储桶跨账号权限问询:账号2用户XYZ能否执行操作?

跨账号S3权限问题解答

答案很明确:AWS账号2的用户XYZ只能执行s3:GetObject(读取对象)操作,无法执行列出桶、上传、删除对象的操作。

原因分析:

AWS的权限判定遵循「默认拒绝,显式允许」的核心规则,且跨账号访问非自有资源时,需要同时满足**身份侧(IAM策略)和资源侧(桶策略)**的双重允许,具体到这个场景:

  • 读取对象(s3:GetObject):桶策略已经明确允许所有用户(Principal: "*")执行这个操作,再加上XYZ的IAM策略也允许该操作,双重允许下这个操作是可行的。
  • 列出桶(s3:ListBucket)、上传(s3:PutObject)、删除(s3:DeleteObject):
    1. XYZ的IAM策略虽然允许这些操作,但这只是账号2给自己用户的授权,相当于“账号2允许你发起这些操作请求”;
    2. 但目标S3桶的桶策略里,并没有给账号2或XYZ用户授予这些操作的权限,相当于“资源所有者没同意你执行这些操作”;
    3. 跨账号访问非自有资源时,必须同时获得身份侧和资源侧的允许,所以这些操作会被AWS拒绝。

如果想要让XYZ拥有这些完整权限,需要修改S3桶的桶策略,添加允许账号2(或XYZ用户)执行对应操作的语句,比如:

{
  "Version": "2012-10-17",
  "Id": "Policy1589032691178",
  "Statement": [
    {
      "Sid": "Stmt1589032265458",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::<BUCKET>/*"
    },
    {
      "Sid": "StmtAllowAccount2Actions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::ACCOUNT2_ID:user/XYZ"
      },
      "Action": [
        "s3:ListBucket",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": [
        "arn:aws:s3:::<BUCKET>",
        "arn:aws:s3:::<BUCKET>/*"
      ]
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 15:22:35