ministryofjustice/opg-incident-response
GitHub: ministryofjustice/opg-incident-response
基于Django和Monzo Response构建的Slack深度集成事件响应管理平台,支持事件追踪、PagerDuty告警和GOV.UK标准界面。
Stars: 4 | Forks: 2
# OPG Incident Response ⚡
OPG Incident Response 是一个基于 Django 的应用程序,基于 [Monzo 的 Response 工具](https://github.com/monzo/response) 构建,并集成了我们使用的一些额外工具,同时重新设计了界面以符合 GOV.UK 设计标准。
## 本地开发
要在本地启动应用程序,请将 `env.dev.example` 复制到 `.env` 并配置其中的环境变量。所有环境变量都需要设置,但有些可以设置为无意义的值(即 `ENV_VAR=...`),如下表所详述。
你需要按照以下说明配置一个 Slack 应用,然后可以使用 `docker-compose up -d` 启动应用程序。该应用将由 nginx 在 ```http://localhost:80/``` 上提供服务
请注意,如果你正在使用 ngrok,他们现在引入了认证令牌。你可以将 NGROK_AUTHTOKEN 添加到本地 .env 文件中,它将被传递到容器中,这样你就不会冒着将其提交的风险。
## 版本与发布
该项目使用 [SemVer](https://semver.org) 进行版本控制。
默认情况下,任何合并到 main 分支的操作都将是一个 MINOR 版本发布。你可以通过在进入 main 的提交消息中添加 `#major`、`#minor` 或 `#patch` 来控制要增加的版本号。
### 配置 Slack
为了避免污染我们真实的 Slack 工作区,并让你完全控制权限,你应该使用 [你自己的 Slack 工作区](#slack-create) 配置应用程序的本地副本。
你现在需要 [创建一个 Slack 应用](#slack-app-create) 并 [对其进行配置](#slack-app-config)。请注意,你需要公开的 ngrok URL 来配置供 Slack 使用的端点,你可以在运行 ```docker-compose up``` 后通过访问 ```localhost:4040``` 上的 ngrok 管理页面找到该 URL。
配置完应用后,Slack 将为你提供 bot OAuth token(以 `xoxb-` 开头)和签名密钥(signing secret),应分别用于 `SLACK_TOKEN` 和 `SLACK_SIGNING_SECRET` 环境变量。你还需要将 `SLACK_TEAM_ID` 设置为你的 Slack 工作区的团队 ID。
最后,你需要将 `INCIDENT_BOT_ID` 和 `INCIDENT_BOT_NAME` 设置为你的 bot ID 和公开名称;并将 `INCIDENT_CHANNEL_NAME` 和 `INCIDENT_REPORT_CHANNEL_NAME` 设置为你希望报告所有事件的核心频道(例如 `opg-incident`)。
如果你重启 ngrok,它将生成一个新的公开 URL,你必须重新配置 Slack 应用以引用该 URL。
### 配置其他集成
#### GitHub 登录
GitHub 登录在开发模式下默认关闭,但你可以通过在 `dev.py` 中启用 `RESPONSE_LOGIN_REQUIRED` 设置来开启它。
要连接到 GitHub,你需要创建一个 GitHub OAuth App,并分别将环境变量 `SOCIAL_AUTH_GITHUB_KEY` 和 `SOCIAL_AUTH_GITHUB_SECRET` 设置为该应用的密钥(key)和密文(secret)。在 ministryofjustice 组织中已经有一个名为 "opg-response-development" 的应用,专门用于本地开发。
### 环境变量
| Variable | Real value required? | Details |
| ---------------------------- | ------------------------------ | --------------------------------------------------------------------------------------------------- |
| SECRET_KEY | Yes | Used by Django, can be set to anything |
| DJANGO_SETTINGS_MODULE | Yes | Specifies which settings to use. Should be `opgincidentresponse.settings.dev` in local environments |
| SOCIAL*AUTH*\* | Only if testing authentication | There's already a dev/localhost and production GitHub app you can use |
| SLACK_TOKEN | Yes | Provided when you create a Slack app |
| SLACK_SIGNING_SECRET | Yes | Provided when you create a Slack app |
| SLACK_TEAM_ID | Yes | You should test in a private team, not MOJD&T |
| INCIDENT_BOT_ID | Yes | The ID of your test app |
| INCIDENT_BOT_NAME | Yes | The name of your test app |
| INCIDENT_CHANNEL_NAME | Yes | The channel to post new live incidents to |
| INCIDENT_REPORT_CHANNEL_NAME | Yes | The channel to post new incident reports to |
| PAGERDUTY_API_KEY | Only if testing PagerDuty | Provided by Pagerduty |
| PAGERDUTY_EMAIL | Only if testing PagerDuty | Provided by Pagerduty |
| PAGERDUTY_SERVICE | Only if testing PagerDuty | Provided by Pagerduty |
## 资源
### django-createsuperuser
[https://docs.djangoproject.com/en/3.1/ref/django-admin/#createsuperuser](https://docs.djangoproject.com/en/3.1/ref/django-admin/#createsuperuser)
### 创建 slack
[https://slack.com/get-started#/create](https://slack.com/get-started#/create)
### 创建 slack-app
[https://github.com/monzo/response/blob/master/docs/slack_app_create.md](https://github.com/monzo/response/blob/master/docs/slack_app_create.md)
### 配置 slack-app
[https://github.com/monzo/response/blob/master/docs/slack_app_config.md](https://github.com/monzo/response/blob/master/docs/slack_app_config.md)
标签:Django, DNS解析, Docker, Docker-Compose, ECS, FTP漏洞扫描, GOV.UK标准, Incident Management, Monzo Response, Nginx, Ngrok, Python, Slack集成, Terraform, 协作工具, 团队协作, 安全编排, 安全防御评估, 工单系统, 库, 应急响应, 开源项目, 无后门, 本地开发, 状态页, 网络研究, 网络调试, 自动化, 警报管理, 请求拦截, 运维工具, 逆向工具