
aws-security-assessment-solution v3.0.0
Uma ferramenta AWS para ajudar você a criar uma avaliação pontual da sua conta AWS usando o Prowler.
Soluções de Avaliação de Segurança Self-Service (v2.0)
A segurança cibernética continua sendo um tópico muito importante e uma preocupação para muitos CIOs, CISOs e seus clientes. Para atender a essas preocupações importantes, a AWS desenvolveu um conjunto principal de serviços que os clientes devem usar para ajudar a proteger suas contas. As revisões do Amazon GuardDuty, AWS Security Hub, AWS Config e AWS Well-Architected ajudam os clientes a manter uma postura de segurança sólida em suas contas AWS. À medida que mais organizações migram para a nuvem, especialmente se o fazem rapidamente, e ainda não implementaram os Serviços AWS recomendados, pode haver a necessidade de realizar uma avaliação de segurança rápida do ambiente de nuvem.
Desenvolvemos uma solução barata, fácil de implantar, segura e rápida para fornecer aos nossos clientes um relatório de avaliação de segurança. Esses relatórios são gerados usando o projeto de código aberto Prowler. O Prowler realiza avaliações de segurança em um ponto no tempo com base nas melhores práticas da AWS e pode ajudar a identificar rapidamente quaisquer áreas de risco potenciais no ambiente implantado do cliente. Se você estiver interessado em realizar essas avaliações de forma contínua, a AWS recomenda habilitar o padrão Foundational Security Best Practices do Security Hub. Se você estiver interessado em integrar os resultados da sua avaliação do Prowler com o Security Hub, siga as instruções na Documentação do Prowler.
Nota: O Prowler não é uma solução de propriedade da AWS. Os clientes devem revisar o Prowler de forma independente antes de executar esta solução. Quaisquer dependências associadas ao Prowler devem ser mantidas atualizadas. Esta solução instala uma versão fixa do Prowler (atualmente 5.41.0) a partir do instalador de pacotes pip, para que uma alteração no formato de saída do Prowler não possa interromper uma varredura sem aviso. Para migrar para uma versão mais recente, edite a linha
pip3 install prowler==em2-sat2-codebuild-prowler.yaml.
📕 Para instruções passo a passo mais detalhadas, visite o módulo 2 no SHIP Workshop.
Sumário
- Visão geral
- Parâmetros
- Implantação
- Varredura de conta única
- Varredura de múltiplas contas
- Revisar os resultados
- Tipos de varredura
- Notificações
- Resumo de relatórios
- Perguntas frequentes (FAQ)
- Limpeza
- Segurança
- Licença
Visão geral
A solução é implantada com AWS CloudFormation. Quando implantada, um projeto AWS CodeBuild e um bucket Amazon S3 para armazenar os relatórios gerados pelo Prowler são criados. Uma função AWS Lambda é então usada para iniciar o projeto AWS CodeBuild.
Os padrões do parâmetro (entrada do usuário) executarão uma varredura básica em uma única conta. No entanto, você pode escolher parâmetros diferentes para executar varreduras mais extensas ou para varrer múltiplas contas. O processo de implantação leva menos de 5 minutos para ser concluído. Os modelos AWS CloudFormation da solução são fornecidos para revisão neste repositório Github.
Uma vez que o modelo é implantado, o projeto CodeBuild será executado. A avaliação padrão leva cerca de 5 minutos para ser concluída. O tempo para concluir uma avaliação de segurança varia dependendo do número de recursos e das opções de varredura selecionadas. Ao final das avaliações, os relatórios são entregues ao bucket S3 criado.

Parâmetros
O SATv2 pode ser personalizado atualizando os parâmetros do CloudFormation. Esta seção resume as opções disponíveis e fornece um link para a seção com mais informações.
| Parâmetro | Descrição | Mais informações |
|---|---|---|
| ProwlerScanType | Especifique qual tipo de varredura executar. Selecionar full sem especificar ProwlerOptions diferentes fará uma varredura completa. Para executar uma verificação específica, escolha Full e acrescente -c a ProwlerOptions. | Tipos de varredura |
| MultiAccountScan | Defina como true se quiser varrer todas as contas da sua organização. Você deve ter implantado o modelo pré-requisito para provisionar uma função, ou especificar um ProwlerRole diferente com as permissões apropriadas. | Varredura de múltiplas contas |
| Reporting | Defina como true se quiser resumir os relatórios do Prowler em um único csv. Isso é útil ao varrer múltiplas contas. | Resumo de relatórios |
| EmailAddress | Especifique um endereço se quiser receber um e-mail quando a avaliação for concluída. | Notificações |
| Parâmetros avançados | ||
| ConcurrentAccountScans | Para varreduras de múltiplas contas, especifique o número de contas a varrer simultaneamente. Isso é útil para grandes organizações com muitas contas. Selecionar mais de três altera o tamanho da instância do CodeBuild e pode incorrer em custos adicionais. | |
| CodeBuildTimeout | Defina o tempo limite para o trabalho do CodeBuild. O padrão é 300 minutos (5 horas). | |
| MultiAccountListOverride | Especifique uma lista de contas separadas por espaços para varrer. Deixar em branco varrerá todas as contas da sua organização. Certifique-se de ter definido o parâmetro MultiAccountScan acima como true se quiser varrer contas específicas. Se você não puder fornecer acesso delegado de ListAccount, pode fornecer o parâmetro MultiAccountListOverride. | Varredura de múltiplas contas |
| ProwlerOptions | Especifique os parâmetros para o Prowler. O --role e o ARN serão adicionados automaticamente ao final dos parâmetros que você especificar. Isso também pode ser usado para especificar uma única verificação. | Varredura completa |
| ProwlerRole | A função que o Prowler deve assumir para executar a varredura. Altere isso se quiser especificar sua própria função com permissões diferentes. |
Implantação
Você pode usar este projeto para executar o Prowler em múltiplas contas em uma Organização AWS, ou em uma única conta. Fornecemos instruções para usar o AWS CloudShell ou o console AWS. Escolha uma opção para começar.
Varredura de conta única
Para executar a solução de Avaliação de Segurança Self-Service (SATv2) contra uma única conta, siga as instruções abaixo. Você pode escolher usar a AWS CLI ou o Console AWS.
AWS CloudShell
Mostrar etapas
Implantar a solução
-
Faça login na sua conta AWS.
-
Na barra de navegação, escolha AWS CloudShell.
-
Para baixar o modelo CloudFormation, insira o seguinte comando.
wget https://raw.githubusercontent.com/awslabs/aws-security-assessment-solution/main/2-sat2-codebuild-prowler.yaml -
Para criar um bucket S3 para armazenar o modelo, insira os seguintes comandos. O modelo é maior que 51.200 bytes, então o CloudFormation exige que ele seja enviado ao S3 em vez de passado inline.
TEMPLATE_BUCKET=sat2-cfn-templates-$(aws sts get-caller-identity --query Account --output text)-$AWS_REGION aws s3 mb s3://$TEMPLATE_BUCKET --region $AWS_REGION -
Para implantar o modelo CloudFormation, insira o seguinte comando. A opção
--s3-bucketenvia o modelo para o bucket antes de criar a pilha.aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \ --stack-name sat2 \ --capabilities CAPABILITY_NAMED_IAM \ --s3-bucket $TEMPLATE_BUCKET -
Após a pilha ser criada, você pode excluir o bucket de armazenamento temporário. Ele é usado apenas para entregar o modelo ao CloudFormation.
aws s3 rb s3://$TEMPLATE_BUCKET --force
Console AWS
Mostrar etapas
Implantar a solução
- Baixe o modelo CloudFormation 2-sat2-codebuild-prowler.yaml.
- Navegue até o console AWS CloudFormation.
- No painel de navegação, escolha Stacks.
- Escolha Create stack.
- Em Specify template, selecione Upload a template file.
- Escolha 2-sat2-codebuild-prowler.yaml que você baixou na etapa 1.
- Escolha Next.
- Para Stack name, insira sat2.
- Escolha Next.
- Na página Configure stack options, escolha Next.
- Na página Review SAS, marque a caixa I acknowledge that AWS CloudFormation might create IAM resources. e escolha Submit.
Varredura de múltiplas contas
A solução de Avaliação de Segurança Self-Service (SAT) também suporta varreduras de múltiplas contas. Você deve implantar uma função pré-requisito em cada conta na qual deseja executar a varredura. Para executar o SATv2 para múltiplas contas, siga as instruções abaixo. Você pode escolher usar a AWS CLI ou o Console AWS.
Estas instruções pressupõem que você já tenha os pré-requisitos para operações de stack set. Para mais informações, visite o Guia do usuário AWS CloudFormation.
Nota: StackSets não se aplicam à conta de gerenciamento. Para avaliar a conta de gerenciamento, implante o 1-sat2-member-role como uma pilha CloudFormation.
AWS CloudShell
Mostrar etapas
Etapa 1: Implantar a função pré-requisito
-
Faça login na sua conta de gerenciamento AWS.
-
Na barra de navegação, escolha AWS CloudShell.
-
Identifique de qual conta você executará a varredura do Prowler. Os clientes normalmente usam uma conta de ferramentas de segurança ou conta de auditoria. Anote o ID da conta para o parâmetro ProwlerAccountID.
-
Para baixar o modelo CloudFormation, insira o seguinte comando.
wget https://raw.githubusercontent.com/awslabs/aws-security-assessment-solution/main/1-sat2-member-roles.yaml -
Implante o modelo CloudFormation via CloudFormation StackSets. Atualize os seguintes parâmetros:
- Substitua <aws-account-id> pelo ID da conta da qual você executará o Prowler.
- Substitua <region> pela Região na qual deseja implantar o modelo.
aws cloudformation create-stack-set --template-body file://1-sat2-member-roles.yaml \ --stack-set-name sat2-member-roles \ --permission-model SERVICE_MANAGED \ --auto-deployment Enabled=true,RetainStacksOnAccountRemoval=false \ --capabilities CAPABILITY_NAMED_IAM \ --parameters ParameterKey=ProwlerAccountID,ParameterValue=<aws-account-id> \ --region <region> -
Use o seguinte comando para criar instâncias de pilha para cada conta da sua organização. Você pode direcionar uma OU específica ou a OU raiz. Atualize os seguintes parâmetros:
- Substitua <root-ou> pelo ID da raiz da organização.
- Substitua <region> pela Região na qual deseja implantar o modelo.
aws cloudformation create-stack-instances --stack-set-name sat2-member-roles \ --deployment-targets OrganizationalUnitIds='["<root-ou>"]' \ --regions '["<region>"]' \ --operation-preferences FailureTolerancePercentage=100,MaxConcurrentPercentage=100 \ --region <region> -
Determine se você tem um administrador delegado ou uma política de recursos que já exista para sua conta do Prowler. Apenas uma opção é necessária e a política de recursos é incentivada por ser mais granular.
Nota: Políticas de recursos não estão disponíveis no GovCloud, então você precisará usar um administrador delegado.
7a. Sua conta do Prowler pode já ter uma delegação. Você pode usar os seguintes comandos para verificar:
aws organizations list-delegated-administrators7b. Sua conta do Prowler pode já ter uma política de recursos. Você pode usar os seguintes comandos para verificar:
aws organizations describe-resource-policy -
Se você não tiver um administrador delegado ou uma política de recursos, pode usar os seguintes comandos para adicionar o acesso apropriado.
Nota: Se você não puder fornecer acesso delegado de ListAccount, pode fornecer o parâmetro MultiAccountListOverride no modelo
2-sat2-codebuild-prowler.Nota: Se você estiver usando GovCloud, use a etapa 8a para criar um administrador delegado. Se estiver usando uma região comercial, use a etapa 8b para fornecer acesso de privilégio mínimo ao ListAccounts.
8a. Use o seguinte comando para delegar um administrador se você ainda não tiver um. Substitua <aws-account-id> pelo ID da conta da qual você executará o Prowler.
aws organizations register-delegated-administrator <aws-account-id>8b. Use os seguintes comandos para adicionar uma política de recursos.
-
Substitua <aws-account-id> pelo ID da conta da qual você executará o Prowler.
aws organizations put-resource-policy --content \ '{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<aws-account-id>:root" }, "Action": [ "organizations:ListAccounts", "organizations:DescribeAccount", "organizations:ListTagsForResource", "organizations:ListParents", "organizations:DescribeOrganizationalUnit" ], "Resource": "*" } ] }'
Nota:
ListParentseDescribeOrganizationalUnitsão o que preenchem as colunasaccount_ou_uideaccount_ou_namenos achados. Omita-os e o restante da varredura ainda funciona, mas essas duas colunas retornam vazias. -
Etapa 2: Implantar a solução SATv2
Nota: Certifique-se de ter alternado para a conta que você especificou que executará o Prowler.
-
Para baixar o modelo, abra o AWS CloudShell na conta do Prowler e insira o seguinte comando.
wget https://raw.githubusercontent.com/awslabs/aws-security-assessment-solution/main/2-sat2-codebuild-prowler.yaml -
Para criar um bucket S3 para armazenar o modelo, insira os seguintes comandos. O modelo é maior que 51.200 bytes, então o CloudFormation exige que ele seja enviado ao S3 em vez de passado inline.
TEMPLATE_BUCKET=sat2-cfn-templates-$(aws sts get-caller-identity --query Account --output text)-$AWS_REGION aws s3 mb s3://$TEMPLATE_BUCKET --region $AWS_REGION -
Para implantar o modelo na conta do Prowler. Defina MultiAccountScan como true para varrer todas as contas da sua organização. A opção
--s3-bucketenvia o modelo para o bucket antes de criar a pilha.aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \ --stack-name sat2-prowler \ --capabilities CAPABILITY_NAMED_IAM \ --s3-bucket $TEMPLATE_BUCKET \ --parameter-overrides MultiAccountScan=true -
Após a pilha ser criada, você pode excluir o bucket de armazenamento temporário. Ele é usado apenas para entregar o modelo ao CloudFormation.
aws s3 rb s3://$TEMPLATE_BUCKET --force
Console AWS
Mostrar etapas
Etapa 1: Implantar a função pré-requisito
-
Baixe os arquivos 1-sat2-member-roles.yaml e 2-sat2-codebuild-prowler.yaml.
-
Implante o modelo CloudFormation via CloudFormation StackSets. Atualize os seguintes parâmetros:
- Substitua <aws-account-id> pelo ID da conta da qual você executará o Prowler.
- Substitua <region> pela Região na qual deseja implantar o modelo.3. Navegue até o console do AWS CloudFormation.
-
No painel de navegação, escolha StackSets.
-
Escolha Create StackSet.
-
Em Permissions, deixe Service-managed permissions selecionado.
-
Em Specify template, selecione Upload a template file.
-
Escolha 1-sat2-member-roles.yaml que você baixou na etapa 1-1.
-
Escolha Next.
-
Em Stack name, insira sat2-member-role.
-
Em Parameters, insira o seguinte:
- ProwlerAccountID - O ID da conta a partir da qual você executará o Prowler.
-
Escolha Next.
-
Na página Configure StackSet options, escolha Next.
-
Em Set deployment options, insira o seguinte:
- Em Deployment targets, deixe Deploy to organization selecionado.
- Em Specify regions, escolha us-east-1.
- Em Region Concurrency, escolha Parallel.
-
Escolha Next.
-
Na página Review, marque a caixa I acknowledge that AWS CloudFormation might create IAM resources. e escolha Submit.
Etapa 2: Habilitar administrador delegado para AWS Organizations
Determine se você já possui um administrador delegado ou uma política de recursos existente para a conta na qual deseja implantar o Prowler. É recomendado executar o Prowler a partir da sua conta de ferramentas de segurança (Audit). Para atualizar ou verificar se a conta de auditoria tem permissões para ListAccounts, siga estas etapas.
-
Navegue até o console do AWS Organizations.
-
No painel de navegação, escolha Settings.
-
Em Delegated administrator for AWS Organizations, inclua a seguinte declaração.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<aws-account-id>:root" }, "Action": [ "organizations:ListAccounts", "organizations:DescribeAccount", "organizations:ListTagsForResource", "organizations:ListParents", "organizations:DescribeOrganizationalUnit" ], "Resource": "*" } ] }Nota:
ListParentseDescribeOrganizationalUnitsão o que preenchem as colunasaccount_ou_uideaccount_ou_namenos resultados. Se você omiti-los, o restante da varredura ainda funciona, mas essas duas colunas voltam vazias.
Etapa 3: Implantar a solução SATv2
-
Navegue até o console do AWS CloudFormation na conta a partir da qual você executará a ferramenta (ProwlerAccountID).
-
No painel de navegação, escolha Stacks.
-
Escolha Create stack.
-
Em Specify template, selecione Upload a template file.
-
Escolha 2-sat2-codebuild-prowler.yaml que você baixou na etapa 1-1.
-
Escolha Next.
-
Em Stack name, insira sat2-prowler.
-
Na seção Parameters, em MultiAccountScan, selecione true.
-
Você pode opcionalmente habilitar o relatório para obter um resumo de todas as contas em um único arquivo csv. Em Reporting, selecione true.
-
Escolha Next.
-
Na página Configure stack options, escolha Next.
-
Na página Review SAS, marque a caixa I acknowledge that AWS CloudFormation might create IAM resources. e escolha Submit.
Revisar os resultados
Após a implantação da solução, uma função Lambda inicia o projeto CodeBuild. Após a conclusão da compilação do projeto CodeBuild, os resultados do Prowler serão enviados para o bucket Amazon S3 criado. Se você configurou notificações, receberá um e-mail quando a varredura do Prowler for concluída. Se você configurou relatórios, terá um arquivo csv consolidado na pasta /reports.
Se você não configurou alertas por e-mail, pode monitorar o progresso pelo console do CodeBuild.
Para revisar os resultados, siga estas etapas.
-
Navegue até o console do Amazon S3 na conta em que você implantou o Prowler.
-
Selecione o bucket que começa com sat2-prowler-prowlerfindingsbucket-
-
Escolha a pasta do formato de saída desejado e, em seguida, as pastas
scan_date=escan_time=da execução que deseja revisar.Cada formato de saída tem sua própria pasta de nível superior, e cada execução grava em uma subpasta
scan_date=YYYY-MM-DD/scan_time=HHMMSSabaixo dela. O horário é o UTC em que a varredura começou:csv/scan_date=2026-09-01/scan_time=204955/ Resultados CSV do Prowler, como gravados html/scan_date=2026-09-01/scan_time=204955/ relatórios HTML por conta json/scan_date=2026-09-01/scan_time=204955/ JSON por conta ocsf-json/scan_date=2026-09-01/scan_time=204955/ OCSF JSON por conta parquet/scan_date=2026-09-01/scan_time=204955/ a cópia consultada pelo Athena compliance/scan_date=2026-09-01/scan_time=204955/ CSVs de conformidade, quando gerados reports/ CSV consolidado e painelCada execução recebe sua própria pasta, portanto, executar a solução novamente nunca mistura novos resultados com os antigos, inclusive quando você a executa mais de uma vez no mesmo dia. Execuções anteriores são mantidas para que você possa compará-las.
-
Para cada conta, haverá 4 tipos de arquivo (csv, html, json, json-ocsf) no formato
prowler-output-<aws-account-id>-<datetime>. -
Selecione um dos objetos html.
-
Escolha Open.

-
Uma nova janela será aberta com o seu relatório. Você pode usar os filtros para identificar e priorizar os resultados.

Painel SATv2 (recomendado)
Se você habilitou os relatórios, um painel html estático estará na pasta de relatórios.
- Selecione o objeto satv2-dashboard.html, escolha Open.
- Selecione o csv consolidado, escolha Actions, Share with a presigned URL.
Nota: Não compartilhe sua URL pré-assinada com ninguém. Uma URL pré-assinada usa credenciais de segurança para conceder permissão limitada por tempo para baixar objetos. A URL pode ser inserida em um navegador ou usada por um programa para baixar o objeto. As credenciais usadas pela URL pré-assinada são as do usuário AWS que gerou a URL. Para mais informações, revise Sharing objects with presigned URLs.
- Em number of minutes, insira 1.
- Cole a URL na página satv2-dashboard.html.
- Revise um exemplo de saída do painel em img/satv2-dashboard.png
Painel do Prowler
O Prowler possui um painel integrado para revisar os resultados. Para usar o painel do Prowler, o Prowler deve estar instalado localmente e você deve baixar os resultados do Prowler localmente.
Você deve ter a AWS Command Line Interface (CLI) e credenciais válidas. Para mais informações, revise o guia do usuário da AWS Command Line interface.
-
Instale o Prowler. Para mais informações, revise as instruções de instalação do Prowler.
pip install prowler -
Obtenha o nome do bucket Amazon S3. O nome do bucket está no console do CloudFormation como recurso ProwlerFindingsBucket. Alternativamente, navegue até o console do S3 e procure um bucket no formato
{stack_name}-prowlerfindingsbucket-{ID} -
Baixe os CSVs e os dados de conformidade do S3. Se você não executou uma varredura completa, pode não ter dados de conformidade. Substitua
{bucket_name}pelo nome do seu bucket, e{scan_date}e{scan_time}pela execução que deseja carregar, por exemplo2026-09-01e204955. Para listar as execuções disponíveis, useaws s3 ls s3://{bucket_name}/csv/scan_date={scan_date}/.aws s3 sync s3://{bucket_name}/compliance/scan_date={scan_date}/scan_time={scan_time}/ output/compliance/ aws s3 sync s3://{bucket_name}/csv/scan_date={scan_date}/scan_time={scan_time}/ output/Nota: Sincronize uma execução por vez. O painel do Prowler lê
output/*.csve não pesquisa subpastas, portanto, copiar as próprias pastasscan_date=paraoutput/produzirá um painel vazio. Carregar duas execuções ao mesmo tempo mostraria cada resultado duas vezes. -
Execute o painel. Use o seguinte comando para executar o painel. Por padrão, ele iniciará em http://127.0.0.1:11666/.
prowler dashboard
Tipos de varredura
Por padrão, o SAT2 executará uma varredura básica que inclui 13 verificações. Você pode optar por executar uma varredura intermediária ou completa escolhendo um valor diferente para o parâmetro ProwlerScanType.
Por exemplo, uma varredura de conta única usando a opção de varredura intermediária usaria este comando:```bash
aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml
--stack-name sat2-prowler
--capabilities CAPABILITY_NAMED_IAM
--s3-bucket $TEMPLATE_BUCKET
--parameter-overrides ProwlerScanType=Intermediate
>Nota: A opção `--s3-bucket` é obrigatória porque o modelo é maior que 51.200 bytes, o máximo que o CloudFormation aceita inline. `$TEMPLATE_BUCKET` é o bucket de staging criado nas etapas de implantação do CloudShell acima. Isso se aplica a todos os exemplos de `aws cloudformation deploy` neste README.
Verificações são adicionadas com frequência; para ver as verificações mais recentes, execute o comando `prowler aws --list-checks`. Um exemplo foi fornecido abaixo para cada nível de verificação.
### Verificação básica
Para ver uma lista de verificações, revise [verificações básicas](https://github.com/awslabs/aws-security-assessment-solution/blob/main/checks/basic_checks.txt).
- Verificação manual - Manter detalhes de contato atualizados.
- Encontrar runtimes Lambda obsoletos.
- Garantir que o CloudTrail esteja habilitado em todas as regiões.
- Garantir que o AWS Config esteja habilitado em todas as regiões.
- Garantir que nenhum security group permita tráfego de entrada de 0.0.0.0/0 ou ::/0 para qualquer porta.
- Verificar se o GuardDuty está habilitado.
- Garantir que a política de senha do IAM exija pelo menos uma letra minúscula.
- Garantir que a política de senha do IAM exija pelo menos um número.
- Garantir que a política de senha do IAM exija pelo menos um símbolo.
- Garantir que a política de senha do IAM exija pelo menos uma letra maiúscula.
- Garantir que o MFA esteja habilitado para a conta raiz.
- Garantir que as chaves de acesso sejam rotacionadas a cada 90 dias ou menos.
- Garantir que não haja buckets S3 abertos para Everyone ou para qualquer usuário AWS.
### Verificação intermediária
Para ver uma lista de verificações, revise [verificações intermediárias](https://github.com/awslabs/aws-security-assessment-solution/blob/main/checks/intermediate_checks.txt).
Este scan adicionará `--severity critical high` às opções de scan do Prowler. Com isso selecionado, o Prowler executará todas as verificações de segurança que resultem em severidade crítica ou alta.
### Verificação completa
Para ver uma lista de verificações, revise [verificações completas](https://github.com/awslabs/aws-security-assessment-solution/blob/main/checks/full_checks.txt).
Esta opção não adiciona nenhum parâmetro adicional ao scan do Prowler. Isso resultará na execução de mais de 500 verificações pelo Prowler.
Você também pode usar o scan completo para personalizar o scan da maneira que desejar.
Para **ProwlerScanType**, escolha **Full**.
Para **ProwlerOptions**, acrescente a verificação. Por exemplo, para verificar apenas se o GuardDuty está habilitado, insira:
`aws --ignore-exit-code-3 -c guardduty_is_enabled`
## Notificações
Você pode opcionalmente especificar um endereço de e-mail no parâmetro EmailAddress ao implantar o modelo CloudFormation. Isso criará um tópico SNS e enviará um e-mail quando o job do CodeBuild for concluído.
Isso pode ser útil ao executar scans mais longos ou em várias contas.
Por exemplo, um scan de conta única com notificações por e-mail usaria este comando:```bash
aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \
--stack-name sat2-prowler \
--capabilities CAPABILITY_NAMED_IAM \
--s3-bucket $TEMPLATE_BUCKET \
--parameter-overrides [email protected]
Com ou sem o parâmetro opcional EmailAddress definido, você pode visualizar o progresso no console do CodeBuild.
-
Navegue até o console do CodeBuild.
-
No painel de navegação, em Build, escolha Build projects.
-
Escolha o projeto de Build que começa com ProwlerCodeBuild-.
-
Em Build history, você verá a última execução.

-
Opcionalmente, você pode escolher Start build para executar outra varredura com as opções que você escolher ao implantar a solução.
Resumo de Relatórios
Você pode habilitar opcionalmente os relatórios para resumir vários resultados de varredura do Prowler em um único arquivo. Isso pode ser útil ao executar o Prowler em várias contas em uma organização da AWS. O recurso de resumo de relatórios está desativado por padrão. Para habilitar os relatórios, defina o parâmetro Reporting como true ao implantar o modelo do CloudFormation. Isso criará um WorkGroup do Athena, uma tabela do Glue e executará automaticamente uma consulta para consolidar os resultados. O arquivo csv resumido está localizado no mesmo bucket S3 dos resultados do Prowler, na pasta /reports.
Se você especificar um endereço de e-mail enquanto os relatórios estiverem habilitados, receberá um segundo e-mail quando a consulta do Athena for concluída.
Como a tabela do Athena é construída
O Athena consulta a cópia parquet/ dos achados em vez do CSV do Prowler. O projeto do CodeBuild converte cada CSV em Parquet antes de enviá-lo, e a tabela do Glue prowler aponta para parquet/.
A conversão existe porque o Prowler 5.17.0 e versões posteriores incluem markdown de várias linhas nos metadados de verificação, então os campos DESCRIPTION, RISK e REMEDIATION_* contêm quebras de linha. O Prowler cita esses campos corretamente, mas o Athena lê CSV através do TextInputFormat do Hive, que divide registros em quebras de linha antes que qualquer SerDe seja executado. Uma tabela baseada em CSV, portanto, retorna uma linha por linha física em vez de uma linha por achado, e descarta silenciosamente as colunas que seguem o primeiro campo de várias linhas. O Parquet não usa quebras de linha como delimitadores de registro, então o texto sobrevive intacto. O Parquet também comprime fortemente o texto de remediação repetido, o que torna as consultas mais baratas: um conjunto de 116 MB de CSVs se torna aproximadamente 3 MB de Parquet.
A pasta csv/ é deixada exatamente como o Prowler a escreveu, para que o painel do Prowler e qualquer ferramenta CSV existente continuem funcionando.
Histórico de varreduras e duplicatas
A tabela é particionada em scan_date e scan_time, então cada execução da solução recebe sua própria partição. Duas coisas decorrem disso:
- O CSV consolidado em
/reportscobre apenas a execução mais recente, então reexecutar a solução nunca conta achados em dobro, e achados que não existem mais não permanecem no relatório. - Execuções anteriores permanecem consultáveis.
scan_dateescan_timesão colunas normais, então você pode comparar resultados entre execuções. A consulta salva Prowler scan trend faz isso, uma linha por execução.
Particionar apenas pela data não é suficiente. Uma segunda varredura no mesmo dia gravaria na mesma partição, e seus achados seriam mesclados com os da execução anterior em vez de substituí-los. Qualquer achado que a varredura mais recente não reporte mais, porque um recurso foi excluído, uma conta saiu da organização, uma função de membro parou de funcionar ou o tipo de varredura foi reduzido, ainda apareceria no relatório e pareceria atual.
Novas partições são registradas automaticamente: a Lambda de relatórios executa MSCK REPAIR TABLE antes de executar a consulta de consolidação, então não há crawler para agendar nem nada para adicionar manualmente.
Se você escrever suas próprias consultas do Athena, restrinja-as a uma única execução ou você agregará todas as varreduras no bucket de uma vez. Ambas as chaves têm largura fixa, então compará-las concatenadas ordena as execuções cronologicamente:```sql SELECT severity, count(*) FROM "{bucket_name}"."prowler" WHERE status = 'FAIL' AND concat(scan_date, scan_time) = ( SELECT max(concat(scan_date, scan_time)) FROM "{bucket_name}"."prowler" ) GROUP BY severity
Para consultar um dia inteiro em todas as suas execuções, filtre apenas por `scan_date`.
>Nota: Se você estiver atualizando uma implantação que usava o layout anterior somente com `scan_date`, os resultados anteriores à atualização não ficam visíveis na nova tabela, porque seus caminhos S3 não têm o nível `scan_time=`. Os dados permanecem intactos no S3. Ou deixe a próxima varredura repopular a tabela, ou mova os arquivos antigos para uma pasta `scan_time=`, por exemplo `aws s3 mv s3://{bucket_name}/parquet/scan_date={scan_date}/ s3://{bucket_name}/parquet/scan_date={scan_date}/scan_time=000000/ --recursive`, e então execute `MSCK REPAIR TABLE prowler` no Athena.
Por exemplo, uma varredura multi-conta com relatórios e alertas por e-mail habilitados usaria este comando:```bash
aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \
--stack-name sat2-prowler \
--capabilities CAPABILITY_NAMED_IAM \
--s3-bucket $TEMPLATE_BUCKET \
--parameter-overrides MultiAccountScan=true Reporting=true [email protected]

Duas consultas salvas são criadas como exemplos:
| Consulta salva | O que ela mostra |
|---|---|
| Resumo da organização Prowler | Falhas verificadas em todas as contas avaliadas, para a verificação mais recente. |
| Tendência de verificação Prowler | Falhas verificadas por data de verificação e gravidade, para comparar execuções ao longo do tempo. |
Para revisar e executar uma consulta, siga estas etapas:
-
Navegue até o console do Amazon Athena.
-
Escolha o grupo de trabalho que começa com sat2-prowler-*.
-
Escolha a guia Consultas salvas.
-
Selecione a consulta que deseja executar escolhendo o ID.

-
Escolha Executar para executar a consulta.

Perguntas Frequentes (FAQ)
- Há algum custo?
- Esta solução foi projetada para ser executada dentro do AWS Free Tier.
- Para o Amazon CodeBuild, os clientes recebem 100 minutos de build por mês.
- Para clientes que já excederam o nível gratuito com CodeBuild, S3 e Lambda, esta solução custa menos de US$ 1 para ser executada.
- Esta é uma ferramenta de monitoramento e relatórios contínuos?
- Não. Esta é uma avaliação única; recomendamos que os clientes usem o AWS Security Hub para avaliações contínuas.
- Isso se integra ao GuardDuty, Security Hub, CloudWatch, etc.?
- Não. Você pode seguir as instruções em este blog para integrar o Prowler e o Security Hub.
- Como faço para corrigir os problemas nos relatórios?
- Geralmente, os problemas devem estar descritos no relatório com correções facilmente identificáveis. Consulte também a documentação pública de cada ferramenta (Prowler). Se isso não for suficiente, entre em contato com a equipe da sua conta AWS ou com o AWS Support para ajudá-lo a entender os relatórios e trabalhar na correção dos problemas.
- Quais descobertas o Prowler relata para o SATv2?
Verificação Mitigação Verificar se as operações de API invocadas pelas funções Lambda estão sendo registradas pelo CloudTrail. O CloudTrail é uma configuração no nível da conta AWS. O CloudTrail deve ser habilitado independentemente do SATv2. Habilitar proteção contra encerramento para pilhas do CloudFormation O SATv2 foi projetado para ser executado em um ponto no tempo e depois excluído. Se a pilha for encerrada, as descobertas ainda serão mantidas no bucket S3. Verificar se os grupos de logs do CloudWatch são protegidos pelo AWS KMS. Os dados dos grupos de logs são sempre criptografados no CloudWatch Logs. Por padrão, o CloudWatch Logs usa criptografia do lado do servidor para os dados de log em repouso. A chave KMS gerenciada pelo cliente não é configurada para economizar custos. Verificar se os grupos de logs do CloudWatch têm uma política de retenção de dias específicos. A retenção dos grupos de logs é definida como 7 dias por design. Esta verificação procura grupos de logs com retenção inferior a um ano. Verificar se os buckets S3 têm criptografia KMS habilitada. Todos os buckets do Amazon S3 têm criptografia configurada por padrão, e os objetos são criptografados automaticamente usando criptografia do lado do servidor com chaves gerenciadas pelo Amazon S3 (SSE-S3). A chave KMS gerenciada pelo cliente não é configurada para economizar custos. Verificar se a exclusão com MFA não está habilitada nos buckets S3. Os resultados da avaliação do Prowler podem ser regenerados e não exigem exclusão com MFA. Verificar se os buckets S3 têm bloqueio de objeto habilitado Os resultados da avaliação do Prowler podem ser regenerados e não exigem bloqueio de objeto no S3. Verificar se os buckets S3 têm registro de acesso do servidor habilitado Os resultados da avaliação do Prowler não exigem registro de acesso do servidor.
Limpeza
Após executar a solução, você deve excluir as pilhas do CloudFormation para remover recursos que não são mais necessários. O bucket S3 com os resultados da verificação do Prowler permanecerá.
Para remover a solução de avaliação de segurança da sua conta, siga estas etapas.
-
Navegue até o console do AWS CloudFormation na conta em que você executou a ferramenta (ProwlerAccountID).
-
No painel de navegação, escolha Pilhas.
-
Escolha a pilha sat2-prowler.
-
Escolha Excluir.
Se você implantou o StackSet de função de membro para verificar várias contas, siga estas etapas.
-
Navegue até o console do AWS CloudFormation na conta em que você criou o StackSet de função de membro.
-
No painel de navegação, escolha StackSets.
-
Escolha o StackSet sat2-member-roles.
-
Escolha Ações e depois Excluir pilhas do StackSet.
-
Especifique o mesmo ID da OU da AWS usado quando você criou o StackSet.
-
Em Especificar regiões, escolha Adicionar todas as regiões.
-
Escolha Avançar e Enviar.
Após a conclusão da alteração, você pode excluir o StackSet.
-
Escolha o StackSet sat2-member-roles.
-
Escolha Ações e depois Excluir StackSet.
Se quiser remover o bucket do Amazon S3 com os resultados da verificação, siga as etapas no guia do usuário do Amazon S3 para excluir os objetos e o bucket. Se você executar a solução novamente, um novo bucket S3 será criado para seus resultados.
Segurança
Consulte CONTRIBUTING para obter mais informações.
Licença
Este projeto está licenciado sob a Licença Apache-2.0.