https://github.com/lpsm-dev/terraform-opsgenie-security-hub
🛠️ Sets up Opsgenie + Amazon Security Hub integration using Terraform
https://github.com/lpsm-dev/terraform-opsgenie-security-hub
aws iac integration opsgenie opsgenie-setup security-hub terraform tofu
Last synced: about 2 months ago
JSON representation
🛠️ Sets up Opsgenie + Amazon Security Hub integration using Terraform
- Host: GitHub
- URL: https://github.com/lpsm-dev/terraform-opsgenie-security-hub
- Owner: lpsm-dev
- Created: 2024-10-04T05:15:15.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-14T15:54:30.000Z (about 1 year ago)
- Last Synced: 2025-03-14T16:40:54.596Z (about 1 year ago)
- Topics: aws, iac, integration, opsgenie, opsgenie-setup, security-hub, terraform, tofu
- Language: HCL
- Homepage:
- Size: 2.29 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
Awesome Lists containing this project
README

**Terraform Opsgenie Security Hub**
[](https://semantic-release.gitbook.io/semantic-release/usage/configuration)
[](https://www.conventionalcommits.org/en/v1.0.0/)
[](https://jetpack.io/devbox/docs/contributor-quickstart/)
Integração do [Opsgenie](https://www.atlassian.com/software/opsgenie) + [Amazon Security Hub](https://aws.amazon.com/security-hub/) utilizando [Terraform](https://www.terraform.io/).
## Arquitetura
No final do dia, teremos todas essas contas gerando findings de segurança e enviando para o Security Hub da conta de segurança, que é delegada para administrar os seviços de segurança a partir de um permissionamento feito na conta payer (root). A partir disso, queremos que esses findings sejam enviados para o Opsgenie para que possamos abrir um alerta e tomar as ações necessárias.
Com o alerta aberto no Opsgenie, podemos a partir dele integrar com outros serviços, como o [Jira](https://www.atlassian.com/br/software/jira), [Slack](https://slack.com/), [Teams](https://www.microsoft.com/pt-br/microsoft-teams/log-in) e etc.
## Ferramentas
- O [AWS EventBridge](https://aws.amazon.com/pt/eventbridge/) é um serviço de integração de eventos. Ele permite que você capture eventos de várias fontes, incluindo serviços da AWS como o Security Hub, e os direcione para diferentes destinos, como o AWS SNS. Com o EventBridge, você pode criar regras que definem quais eventos devem ser capturados e para onde eles devem ser enviados.
- O [AWS SNS](https://aws.amazon.com/pt/sns/) é um serviço de mensagens e notificações que facilita a comunicação entre sistemas distribuídos. Ele permite que você publique mensagens para tópicos e que os assinantes desses tópicos recebam essas mensagens.
- O [Amazon Security Hub](https://aws.amazon.com/security-hub/) é um serviço que centraliza e automatiza a segurança de múltiplas contas AWS e ajuda a identificar e corrigir problemas de segurança a partir de uma interface única. Ele conecta findings de segurança de outros produtos de segurança da AWS, como Inpsector, Macie e GardDuty.
- O [Opsgenie](https://www.atlassian.com/br/software/opsgenie) é um serviço de gerenciamento de alertas que permite que você gerencie, responda e resolva incidentes de TI de forma eficiente. Ele fornece alertas em tempo real e notificações para ajudar a garantir que você esteja ciente de problemas críticos em seu ambiente.
## Fluxo
### Manual Trigger
Time de segurança manualmente trigga uma custom action na interface web do Amazon Security Hub para que o finding seja enviado para o Opsgenie e um alerta seja aberto.
### Automatic Trigger:
O Security Hub detecta um finding e envia um evento para o EventBridge, que faz uma primeira filtragem para validar se o seu evento será enviado para o SNS. Se for, o SNS envia o evento para o Opsgenie, que cria um alerta com base no evento recebido. Agora, o time de segurança acompanha e é escalado automaticamente sempre que uma nova vulnerabilidade for descoberta.
## Requirements
| Name | Version |
|------|---------|
| [terraform](#requirement\_terraform) | >= 1.8 |
| [aws](#requirement\_aws) | ~> 5.70 |
| [opsgenie](#requirement\_opsgenie) | ~> 0.6 |
| [time](#requirement\_time) | ~> 0.12 |
## Providers
| Name | Version |
|------|---------|
| [aws](#provider\_aws) | 5.70.0 |
| [opsgenie](#provider\_opsgenie) | 0.6.37 |
| [time](#provider\_time) | 0.12.1 |
## Modules
| Name | Source | Version |
|------|--------|---------|
| [cw\_opsgenie\_sh\_custom\_action](#module\_cw\_opsgenie\_sh\_custom\_action) | terraform-aws-modules/cloudwatch/aws//modules/log-group | ~> 5.6 |
| [eventbridge](#module\_eventbridge) | terraform-aws-modules/eventbridge/aws | ~> 3.11 |
## Resources
| Name | Type |
|------|------|
| [aws_iam_policy.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource |
| [aws_iam_role.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource |
| [aws_iam_role_policy_attachment.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource |
| [aws_securityhub_action_target.opsgenie](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/securityhub_action_target) | resource |
| [aws_sns_topic.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sns_topic) | resource |
| [aws_sns_topic_policy.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sns_topic_policy) | resource |
| [aws_sns_topic_subscription.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sns_topic_subscription) | resource |
| [opsgenie_api_integration.this](https://registry.terraform.io/providers/opsgenie/opsgenie/latest/docs/resources/api_integration) | resource |
| [opsgenie_escalation.this](https://registry.terraform.io/providers/opsgenie/opsgenie/latest/docs/resources/escalation) | resource |
| [opsgenie_team.this](https://registry.terraform.io/providers/opsgenie/opsgenie/latest/docs/resources/team) | resource |
| [time_static.creation](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/static) | resource |
| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |
| [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source |
| [opsgenie_user.users](https://registry.terraform.io/providers/opsgenie/opsgenie/latest/docs/data-sources/user) | data source |
## Inputs
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [aws\_environment](#input\_aws\_environment) | The environment to deploy the resources | `string` | `"production"` | no |
| [aws\_region](#input\_aws\_region) | AWS region to deploy the resources | `string` | `"us-east-1"` | no |
| [opsgenie\_api\_key](#input\_opsgenie\_api\_key) | API Key of Opsgenie | `string` | n/a | yes |
| [opsgenie\_team\_description](#input\_opsgenie\_team\_description) | Team description of Opsgenie | `string` | n/a | yes |
| [opsgenie\_team\_name](#input\_opsgenie\_team\_name) | Team name of Opsgenie | `string` | n/a | yes |
| [opsgenie\_users](#input\_opsgenie\_users) | Opsgenie list users and roles | `list(map(string))` | n/a | yes |
## Outputs
| Name | Description |
|------|-------------|
| [aws\_account\_id](#output\_aws\_account\_id) | Selected AWS Account ID |
| [aws\_region](#output\_aws\_region) | Details about selected AWS region |
| [opsgenie\_security\_hub\_role\_arn](#output\_opsgenie\_security\_hub\_role\_arn) | ARN of the IAM Role created for Opsgenie Security Hub Integration |
| [opsgenie\_security\_hub\_role\_name](#output\_opsgenie\_security\_hub\_role\_name) | Name of the IAM Role created for Opsgenie Security Hub Integration |
## Extras
Informações adicionais para que você possa configurar e utilizar a integração.
### Opsgenie Integration
> [!WARNING]
> Após a execução do projeto Terraform, você terá que finalizar a configuração do Opsgenie pela interface web. Para isso, siga os passos abaixo.
**Step 1:**
Acesse sua integração no Opsgenie e clique no botão de "Editar".
**Step 2:**
Selecione a opção de se autenticar com a conta do Amazon Security Hub.
**Step 3:**
Coloque a role criada pelo Terraform no campo de "Role ARN", selecione a região do Amazon Security Hub e clique em "Salvar".
Ao final desse processo você estará apto para receber os findings do Security Hub no Opsgenie.
### Opsgenie Alerts Rules
Para customizar seus alertas, você deverá editar a regra de "Incoming" da sua integração.
Na imagem acima é exemplificado como você pode customizar suas regras de alerta. Nesse caso, temos:
- Criar alerta para severidade **CRITICAL**.
- Criar alerta para severidade **HIGH**.
Cada regra de alerta permite personalizar vários elementos, como:
- **Mensagem**
- **Prioridade**
- **Tags**
- **Alias**
- **Descrição**
- **Entidade**
- **Notas**
Ao criar uma regra, você poderar editar esses campos para que o alerta seja mais informativo e relevante para sua equipe.
Além disso, o Opsgenie possui uma feature chamada [Dynamic fields](https://support.atlassian.com/opsgenie/docs/dynamic-fields-in-opsgenie-integrations/). Esses campos são usados para:
- Personalizar propriedades (elementos) do alerta.
- Ajustar condições do alerta com base em informações atualizadas.
Usando Dynamic fields você pode criar alertas que se adaptam automaticamente às mudanças em seu ambiente.
## Contributing
Gostaria de contribuir? Isso é ótimo! Temos um guia de contribuição para te ajudar. Clique [aqui](CONTRIBUTING.md) para lê-lo.
## Versioning
Para verificar o histórico de mudanças do projeto, acesse o arquivo [**CHANGELOG.md**](CHANGELOG.md).
## Troubleshooting
Se você tiver algum problema, [abra uma issue nesse projeto](https://github.com/lpsm-dev/terraform-opsgenie-security-hub/issues).
Dê uma ⭐️ para esse projeto se ele te ajudou!

Feito com 💜 por [mim](https://github.com/lpsm-dev) :wave: inspirado no [readme-md-generator](https://github.com/kefranabg/readme-md-generator)