
Scanner de posture de sécurité multi-cloud qui audite AWS, Azure, GCP et OCI pour les mauvaises configurations, les violations de conformité (HIPAA, PCI, CIS) et les risques de sécurité via des vérifications automatisées basées sur des plugins.
$ 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 par Aqua est un projet open-source conçu pour permettre la détection des risques de sécurité dans les comptes d'infrastructure cloud, notamment : Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) et GitHub. Ces scripts sont conçus pour renvoyer une série de configurations erronées potentielles et de risques de sécurité.
CloudSploit est disponible en deux options de déploiement :
Suivez les instructions ci-dessous pour déployer la version open-source de CloudSploit sur votre machine en quelques étapes simples.
Une version commerciale de CloudSploit hébergée chez Aqua Wave. Essayez Aqua Wave dès aujourd'hui !
Assurez-vous que NodeJS est installé. Sinon, installez-le à partir d'ici.
$ git clone [email protected]:cloudsploit/scans.git
$ npm install
CloudSploit nécessite une permission en lecture seule sur votre compte cloud. Suivez les guides ci-dessous pour provisionner cet accès :
Pour AWS, vous pouvez exécuter CloudSploit directement et il détectera les identifiants en utilisant la chaîne d'identification AWS par défaut.
Le fichier de configuration CloudSploit vous permet de transmettre les identifiants du fournisseur cloud par :
Commencez par copier le fichier de configuration d'exemple :
$ cp config_example.js config.js
Modifiez le fichier de configuration en décommentant les sections pertinentes pour le fournisseur cloud que vous testez. Chaque cloud possède à la fois une option credential_file et des options en ligne. Par exemple :
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 || ''
}
Si vous utilisez l'option credential_file, pointez vers un fichier de votre système de fichiers qui suit le format correct pour le cloud que vous utilisez.
{
"accessKeyId": "YOURACCESSKEY",
"secretAccessKey": "YOURSECRETKEY"
}
{
"ApplicationID": "YOURAZUREAPPLICATIONID",
"KeyValue": "YOURAZUREKEYVALUE",
"DirectoryID": "YOURAZUREDIRECTORYID",
"SubscriptionID": "YOURAZURESUBSCRIPTIONID"
}
Remarque : Pour GCP, vous générez un fichier JSON directement depuis la console GCP, que vous ne devez pas modifier.
{
"type": "service_account",
"project": "GCPPROJECTNAME",
"client_email": "GCPCLIENTEMAIL",
"private_key": "GCPPRIVATEKEY"
}
{
"tenancyId": "YOURORACLETENANCYID",
"compartmentId": "YOURORACLECOMPARTMENTID",
"userId": "YOURORACLEUSERID",
"keyFingerprint": "YOURORACLEKEYFINGERPRINT",
"keyValue": "YOURORACLEKEYVALUE",
}
CloudSploit prend en charge le passage de variables d'environnement, mais vous devez d'abord décommenter la section de votre fichier config.js relative au fournisseur cloud scanné.
Vous pouvez ensuite transmettre les variables listées dans chaque section. Par exemple, pour 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 || '',
}
Pour exécuter une analyse standard, affichant toutes les sorties et résultats, exécutez simplement :
$ ./index.js
CloudSploit prend en charge de nombreuses options pour personnaliser l'exécution. Parmi les options populaires :
--govcloud--china--collection=file.json--ignore-ok--exit-code
--console=textVoir Formats de sortie ci-dessous pour plus d'options de sortie.
$ ./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 prend en charge le mappage de ses plugins à des politiques de conformité particulières. Pour exécuter l'analyse de conformité, utilisez le drapeau --compliance. Par exemple :
$ ./index.js --compliance=hipaa
$ ./index.js --compliance=pci
Plusieurs modes de conformité peuvent être exécutés en même temps :
$ ./index.js --compliance=cis1 --compliance=cis2
CloudSploit prend actuellement en charge les mappages de conformité suivants :
$ ./index.js --compliance=hipaa
Les analyses HIPAA mappent les plugins CloudSploit à la Health Insurance Portability and Accountability Act de 1996.
$ ./index.js --compliance=pci
Les analyses PCI mappent les plugins CloudSploit à la norme de sécurité des données de l'industrie des cartes de paiement.
$ ./index.js --compliance=cis
$ ./index.js --compliance=cis1
$ ./index.js --compliance=cis2
Les référentiels CIS sont pris en charge, à la fois pour les contrôles de niveau 1 et de niveau 2. Passer --compliance=cis exécutera à la fois les contrôles de niveau 1 et de niveau 2.
CloudSploit prend en charge la sortie dans plusieurs formats pour être consommé par d'autres outils. Si vous ne spécifiez pas autrement, CloudSploit écrit la sortie sur la sortie standard (la console) sous forme de tableau.
Remarque : Vous pouvez passer plusieurs formats de sortie et combiner des options pour une personnalisation plus poussée. Par exemple :
# Print a table to the console and save a CSV file
$ ./index.js --csv=file.csv --console=table
# Print text to the console and save a JSON and JUnit file while ignoring passing results
$ ./index.js --json=file.json --junit=file.xml --console=text --ignore-ok
Par défaut, les résultats de CloudSploit sont imprimés sur la console dans un format de tableau (avec couleurs). Vous pouvez remplacer cela et utiliser du texte brut à la place, en exécutant :
$ ./index.js --console=text
Alternativement, vous pouvez supprimer complètement la sortie console en exécutant :
$ ./index.js --console=none
Vous pouvez ignorer les résultats de sortie qui renvoient un statut OK en passant un argument de ligne de commande --ignore-ok.
$ ./index.js --csv=file.csv
$ ./index.js --json=file.json
$ ./index.js --junit=file.xml
CloudSploit sauvegarde les données interrogées depuis les API du fournisseur cloud au format JSON, qui peuvent être sauvegardées avec d'autres fichiers à des fins de débogage ou historiques.
$ ./index.js --collection=file.json
Les résultats peuvent être supprimés en passant le drapeau --suppress (plusieurs options sont prises en charge) avec le format suivant :
--suppress pluginId:region:resourceId
Par exemple :
# Suppress all results for the acmValidation plugin
$ ./index.js --suppress acmValidation:*:*
# Suppress all us-east-1 region results
$ ./index.js --suppress *:us-east-1:*
# Suppress all results matching the regex "certificate/*" in all regions for all plugins
$ ./index.js --suppress *:*:certificate/*
Le drapeau --plugin peut être utilisé si vous souhaitez exécuter un seul plugin.
$ ./index.js --plugin acmValidation
CloudSploit fonctionne en deux phases. D'abord, il interroge les API de l'infrastructure cloud pour obtenir diverses métadonnées sur votre compte, à savoir la phase de "collecte". Une fois toutes les données nécessaires collectées, le résultat est transmis à la phase d'"analyse". L'analyse utilise les données collectées pour rechercher des configurations erronées potentielles, des risques et d'autres problèmes de sécurité, qui constituent la sortie résultante.
Veuillez consulter nos directives de contribution et le guide complet pour écrire des plugins CloudSploit.
Le drapeau --remediate peut être utilisé si vous souhaitez exécuter une remédiation pour les plugins mentionnés dans le cadre de cet argument. Cela prend une liste de noms de plugins.
Veuillez consulter notre guide de développement de remédiation pour plus de détails.
Pour d'autres détails sur le produit SaaS Aqua Wave, les politiques de sécurité AWS, et plus encore, cliquez ici.