
Multi-Cloud-Sicherheitsposture-Scanner, der AWS, Azure, GCP und OCI auf Fehlkonfigurationen, Compliance-Verstöße (HIPAA, PCI, CIS) und Sicherheitsrisiken durch automatisierte plugin-basierte Prüfungen überprüft.
$ 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 von Aqua ist ein Open-Source-Projekt, das die Erkennung von Sicherheitsrisiken in Cloud-Infrastrukturkonten ermöglicht, einschließlich: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) und GitHub. Diese Skripte sollen eine Reihe potenzieller Fehlkonfigurationen und Sicherheitsrisiken zurückgeben.
CloudSploit ist in zwei Bereitstellungsoptionen verfügbar:
Befolgen Sie die nachstehenden Anweisungen, um die Open-Source-Version von CloudSploit in nur wenigen einfachen Schritten auf Ihrem Rechner zu installieren.
Eine kommerzielle Version von CloudSploit, gehostet bei Aqua Wave. Probieren Sie noch heute Aqua Wave aus!
Stellen Sie sicher, dass NodeJS installiert ist. Wenn nicht, installieren Sie es von hier.
$ git clone [email protected]:cloudsploit/scans.git
$ npm install
CloudSploit benötigt schreibgeschützten Zugriff auf Ihr Cloud-Konto. Folgen Sie den nachstehenden Anleitungen, um diesen Zugriff bereitzustellen:
Für AWS können Sie CloudSploit direkt ausführen, und es erkennt die Anmeldeinformationen mithilfe der standardmäßigen AWS-Anmeldeinformationskette.
Die CloudSploit-Konfigurationsdatei ermöglicht Ihnen die Übergabe von Cloud-Provider-Anmeldeinformationen durch:
Kopieren Sie zunächst die Beispielkonfigurationsdatei:
$ cp config_example.js config.js
Bearbeiten Sie die Konfigurationsdatei, indem Sie die relevanten Abschnitte für den von Ihnen getesteten Cloud-Provider auskommentieren. Jede Cloud hat sowohl eine credential_file-Option als auch Inline-Optionen. Zum Beispiel:
azure: {
// OPTION 1: Wenn Sie eine Anmelde-JSON-Datei verwenden, geben Sie den Pfad unten ein
// credential_file: '/path/to/file.json',
// OPTION 2: Wenn Sie hartcodierte Anmeldeinformationen verwenden, geben Sie diese unten ein
// 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 || ''
}
Wenn Sie die Option credential_file verwenden, verweisen Sie auf eine Datei in Ihrem Dateisystem, die dem korrekten Format für die von Ihnen verwendete Cloud entspricht.
{
"accessKeyId": "YOURACCESSKEY",
"secretAccessKey": "YOURSECRETKEY"
}
{
"ApplicationID": "YOURAZUREAPPLICATIONID",
"KeyValue": "YOURAZUREKEYVALUE",
"DirectoryID": "YOURAZUREDIRECTORYID",
"SubscriptionID": "YOURAZURESUBSCRIPTIONID"
}
Hinweis: Für GCP generieren Sie eine JSON-Datei direkt aus der GCP-Konsole, die Sie nicht bearbeiten sollten.
{
"type": "service_account",
"project": "GCPPROJECTNAME",
"client_email": "GCPCLIENTEMAIL",
"private_key": "GCPPRIVATEKEY"
}
{
"tenancyId": "YOURORACLETENANCYID",
"compartmentId": "YOURORACLECOMPARTMENTID",
"userId": "YOURORACLEUSERID",
"keyFingerprint": "YOURORACLEKEYFINGERPRINT",
"keyValue": "YOURORACLEKEYVALUE",
}
CloudSploit unterstützt die Übergabe von Umgebungsvariablen, aber Sie müssen zuerst den Abschnitt Ihrer config.js-Datei auskommentieren, der für den zu scannenden Cloud-Provider relevant ist.
Anschließend können Sie die in jedem Abschnitt aufgeführten Variablen übergeben. Zum Beispiel für 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 || '',
}
Führen Sie zum Ausführen eines Standards cans, der alle Ausgaben und Ergebnisse anzeigt, einfach Folgendes aus:
$ ./index.js
CloudSploit unterstützt viele Optionen zur Anpassung der Laufzeit. Einige beliebte Optionen sind:
--govcloud--china--collection=file.json--ignore-ok--exit-code
--console=textWeitere Ausgabeoptionen finden Sie unter Ausgabeformate unten.
$ ./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 unterstützt die Zuordnung seiner Plugins zu bestimmten Compliance-Richtlinien. Verwenden Sie das Flag --compliance, um den Compliance-Scan durchzuführen. Zum Beispiel:
$ ./index.js --compliance=hipaa
$ ./index.js --compliance=pci
Mehrere Compliance-Modi können gleichzeitig ausgeführt werden:
$ ./index.js --compliance=cis1 --compliance=cis2
CloudSploit unterstützt derzeit die folgenden Compliance-Zuordnungen:
$ ./index.js --compliance=hipaa
HIPAA-Scans ordnen CloudSploit-Plugins dem Health Insurance Portability and Accountability Act von 1996 zu.
$ ./index.js --compliance=pci
PCI-Scans ordnen CloudSploit-Plugins dem Payment Card Industry Data Security Standard zu.
$ ./index.js --compliance=cis
$ ./index.js --compliance=cis1
$ ./index.js --compliance=cis2
CIS-Benchmarks werden sowohl für Level 1 als auch für Level 2 unterstützt. Die Übergabe von --compliance=cis führt sowohl Level 1- als auch Level 2-Steuerelemente aus.
CloudSploit unterstützt die Ausgabe in verschiedenen Formaten zur Verwendung durch andere Tools. Wenn Sie nichts anderes angeben, schreibt CloudSploit die Ausgabe auf die Standardausgabe (Konsole) als Tabelle.
Hinweis: Sie können mehrere Ausgabeformate übergeben und Optionen zur weiteren Anpassung kombinieren. Zum Beispiel:
# Tabelle auf der Konsole ausgeben und CSV-Datei speichern
$ ./index.js --csv=file.csv --console=table
# Text auf der Konsole ausgeben und JSON- und JUnit-Datei speichern, dabei bestehende Ergebnisse ignorieren
$ ./index.js --json=file.json --junit=file.xml --console=text --ignore-ok
Standardmäßig werden CloudSploit-Ergebnisse auf der Konsole in einem Tabellenformat (mit Farben) ausgegeben. Sie können dies überschreiben und stattdessen Klartext verwenden, indem Sie Folgendes ausführen:
$ ./index.js --console=text
Alternativ können Sie die Konsolenausgabe vollständig unterdrücken, indem Sie Folgendes ausführen:
$ ./index.js --console=none
Sie können Ergebnisse aus der Ausgabe ignorieren, die den Status OK zurückgeben, indem Sie das Befehlszeilenargument --ignore-ok übergeben.
$ ./index.js --csv=file.csv
$ ./index.js --json=file.json
$ ./index.js --junit=file.xml
CloudSploit speichert die von den Cloud-Provider-APIs abgefragten Daten im JSON-Format, die zusammen mit anderen Dateien zu Debugging- oder historischen Zwecken gespeichert werden können.
$ ./index.js --collection=file.json
Ergebnisse können unterdrückt werden, indem das Flag --suppress (mehrere Optionen werden unterstützt) mit dem folgenden Format übergeben wird:
--suppress pluginId:region:resourceId
Zum Beispiel:
# Alle Ergebnisse für das Plugin acmValidation unterdrücken
$ ./index.js --suppress acmValidation:*:*
# Alle Ergebnisse der Region us-east-1 unterdrücken
$ ./index.js --suppress *:us-east-1:*
# Alle Ergebnisse unterdrücken, die dem regulären Ausdruck "certificate/*" in allen Regionen für alle Plugins entsprechen
$ ./index.js --suppress *:*:certificate/*
Das Flag --plugin kann verwendet werden, wenn Sie nur ein Plugin ausführen möchten.
$ ./index.js --plugin acmValidation
CloudSploit arbeitet in zwei Phasen. Zunächst fragt es die Cloud-Infrastruktur-APIs nach verschiedenen Metadaten zu Ihrem Konto ab, der sogenannten "Collection"-Phase. Sobald alle erforderlichen Daten gesammelt sind, wird das Ergebnis an die "Scanning"-Phase übergeben. Der Scan verwendet die gesammelten Daten, um nach potenziellen Fehlkonfigurationen, Risiken und anderen Sicherheitsproblemen zu suchen, die die resultierende Ausgabe darstellen.
Bitte beachten Sie unsere Richtlinien für Beiträge und die vollständige Anleitung zum Schreiben von CloudSploit-Plugins.
Das Flag --remediate kann verwendet werden, wenn Sie die Behebung für die als Teil dieses Arguments genannten Plugins ausführen möchten. Es akzeptiert eine Liste von Plugin-Namen.
Weitere Details finden Sie in unserem Leitfaden zur Entwicklung von Behebungen.
Weitere Details zum Aqua Wave SaaS-Produkt, AWS-Sicherheitsrichtlinien und mehr finden Sie hier.