
aws-security-assessment-solution v3.0.0
Uno strumento AWS per aiutarti a creare una valutazione puntuale del tuo account AWS utilizzando Prowler.
Soluzioni di Valutazione della Sicurezza Self-Service (v2.0)
La cybersecurity rimane un argomento molto importante e motivo di preoccupazione per molti CIO, CISO e i loro clienti. Per rispondere a queste importanti esigenze, AWS ha sviluppato un set primario di servizi che i clienti dovrebbero utilizzare per proteggere i propri account. Amazon GuardDuty, AWS Security Hub, AWS Config e le revisioni AWS Well-Architected aiutano i clienti a mantenere una solida postura di sicurezza sui propri account AWS. Poiché sempre più organizzazioni migrano verso il cloud, soprattutto se lo fanno rapidamente, e non hanno ancora implementato i servizi AWS raccomandati, potrebbe esserci la necessità di condurre una valutazione rapida della sicurezza dell'ambiente cloud.
Abbiamo sviluppato una soluzione economica, facile da implementare, sicura e veloce per fornire ai nostri clienti un report di valutazione della sicurezza. Questi report vengono generati utilizzando il progetto open source Prowler. Prowler esegue una valutazione della sicurezza puntuale basata sulle best practice AWS e può aiutare a identificare rapidamente eventuali aree di rischio potenziale nell'ambiente distribuito del cliente. Se sei interessato a condurre queste valutazioni su base continuativa, AWS raccomanda di abilitare lo standard Foundational Security Best Practices di Security Hub. Se sei interessato a integrare i risultati delle valutazioni Prowler con Security Hub, puoi seguire le istruzioni nella Documentazione di Prowler.
Nota: Prowler non è una soluzione di proprietà AWS. I clienti dovrebbero valutare Prowler in modo indipendente prima di eseguire questa soluzione. Eventuali dipendenze associate a Prowler dovrebbero essere mantenute aggiornate. Questa soluzione installa una versione bloccata di Prowler (attualmente 5.41.0) dal programma di installazione del pacchetto pip, così che una modifica al formato di output di Prowler non possa interrompere una scansione senza preavviso. Per passare a una versione più recente, modifica la riga
pip3 install prowler==in2-sat2-codebuild-prowler.yaml.
📕 Per istruzioni dettagliate più approfondite, visita il modulo 2 nel SHIP Workshop.
Indice dei contenuti
- Panoramica
- Parametri
- Distribuzione
- Scansione di un singolo account
- Scansione multi-account
- Esamina i risultati
- Tipi di scansione
- Notifiche
- Riepilogo dei report
- Domande frequenti (FAQ)
- Pulizia
- Sicurezza
- Licenza
Panoramica
La soluzione viene distribuita con AWS CloudFormation. Quando viene distribuita, vengono creati un progetto AWS CodeBuild e un bucket Amazon S3 per archiviare i report generati da Prowler. Una funzione AWS Lambda viene quindi utilizzata per avviare il progetto AWS CodeBuild.
I valori predefiniti dei parametri (input utente) eseguiranno una scansione di base in un singolo account. Tuttavia, puoi scegliere parametri diversi per eseguire scansioni più estese o per scansionare più account. Il processo di distribuzione richiede meno di 5 minuti per essere completato. I modelli AWS CloudFormation della soluzione sono forniti per la revisione in questo repository Github.
Una volta distribuito il modello, il progetto CodeBuild verrà eseguito. La valutazione predefinita richiede circa 5 minuti per essere completata. Il tempo per completare una valutazione della sicurezza varierà a seconda del numero di risorse e delle opzioni di scansione selezionate. Al termine delle valutazioni, i report vengono consegnati al bucket S3 creato.

Parametri
SATv2 può essere personalizzato aggiornando i parametri CloudFormation. Questa sezione riassume le opzioni disponibili e fornisce un collegamento alla sezione con maggiori informazioni.
| Parametro | Descrizione | Ulteriori informazioni |
|---|---|---|
| ProwlerScanType | Specifica quale tipo di scansione eseguire. Selezionare full senza specificare ProwlerOptions diverse eseguirà una scansione completa. Per eseguire un controllo specifico, scegli Full e aggiungi -c a ProwlerOptions. | Tipi di scansione |
| MultiAccountScan | Imposta su true se vuoi scansionare tutti gli account nella tua organizzazione. Devi aver distribuito il modello prerequisito per fornire un ruolo, oppure specificare un ProwlerRole diverso con le autorizzazioni appropriate. | Scansione multi-account |
| Reporting | Imposta su true se vuoi riassumere i report Prowler in un singolo csv. Questo è utile quando si scansionano più account. | Riepilogo dei report |
| EmailAddress | Specifica un indirizzo se vuoi ricevere un'email al completamento della valutazione. | Notifiche |
| Parametri avanzati | ||
| ConcurrentAccountScans | Per le scansioni multi-account, specifica il numero di account da scansionare contemporaneamente. Questo è utile per grandi organizzazioni con molti account. Selezionare più di tre modifica la dimensione dell'istanza CodeBuild e può comportare costi aggiuntivi. | |
| CodeBuildTimeout | Imposta il timeout per il job CodeBuild. Il valore predefinito è 300 minuti (5 ore). | |
| MultiAccountListOverride | Specifica un elenco di account separati da spazi da scansionare. Lasciare vuoto questo campo scansionerà tutti gli account nella tua organizzazione. Assicurati di aver impostato il parametro MultiAccountScan sopra su true se vuoi scansionare account specifici. Se non puoi fornire accesso delegato a ListAccount, puoi fornire il parametro MultiAccountListOverride. | Scansione multi-account |
| ProwlerOptions | Specifica i parametri per Prowler. Il --role e l'ARN verranno automaticamente aggiunti alla fine dei parametri che specifichi. Questo può essere utilizzato anche per specificare un singolo controllo. | Scansione completa |
| ProwlerRole | Il ruolo che Prowler deve assumere per eseguire la scansione. Modificalo se vuoi specificare il tuo ruolo con autorizzazioni diverse. |
Distribuzione
Puoi utilizzare questo progetto per eseguire Prowler su più account in un'organizzazione AWS, o su un singolo account. Forniamo istruzioni per utilizzare AWS CloudShell o la console AWS. Scegli un'opzione per iniziare.
| Tipo di distribuzione | AWS CloudShell | Console AWS |
|---|---|---|
| Singolo account | Collegamento | Collegamento |
| Multi-account | Collegamento | Collegamento |
Scansione di un singolo account
Per eseguire la soluzione di Valutazione della Sicurezza Self-Service (SATv2) su un singolo account, segui le istruzioni di seguito. Puoi scegliere di utilizzare la CLI AWS o la Console AWS.
AWS CloudShell
Mostra i passaggi
Distribuisci la soluzione
-
Accedi al tuo account AWS.
-
Nella barra di navigazione, scegli AWS CloudShell.
-
Per scaricare il modello CloudFormation, inserisci il seguente comando.
wget https://raw.githubusercontent.com/awslabs/aws-security-assessment-solution/main/2-sat2-codebuild-prowler.yaml -
Per creare un bucket S3 per lo staging del modello, inserisci i seguenti comandi. Il modello è più grande di 51.200 byte, quindi CloudFormation richiede che venga caricato su S3 piuttosto che passato 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 -
Per distribuire il modello CloudFormation, inserisci il seguente comando. L'opzione
--s3-bucketcarica il modello nel bucket prima di creare lo stack.aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \ --stack-name sat2 \ --capabilities CAPABILITY_NAMED_IAM \ --s3-bucket $TEMPLATE_BUCKET -
Dopo che lo stack è stato creato, puoi eliminare il bucket di staging. Viene utilizzato solo per consegnare il modello a CloudFormation.
aws s3 rb s3://$TEMPLATE_BUCKET --force
Console AWS
Mostra i passaggi
Distribuisci la soluzione
- Scarica il modello CloudFormation 2-sat2-codebuild-prowler.yaml.
- Vai alla console AWS CloudFormation.
- Nel pannello di navigazione, scegli Stacks.
- Scegli Create stack.
- In Specify template, seleziona Upload a template file.
- Scegli 2-sat2-codebuild-prowler.yaml che hai scaricato nel passaggio 1.
- Scegli Next.
- Per Stack name, inserisci sat2.
- Scegli Next.
- Nella pagina Configure stack options, scegli Next.
- Nella pagina Review SAS, seleziona la casella I acknowledge that AWS CloudFormation might create IAM resources. e scegli Submit.
Scansione multi-account
La soluzione di Valutazione della Sicurezza Self-Service (SAT) supporta anche le scansioni multi-account. Devi distribuire un ruolo prerequisito in ogni account su cui vuoi eseguire la scansione. Per eseguire SATv2 per più account, segui le istruzioni di seguito. Puoi scegliere di utilizzare la CLI AWS o la Console AWS.
Queste istruzioni presuppongono che tu abbia già i prerequisiti per le operazioni StackSet. Per maggiori informazioni, visita la Guida utente AWS CloudFormation.
Nota: Gli StackSets non si applicano all'account di gestione. Per valutare l'account di gestione, distribuisci 1-sat2-member-role come Stack CloudFormation.
AWS CloudShell
Mostra i passaggi
Passo 1: Distribuisci il ruolo prerequisito
-
Accedi al tuo account di gestione AWS.
-
Nella barra di navigazione, scegli AWS CloudShell.
-
Identifica da quale account eseguirai la scansione Prowler. I clienti in genere utilizzano un account di sicurezza o un account di audit. Prendi nota dell'ID account per il parametro ProwlerAccountID.
-
Per scaricare il modello CloudFormation, inserisci il seguente comando.
wget https://raw.githubusercontent.com/awslabs/aws-security-assessment-solution/main/1-sat2-member-roles.yaml -
Distribuisci il modello CloudFormation tramite CloudFormation StackSets. Aggiorna i seguenti parametri:
- Sostituisci <aws-account-id> con l'ID account da cui eseguirai Prowler.
- Sostituisci <region> con la Regione in cui vuoi distribuire il modello.
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> -
Utilizza il seguente comando per creare istanze dello stack per ogni account nella tua organizzazione. Puoi scegliere come target una OU specifica o la OU root. Aggiorna i seguenti parametri:
- Sostituisci <root-ou> con l'ID root dell'organizzazione.
- Sostituisci <region> con la Regione in cui vuoi distribuire il modello.
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> -
Determina se hai un admin delegato o una policy delle risorse già esistente per il tuo account Prowler. È necessaria solo un'opzione e la policy delle risorse è consigliata poiché più granulare.
Nota: Le policy delle risorse non sono disponibili in GovCloud, quindi dovrai utilizzare un admin delegato.
7a. Il tuo account Prowler potrebbe già avere una delega. Puoi utilizzare i seguenti comandi per verificare:
aws organizations list-delegated-administrators7b. Il tuo account Prowler potrebbe già avere una policy delle risorse. Puoi utilizzare i seguenti comandi per verificare:
aws organizations describe-resource-policy -
Se non hai un admin delegato o una policy delle risorse, puoi utilizzare i seguenti comandi per aggiungere l'accesso appropriato.
Nota: Se non puoi fornire accesso delegato a ListAccount, puoi fornire il parametro MultiAccountListOverride nel modello
2-sat2-codebuild-prowler.Nota: Se stai utilizzando GovCloud, utilizza il passaggio 8a per creare un admin delegato. Se stai utilizzando una regione commerciale, utilizza il passaggio 8b per fornire accesso con privilegi minimi a ListAccounts.
8a. Utilizza il seguente comando per delegare un admin se non ne hai già uno. Sostituisci <aws-account-id> con l'ID account da cui eseguirai Prowler.
aws organizations register-delegated-administrator <aws-account-id>8b. Utilizza i seguenti comandi per aggiungere una policy delle risorse.
-
Sostituisci <aws-account-id> con l'ID account da cui eseguirai 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:
ListParentseDescribeOrganizationalUnitsono ciò che compila le colonneaccount_ou_uideaccount_ou_namenei risultati. Omettili e il resto della scansione funzionerà comunque, ma quelle due colonne torneranno vuote. -
Passo 2: Distribuisci la soluzione SATv2
Nota: Assicurati di essere passato all'account che hai specificato eseguirà Prowler.
-
Per scaricare il modello, apri AWS CloudShell nell'account Prowler e inserisci il seguente comando.
wget https://raw.githubusercontent.com/awslabs/aws-security-assessment-solution/main/2-sat2-codebuild-prowler.yaml -
Per creare un bucket S3 per lo staging del modello, inserisci i seguenti comandi. Il modello è più grande di 51.200 byte, quindi CloudFormation richiede che venga caricato su S3 piuttosto che passato 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 -
Per distribuire il modello nell'account Prowler. Imposta MultiAccountScan su true per scansionare tutti gli account nella tua organizzazione. L'opzione
--s3-bucketcarica il modello nel bucket prima di creare lo stack.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 -
Dopo che lo stack è stato creato, puoi eliminare il bucket di staging. Viene utilizzato solo per consegnare il modello a CloudFormation.
aws s3 rb s3://$TEMPLATE_BUCKET --force
Console AWS
Mostra i passaggi
Passo 1: Distribuisci il ruolo prerequisito
-
Scarica i file 1-sat2-member-roles.yaml e 2-sat2-codebuild-prowler.yaml.
-
Distribuisci il modello CloudFormation tramite CloudFormation StackSets. Aggiorna i seguenti parametri:
- Sostituisci <aws-account-id> con l'ID account da cui eseguirai Prowler.
- Sostituisci <region> con la Regione in cui vuoi distribuire il modello.3. Passare alla console AWS CloudFormation.
-
Nel riquadro di navigazione, scegliere StackSets.
-
Scegliere Create StackSet.
-
Per Permissions, lasciare selezionata l'opzione Service-managed permissions.
-
In Specify template, selezionare Upload a template file.
-
Scegliere 1-sat2-member-roles.yaml scaricato al punto 1-1.
-
Scegliere Next.
-
Per Stack name, inserire sat2-member-role.
-
Per Parameters, inserire quanto segue:
- ProwlerAccountID - L'ID dell'account da cui eseguirai Prowler.
-
Scegliere Next.
-
Nella pagina Configure StackSet options, scegliere Next.
-
Nella pagina Set deployment options, inserire quanto segue:
- Per Deployment targets, lasciare selezionata l'opzione Deploy to organization.
- Per Specify regions, scegliere us-east-1.
- Per Region Concurrency, scegliere Parallel.
-
Scegliere Next.
-
Nella pagina Review, selezionare la casella I acknowledge that AWS CloudFormation might create IAM resources. e scegliere Submit.
Step 2: Abilitare l'amministratore delegato per AWS Organizations
Verificare se esiste già un amministratore delegato o una resource policy per l'account in cui si desidera distribuire Prowler. Si consiglia di eseguire Prowler dall'account di sicurezza (Audit). Per aggiornare o verificare che l'account di audit disponga delle autorizzazioni per ListAccounts, seguire questi passaggi.
-
Passare alla console AWS Organization.
-
Nel riquadro di navigazione, scegliere Settings.
-
Per Delegated administrator for AWS Organizations, includere la seguente dichiarazione.
{ "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:
ListParentseDescribeOrganizationalUnitsono ciò che popola le colonneaccount_ou_uideaccount_ou_namenei risultati. Se li si omette, il resto della scansione funziona comunque, ma queste due colonne resteranno vuote.
Step 3: Distribuire la soluzione SATv2
-
Passare alla console AWS CloudFormation nell'account da cui si eseguirà lo strumento (ProwlerAccountID).
-
Nel riquadro di navigazione, scegliere Stacks.
-
Scegliere Create stack.
-
In Specify template, selezionare Upload a template file.
-
Scegliere 2-sat2-codebuild-prowler.yaml scaricato al punto 1-1.
-
Scegliere Next.
-
Per Stack name, inserire sat2-prowler.
-
Nella sezione Parameters, per MultiAccountScan, selezionare true.
-
È possibile abilitare facoltativamente la reportistica per ottenere un riepilogo di tutti gli account in un unico file csv. Per Reporting, selezionare true.
-
Scegliere Next.
-
Nella pagina Configure stack options, scegliere Next.
-
Nella pagina Review SAS, selezionare la casella I acknowledge that AWS CloudFormation might create IAM resources. e scegliere Submit.
Esaminare i risultati
Dopo la distribuzione della soluzione, una funzione Lambda avvia il progetto CodeBuild. Al termine della build del progetto CodeBuild, i risultati di Prowler verranno caricati nel bucket Amazon S3 creato. Se è stata configurata la notifica, si riceverà un'email al completamento della scansione Prowler. Se è stata configurata la reportistica, si disporrà di un file csv consolidato nella cartella /reports.
Se non sono stati configurati avvisi email, è possibile monitorare l'avanzamento dalla console CodeBuild.
Per esaminare i risultati, seguire questi passaggi.
-
Passare alla console Amazon S3 nell'account in cui è stato distribuito Prowler.
-
Selezionare il bucket che inizia con sat2-prowler-prowlerfindingsbucket-
-
Scegliere la cartella per il formato di output desiderato, quindi le cartelle
scan_date=escan_time=per l'esecuzione da esaminare.Ogni formato di output ha la propria cartella di primo livello e ogni esecuzione scrive in una sottocartella
scan_date=YYYY-MM-DD/scan_time=HHMMSSal suo interno. L'ora è l'UTC di inizio della scansione:csv/scan_date=2026-09-01/scan_time=204955/ Risultati CSV di Prowler, come scritti html/scan_date=2026-09-01/scan_time=204955/ report HTML per account json/scan_date=2026-09-01/scan_time=204955/ JSON per account ocsf-json/scan_date=2026-09-01/scan_time=204955/ OCSF JSON per account parquet/scan_date=2026-09-01/scan_time=204955/ la copia interrogata da Athena compliance/scan_date=2026-09-01/scan_time=204955/ CSV di conformità, quando generati reports/ CSV consolidato e dashboardOgni esecuzione ha la propria cartella, quindi rieseguire la soluzione non mescola mai nuovi risultati con quelli vecchi, anche quando la si esegue più volte nello stesso giorno. Le esecuzioni precedenti vengono conservate per consentire il confronto.
-
Per ogni account, saranno presenti 4 tipi di file (csv, html, json, json-ocsf) nel formato
prowler-output-<aws-account-id>-<datetime>. -
Selezionare uno degli oggetti html.
-
Scegliere Open.

-
Si aprirà una nuova finestra con il report. È possibile utilizzare i filtri per identificare e dare priorità ai risultati.

Dashboard SATv2 (consigliato)
Se la reportistica è stata abilitata, nella cartella reporting sarà presente una dashboard html statica.
- Selezionare l'oggetto satv2-dashboard.html, scegliere Open.
- Selezionare il csv consolidato, scegliere Actions, Share with a presigned URL.
Nota: non condividere l'URL presigned con nessuno. Un URL presigned utilizza le credenziali di sicurezza per concedere autorizzazioni a tempo limitato per il download degli oggetti. L'URL può essere inserito in un browser o utilizzato da un programma per scaricare l'oggetto. Le credenziali utilizzate dall'URL presigned sono quelle dell'utente AWS che ha generato l'URL. Per maggiori informazioni, consultare Sharing objects with presigned URLs.
- Per number of minutes, inserire 1.
- Incollare l'URL nella pagina satv2-dashboard.html.
- Esaminare un esempio di output della dashboard in img/satv2-dashboard.png
Dashboard Prowler
Prowler dispone di una dashboard integrata per esaminare i risultati. Per utilizzare la dashboard di Prowler, Prowler deve essere installato localmente e i risultati di Prowler devono essere scaricati localmente.
È necessario disporre dell'AWS Command Line Interface (CLI) e di credenziali valide. Per maggiori informazioni, consultare la guida utente AWS Command Line interface.
-
Installare Prowler. Per maggiori informazioni, consultare le istruzioni di installazione di Prowler.
pip install prowler -
Ottenere il nome del bucket Amazon S3. Il nome del bucket è disponibile nella console CloudFormation come risorsa ProwlerFindingsBucket. In alternativa, passare alla console S3 e cercare un bucket nel formato
{stack_name}-prowlerfindingsbucket-{ID} -
Scaricare i CSV e i dati di conformità da S3. Se non è stata eseguita una scansione completa, potrebbe non essere disponibile alcun dato di conformità. Sostituire
{bucket_name}con il nome del proprio bucket e{scan_date}e{scan_time}con l'esecuzione da caricare, ad esempio2026-09-01e204955. Per elencare le esecuzioni disponibili, utilizzareaws 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: sincronizzare una sola esecuzione alla volta. La dashboard di Prowler legge
output/*.csve non cerca nelle sottocartelle, quindi copiare le cartellescan_date=stesse inoutput/produrrà una dashboard vuota. Il caricamento di due esecuzioni contemporaneamente mostrerebbe ogni risultato due volte. -
Eseguire la dashboard. Utilizzare il seguente comando per avviare la dashboard. Per impostazione predefinita, si avvierà su http://127.0.0.1:11666/.
prowler dashboard
Tipi di scansione
Per impostazione predefinita, SAT2 esegue una scansione di base che include 13 controlli. È possibile scegliere di eseguire una scansione intermedia o completa selezionando un valore diverso per il parametro ProwlerScanType.
Ad esempio, una scansione di un singolo account con l'opzione di scansione intermedia utilizzerebbe questo 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: L'opzione `--s3-bucket` è obbligatoria perché il template è più grande di 51.200 byte, il massimo che CloudFormation accetta inline. `$TEMPLATE_BUCKET` è il bucket di staging creato nei passaggi di deployment di CloudShell sopra indicati. Si applica a ogni esempio di `aws cloudformation deploy` in questo README.
I controlli vengono aggiunti frequentemente; per vedere gli ultimi controlli, esegui il comando `prowler aws --list-checks`. Di seguito è fornito un esempio per ogni livello di controllo.
### Scansione di base
Per vedere un elenco di controlli, consulta [controlli di base](https://github.com/awslabs/aws-security-assessment-solution/blob/main/checks/basic_checks.txt).
- Controllo manuale - Mantieni aggiornati i dettagli di contatto.
- Trova runtime Lambda obsoleti.
- Assicurati che CloudTrail sia abilitato in tutte le regioni.
- Assicurati che AWS Config sia abilitato in tutte le regioni.
- Assicurati che nessun security group consenta traffico in ingresso da 0.0.0.0/0 o ::/0 su qualsiasi porta.
- Verifica se GuardDuty è abilitato.
- Assicurati che la policy delle password IAM richieda almeno una lettera minuscola.
- Assicurati che la policy delle password IAM richieda almeno un numero.
- Assicurati che la policy delle password IAM richieda almeno un simbolo.
- Assicurati che la policy delle password IAM richieda almeno una lettera maiuscola.
- Assicurati che MFA sia abilitato per l'account root.
- Assicurati che le access key vengano ruotate ogni 90 giorni o meno.
- Assicurati che non ci siano bucket S3 aperti a Everyone o a qualsiasi utente AWS.
### Scansione intermedia
Per vedere un elenco di controlli, consulta [controlli intermedi](https://github.com/awslabs/aws-security-assessment-solution/blob/main/checks/intermediate_checks.txt).
Questa scansione aggiungerà `--severity critical high` alle opzioni di scansione di Prowler. Con questa selezione, Prowler eseguirà tutti i controlli di sicurezza che risultano di gravità critica o alta.
### Scansione completa
Per vedere un elenco di controlli, consulta [controlli completi](https://github.com/awslabs/aws-security-assessment-solution/blob/main/checks/full_checks.txt).
Questa opzione non aggiunge parametri aggiuntivi alla scansione di Prowler. Comporterà l'esecuzione di oltre 500 controlli da parte di Prowler.
Puoi anche utilizzare la scansione completa per personalizzare la scansione come preferisci.
Per **ProwlerScanType** scegli **Full**.
Per **ProwlerOptions**, aggiungi il controllo. Ad esempio, per verificare solo se GuardDuty è abilitato, inserisci:
`aws --ignore-exit-code-3 -c guardduty_is_enabled`
## Notifiche
Puoi facoltativamente specificare un indirizzo email nel parametro EmailAddress quando distribuisci il template CloudFormation. Questo creerà un topic SNS e invierà un'email al completamento del job CodeBuild.
Questo può essere utile quando si eseguono scansioni più lunghe o su molti account.
Ad esempio, una scansione su un singolo account con notifiche email utilizzerebbe questo 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]
Con il parametro facoltativo EmailAddress impostato o meno, puoi visualizzare l'avanzamento nella console CodeBuild.
-
Vai alla console CodeBuild.
-
Nel riquadro di navigazione, sotto Build, scegli Build projects.
-
Scegli il progetto Build che inizia con ProwlerCodeBuild-.
-
Sotto Build history, vedrai l'ultima esecuzione.

-
Facoltativamente, puoi scegliere Start build per eseguire un'altra scansione con le opzioni scelte al momento della distribuzione della soluzione.
Riepilogo dei report
Puoi abilitare facoltativamente la generazione di report per riassumere più risultati di scansione Prowler in un unico file. Ciò può essere utile quando si esegue Prowler su più account in un'organizzazione AWS. La funzione di riepilogo dei report è disattivata per impostazione predefinita. Per abilitarla, imposta il parametro Reporting su true quando distribuisci il modello CloudFormation. Verranno creati un Athena WorkGroup, una tabella Glue e verrà eseguita automaticamente una query per consolidare i risultati. Il file csv riepilogativo si trova nello stesso bucket S3 dei risultati Prowler, nella cartella /reports.
Se specifichi un indirizzo email mentre la generazione di report è abilitata, riceverai una seconda email al termine della query Athena.
Come viene creata la tabella Athena
Athena interroga la copia parquet/ dei risultati anziché il CSV di Prowler. Il progetto CodeBuild converte ogni CSV in Parquet prima di caricarlo, e la tabella Glue prowler punta a parquet/.
La conversione esiste perché Prowler 5.17.0 e versioni successive includono markdown su più righe nei metadati dei controlli, quindi i campi DESCRIPTION, RISK e REMEDIATION_* contengono interruzioni di riga. Prowler racchiude correttamente questi campi tra virgolette, ma Athena legge i CSV tramite TextInputFormat di Hive, che divide i record in base alle interruzioni di riga prima che venga eseguito qualsiasi SerDe. Una tabella basata su CSV restituisce quindi una riga per ogni riga fisica anziché una per ogni risultato, e scarta silenziosamente le colonne che seguono il primo campo su più righe. Parquet non usa le interruzioni di riga come delimitatori di record, quindi il testo rimane intatto. Parquet comprime inoltre pesantemente il testo di remediation ripetuto, rendendo le query più economiche: un set di CSV da 116 MB diventa circa 3 MB di Parquet.
La cartella csv/ viene lasciata esattamente come l'ha scritta Prowler, così la dashboard di Prowler e qualsiasi strumento CSV esistente continuano a funzionare.
Cronologia delle scansioni e duplicati
La tabella è partizionata su scan_date e scan_time, quindi ogni esecuzione della soluzione ha la propria partizione. Da ciò derivano due cose:
- Il CSV consolidato in
/reportscopre solo l'esecuzione più recente, quindi rieseguire la soluzione non conta mai due volte i risultati, e i risultati che non esistono più non restano nel report. - Le esecuzioni precedenti restano interrogabili.
scan_dateescan_timesono colonne normali, quindi puoi confrontare i risultati tra le esecuzioni. La query salvata Prowler scan trend fa proprio questo, una riga per esecuzione.
La partizione basata solo sulla data non è sufficiente. Una seconda scansione nello stesso giorno scriverebbe nella stessa partizione, e i suoi risultati verrebbero uniti a quelli dell'esecuzione precedente anziché sostituirli. Qualsiasi risultato che la scansione più recente non riporta più, perché una risorsa è stata eliminata, un account ha lasciato l'organizzazione, un ruolo membro ha smesso di funzionare o il tipo di scansione è stato ridotto, apparirebbe comunque nel report e sembrerebbe attuale.
Le nuove partizioni vengono registrate automaticamente: la Lambda di reporting esegue MSCK REPAIR TABLE prima di eseguire la query di consolidamento, quindi non c'è alcun crawler da pianificare né nulla da aggiungere manualmente.
Se scrivi le tue query Athena, limitale a una singola esecuzione, altrimenti aggregherai tutte le scansioni nel bucket in una volta sola. Entrambe le chiavi hanno larghezza fissa, quindi confrontarle concatenate ordina le esecuzioni in ordine cronologico:```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
Per interrogare un'intera giornata su tutte le sue esecuzioni, filtra solo su `scan_date`.
>Nota: Se stai aggiornando una distribuzione che utilizzava il precedente layout basato solo su `scan_date`, i risultati precedenti all'aggiornamento non sono visibili nella nuova tabella, perché i loro percorsi S3 non hanno il livello `scan_time=`. I dati rimangono intatti in S3. Lascia che la prossima scansione ripopoli la tabella oppure sposta i vecchi file in una cartella `scan_time=`, ad esempio `aws s3 mv s3://{bucket_name}/parquet/scan_date={scan_date}/ s3://{bucket_name}/parquet/scan_date={scan_date}/scan_time=000000/ --recursive`, e poi esegui `MSCK REPAIR TABLE prowler` in Athena.
Ad esempio, una scansione multi-account con report e avvisi email abilitati utilizzerebbe questo 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]

Vengono create due query salvate come esempio:
| Query salvata | Cosa mostra |
|---|---|
| Riepilogo organizzazione Prowler | Controlli non riusciti su ogni account valutato, per la scansione più recente. |
| Andamento scansione Prowler | Controlli non riusciti per data di scansione e gravità, per confrontare le esecuzioni nel tempo. |
Per rivedere ed eseguire una query, segui questi passaggi:
-
Vai alla console Amazon Athena.
-
Scegli il workgroup che inizia con sat2-prowler-*.
-
Scegli la scheda Query salvate.
-
Seleziona la query che vuoi eseguire scegliendo l'ID.

-
Scegli Esegui per eseguire la query.

Domande frequenti (FAQ)
- C'è un costo?
- Questa soluzione è progettata per essere eseguita all'interno del livello gratuito AWS.
- Per Amazon CodeBuild, i clienti ricevono 100 minuti di build al mese.
- Per i clienti che hanno già superato il livello gratuito con CodeBuild, S3 e Lambda, questa soluzione costa meno di $1 per esecuzione.
- È uno strumento di monitoraggio e reporting continuo?
- No. Si tratta di una valutazione una tantum; consigliamo ai clienti di usare AWS Security Hub per valutazioni continue.
- Si integra con GuardDuty, Security Hub, CloudWatch, ecc.?
- No. Puoi seguire le istruzioni in questo blog per integrare Prowler e Security Hub.
- Come posso correggere i problemi nei report?
- In generale, i problemi dovrebbero essere descritti nel report con correzioni facilmente identificabili. Consulta anche la documentazione pubblica per ogni strumento (Prowler). Se questo non è sufficiente, contatta il tuo team account AWS o il Supporto AWS per aiutarti a comprendere i report e lavorare verso la correzione dei problemi.
- Quali risultati riporta Prowler per SATv2?
Controllo Mitigazione Verifica se le operazioni API di invocazione delle funzioni Lambda vengono registrate da CloudTrail. CloudTrail è una configurazione a livello di account AWS. CloudTrail dovrebbe essere abilitato indipendentemente da SATv2. Abilita la protezione dalla terminazione per gli stack CloudFormation SATv2 è pensato per essere eseguito in un momento specifico e poi eliminato. Se lo Stack viene terminato, i risultati vengono comunque conservati nel bucket S3. Verifica se i gruppi di log CloudWatch sono protetti da AWS KMS. I dati dei gruppi di log sono sempre crittografati in CloudWatch Logs. Per impostazione predefinita, CloudWatch Logs usa la crittografia lato server per i dati dei log a riposo. La chiave KMS gestita dal cliente non è configurata per risparmiare sui costi. Verifica se i gruppi di log CloudWatch hanno una policy di conservazione di giorni specifici. La conservazione dei gruppi di log è impostata a 7 giorni per progettazione. Questo controllo cerca gruppi di log con conservazione inferiore a un anno. Verifica se i bucket S3 hanno la crittografia KMS abilitata. Tutti i bucket Amazon S3 hanno la crittografia configurata per impostazione predefinita e gli oggetti vengono crittografati automaticamente usando la crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3). La chiave KMS gestita dal cliente non è configurata per risparmiare sui costi. Verifica se l'eliminazione MFA del bucket S3 non è abilitata. I risultati della valutazione Prowler possono essere rigenerati e non richiedono l'eliminazione MFA. Verifica se i bucket S3 hanno il blocco oggetti abilitato I risultati della valutazione Prowler possono essere rigenerati e non richiedono il blocco oggetti S3. Verifica se i bucket S3 hanno il logging di accesso al server abilitato I risultati della valutazione Prowler non richiedono il logging di accesso al server.
Pulizia
Dopo aver eseguito la soluzione, dovresti eliminare gli Stack CloudFormation per rimuovere le risorse non più necessarie. Il bucket S3 con i risultati della scansione Prowler rimarrà.
Per rimuovere la soluzione di valutazione della sicurezza dal tuo account, segui questi passaggi.
-
Vai alla console AWS CloudFormation nell'account da cui hai eseguito lo strumento (ProwlerAccountID).
-
Nel pannello di navigazione, scegli Stack.
-
Scegli lo Stack sat2-prowler.
-
Scegli Elimina.
Se hai distribuito lo StackSet dei ruoli membro per scansionare più account, segui questi passaggi.
-
Vai alla console AWS CloudFormation nell'account in cui hai creato lo StackSet dei ruoli membro.
-
Nel pannello di navigazione, scegli StackSets.
-
Scegli lo StackSet sat2-member-roles.
-
Scegli Azioni, quindi Elimina stack dallo StackSet.
-
Specifica lo stesso ID OU AWS che hai usato quando hai creato lo StackSet.
-
Per Specifica regioni, scegli Aggiungi tutte le regioni.
-
Scegli Avanti, quindi Invia.
Dopo che la modifica è completata, puoi eliminare lo StackSet.
-
Scegli lo StackSet sat2-member-roles.
-
Scegli Azioni, quindi Elimina StackSet.
Se vuoi rimuovere il bucket Amazon S3 con i risultati della scansione, segui i passaggi nella guida utente Amazon S3 per eliminare gli oggetti e il bucket. Se esegui di nuovo la soluzione, verrà creato un nuovo bucket S3 per i tuoi risultati.
Sicurezza
Vedi CONTRIBUTING per maggiori informazioni.
Licenza
Questo progetto è concesso in licenza con la Licenza Apache-2.0.