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

使用AWS CloudFormation配置跨账户共享SNS Topic的CloudTrail

解决多账户CloudTrail共用集中式SNS Topic的CloudFormation配置问题

嘿,我刚碰到过类似的场景,给你梳理下怎么搞定这个问题!

首先你得知道:CloudFormation里的SnsTopicName参数是用来在当前部署账户创建新的SNS Topic的,这就是为什么你每个子账户都会生成新Topic的原因。要关联跨账户的已有Topic,你得用SnsTopicARN属性,而不是名称——这是关键的第一步!

接下来分两步操作:

1. 给主账户的集中式SNS Topic配置跨账户权限

首先要在托管SNS Topic的主账户里,允许子账户的CloudTrail服务向这个Topic发布消息。你需要给SNS Topic添加一个权限策略,示例如下(可以直接在主账户的SNS控制台配置,或者用CloudFormation模板管理):

{
  "Version": "2008-10-17",
  "Id": "CloudTrailCrossAccountPublishPolicy",
  "Statement": [
    {
      "Sid": "AllowSubAccountCloudTrailPublish",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudtrail.amazonaws.com"
      },
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:ap-southeast-1:1111111111:SNSTopic",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": [
            "2222222222",  # 替换成你的子账户ID
            "3333333333"   # 多个子账户可以继续添加
          ]
        }
      }
    }
  ]
}

这个策略只允许指定子账户的CloudTrail服务向这个Topic发送消息,安全性更高。如果想允许所有子账户(不推荐,除非是完全信任的组织内账户),可以去掉Condition部分。

2. 修改子账户的CloudTrail CloudFormation模板

把原来的SnsTopicName字段替换成SnsTopicARN,直接填入主账户的SNS Topic完整ARN即可。修改后的模板示例:

AWSTemplateFormatVersion: '2010-09-09'
Description: Centralised CloudTrail linked to shared SNS Topic
Resources:
  CloudTrail:
    Type: "AWS::CloudTrail::Trail"
    Properties:
      EnableLogFileValidation: false
      IncludeGlobalServiceEvents: true
      IsLogging: true
      IsMultiRegionTrail: true
      S3BucketName: company-cloudtrail-au
      TrailName: Trail1
      SnsTopicARN: "arn:aws:sns:ap-southeast-1:1111111111:SNSTopic"  # 这里用主账户的Topic ARN

额外注意事项

  • 如果你的S3日志Bucket也是主账户的集中式Bucket,别忘了给子账户的CloudTrail服务配置向该Bucket写入日志的权限(同样通过Bucket策略实现)。
  • 部署前可以先在子账户用AWS CLI测试下权限:比如用aws cloudtrail update-trail --name Trail1 --sns-topic-arn arn:aws:sns:ap-southeast-1:1111111111:SNSTopic,如果能成功执行,说明权限配置没问题。

这样配置后,用CloudFormation部署子账户的CloudTrail时,就会直接关联到主账户的SNS Topic,不会再在子账户新建Topic了,完全不用手动修改控制台!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:37:09