Skip to content

🛠️ Sets up Opsgenie + Amazon Security Hub integration using Terraform

Notifications You must be signed in to change notification settings

lpsm-dev/terraform-opsgenie-security-hub

Repository files navigation

gif-header

Terraform Opsgenie Security Hub

Semantic Release Commitizen friendly Built with Devbox

Integração do Opsgenie + Amazon Security Hub utilizando Terraform.

Arquitetura

architecture-0

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, Slack, Teams e etc.

(back to top)

Ferramentas

  • O AWS 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 é 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 é 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 é 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.

(back to top)

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.

architecture-1

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.

architecture-2

(back to top)

Requirements

Name Version
terraform >= 1.8
aws ~> 5.70
opsgenie ~> 0.6
time ~> 0.12

Providers

Name Version
aws 5.70.0
opsgenie 0.6.37
time 0.12.1

Modules

Name Source Version
cw_opsgenie_sh_custom_action terraform-aws-modules/cloudwatch/aws//modules/log-group ~> 5.6
eventbridge terraform-aws-modules/eventbridge/aws ~> 3.11

Resources

Name Type
aws_iam_policy.this resource
aws_iam_role.this resource
aws_iam_role_policy_attachment.this resource
aws_securityhub_action_target.opsgenie resource
aws_sns_topic.this resource
aws_sns_topic_policy.this resource
aws_sns_topic_subscription.this resource
opsgenie_api_integration.this resource
opsgenie_escalation.this resource
opsgenie_team.this resource
time_static.creation resource
aws_caller_identity.current data source
aws_region.current data source
opsgenie_user.users data source

Inputs

Name Description Type Default Required
aws_environment The environment to deploy the resources string "production" no
aws_region AWS region to deploy the resources string "us-east-1" no
opsgenie_api_key API Key of Opsgenie string n/a yes
opsgenie_team_description Team description of Opsgenie string n/a yes
opsgenie_team_name Team name of Opsgenie string n/a yes
opsgenie_users Opsgenie list users and roles list(map(string)) n/a yes

Outputs

Name Description
aws_account_id Selected AWS Account ID
aws_region Details about selected AWS region
opsgenie_security_hub_role_arn ARN of the IAM Role created for Opsgenie Security Hub Integration
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-1

Step 2:

Selecione a opção de se autenticar com a conta do Amazon Security Hub.

step-2

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".

step-3

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.

alert-rule

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. 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.

(back to top)

Contributing

Gostaria de contribuir? Isso é ótimo! Temos um guia de contribuição para te ajudar. Clique aqui para lê-lo.

(back to top)

Versioning

Para verificar o histórico de mudanças do projeto, acesse o arquivo CHANGELOG.md.

(back to top)

Troubleshooting

Se você tiver algum problema, abra uma issue nesse projeto.

Dê uma ⭐️ para esse projeto se ele te ajudou!

gif-footer

Feito com 💜 por mim 👋 inspirado no readme-md-generator

(back to top)