aws-samples/sample-aws-security-incident-response-integrations
GitHub: aws-samples/sample-aws-security-incident-response-integrations
该项目为 AWS Security Incident Response 提供与 Jira、ServiceNow 和 Slack 的双向集成示例,帮助安全团队在熟悉的工具中直接管理安全事件。
Stars: 24 | Forks: 16
# AWS Security Incident Response 示例集成
本项目为 [AWS Security Incident Response](https://aws.amazon.com/security-incident-response/) 提供了示例集成,使客户能够将该服务与其现有应用程序无缝集成,以用于事件响应、利益相关者通知和案例管理。
AWS Security Incident Response 可帮助您在最关键的时刻做出响应。该服务结合了自动化监控与调查的强大功能、加速的通信与协调,以及对 AWS 客户事件响应团队 (CIRT) 的 7x24 小时直接访问权限,帮助您快速准备、响应安全事件并从中恢复。
## 入门指南
### 前置条件
- 具有创建所需资源权限的 **AWS 账户**
- **用于 Jira 集成**
- Jira Cloud 账户
- **用于 ServiceNow 集成**
- 具有管理员访问权限的 ServiceNow 实例
- **用于 Slack 集成**
- 具有管理员访问权限的 Slack 工作区
- **工具**:AWS CDK、Python、AWS CLI、NVM、Node、PIP、Docker(具体的单步安装说明可在目标专用文档中找到)
### 部署
#### 特定集成目标的说明
**请参阅 [JIRA 文档](documentation/JIRA/JIRA.md) 获取有关如何部署 JIRA 集成的说明。**
**请参阅 [ServiceNow 文档](documentation/SERVICE_NOW/SERVICE_NOW.md) 获取有关如何部署 ServiceNow 集成的详细说明。**
**注意:** ServiceNow 集成现在同时支持 ITSM(IT 服务管理)和 IR(事件响应)模块。在部署期间请使用 `--integration-module` 参数指定合适的模块。
**请参阅 [Slack 文档](documentation/SLACK/SLACK.md) 获取有关如何部署 Slack 集成的详细说明。**
#### 扩展到其他集成目标
## 概述
AWS Security Incident Response 可帮助客户在最关键的时刻做出响应。本项目旨在弥合该服务的公共 API/SDK 与直接连接到 Slack、JIRA 和 ServiceNow 等常见应用程序之间的差距。它使客户能够直接从其首选的应用程序中执行 API 操作,同时保留 AWS Security Incident Response 的核心功能。
此存储库包含:
- **Jira 集成**:AWS Security Incident Response 与 Jira 之间的双向集成,用于问题跟踪
- **ServiceNow 集成**:AWS Security Incident Response 与 ServiceNow 之间的双向集成,用于事件管理
- **Slack 集成**:AWS Security Incident Response 与 Slack 之间的双向集成,用于实时协作
- **通用基础设施**:共享组件,如 EventBridge 事件总线、DynamoDB 表和 Lambda 层
- **部署脚本**:易于使用的部署工具,用于快速设置
## 功能
- **双向连接**:AWS Security Incident Response 与目标应用程序之间的无缝双向同步
- **实时更新**:事件驱动架构可确保跨系统近乎瞬时的更新
- **全面的 Jira 集成**:
- 根据 AWS Security Incident Response 案例在 Jira 中创建、更新和删除问题
- 同步评论、附件和状态更改
- [详细的 Jira 集成文档](documentation/JIRA/JIRA.md)
- **全功能的 ServiceNow 集成**:
- 根据 AWS Security Incident Response 案例在 ServiceNow 中创建、更新和删除事件
- 同时支持 ITSM(IT 服务管理)和 IR(事件响应)模块
- 自动设置 ServiceNow 组件(Business Rules、REST Messages)
- [详细的 ServiceNow 集成文档](documentation/SERVICE_NOW/SERVICE_NOW.md)
- **实时的 Slack 集成**:
- 为每个 AWS Security Incident Response 案例创建专用的 Slack 频道
- 双向同步消息、评论和附件
- 使用斜杠命令直接从 Slack 管理案例
- [详细的 Slack 集成文档](documentation/SLACK/SLACK.md)
- **强大的错误处理**:死信队列、CloudWatch 警报和全面的日志记录
- **设计安全**:最低权限、安全的凭证存储和加密
- **可扩展框架**:模块化架构使得添加新集成变得容易
## 架构

### 核心 AWS 服务
该解决方案利用了以下 AWS 服务:
- **Amazon EventBridge**:名为 "security-incident-event-bus" 的自定义事件总线,用于在系统之间路由事件
- **AWS Lambda**:用于处理事件和 API 调用的无服务器计算,包括每分钟运行一次的 Security IR Poller
- **Amazon Simple Notification Service (SNS)**:用于从 Jira 接收事件的消息服务
- **Amazon API Gateway**:用于从 ServiceNow 接收事件的 Webhook endpoint
- **Amazon Simple Queue Service (SQS)**:用于处理失败事件的死信队列
- **Amazon DynamoDB**:具有分区键 "PK" 和排序键 "SK" 的 NoSQL 数据库表,用于存储映射信息
- **Amazon CloudWatch**:监控、日志记录(保留期为一周)和警报
- **AWS Systems Manager Parameter Store**:用于凭证和配置的安全存储
- **AWS Lambda Layers**:用于领域模型、映射器和包装器的共享代码层
- **AWS Security Incident Response (SIR)**:核心的安全事件响应服务
## 使用说明
### Jira 集成
要使用 Jira 集成:
1. 按照 [Jira 集成文档](documentation/JIRA/JIRA.md) 中的说明部署集成
2. 配置 Jira Automation 以将事件发送到 SNS topic
3. 通过在 AWS Security Incident Response 中创建安全事件来测试集成
4. 验证您的 Jira 项目中是否创建了问题
有关设置 Jira 集成的详细说明,包括自动化规则、API token 创建和故障排除提示,请参阅 [Jira 集成文档](documentation/JIRA/JIRA.md)。
### ServiceNow 集成
要使用 ServiceNow 集成:
1. 按照 [ServiceNow 集成文档](documentation/SERVICE_NOW/SERVICE_NOW.md) 中的说明部署集成
2. ServiceNow Resource Setup Lambda 将自动配置 ServiceNow 中所需的组件
3. 通过在 ServiceNow 中创建安全事件来测试集成
4. 验证 AWS Security Incident Response 中是否创建了案例
有关设置 ServiceNow 集成的详细说明,包括业务规则、出站 REST 消息和故障排除提示,请参阅 [ServiceNow 集成文档](documentation/SERVICE_NOW/SERVICE_NOW.md)。
### Slack 集成
要使用 Slack 集成:
1. 按照 [Slack 集成文档](documentation/SLACK/SLACK.md) 中的说明部署集成
2. 配置您的 Slack 应用程序的 Event Subscriptions 和 Slash Commands
3. 通过在 AWS Security Incident Response 中创建安全事件来测试集成
4. 验证是否创建了包含案例详情的专用 Slack 频道
5. 通过发送消息和使用斜杠命令来测试双向同步
有关设置 Slack 集成的详细说明,包括 Slack 应用配置、Webhook 设置和故障排除提示,请参阅 [Slack 集成文档](documentation/SLACK/SLACK.md)。
## 故障排除
### 常见问题
#### 事件传递失败
**如果来自 AWS Security Incident Response 或 Jira/ServiceNow 的更新失败会发生什么?**
该集成包含强大的错误处理机制:
1. **死信队列 (DLQ)**:无法传递到 EventBridge 的事件将被发送到 DLQ
2. **CloudWatch Alarms**:当 DLQ 中出现消息时触发的警报
3. **CloudWatch Dashboard**:提供集成健康状况的可视性

**DLQ 在哪里?**
DLQ 是一个标准的 Amazon SQS 队列,EventBridge 使用它来存储无法传递到目标的事件。查找名称类似于 `AwsSecurityIncidentResponseSample-SecurityIncidentEventBusLoggerdead-*` 的 SQS 队列并检查消息。
#### 处理失败的事件
要处理 DLQ 中的失败事件:
1. 导航到 SQS 控制台并找到 DLQ
2. 选择消息并选择“查看/删除消息”
3. 检查消息内容以了解失败原因
4. 手动处理事件或使用 AWS SDK 以编程方式处理它们
### 特定于集成的故障排除
- 有关 Jira 集成问题,请参阅 [Jira 集成故障排除指南](documentation/JIRA/JIRA.md#troubleshooting)
- 有关 ServiceNow 集成问题,请参阅 [ServiceNow 集成故障排除指南](documentation/SERVICE_NOW/SERVICE_NOW_TROUBLESHOOTING.md)
- 有关 Slack 集成问题,请参阅 [Slack 集成故障排除指南](documentation/SLACK/SLACK_TROUBLESHOOTING.md)
### 获取帮助
如果您遇到故障排除指南中未涵盖的问题:
1. 检查相关 Lambda 函数的 CloudWatch Logs
2. 查看 EventBridge 事件总线的事件传递状态
3. 在 GitHub 存储库中提交 issue,并附带有关该问题的详细信息
## 开发
### 测试
使用 pytest 运行测试:
```
pytest
```
### 代码质量
本项目使用 [ruff](https://github.com/astral-sh/ruff) 来强制执行代码质量标准。要设置 ruff:
1. 安装开发依赖项:
```
pip install -r requirements-dev.txt
```
2. 格式化代码
```
ruff format
```
## 安全
本项目实施了各种安全措施来保护您的数据和基础设施:
### 访问控制
- **最小权限原则**:每个函数所需的具有最低权限的 IAM 角色
- **基于资源的策略**:SNS topic 和其他资源具有严格的访问策略
- **CDK Nag 抑制**:任何安全发现都会被明确记录,并且仅在必要时进行抑制
### 凭证管理
- **AWS Systems Manager Parameter Store**:所有凭证都安全地存储在 Parameter Store 中
- **无硬编码密钥**:所有敏感值在部署期间作为参数传递
- **安全字符串参数**:敏感值存储为加密的 SecureString 参数
### 监控和日志记录
- **CloudWatch Logs**:所有 Lambda 函数的全面日志记录
- **CloudWatch Alarms**:针对失败的事件和其他问题的警报
- **CloudWatch Dashboard**:提供对集成健康状况和性能的可视性
### 数据保护
- **数据加密**:DynamoDB 表使用静态加密
- **安全通信**:所有 API 调用均使用 HTTPS
- **最少的数据存储**:仅存储基本的映射信息
### 最佳实践
- 定期轮换 API token 和凭证
- 监控 CloudWatch Logs 以发现可疑活动
- 使集成组件保持为最新版本
## 许可证
本项目基于 MIT-0 许可证授权。有关详细信息,请参阅 LICENSE 文件。
## 常见问题
### 一般问题
**问:我可以同时使用多个集成吗?**
答:是的,您可以部署多个集成(Jira、ServiceNow 和 Slack),以将 AWS Security Incident Response 同时与多个平台连接。
**问:运行这些集成需要多少成本?**
答:成本取决于您对 AWS 服务(如 Lambda、EventBridge、SNS 和 DynamoDB)的使用情况。适度使用的话,大多数部署都将包含在这些服务的 AWS 免费套餐内。
**问:我可以根据我的特定需求自定义集成吗?**
答:是的,这些集成被设计为可扩展的。您可以修改 Lambda 函数、事件模式和其他组件以满足您的特定要求。
**问:这些集成有多安全?**
答:这些集成遵循 AWS 安全最佳实践,包括最低权限访问、安全的凭证存储和加密。有关更多详细信息,请参阅 [安全](#security) 部分。
### 技术问题
**问:如果集成组件出现故障会发生什么?**
答:这些集成包含错误处理机制,例如死信队列和 CloudWatch 警报。失败的事件将被存储以供稍后处理。
**问:我可以在多个 AWS 区域中部署这些集成吗?**
答:是的,您可以在提供 AWS Security Incident Response 和所需服务的任何 AWS 区域中部署这些集成。
**问:部署后如何更新集成?**
答:您可以通过使用相同或更新后的参数再次运行部署命令来更新集成。对于 Slack,您还可以使用参数轮换脚本来更新凭证。
**问:我可以在哪里找到用于故障排除的详细日志?**
答:所有 Lambda 函数都会将日志写入 CloudWatch Logs。您可以在 CloudWatch 控制台中找到日志组,使用 CloudFormation 输出中提供的 URL,或者使用为每个集成提供的验证脚本。
标签:MITM代理, 请求拦截, 逆向工具