Como configurar as notificações via AWS S3 nas regras customizadas #
Como primeiro passo, você precisa criar uma integração entre a Plataforma Cloud8 e um AWS S3 Bucket, conforme descrito no documento linkado, caso ainda não tenha feito isso. Após isso, siga os passos:
Configurar nova notificação com S3 #
Após cadastrar uma integração do tipo “Bucket S3”, em “Integrations” na plataforma, uma sincronização será feita com o Melhores Práticas. Com isto, será possível visualizar uma nova notificação do tipo “S3” no Melhores Práticas, conforme abaixo:
1. Dentro do Melhores Práticas, acessar “Global Notifications”

2. Selecionar a aba “Config Notifications”. Será listado a notificação S3 integrada com o nome.

OBS: Como está sincronizado, não será possível editar ou excluir o cadastro. Para isto utilize a tela de “Integrations” dentro da plataforma do Cloud8.
Configurar integração com S3 nas notificações de regras customizadas #
1. Localize o ícone da imagem abaixo para abrir a tela de customização das notificações de regas

2. Selecione a notificação AWS S3 previamente cadastrada no passo anterior

3. Ao selecionar a uma notificação AWS S3, o scheduler deve ser selecionado como “Immediately”.
A partir deste ponto, o Melhores Práticas irá fazer os uploads dos arquivos JSONs de notificação relacionados aos alertas gerados pelas execuções da regra para o Bucket S3, previamente configurado.
Abaixo temos um exemplo do arquivo JSON de notificação do Bucket S3:

Configuração da Notificação com S3 em customizações de notificação de grupos de filtro #
1. Abra a tela de customização de notificação do grupo (conforme imagem)

2. Selecione a notificação AWS S3 previamente cadastrada

Ao selecionar a uma notificação AWS S3, o scheduler deve ser selecionado como “Immediately”.
A partir deste ponto, o Melhores Práticas irá fazer os uploads dos arquivos JSONs de notificação relacionados aos alertas gerados pelas execuções do filtro da regra para o Bucket S3, previamente configurado no passo 1.
O arquivo vai ter o sufixo group-filter–.json’. Abaixo temos um exemplo do arquivo JSON de notificação do Bucket S3:

Notificações Globais #
Configuração para todos os provedores #
Para configurar uma única vez para todas as regras, basta usar o menu “Global Notifications”, conforme exemplo abaixo:

Configuração por provedor
Também é possível configurar as notificações globais por provedor. Para isso, basta clicar – no mesmo menu “Global Notifications” – a opção “All Providers” e selecionar o provedor desejado.
Isso irá produzir um arquivo no Bucket (a cada execução de uma regra suportada pelo provedor) com as linhas de resultado apenas do provedor selecionado. O arquivo terá o sufixo ‘provider–.json’. Veja o exemplo:
[imagem]
Notificação AWS S3 – arquivo de Formato JSON #
Estrutura do diretório de arquivos no bucket AWS S3 #
O Melhores Práticas irá fazer os uploads dos arquivos JSONs de notificação na seguinte estrutura de diretórios no bucket:
bestpractices/yyyy/MM/dd/rules/
- bestpractices/ – diretório raiz;
- yyyy/MM/dd/ – subdiretórios de geração por ano, mês e dia – data (formato UTC);
- rules/ – subdiretório indicando arquivos de notificação de regras;
Exemplo de arquivo gerado na estrutura do diretório:
bestpractices/2024/11/12/rules/ecs-container-account-settings-arn-format-disabled-17-36-27_702.json
Estrutura do arquivo em formato JSON #
providers #
Lista dos provedores com resultado na regra. Cada item da lista possui dois campos:
- id: identificador do provedor AWS, Azure, GCP ou OCI
- name: nome do provedor AWS, Azure, GCP ou OCI
Exemplo:
"providers": [
{
"id": "xxxxxxxxxxxx",
"name": "Provedor 1 (aws)"
},
{
"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"name": "Provedor 2 (azure)"
}
]
reports #
Lista de regras, resultados, configurações e itens não monitorados que compõem a notificação. Cada item da lista possui os seguintes campos:
- category: categoria da regra
- product: nome do produto / serviço do cloud provider (AWS, Azure, GCP ou OCI)
- id: identificador da regra
- rule: nome da regra
- description: descrição da regra
- instant: data e hora da execução em milisegundos
- executionDateTimeUtc: data e hora da execução da regra em ISO e UTC
- headers: nome das colunas da tabela de resultados
Exemplo:
{
"category": "Compliance & Availability",
"product": "ECS - Container",
"id":
"ECS_CONTAINER_ACCOUNT_SETTINGS_ARN_FORMAT_DISABLED",
"rule": "ECS settings with ARN new format disabled",
"description": "Checks if your ECS effective settings for container, service or task resources with ARN new format is disabled. Notice this settings are obtained using the provided credentials with effective settings on for the API call. For more information, see \t<a href=\"https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids\" target=\"_blank\"> \tAmazon Resource Names (ARNs) and IDs \t",
"instant": 1731417439624,
"executionDateTimeUtc": "2024-11-12T13:17:19.624",
"headers":
[
"Region",
"Enabled for services?",
"Enabled for container instances?",
"Enabled for tasks?"
],
….
- changes: detalhes das mudanças que ocorreram na execução da regra
- new: novos itens que passaram a ser alertados
- unchanged: itens não alterados
- removed: itens removidos por filtro, manualmente ou porque o problema foi resolvido mesmo.
- results: lista de itens que compõem a tabela de resultados, com os seguintes campos:
- provider: identificador do provedor (mesmo id do campo providers detalhado acima)
- results: tabela de resultados, que contém os campos:
- columns: itens de resultados (seguem a ordem das colunas definidos em headers)
- kind: identificador de severidade da linha do provedor, com o pior resultado para ele, podendo ser:
- DANGER: crítico
- WARN: alerta
- INFO: sugestão
- CREDENTIAL_ISSUE: problemas com credenciais do provedor
- identifier: Identificador único da linha de resultados dentro da regra em questão. Note que este identificador é único apenas por regra, podendo colidir em regras diferentes.
Exemplo:
"changes":
{
"new": [
{
"provider": "212283722463",
"results": [
{
"columns": [
"ap-northeast-2",
"false",
"false",
"false"
],
"kind": "DANGER",
"identifier": "3ff034de2c21a29c45028ca174022320da3dc52806cbc30dbd61a5ed8e13ee8fd61c
611a453acd79da2c7baa9a4554cc7f4d4e59509d1ec3753007bba6dcbe3a"
},
{
"columns": [
"ap-northeast-1",
"false",
"false",
"false"
],
"kind": "DANGER",
"identifier": "2d2d410aec1e6687af5932ce60ddb431a982e69f27a4e5b97fa86bdc7d48694e96e32
8e0c1cae49e4761c12bc1ad4a5a28d1ebd5a991b9122cc13fefe77c963e"
}
]
}
],
"unchanged": [
{
"provider": "445156452954",
"results": [
{
"columns": [
"us-east-1",
"false",
"false",
"false"
],
"kind": "DANGER",
"identifier": "0158bf11f1f79560ee367934350d5b33965ca8711e77352ae7a51c6469b7f7b33e386e627b
6ab300352b96d3f50815174f8150c89a8a7fc785c559037ae78b82"
},
{
"columns": [
"us-west-1",
"false",
"false",
"false"
],
"kind": "DANGER",
"identifier": "ed4025a67ea72b201eeec3d7f02d84603261f99e0d5df9778e309e59c75b7f6f05ed
76bfd98f84af2f3c9db341b084a3bced70e5687b8c70b2b23790301257a5"
}
]
}
],
"removed": [
{
"provider": "212283722463",
"results": [
{
"columns": [
"us-west-2",
"false",
"false",
"false"
],
"kind": "DANGER",
"identifier": "2dca98b5b52ff9bf692822143ee6e26c7c0a347014e6ce5b86dee23c5db117e2c1e01
49eaf7c093cdb7c65e73e926fb3def592868cb8a56aef97365e0846cbc3"
},
{
"columns": [
"us-east-1",
"false",
"false",
"false"
],
"kind": "DANGER",
"identifier": "a289365994a8004a7db465d383fdf4721c1befbed238c5a8c5657546c300d8b3e1
7adceba75c5b937af24e6550f887136ad34f8b33e00fa34e796647731948af"
}
]
}
]
},
"kind": "DANGER"
conditions #
Lista de configurações de filtros na regra, contendo os seguintes campos:
- name: nome do filtro
- option: nome do campo para filtrar o resultado
- operation: operador que será usado ao filtrar o resultado
- value: valor que será filtrado no resultado
Exemplo:
"conditions": [
{
"name": "Filter 1",
"option": "ContainerAccountSettings.region",
"operation": "=",
"value": "ap-northeast-1"
}
],
…
- kind: identificador de severidade da regra, com o pior resultado para ela, podendo ser:
- DANGER: crítico
- WARN: alerta
- INFO: sugestão
- CREDENTIAL_ISSUE: problemas com credenciais do provedor
Nome do arquivo gerado #
Os arquivos de notificação serão gerados numa pasta do bucket conforme padronização feita anteriormente.
Os arquivos gerados são gerados conforme a seguinte padronização:
Notificação por regra: #
[ID da regra]-[HH-mm-ss_SSS].json - horário (UTC);
Exemplo: ecs-container-account-settings-arn-format-disabled-17-36-27_702.json
Notificação por grupo de regra: #
[ID da regra]-grou-filter-[ID do group filter]-[HH-mm-ss_SSS].json - horário (UTC);
Exemplo: ecs-container-account-settings-arn-format-disabled-group-filter-1-17-36-27_702.json
Notificação (global) por provedor: #
[ID da regra]-provider-[ID do provider]-[HH-mm-ss_SSS].json - horário (UTC);
Exemplo: ecs-container-account-settings-arn-format-disabled-provider-123-17-36-27_702.json
OBS: Cada arquivo gerado é único, e não é sobrescrito.