{"id":21870343,"url":"https://github.com/lpsm-dev/terraform-opsgenie-security-hub","last_synced_at":"2026-04-11T20:01:48.644Z","repository":{"id":263277688,"uuid":"867453648","full_name":"lpsm-dev/terraform-opsgenie-security-hub","owner":"lpsm-dev","description":"🛠️ Sets up Opsgenie + Amazon Security Hub integration using Terraform","archived":false,"fork":false,"pushed_at":"2025-03-14T15:54:30.000Z","size":2404,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-14T16:40:54.596Z","etag":null,"topics":["aws","iac","integration","opsgenie","opsgenie-setup","security-hub","terraform","tofu"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lpsm-dev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-04T05:15:15.000Z","updated_at":"2025-02-22T20:25:40.000Z","dependencies_parsed_at":"2024-11-17T14:39:34.741Z","dependency_job_id":"2d64fcc6-b0f7-45a9-af11-770670cafd34","html_url":"https://github.com/lpsm-dev/terraform-opsgenie-security-hub","commit_stats":null,"previous_names":["lpsm-dev/terraform-opsgenie-security-hub"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lpsm-dev%2Fterraform-opsgenie-security-hub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lpsm-dev%2Fterraform-opsgenie-security-hub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lpsm-dev%2Fterraform-opsgenie-security-hub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lpsm-dev%2Fterraform-opsgenie-security-hub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lpsm-dev","download_url":"https://codeload.github.com/lpsm-dev/terraform-opsgenie-security-hub/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244875705,"owners_count":20524701,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","iac","integration","opsgenie","opsgenie-setup","security-hub","terraform","tofu"],"created_at":"2024-11-28T06:11:08.280Z","updated_at":"2026-04-11T20:01:43.606Z","avatar_url":"https://github.com/lpsm-dev.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- BEGIN_TF_DOCS --\u003e\n\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003cimg alt=\"gif-header\" src=\"https://github.com/lpsm-dev/lpsm-dev/blob/c887e9fbb2e72d3857d6191296c35e8b4bc637b3/.github/assets/cloud.gif\" width=\"225\"/\u003e\n\n**Terraform Opsgenie Security Hub**\n\n[![Semantic Release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg)](https://semantic-release.gitbook.io/semantic-release/usage/configuration)\n[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](https://www.conventionalcommits.org/en/v1.0.0/)\n[![Built with Devbox](https://jetpack.io/img/devbox/shield_galaxy.svg)](https://jetpack.io/devbox/docs/contributor-quickstart/)\n\nIntegração do [Opsgenie](https://www.atlassian.com/software/opsgenie) + [Amazon Security Hub](https://aws.amazon.com/security-hub/) utilizando [Terraform](https://www.terraform.io/).\n\n\u003c/div\u003e\n\n## Arquitetura\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg alt=\"architecture-0\" src=\".github/assets/architecture-0.png\"/\u003e\n\u003c/div\u003e\n\nNo 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.\n\nCom 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.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Ferramentas\n\n- 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.\n- 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.\n- 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.\n- 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.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Fluxo\n\n### Manual Trigger\n\nTime 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.\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg alt=\"architecture-1\" src=\".github/assets/architecture-1.png\"/\u003e\n\u003c/div\u003e\n\n### Automatic Trigger:\n\nO 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.\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg alt=\"architecture-2\" src=\".github/assets/architecture-2.png\"/\u003e\n\u003c/div\u003e\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.8 |\n| \u003ca name=\"requirement_aws\"\u003e\u003c/a\u003e [aws](#requirement\\_aws) | ~\u003e 5.70 |\n| \u003ca name=\"requirement_opsgenie\"\u003e\u003c/a\u003e [opsgenie](#requirement\\_opsgenie) | ~\u003e 0.6 |\n| \u003ca name=\"requirement_time\"\u003e\u003c/a\u003e [time](#requirement\\_time) | ~\u003e 0.12 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_aws\"\u003e\u003c/a\u003e [aws](#provider\\_aws) | 5.70.0 |\n| \u003ca name=\"provider_opsgenie\"\u003e\u003c/a\u003e [opsgenie](#provider\\_opsgenie) | 0.6.37 |\n| \u003ca name=\"provider_time\"\u003e\u003c/a\u003e [time](#provider\\_time) | 0.12.1 |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_cw_opsgenie_sh_custom_action\"\u003e\u003c/a\u003e [cw\\_opsgenie\\_sh\\_custom\\_action](#module\\_cw\\_opsgenie\\_sh\\_custom\\_action) | terraform-aws-modules/cloudwatch/aws//modules/log-group | ~\u003e 5.6 |\n| \u003ca name=\"module_eventbridge\"\u003e\u003c/a\u003e [eventbridge](#module\\_eventbridge) | terraform-aws-modules/eventbridge/aws | ~\u003e 3.11 |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [aws_iam_policy.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_policy) | resource |\n| [aws_iam_role.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role) | resource |\n| [aws_iam_role_policy_attachment.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource |\n| [aws_securityhub_action_target.opsgenie](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/securityhub_action_target) | resource |\n| [aws_sns_topic.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sns_topic) | resource |\n| [aws_sns_topic_policy.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sns_topic_policy) | resource |\n| [aws_sns_topic_subscription.this](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/sns_topic_subscription) | resource |\n| [opsgenie_api_integration.this](https://registry.terraform.io/providers/opsgenie/opsgenie/latest/docs/resources/api_integration) | resource |\n| [opsgenie_escalation.this](https://registry.terraform.io/providers/opsgenie/opsgenie/latest/docs/resources/escalation) | resource |\n| [opsgenie_team.this](https://registry.terraform.io/providers/opsgenie/opsgenie/latest/docs/resources/team) | resource |\n| [time_static.creation](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/static) | resource |\n| [aws_caller_identity.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/caller_identity) | data source |\n| [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source |\n| [opsgenie_user.users](https://registry.terraform.io/providers/opsgenie/opsgenie/latest/docs/data-sources/user) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_aws_environment\"\u003e\u003c/a\u003e [aws\\_environment](#input\\_aws\\_environment) | The environment to deploy the resources | `string` | `\"production\"` | no |\n| \u003ca name=\"input_aws_region\"\u003e\u003c/a\u003e [aws\\_region](#input\\_aws\\_region) | AWS region to deploy the resources | `string` | `\"us-east-1\"` | no |\n| \u003ca name=\"input_opsgenie_api_key\"\u003e\u003c/a\u003e [opsgenie\\_api\\_key](#input\\_opsgenie\\_api\\_key) | API Key of Opsgenie | `string` | n/a | yes |\n| \u003ca name=\"input_opsgenie_team_description\"\u003e\u003c/a\u003e [opsgenie\\_team\\_description](#input\\_opsgenie\\_team\\_description) | Team description of Opsgenie | `string` | n/a | yes |\n| \u003ca name=\"input_opsgenie_team_name\"\u003e\u003c/a\u003e [opsgenie\\_team\\_name](#input\\_opsgenie\\_team\\_name) | Team name of Opsgenie | `string` | n/a | yes |\n| \u003ca name=\"input_opsgenie_users\"\u003e\u003c/a\u003e [opsgenie\\_users](#input\\_opsgenie\\_users) | Opsgenie list users and roles | `list(map(string))` | n/a | yes |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_aws_account_id\"\u003e\u003c/a\u003e [aws\\_account\\_id](#output\\_aws\\_account\\_id) | Selected AWS Account ID |\n| \u003ca name=\"output_aws_region\"\u003e\u003c/a\u003e [aws\\_region](#output\\_aws\\_region) | Details about selected AWS region |\n| \u003ca name=\"output_opsgenie_security_hub_role_arn\"\u003e\u003c/a\u003e [opsgenie\\_security\\_hub\\_role\\_arn](#output\\_opsgenie\\_security\\_hub\\_role\\_arn) | ARN of the IAM Role created for Opsgenie Security Hub Integration |\n| \u003ca name=\"output_opsgenie_security_hub_role_name\"\u003e\u003c/a\u003e [opsgenie\\_security\\_hub\\_role\\_name](#output\\_opsgenie\\_security\\_hub\\_role\\_name) | Name of the IAM Role created for Opsgenie Security Hub Integration |\n\n## Extras\n\nInformações adicionais para que você possa configurar e utilizar a integração.\n\n### Opsgenie Integration\n\n\u003e [!WARNING]  \n\u003e 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.\n\n**Step 1:**\n\nAcesse sua integração no Opsgenie e clique no botão de \"Editar\".\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg alt=\"step-1\" src=\".github/assets/step-1.png\"/\u003e\n\u003c/div\u003e\n\n**Step 2:**\n\nSelecione a opção de se autenticar com a conta do Amazon Security Hub.\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg alt=\"step-2\" src=\".github/assets/step-2.png\"/\u003e\n\u003c/div\u003e\n\n**Step 3:**\n\nColoque a role criada pelo Terraform no campo de \"Role ARN\", selecione a região do Amazon Security Hub e clique em \"Salvar\".\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg alt=\"step-3\" src=\".github/assets/step-3.png\"/\u003e\n\u003c/div\u003e\n\nAo final desse processo você estará apto para receber os findings do Security Hub no Opsgenie.\n\n### Opsgenie Alerts Rules\n\nPara customizar seus alertas, você deverá editar a regra de \"Incoming\" da sua integração.\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg alt=\"alert-rule\" src=\".github/assets/alert-rule.png\"/\u003e\n\u003c/div\u003e\n\nNa imagem acima é exemplificado como você pode customizar suas regras de alerta. Nesse caso, temos:\n\n- Criar alerta para severidade **CRITICAL**.\n- Criar alerta para severidade **HIGH**.\n\nCada regra de alerta permite personalizar vários elementos, como:\n\n- **Mensagem**\n- **Prioridade**\n- **Tags**\n- **Alias**\n- **Descrição**\n- **Entidade**\n- **Notas**\n\nAo criar uma regra, você poderar editar esses campos para que o alerta seja mais informativo e relevante para sua equipe.\n\nAlé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:\n\n- Personalizar propriedades (elementos) do alerta.\n- Ajustar condições do alerta com base em informações atualizadas.\n\nUsando Dynamic fields você pode criar alertas que se adaptam automaticamente às mudanças em seu ambiente.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Contributing\n\nGostaria de contribuir? Isso é ótimo! Temos um guia de contribuição para te ajudar. Clique [aqui](CONTRIBUTING.md) para lê-lo.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Versioning\n\nPara verificar o histórico de mudanças do projeto, acesse o arquivo [**CHANGELOG.md**](CHANGELOG.md).\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n## Troubleshooting\n\nSe você tiver algum problema, [abra uma issue nesse projeto](https://github.com/lpsm-dev/terraform-opsgenie-security-hub/issues).\n\n\u003cdiv align=\"center\"\u003e\n\nDê uma ⭐️ para esse projeto se ele te ajudou!\n\n\u003cimg alt=\"gif-footer\" src=\"https://github.com/lpsm-dev/lpsm-dev/blob/main/.github/assets/yoda.gif\" width=\"225\"/\u003e\n\n\u003cbr\u003e\n\u003cbr\u003e\n\nFeito com 💜 por [mim](https://github.com/lpsm-dev) :wave: inspirado no [readme-md-generator](https://github.com/kefranabg/readme-md-generator)\n\n\u003c/div\u003e\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- END_TF_DOCS --\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flpsm-dev%2Fterraform-opsgenie-security-hub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flpsm-dev%2Fterraform-opsgenie-security-hub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flpsm-dev%2Fterraform-opsgenie-security-hub/lists"}