跨多账号收集CloudTrail日志

在本篇文章中,我将介绍如何设置跨账户收集 AWS CloudTrail 事件日志。如果不是构建了多账户管理方式则可以跳过此文内容。

基本概念

如果不了解这个基本概念对于后面的内容理解起来就会比较困难,建议先查看基本概念。

组织,主账号和成员账号

多账户管理

假设前提

有多个AWS账户:dev,test,prod,security,management。为了对每个账户进行合规性审计,我们需要将日志集中存储到security账户中。Management是主账户,拥有最大的权限。

收集所有账户的 CloudTrail Logs到Account S(security-account),

Account A (dev-account),

Account B (test-account),

Account C (prod-account),

Account D (manage-account) 。

部署

  1. 在Account S(security-account)创建一个S3存储桶,更改存储桶策略允许Account D (manage-account)写入文件。以下的示例存储桶策略实现的是允许账户只要在组织范围内,就可以读取和写入。your-organization-id可以从AWS Organizations这个服务中获取到,https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_details.html#orgs_view_org

通过CLI命令可以获取出Organization ID:ID类似于"o-aa111bb222"

$ aws organizations describe-organization

S3存储桶示例策略如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allowcloudtrailread",
            "Principal": {
                "Service": "cloudtrail.amazonaws.com"
            },
            "Action": "s3:Get*",
            "Resource": "arn:aws:s3:::<your-cloudtrail-bucket-name>",
            "Condition": {
                "StringEquals": {
                    "aws:SourceOrgID": "<your-organization-id>"
                }
            }
        },
        {
            "Sid": "allowcloudtraiwrite",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudtrail.amazonaws.com"
            },
            "Action": "s3:Put*",
            "Resource": "arn:aws:s3:::<bucket-name>/*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceOrgID": "<your-organization-id>"
                }
            }
        }
    ]
}
  1. 登录管理账户Account D,创建组织跟踪,并发送到CloudWatch Logs。创建跟踪(trail)的时候要注意勾选2个配置,一个是“为我组织中的所有账户启用”,另外一个是启用“CloudWatch Logs”,使用刚才在安全账号创建好的S3存储桶。其余配置根据需要进行设置。

    1. “为我组织中的所有账户启用”可以实现多个账户中cloudtrail的日志统一收集;

    2. “CloudWatch Logs”启用是实现安全告警通过邮件或者slack等方式发送的前提条件;

    3. 使用刚才在Account S(security-account)创建好的S3存储桶名称。

  1. 创建完成后即实现了跨多账号收集CloudTrail日志,并且可以通过CloudWatch触发安全告警。

最后更新于