
Escáner de postura de seguridad multinube que audita AWS, Azure, GCP y OCI en busca de configuraciones incorrectas, violaciones de cumplimiento (HIPAA, PCI, CIS) y riesgos de seguridad mediante comprobaciones automatizadas basadas en complementos.
$ 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 de Aqua es un proyecto de código abierto diseñado para permitir la detección de riesgos de seguridad en cuentas de infraestructura en la nube, incluyendo: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) y GitHub. Estos scripts están diseñados para devolver una serie de posibles configuraciones incorrectas y riesgos de seguridad.
CloudSploit está disponible en dos opciones de despliegue:
Siga las instrucciones a continuación para desplegar la versión de código abierto de CloudSploit en su máquina en solo unos simples pasos.
Una versión comercial de CloudSploit alojada en Aqua Wave. ¡Pruebe Aqua Wave hoy!
Asegúrese de que NodeJS esté instalado. Si no, instálelo desde aquí.
$ git clone [email protected]:cloudsploit/scans.git
$ npm install
CloudSploit requiere permisos de solo lectura para su cuenta en la nube. Siga las guías a continuación para aprovisionar este acceso:
Para AWS, puede ejecutar CloudSploit directamente y detectará las credenciales usando la cadena de credenciales predeterminada de AWS.
El archivo de configuración de CloudSploit le permite pasar credenciales del proveedor de la nube mediante:
Comience copiando el archivo de configuración de ejemplo:
$ cp config_example.js config.js
Edite el archivo de configuración descomentando las secciones relevantes para el proveedor de nube que está probando. Cada nube tiene tanto una opción credential_file como opciones en línea. Por ejemplo:
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 usa la opción credential_file, apunte a un archivo en su sistema de archivos que siga el formato correcto para la nube que está utilizando.
{
"accessKeyId": "YOURACCESSKEY",
"secretAccessKey": "YOURSECRETKEY"
}
{
"ApplicationID": "YOURAZUREAPPLICATIONID",
"KeyValue": "YOURAZUREKEYVALUE",
"DirectoryID": "YOURAZUREDIRECTORYID",
"SubscriptionID": "YOURAZURESUBSCRIPTIONID"
}
Nota: Para GCP, genere un archivo JSON directamente desde la consola de GCP, que no debe editar.
{
"type": "service_account",
"project": "GCPPROJECTNAME",
"client_email": "GCPCLIENTEMAIL",
"private_key": "GCPPRIVATEKEY"
}
{
"tenancyId": "YOURORACLETENANCYID",
"compartmentId": "YOURORACLECOMPARTMENTID",
"userId": "YOURORACLEUSERID",
"keyFingerprint": "YOURORACLEKEYFINGERPRINT",
"keyValue": "YOURORACLEKEYVALUE",
}
CloudSploit admite pasar variables de entorno, pero primero debe descomentar la sección de su archivo config.js relevante para el proveedor de nube que se está escaneando.
Luego puede pasar las variables listadas en cada sección. Por ejemplo, para 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 || '',
}
Para ejecutar un escaneo estándar, mostrando todas las salidas y resultados, simplemente ejecute:
$ ./index.js
CloudSploit admite muchas opciones para personalizar el tiempo de ejecución. Algunas opciones populares incluyen:
--govcloud--china--collection=file.json--ignore-ok--exit-code
--console=textConsulte Formatos de Salida a continuación para más opciones de salida.
$ ./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 admite el mapeo de sus plugins a políticas de cumplimiento particulares. Para ejecutar el escaneo de cumplimiento, use la bandera --compliance. Por ejemplo:
$ ./index.js --compliance=hipaa
$ ./index.js --compliance=pci
Se pueden ejecutar múltiples modos de cumplimiento al mismo tiempo:
$ ./index.js --compliance=cis1 --compliance=cis2
CloudSploit actualmente admite los siguientes mapeos de cumplimiento:
$ ./index.js --compliance=hipaa
Los escaneos HIPAA mapean los plugins de CloudSploit a la Ley de Portabilidad y Responsabilidad de Seguros de Salud de 1996.
$ ./index.js --compliance=pci
Los escaneos PCI mapean los plugins de CloudSploit al Estándar de Seguridad de Datos para la Industria de Tarjetas de Pago.
$ ./index.js --compliance=cis
$ ./index.js --compliance=cis1
$ ./index.js --compliance=cis2
Se admiten los Puntos de Referencia CIS, tanto para controles de Nivel 1 como de Nivel 2. Pasar --compliance=cis ejecutará tanto los controles de nivel 1 como de nivel 2.
CloudSploit admite salida en varios formatos para el consumo por otras herramientas. Si no especifica lo contrario, CloudSploit escribe la salida a la salida estándar (la consola) como una tabla.
Nota: Puede pasar múltiples formatos de salida y combinar opciones para una mayor personalización. Por ejemplo:
# 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
Por defecto, los resultados de CloudSploit se imprimen en la consola en un formato de tabla (con colores). Puede anular esto y usar texto sin formato en su lugar, ejecutando:
$ ./index.js --console=text
Alternativamente, puede suprimir la salida de la consola por completo ejecutando:
$ ./index.js --console=none
Puede ignorar los resultados de la salida que devuelven un estado OK pasando el argumento de línea de comandos --ignore-ok.
$ ./index.js --csv=file.csv
$ ./index.js --json=file.json
$ ./index.js --junit=file.xml
CloudSploit guarda los datos consultados de las APIs del proveedor de nube en formato JSON, que se pueden guardar junto con otros archivos para fines de depuración o históricos.
$ ./index.js --collection=file.json
Los resultados se pueden suprimir pasando la bandera --suppress (se admiten múltiples opciones) con el siguiente formato:
--suppress pluginId:region:resourceId
Por ejemplo:
# 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/*
La bandera --plugin se puede usar si solo desea ejecutar un plugin.
$ ./index.js --plugin acmValidation
CloudSploit funciona en dos fases. Primero, consulta las APIs de infraestructura de la nube para obtener diversos metadatos sobre su cuenta, es decir, la fase de 'colección'. Una vez que se recopilan todos los datos necesarios, el resultado se pasa a la fase de 'escaneo'. El escaneo utiliza los datos recopilados para buscar posibles configuraciones incorrectas, riesgos y otros problemas de seguridad, que son la salida resultante.
Consulte nuestras directrices de contribución y la guía completa para escribir plugins de CloudSploit.
La bandera --remediate se puede usar si desea ejecutar la remediación para los plugins mencionados como parte de este argumento. Toma una lista de nombres de plugins. Consulte nuestra guía de desarrollo de remediación para más detalles.
Para otros detalles sobre el producto SaaS Aqua Wave, políticas de seguridad de AWS y más, haga clic aquí.