awslabs/aws-security-analytics-bootstrap
GitHub: awslabs/aws-security-analytics-bootstrap
通过CloudFormation模板快速部署Athena分析环境,帮助安全团队对AWS服务日志进行即时可用的安全调查。
Stars: 273 | Forks: 56
# AWS 安全分析引导程序
AWS 安全分析引导程序使客户能够通过提供快速部署、随时可用且易于维护的 Amazon Athena 分析环境,对 AWS 服务日志进行安全调查。
如果您准备好部署 Athena 分析引导程序,请直接跳转到[部署 AWS 安全分析引导程序](#deploying-aws-security-analytics-bootstrap)
## AWS 安全分析引导程序用例
AWS 安全分析引导程序适用于需要快速设置 Athena 并对 Amazon S3 存储桶中存档的 AWS 服务日志进行调查的 Amazon Web Services (AWS) 客户。
AWS 安全分析引导程序旨在为常见的安全调查用例提供即时可用的功能,部署快速且易于维护。AWS 安全分析引导程序提供 AWS CloudFormation 模板,可快速创建完全配置的 Athena 分析环境,包括 Amazon Athena 工作组、AWS Glue 数据库、AWS Glue 表和演示 Athena 查询。AWS 安全分析引导程序支持常见的安全调查需求,包括跨多个账户、区域和日期的分区和搜索。AWS 安全分析引导程序使用[Amazon Athena 分区投影](https://docs.aws.amazon.com/athena/latest/ug/partition-projection.html)来提供跨账户、区域和日期的动态分区,无需任何额外基础设施、代码或频繁维护。按账户、区域和/或日期对 AWS 服务日志数据进行分区将使 AWS 客户能够创建有针对性的查询,从而降低其成本和查询时间。
### AWS 客户使用 AWS 安全分析引导程序的常见用例:
- 希望在 AWS 中原生搜索 AWS 服务日志
- 当前没有可用的 SIEM
- 需要搜索超过 SIEM 保留期的日志
- 没有在 SIEM 中索引所需的 AWS 服务日志
- 需要调查尚未集中日志的 AWS 账户
## AWS 安全分析引导程序当前支持的 AWS 服务日志
AWS 服务日志 | 事件类型
------|------|
[AWS CloudTrail](https://docs.aws.amazon.com/cloudtrail/index.html) | AWS API 事件(管理事件和数据事件)
[Amazon Virtual Private Cloud (VPC) 流日志](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) | 网络事件
[Amazon Route 53 DNS 解析器查询日志](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resolver-query-logs.html) | DNS 解析事件
*注意:*我们将添加对安全调查中常用的其他 AWS 服务日志的支持,欢迎在 `Issues` 中提交或投票支持您的请求。
## AWS 安全分析引导程序架构概述
单账户部署 | 跨账户部署
:-------------------------:|:-------------------------:
 | 
## 部署 AWS 安全分析引导程序
### 前置条件
- AWS 服务日志(例如 AWS CloudTrail、Amazon VPC 流日志、Amazon Route 53 解析器查询日志)必须以其原生格式无修改地传送到 Amazon S3 存储桶
- 对于[跨账户部署](https://docs.aws.amazon.com/athena/latest/ug/cross-account-permissions.html),必须设置存储桶策略,并且对象需要由存储桶账户所有者拥有,以启用跨账户访问
- 对于通过 AWS KMS 加密的日志,用于提交 Athena 查询的 AWS IAM 主体需要在其 IAM 策略中拥有 `kms:Decrypt` 和 `kms:DescribeKey` 权限,并且 KMS 密钥策略需要授予它们相同的访问权限
### 入门
[Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) 将部署一个功能完整的安全分析环境,包括:
资源 | 说明
---------|--------
**Athena 工作组** | - 配置为将加密输出提供到指定的 S3 位置
- 包含预配置的演示查询作为命名查询 **Glue 数据库** | - 包含关联的 Glue 表 **Glue 表** | 标准化表架构,具有账户、区域和日期的动态分区,用于:
- CloudTrail 日志
- VPC 流日志
- Route53 DNS 解析器日志 **部署时间:**约 10 分钟 CloudFormation 参数部分提供了注释以帮助了解部署所需的参数,详细部署步骤在 [AWS 安全分析引导程序部署指南](AWSSecurityAnalyticsBootstrap/docs/aws_security_analytics_bootstrap_deployment_guide.md) 中提供。 ## AWS 安全分析引导程序资源 *注意:*[Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) 可以单独部署,也可以根据客户的用例和要求与其他资源结合部署。 | 资源类型 | 资源 | 资源提供 | 清理/删除说明 | | :--- | :--- | :--- | :--- | | AWS CloudFormation 模板 | [Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) | 创建可立即使用的 Athena 安全分析环境,包括:Athena 工作组、Glue 数据库、Glue 表和演示命名查询。CloudFormation 参数部分提供了注释以帮助客户完成部署,或者客户可以查看 [AWS 安全分析引导程序部署指南](AWSSecurityAnalyticsBootstrap/docs/aws_security_analytics_bootstrap_deployment_guide.md) 了解更多详情。 | 删除 CloudFormation 堆栈时,此模板创建的所有资源都将被删除。这不会影响源日志数据。 | | AWS CloudFormation 模板 | [Athena 管理员和 Athena 分析师的 IAM 角色和策略](AWSSecurityAnalyticsBootstrap/cfn/Athena_IAM_setup.yml) | 创建遵循最小权限原则的 Athena 管理员和 Athena 分析师角色的 IAM 角色和策略| 删除 CloudFormation 堆栈时,此模板创建的所有资源都将被删除。 | | AWS CloudFormation 模板 | [启用流日志](AWSSecurityAnalyticsBootstrap/cfn/VPC_enable_flowlogs.yml) | 为指定的 VPC、子网或 ENI 启用 VPC 流日志,包含 [v5 的所有字段](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-logs-fields),按 Athena Bootstrap 预期的顺序 | 删除 CloudFormation 堆栈时,VPC 流日志配置将被删除。如有需要,创建的任何日志需要从目标 S3 存储桶中单独删除。 | | CREATE TABLE SQL 语句 | [AWS CloudTrail 表架构](AWSSecurityAnalyticsBootstrap/sql/ddl/create_tables/create_cloudtrail_table.sql) | 通过 Athena SQL 查询语句创建按账户、区域和日期分区的 CloudTrail 日志 Glue 表。此表也由 [Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) 创建;此 SQL 语句可用于在现有 Athena 环境中创建表,用于临时部署用例。需要使用客户环境详情更新的部分上方包含"TODO"注释。 | 可以使用 Athena 查询语句 `DROP TABLE <表名>` 删除表(例如 `DROP TABLE cloudtrail`) | | CREATE TABLE SQL 语句 | [Amazon VPC 流日志表架构](AWSSecurityAnalyticsBootstrap/sql/ddl/create_tables/create_vpcflowlog_table.sql) | 通过 Athena SQL 查询语句创建按账户、区域和日期分区的 VPC 流日志 Glue 表。此表也由 [Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) 创建;此 SQL 语句可用于在现有 Athena 环境中创建表,用于临时部署用例。需要使用客户环境详情更新的部分上方包含"TODO"注释。 |可以使用 Athena 查询语句 `DROP TABLE <表名>` 删除表(例如 `DROP TABLE vpcflowlogs`) | | CREATE TABLE SQL 语句 | [Amazon Route 53 解析器查询日志表架构](AWSSecurityAnalyticsBootstrap/sql/ddl/create_tables/create_dnsquerylog_table.sql) | 通过 Athena SQL 查询语句创建按账户、VPC ID 和日期分区的 Route 53 DNS 解析器日志 Glue 表。此表也由 [Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) 创建;此 SQL 语句可用于在现有 Athena 环境中创建表,用于临时部署用例。需要使用客户环境详情更新的部分上方包含"TODO"注释。 | 可以使用 Athena 查询语句 `DROP TABLE <表名>` 删除表(例如 `DROP TABLE r53dns`) | | 演示 Athena 查询 | [AWS CloudTrail 演示查询](AWSSecurityAnalyticsBootstrap/sql/dml/analytics/cloudtrail/cloudtrail_demo_queries.sql) | CloudTrail 日志的演示 Athena 查询。这些查询也由 [Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) 在 Athena 工作组中创建为命名查询 | 不适用 - 未创建资源 | | 演示 Athena 查询 | [Amazon VPC 流日志演示查询](AWSSecurityAnalyticsBootstrap/sql/dml/analytics/vpcflow/vpcflow_demo_queries.sql) | VPC 流日志的演示 Athena 查询。这些查询也由 [Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) 在 Athena 工作组中创建为命名查询 | 不适用 - 未创建资源 | | 演示 Athena 查询 | [Amazon Route 53 解析器查询日志演示查询](AWSSecurityAnalyticsBootstrap/sql/dml/analytics/dns/dns_demo_queries.sql) | Route 53 DNS 解析器日志的演示 Athena 查询。这些查询也由 [Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) 在 Athena 工作组中创建为命名查询 | 不适用 - 未创建资源 | ## 当前超出范围 - 如何将数据传送到 Amazon S3 存储桶(例如日志配置) - 优化底层数据源(例如合并小文件、转换为 Parquet/C 列式格式) - 跨账户部署的存储桶策略更新 - AWS KMS 策略更新当前超出范围 ## 费用 通过安装 AWS 安全分析引导程序,AWS 客户可能会产生以下服务费用: - Amazon Athena:https://aws.amazon.com/athena/pricing/ - Amazon S3:https://aws.amazon.com/s3/pricing/ - AWS KMS:https://aws.amazon.com/kms/pricing/ ## 相关资源 ### AWS 资源 - [[工具] AWS 辅助日志启用器](https://github.com/awslabs/assisted-log-enabler-for-aws) - [[工具] AthenaGlue 服务日志](https://github.com/awslabs/athena-glue-service-logs) - [[服务] Amazon Detective](https://aws.amazon.com/detective/) - [[文档] 使用 Amazon Athena 运行 SQL 查询](https://docs.aws.amazon.com/athena/latest/ug/querying-athena-tables.html) - [[文档] 查询 AWS 服务日志](https://docs.aws.amazon.com/athena/latest/ug/querying-AWS-service-logs.html) - [[博客] 使用 AWS CloudTrail 和 Amazon Athena 分析安全、合规和运营活动](https://aws.amazon.com/blogs/big-data/) - [[博客] Athena 性能优化技巧](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) - [[问答] CTAS 分桶指南](https://aws.amazon.com/premiumsupport/knowledge-center/set-file-number-size-ctas-athena/) - [[博客] Amazon Route 53 解析器查询日志](https://aws.amazon.com/blogs/aws/log-your-vpc-dns-queries-with-route-53-resolver-query-logs) - [[文档] 配置 Amazon Route 53 解析器查询日志](https://console.aws.amazon.com/route53resolver/home/query-logging#/query-logging/configure)(选择 Amazon S3 目标) - [[文档] 安全参考架构:日志存档账户](https://docs.aws.amazon.com/prescriptive-guidance/latest/security-reference-architecture/log-archive.html) ### 第三方资源 - [[指南] Athena 指南](https://the.athena.guide/) - [[文档] Presto 文档(当前版本)](https://prestodb.io/docs/current/) - [[书籍] Presto 权威指南(电子书)](https://www.starburst.io/wp-content/uploads/2020/04/OReilly-Presto-The-Definitive-Guide.pdf) ## 贡献者 AWS 安全分析引导程序建立在无数巨人的肩膀上,并得益于许多合作者和贡献者的帮助。感谢迄今为止帮助或启发本项目的每个人,也感谢未来的任何贡献预先表示感谢。 非常感谢您的贡献: - Aaron Lennon - Anna McAbee - Bohan Li - Brian Andrzejewski - Brian Poole - Casey Reniker - Ross Warren - Clayton Darnell - Cydney Stude - Freddy Kasprzykowski - Jason Hurst - Jonathon Poling - Joshua McKiddy - Justin Fry - Kyle Dickinson - Luis Maldonado - Marc Luescher - Matt Gurr - Matt Helgen - Matthew Harvey - Pathik Shah - Ravi Sankar Prasad Kadiri - Richard Billington - Ross Warren - Srinivas Ananda Babu - Theo Tolv ## 安全性 更多信息请参阅 [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications)。 ## 许可证 本项目根据 Apache-2.0 许可证获得许可。
- 包含预配置的演示查询作为命名查询 **Glue 数据库** | - 包含关联的 Glue 表 **Glue 表** | 标准化表架构,具有账户、区域和日期的动态分区,用于:
- CloudTrail 日志
- VPC 流日志
- Route53 DNS 解析器日志 **部署时间:**约 10 分钟 CloudFormation 参数部分提供了注释以帮助了解部署所需的参数,详细部署步骤在 [AWS 安全分析引导程序部署指南](AWSSecurityAnalyticsBootstrap/docs/aws_security_analytics_bootstrap_deployment_guide.md) 中提供。 ## AWS 安全分析引导程序资源 *注意:*[Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) 可以单独部署,也可以根据客户的用例和要求与其他资源结合部署。 | 资源类型 | 资源 | 资源提供 | 清理/删除说明 | | :--- | :--- | :--- | :--- | | AWS CloudFormation 模板 | [Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) | 创建可立即使用的 Athena 安全分析环境,包括:Athena 工作组、Glue 数据库、Glue 表和演示命名查询。CloudFormation 参数部分提供了注释以帮助客户完成部署,或者客户可以查看 [AWS 安全分析引导程序部署指南](AWSSecurityAnalyticsBootstrap/docs/aws_security_analytics_bootstrap_deployment_guide.md) 了解更多详情。 | 删除 CloudFormation 堆栈时,此模板创建的所有资源都将被删除。这不会影响源日志数据。 | | AWS CloudFormation 模板 | [Athena 管理员和 Athena 分析师的 IAM 角色和策略](AWSSecurityAnalyticsBootstrap/cfn/Athena_IAM_setup.yml) | 创建遵循最小权限原则的 Athena 管理员和 Athena 分析师角色的 IAM 角色和策略| 删除 CloudFormation 堆栈时,此模板创建的所有资源都将被删除。 | | AWS CloudFormation 模板 | [启用流日志](AWSSecurityAnalyticsBootstrap/cfn/VPC_enable_flowlogs.yml) | 为指定的 VPC、子网或 ENI 启用 VPC 流日志,包含 [v5 的所有字段](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html#flow-logs-fields),按 Athena Bootstrap 预期的顺序 | 删除 CloudFormation 堆栈时,VPC 流日志配置将被删除。如有需要,创建的任何日志需要从目标 S3 存储桶中单独删除。 | | CREATE TABLE SQL 语句 | [AWS CloudTrail 表架构](AWSSecurityAnalyticsBootstrap/sql/ddl/create_tables/create_cloudtrail_table.sql) | 通过 Athena SQL 查询语句创建按账户、区域和日期分区的 CloudTrail 日志 Glue 表。此表也由 [Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) 创建;此 SQL 语句可用于在现有 Athena 环境中创建表,用于临时部署用例。需要使用客户环境详情更新的部分上方包含"TODO"注释。 | 可以使用 Athena 查询语句 `DROP TABLE <表名>` 删除表(例如 `DROP TABLE cloudtrail`) | | CREATE TABLE SQL 语句 | [Amazon VPC 流日志表架构](AWSSecurityAnalyticsBootstrap/sql/ddl/create_tables/create_vpcflowlog_table.sql) | 通过 Athena SQL 查询语句创建按账户、区域和日期分区的 VPC 流日志 Glue 表。此表也由 [Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) 创建;此 SQL 语句可用于在现有 Athena 环境中创建表,用于临时部署用例。需要使用客户环境详情更新的部分上方包含"TODO"注释。 |可以使用 Athena 查询语句 `DROP TABLE <表名>` 删除表(例如 `DROP TABLE vpcflowlogs`) | | CREATE TABLE SQL 语句 | [Amazon Route 53 解析器查询日志表架构](AWSSecurityAnalyticsBootstrap/sql/ddl/create_tables/create_dnsquerylog_table.sql) | 通过 Athena SQL 查询语句创建按账户、VPC ID 和日期分区的 Route 53 DNS 解析器日志 Glue 表。此表也由 [Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) 创建;此 SQL 语句可用于在现有 Athena 环境中创建表,用于临时部署用例。需要使用客户环境详情更新的部分上方包含"TODO"注释。 | 可以使用 Athena 查询语句 `DROP TABLE <表名>` 删除表(例如 `DROP TABLE r53dns`) | | 演示 Athena 查询 | [AWS CloudTrail 演示查询](AWSSecurityAnalyticsBootstrap/sql/dml/analytics/cloudtrail/cloudtrail_demo_queries.sql) | CloudTrail 日志的演示 Athena 查询。这些查询也由 [Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) 在 Athena 工作组中创建为命名查询 | 不适用 - 未创建资源 | | 演示 Athena 查询 | [Amazon VPC 流日志演示查询](AWSSecurityAnalyticsBootstrap/sql/dml/analytics/vpcflow/vpcflow_demo_queries.sql) | VPC 流日志的演示 Athena 查询。这些查询也由 [Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) 在 Athena 工作组中创建为命名查询 | 不适用 - 未创建资源 | | 演示 Athena 查询 | [Amazon Route 53 解析器查询日志演示查询](AWSSecurityAnalyticsBootstrap/sql/dml/analytics/dns/dns_demo_queries.sql) | Route 53 DNS 解析器日志的演示 Athena 查询。这些查询也由 [Athena 基础设施 CloudFormation 模板](AWSSecurityAnalyticsBootstrap/cfn/Athena_infra_setup.yml) 在 Athena 工作组中创建为命名查询 | 不适用 - 未创建资源 | ## 当前超出范围 - 如何将数据传送到 Amazon S3 存储桶(例如日志配置) - 优化底层数据源(例如合并小文件、转换为 Parquet/C 列式格式) - 跨账户部署的存储桶策略更新 - AWS KMS 策略更新当前超出范围 ## 费用 通过安装 AWS 安全分析引导程序,AWS 客户可能会产生以下服务费用: - Amazon Athena:https://aws.amazon.com/athena/pricing/ - Amazon S3:https://aws.amazon.com/s3/pricing/ - AWS KMS:https://aws.amazon.com/kms/pricing/ ## 相关资源 ### AWS 资源 - [[工具] AWS 辅助日志启用器](https://github.com/awslabs/assisted-log-enabler-for-aws) - [[工具] AthenaGlue 服务日志](https://github.com/awslabs/athena-glue-service-logs) - [[服务] Amazon Detective](https://aws.amazon.com/detective/) - [[文档] 使用 Amazon Athena 运行 SQL 查询](https://docs.aws.amazon.com/athena/latest/ug/querying-athena-tables.html) - [[文档] 查询 AWS 服务日志](https://docs.aws.amazon.com/athena/latest/ug/querying-AWS-service-logs.html) - [[博客] 使用 AWS CloudTrail 和 Amazon Athena 分析安全、合规和运营活动](https://aws.amazon.com/blogs/big-data/) - [[博客] Athena 性能优化技巧](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) - [[问答] CTAS 分桶指南](https://aws.amazon.com/premiumsupport/knowledge-center/set-file-number-size-ctas-athena/) - [[博客] Amazon Route 53 解析器查询日志](https://aws.amazon.com/blogs/aws/log-your-vpc-dns-queries-with-route-53-resolver-query-logs) - [[文档] 配置 Amazon Route 53 解析器查询日志](https://console.aws.amazon.com/route53resolver/home/query-logging#/query-logging/configure)(选择 Amazon S3 目标) - [[文档] 安全参考架构:日志存档账户](https://docs.aws.amazon.com/prescriptive-guidance/latest/security-reference-architecture/log-archive.html) ### 第三方资源 - [[指南] Athena 指南](https://the.athena.guide/) - [[文档] Presto 文档(当前版本)](https://prestodb.io/docs/current/) - [[书籍] Presto 权威指南(电子书)](https://www.starburst.io/wp-content/uploads/2020/04/OReilly-Presto-The-Definitive-Guide.pdf) ## 贡献者 AWS 安全分析引导程序建立在无数巨人的肩膀上,并得益于许多合作者和贡献者的帮助。感谢迄今为止帮助或启发本项目的每个人,也感谢未来的任何贡献预先表示感谢。 非常感谢您的贡献: - Aaron Lennon - Anna McAbee - Bohan Li - Brian Andrzejewski - Brian Poole - Casey Reniker - Ross Warren - Clayton Darnell - Cydney Stude - Freddy Kasprzykowski - Jason Hurst - Jonathon Poling - Joshua McKiddy - Justin Fry - Kyle Dickinson - Luis Maldonado - Marc Luescher - Matt Gurr - Matt Helgen - Matthew Harvey - Pathik Shah - Ravi Sankar Prasad Kadiri - Richard Billington - Ross Warren - Srinivas Ananda Babu - Theo Tolv ## 安全性 更多信息请参阅 [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications)。 ## 许可证 本项目根据 Apache-2.0 许可证获得许可。
标签:Amazon Athena, AWS Glue, AWS安全, AWS服务日志, CloudFormation部署, C语言, Gradle集成, S3日志存储, SIEM替代方案, SOC工具, 分区投影, 多区域日志, 多线程, 多账户安全, 安全分析环境, 安全日志分析, 安全运营, 扫描框架, 数据湖, 日志调查, 查询优化, 漏洞发现