musakhalidwork-alt/Multi-Account-Automated-Incident-Response
GitHub: musakhalidwork-alt/Multi-Account-Automated-Incident-Response
该框架利用 AWS 原生服务在多账号环境中实现集中式、可重复且支持例外处理的自动化安全事件响应流程。
Stars: 0 | Forks: 0
# 在大型、多账号环境中执行带异常处理的自动化安全事件响应简介
您响应安全事件的速度是最大程度减少其影响的关键。自动化事件响应可以帮助您扩展能力、快速缩小受感染资源的范围,并减少安全团队的重复性工作。但在使用自动化时,您还需要管理标准响应流程的例外情况。
本项目提供了一种模式和现成的模板,使用 AWS 原生工具以最少的代码库实现可扩展的多账号自动化事件响应流程设置。本项目演示了如何基于资源标签,为已批准的偏差设置异常处理。
重要提示:引入自动化时请务必谨慎。仔细测试每一个自动化响应,因为将次优的事件响应流程自动化可能会适得其反。
## 解决方案
在此解决方案中,您将使用 [AWS Systems Manager Automation](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html) 来执行大部分事件响应步骤。AWS 维护着现成的操作 runbook(自动化文档),因此您无需为它们维护自己的代码库。这些 runbook 涵盖了许多预定义的用例,例如启用 Amazon Simple Storage Service (S3) 存储桶加密、创建 Jira 工单或终止 Amazon Elastic Compute Cloud (EC2) 实例。每次执行在 [AWS Systems Manager](https://aws.amazon.com/systems-manager/) 中都有详尽的记录且可重复。对于少数没有现成自动化文档的常见情况,本文模板中提供了三个额外的 AWS Lambda 函数来执行所需的响应操作。这些 Lambda 函数仅需极少的代码,且在 AWS 原生工具之外没有任何外部依赖项。
代码和自动化 runbook 在中央安全账户中实现。您将使用中央安全账户来执行事件响应操作。您无需在正在监控和响应事件的服务账户中执行任何操作。
了解更多信息,请参阅我们的 **AWS 安全博客** 文章:[如何在多账号环境中执行自动化安全事件响应](https://aws.amazon.com/blogs/security/how-to-perform-automated-incident-response-multi-account-environment/)
## 如何从 Github 部署
0. 使用 `git clone [url]` 克隆仓库
### 主安全账户
1. 创建一个用于上传构件的 S3 存储桶。主账户的 aws-cli-profile 必须对该存储桶具有读写权限。您可以重复使用现有的存储桶。它可以位于与您部署区域不同的区域中。
2. 在 `./conf/master-acc.params.json` 中调整 Cloud Formation 堆栈参数。您绝对不能修改 S3BucketSources 和 S3SourcesPrefix 参数,因为它们由部署脚本进行调整。
3. 执行 `./scripts/deploy.sh` 进行部署,并传入类型参数 *master*、*S3 bucket*、*aws-cli-profile* 和 *region*。它会将构件上传到 S3 存储桶并部署 Cloud Formation 堆栈。
用法:`./deploy.sh account_type[master|service] s3://bucket aws-cli-profile aws-region`
执行示例
```
./deploy.sh master s3://sources.sec.ir.sample SecMaster-2 eu-west-3
updating: isolate_ec2_lambda_function.py (deflated 61%)
updating: start_ssm_automation_lambda_function.py (deflated 57%)
updating: confine_secgr_lambda_function.py (deflated 64%)
updating: security_hub.py (deflated 55%)
updating: notify.py (deflated 42%)
updating: security_hub_custom_actions.py (deflated 68%)
updating: cfnresponse.py (deflated 58%)
updating: account_session.py (deflated 50%)
updating: session.py (deflated 51%)
updating: guard_duty.py (deflated 63%)
updating: deactivate_principal_lambda_function.py (deflated 67%)
upload: src/cfn/master-acc/master-account-custom-actions-sec-hub.yaml to s3://sources.sec.ir.sample/master/master-account-custom-actions-sec-hub.yaml
upload: src/cfn/master-acc/copy-s3obj-to-regional-s3bucket.yaml to s3://sources.sec.ir.sample/master/copy-s3obj-to-regional-s3bucket.yaml
upload: src/cfn/master-acc/master-account-main.yaml to s3://sources.sec.ir.sample/master/master-account-main.yaml
upload: dist/master_lambda_functions.zip to s3://sources.sec.ir.sample/master/master_lambda_functions.zip
resource uploaded successfully to s3://sources.sec.ir.sample
going to create-stack
arn:aws:cloudformation:eu-west-3:160815017796:stack/IR-master-account-stack/f29a6970-7299-11ea-bf0e-0e3a535926a2
Waiting for CF stack to finish ..........................................
Stack IR-master-account-stack created (status CREATE_COMPLETE)
```
### 服务账户
1. 创建或重复使用一个用于上传构件的 S3 存储桶。服务账户的 aws-cli-profile 必须对该存储桶具有读写权限。您当然可以重复使用现有的存储桶。它可以位于与您部署区域不同的区域中。
2. 在 `./conf/service-acc.params.json` 中调整 Cloud Formation 堆栈参数。您绝对不能修改 S3BucketSources 和 S3SourcesPrefix 参数,因为它们会在部署时进行调整。
3. 执行 `./deploy.sh` 脚本,并传入类型参数 *service*、*S3 bucket*、*aws-cli-profile* 和 *region*。它会将构件上传到 S3 存储桶并部署 Cloud Formation 堆栈。
示例:
```
./deploy.sh service s3://sources.sec.ir.sample SecEnv-2 eu-west-3
...
...
```
标签:AWS, DevSecOps, DPI, PB级数据处理, Serverless, 上游代理, 安全运维, 自动化响应, 逆向工具