
Scanner di sicurezza multi-cloud che controlla AWS, Azure, GCP e OCI per configurazioni errate, violazioni di conformità (HIPAA, PCI, CIS) e rischi di sicurezza tramite controlli automatizzati basati su plugin.
$ git clone https://github.com/aquasecurity/cloudsploit.git
$ cd cloudsploit
$ npm install
$ ./index.js -h
$ git clone https://github.com/aquasecurity/cloudsploit.git
$ cd cloudsploit
$ docker build . -t cloudsploit:0.0.1
$ docker run cloudsploit:0.0.1 -h
$ docker run -e AWS_ACCESS_KEY_ID=XX -e AWS_SECRET_ACCESS_KEY=YY cloudsploit:0.0.1 --compliance=pci
CloudSploit di Aqua è un progetto open-source progettato per rilevare i rischi di sicurezza negli account dell'infrastruttura cloud, tra cui: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) e GitHub. Questi script sono progettati per restituire una serie di potenziali configurazioni errate e rischi di sicurezza.
CloudSploit è disponibile in due opzioni di distribuzione:
Segui le istruzioni qui sotto per distribuire la versione open-source di CloudSploit sulla tua macchina in pochi semplici passaggi.
Una versione commerciale di CloudSploit ospitata su Aqua Wave. Prova Aqua Wave oggi!
Assicurati che NodeJS sia installato. In caso contrario, installalo da qui.
$ git clone [email protected]:cloudsploit/scans.git
$ npm install
CloudSploit richiede l'accesso in sola lettura al tuo account cloud. Segui le guide seguenti per fornire questo accesso:
Per AWS, puoi eseguire CloudSploit direttamente e rileverà le credenziali utilizzando la catena di credenziali AWS predefinita.
Il file di configurazione CloudSploit ti permette di passare le credenziali del cloud provider tramite:
Inizia copiando il file di configurazione di esempio:
$ cp config_example.js config.js
Modifica il file di configurazione decommentando le sezioni pertinenti per il cloud provider che stai testando. Ogni cloud ha sia un'opzione credential_file che opzioni inline. Ad esempio:
azure: {
// OPTION 1: If using a credential JSON file, enter the path below
// credential_file: '/path/to/file.json',
// OPTION 2: If using hard-coded credentials, enter them below
// application_id: process.env.AZURE_APPLICATION_ID || '',
// key_value: process.env.AZURE_KEY_VALUE || '',
// directory_id: process.env.AZURE_DIRECTORY_ID || '',
// subscription_id: process.env.AZURE_SUBSCRIPTION_ID || ''
}
Se utilizzi l'opzione credential_file, punta a un file nel tuo file system che segua il formato corretto per il cloud che stai utilizzando.
{
"accessKeyId": "YOURACCESSKEY",
"secretAccessKey": "YOURSECRETKEY"
}
{
"ApplicationID": "YOURAZUREAPPLICATIONID",
"KeyValue": "YOURAZUREKEYVALUE",
"DirectoryID": "YOURAZUREDIRECTORYID",
"SubscriptionID": "YOURAZURESUBSCRIPTIONID"
}
Nota: Per GCP, generi un file JSON direttamente dalla console GCP, che non dovresti modificare.
{
"type": "service_account",
"project": "GCPPROJECTNAME",
"client_email": "GCPCLIENTEMAIL",
"private_key": "GCPPRIVATEKEY"
}
{
"tenancyId": "YOURORACLETENANCYID",
"compartmentId": "YOURORACLECOMPARTMENTID",
"userId": "YOURORACLEUSERID",
"keyFingerprint": "YOURORACLEKEYFINGERPRINT",
"keyValue": "YOURORACLEKEYVALUE",
}
CloudSploit supporta il passaggio di variabili d'ambiente, ma devi prima decommentare la sezione del tuo file config.js relativa al cloud provider da scansionare.
Puoi quindi passare le variabili elencate in ciascuna sezione. Ad esempio, per AWS:
{
access_key: process.env.AWS_ACCESS_KEY_ID || '',
secret_access_key: process.env.AWS_SECRET_ACCESS_KEY || '',
session_token: process.env.AWS_SESSION_TOKEN || '',
}
Per eseguire una scansione standard, mostrando tutti gli output e i risultati, basta eseguire:
$ ./index.js
CloudSploit supporta molte opzioni per personalizzare l'esecuzione. Alcune opzioni popolari includono:
--govcloud--china--collection=file.json--ignore-ok--exit-code
--console=textVedi Formati di Output qui sotto per ulteriori opzioni di output.
$ ./index.js -h
_____ _ _ _____ _ _ _
/ ____| | | |/ ____| | | (_) |
| | | | ___ _ _ __| | (___ _ __ | | ___ _| |_
| | | |/ _ \| | | |/ _` |\___ \| '_ \| |/ _ \| | __|
| |____| | (_) | |_| | (_| |____) | |_) | | (_) | | |_
\_____|_|\___/ \__,_|\__,_|_____/| .__/|_|\___/|_|\__|
| |
|_|
CloudSploit by Aqua Security, Ltd.
Cloud security auditing for AWS, Azure, GCP, Oracle, and GitHub
usage: index.js [-h] --config CONFIG [--compliance {hipaa,cis,cis1,cis2,pci}] [--plugin PLUGIN] [--govcloud] [--china] [--csv CSV] [--json JSON] [--junit JUNIT]
[--table] [--console {none,text,table}] [--collection COLLECTION] [--ignore-ok] [--exit-code] [--skip-paginate] [--suppress SUPPRESS]
optional arguments:
-h, --help show this help message and exit
--config CONFIG
The path to a cloud provider credentials file.
--compliance {hipaa,cis,cis1,cis2,pci}
Compliance mode. Only return results applicable to the selected program.
--plugin PLUGIN A specific plugin to run. If none provided, all plugins will be run. Obtain from the exports.js file. E.g. acmValidation
--govcloud AWS only. Enables GovCloud mode.
--china AWS only. Enables AWS China mode.
--csv CSV Output: CSV file
--json JSON Output: JSON file
--junit JUNIT Output: Junit file
--table Output: table
--console {none,text,table}
Console output format. Default: table
--collection COLLECTION
Output: full collection JSON as file
--ignore-ok Ignore passing (OK) results
--exit-code Exits with a non-zero status code if non-passing results are found
--skip-paginate AWS only. Skips pagination (for debugging).
--suppress SUPPRESS Suppress results matching the provided Regex. Format: pluginId:region:resourceId
CloudSploit supporta la mappatura dei suoi plugin a particolari policy di compliance. Per eseguire la scansione di compliance, usa il flag --compliance. Ad esempio:
$ ./index.js --compliance=hipaa
$ ./index.js --compliance=pci
È possibile eseguire più modalità di compliance contemporaneamente:
$ ./index.js --compliance=cis1 --compliance=cis2
CloudSploit supporta attualmente le seguenti mappature di compliance:
$ ./index.js --compliance=hipaa
Le scansioni HIPAA mappano i plugin di CloudSploit all'Health Insurance Portability and Accountability Act del 1996.
$ ./index.js --compliance=pci
Le scansioni PCI mappano i plugin di CloudSploit al Payment Card Industry Data Security Standard.
$ ./index.js --compliance=cis
$ ./index.js --compliance=cis1
$ ./index.js --compliance=cis2
I CIS Benchmarks sono supportati, sia per i controlli di Livello 1 che di Livello 2. Passando --compliance=cis verranno eseguiti entrambi i controlli di livello 1 e 2.
CloudSploit supporta l'output in diversi formati per il consumo da parte di altri strumenti. Se non specifichi diversamente, CloudSploit scrive l'output sullo standard output (console) come tabella.
Nota: Puoi passare più formati di output e combinare opzioni per ulteriori personalizzazioni. Ad esempio:
# Stampa una tabella sulla console e salva un file CSV
$ ./index.js --csv=file.csv --console=table
# Stampa testo sulla console e salva file JSON e JUnit ignorando i risultati positivi
$ ./index.js --json=file.json --junit=file.xml --console=text --ignore-ok
Per impostazione predefinita, i risultati di CloudSploit vengono stampati sulla console in formato tabella (con colori). Puoi sovrascrivere questo comportamento e utilizzare invece testo semplice, eseguendo:
$ ./index.js --console=text
In alternativa, puoi sopprimere completamente l'output della console eseguendo:
$ ./index.js --console=none
Puoi ignorare i risultati dall'output che restituiscono uno stato OK passando un argomento della riga di comando --ignore-ok.
$ ./index.js --csv=file.csv
$ ./index.js --json=file.json
$ ./index.js --junit=file.xml
CloudSploit salva i dati interrogati dalle API del cloud provider in formato JSON, che possono essere salvati insieme ad altri file per scopi di debug o storici.
$ ./index.js --collection=file.json
I risultati possono essere soppressi passando il flag --suppress (sono supportate più opzioni) con il seguente formato:
--suppress pluginId:region:resourceId
Ad esempio:
# Sopprimi tutti i risultati per il plugin acmValidation
$ ./index.js --suppress acmValidation:*:*
# Sopprimi tutti i risultati della regione us-east-1
$ ./index.js --suppress *:us-east-1:*
# Sopprimi tutti i risultati che corrispondono all'espressione regolare "certificate/*" in tutte le regioni per tutti i plugin
$ ./index.js --suppress *:*:certificate/*
Il flag --plugin può essere utilizzato se desideri eseguire un solo plugin.
$ ./index.js --plugin acmValidation
CloudSploit funziona in due fasi. In primo luogo, interroga le API dell'infrastruttura cloud per vari metadati relativi al tuo account, ovvero la fase di "raccolta". Una volta raccolti tutti i dati necessari, il risultato viene passato alla fase di "scansione". La scansione utilizza i dati raccolti per cercare potenziali configurazioni errate, rischi e altri problemi di sicurezza, che costituiscono l'output finale.
Consulta le nostre linee guida per i contributi e la guida completa per scrivere plugin CloudSploit.
Il flag --remediate può essere utilizzato se desideri eseguire la remediation per i plugin menzionati come parte di questo argomento. Accetta un elenco di nomi di plugin.
Consulta la nostra guida allo sviluppo delle remediation per maggiori dettagli.
Per altri dettagli sul prodotto SaaS Aqua Wave, le policy di sicurezza AWS e altro, clicca qui.