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

配置S3策略授权AWS组织子账户CloudFormation访问S3模板遇权限问题求助

解决组织内子账户CloudFormation访问S3模板的权限问题

问题根源

你当前的策略失效,核心原因是:跨账户场景下,子账户的CloudFormation并非直接以cloudformation.amazonaws.com服务主体发起请求,而是使用子账户内的IAM执行角色作为请求主体。此时aws:PrincipalIsAWSService条件无法匹配(因为主体是IAM角色而非服务本身),同时aws:PrincipalOrgID虽能匹配组织内账户的IAM主体,但和aws:PrincipalIsAWSService的逻辑与组合导致条件永远不满足。

修正后的S3桶策略

以下策略可实现组织内任意子账户的CloudFormation访问指定路径下的S3模板,无需逐个添加子账户:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket/指定模板目录/*", // 替换为你要授权的具体模板路径
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalOrgID": "o-yyyyyyyyyy", // 替换为你的AWS组织ID
                    "aws:CalledVia": "cloudformation.amazonaws.com"
                }
            }
        }
    ]
}

关键逻辑说明

  • aws:CalledVia:验证请求是通过CloudFormation服务发起的,确保只有CloudFormation触发的访问才被允许,避免组织内其他非CloudFormation的请求获取文件。
  • aws:PrincipalOrgID:限定请求主体属于你的AWS组织,自动覆盖所有新增的子账户,无需手动更新策略。
  • 资源路径:务必指定具体的模板目录(比如my-bucket/templates/*),实现“部分模板”的只读授权,避免开放整个桶的访问权限。

额外验证点

  1. 确认子账户内的CloudFormation执行角色(或默认服务角色)已拥有s3:GetObject权限(自定义角色需手动配置,默认角色通常自动具备)。
  2. 若S3桶开启了公共访问阻止,无需调整该设置——组织内账户的访问不属于公共访问范畴,不会被拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:10:24