
Многооблачный сканер безопасности, который проверяет AWS, Azure, GCP и OCI на предмет неправильных конфигураций, нарушений соответствия (HIPAA, PCI, CIS) и угроз безопасности с помощью автоматизированных проверок на основе плагинов.
$ 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 от Aqua — это проект с открытым исходным кодом, предназначенный для обнаружения рисков безопасности в облачных инфраструктурных учетных записях, включая: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) и GitHub. Эти скрипты предназначены для возврата серии потенциальных неправильных конфигураций и рисков безопасности.
CloudSploit доступен в двух вариантах развертывания:
Следуйте инструкциям ниже, чтобы развернуть версию CloudSploit с открытым исходным кодом на вашей машине всего за несколько простых шагов.
Коммерческая версия CloudSploit, размещенная в Aqua Wave. Попробуйте Aqua Wave уже сегодня!
Убедитесь, что NodeJS установлен. Если нет, установите его отсюда.
$ git clone [email protected]:cloudsploit/scans.git
$ npm install
CloudSploit требует доступ только для чтения к вашей облачной учетной записи. Следуйте инструкциям ниже, чтобы предоставить этот доступ:
Для AWS вы можете запустить CloudSploit напрямую, и он обнаружит учетные данные, используя стандартную цепочку поставщиков учетных данных AWS.
Файл конфигурации CloudSploit позволяет передавать учетные данные облачного провайдера:
Начните с копирования примера файла конфигурации:
$ cp config_example.js config.js
Отредактируйте файл конфигурации, раскомментировав соответствующие разделы для тестируемого облачного провайдера. Для каждого облака доступен как параметр credential_file, так и встроенные параметры. Например:
azure: {
// ВАРИАНТ 1: Если используется файл JSON с учетными данными, укажите путь ниже
// credential_file: '/path/to/file.json',
// ВАРИАНТ 2: Если используются жестко закодированные учетные данные, укажите их ниже
// 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 || ''
}
Если вы используете параметр credential_file, укажите файл в вашей файловой системе, который соответствует правильному формату для используемого облака.
{
"accessKeyId": "YOURACCESSKEY",
"secretAccessKey": "YOURSECRETKEY"
}
{
"ApplicationID": "YOURAZUREAPPLICATIONID",
"KeyValue": "YOURAZUREKEYVALUE",
"DirectoryID": "YOURAZUREDIRECTORYID",
"SubscriptionID": "YOURAZURESUBSCRIPTIONID"
}
Примечание: Для GCP вы создаете файл JSON напрямую из консоли GCP, который не следует редактировать.
{
"type": "service_account",
"project": "GCPPROJECTNAME",
"client_email": "GCPCLIENTEMAIL",
"private_key": "GCPPRIVATEKEY"
}
{
"tenancyId": "YOURORACLETENANCYID",
"compartmentId": "YOURORACLECOMPARTMENTID",
"userId": "YOURORACLEUSERID",
"keyFingerprint": "YOURORACLEKEYFINGERPRINT",
"keyValue": "YOURORACLEKEYVALUE",
}
CloudSploit поддерживает передачу переменных окружения, но сначала необходимо раскомментировать раздел вашего файла config.js, относящийся к сканируемому облачному провайдеру.
После этого вы можете передавать переменные, перечисленные в каждом разделе. Например, для 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 || '',
}
Для запуска стандартного сканирования, показывающего все выходные данные и результаты, просто выполните:
$ ./index.js
CloudSploit поддерживает множество параметров для настройки времени выполнения. Некоторые популярные параметры включают:
--govcloud--china--collection=file.json--ignore-ok--exit-code
--console=textСм. Форматы вывода ниже для получения дополнительных опций вывода.
$ ./index.js -h
_____ _ _ _____ _ _ _
/ ____| | | |/ ____| | | (_) |
| | | | ___ _ _ __| | (___ _ __ | | ___ _| |_
| | | |/ _ \| | | |/ _` |\___ \| '_ \| |/ _ \| | __|
| |____| | (_) | |_| | (_| |____) | |_) | | (_) | | |_
\_____|_|\___/ \__,_|\__,_|_____/| .__/|_|\___/|_|\__|
| |
|_|
CloudSploit от Aqua Security, Ltd.
Аудит безопасности облака для AWS, Azure, GCP, Oracle и 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 поддерживает сопоставление своих плагинов с определенными политиками соответствия. Для запуска сканирования на соответствие используйте флаг --compliance. Например:
$ ./index.js --compliance=hipaa
$ ./index.js --compliance=pci
Можно запускать несколько режимов соответствия одновременно:
$ ./index.js --compliance=cis1 --compliance=cis2
В настоящее время CloudSploit поддерживает следующие сопоставления соответствия:
$ ./index.js --compliance=hipaa
Сканирование HIPAA сопоставляет плагины CloudSploit с Законом о переносимости и подотчетности медицинского страхования 1996 года (Health Insurance Portability and Accountability Act).
$ ./index.js --compliance=pci
Сканирование PCI сопоставляет плагины CloudSploit со Стандартом безопасности данных индустрии платежных карт (Payment Card Industry Data Security Standard).
$ ./index.js --compliance=cis
$ ./index.js --compliance=cis1
$ ./index.js --compliance=cis2
Поддерживаются рекомендации CIS Benchmarks как для уровня 1, так и для уровня 2. Передача --compliance=cis запускает контроль как уровня 1, так и уровня 2.
CloudSploit поддерживает вывод в нескольких форматах для использования другими инструментами. Если не указано иное, CloudSploit выводит данные на стандартный вывод (консоль) в виде таблицы.
Примечание: Вы можете передавать несколько форматов вывода и комбинировать параметры для дальнейшей настройки. Например:
# Вывести таблицу в консоль и сохранить CSV-файл
$ ./index.js --csv=file.csv --console=table
# Вывести текст в консоль и сохранить JSON и JUnit файлы, игнорируя успешные результаты
$ ./index.js --json=file.json --junit=file.xml --console=text --ignore-ok
По умолчанию результаты CloudSploit выводятся в консоль в формате таблицы (с цветами). Вы можете переопределить это и использовать обычный текст, выполнив:
$ ./index.js --console=text
Кроме того, можно полностью отключить вывод в консоль, выполнив:
$ ./index.js --console=none
Вы можете игнорировать результаты, возвращающие статус OK, передав аргумент командной строки --ignore-ok.
$ ./index.js --csv=file.csv
$ ./index.js --json=file.json
$ ./index.js --junit=file.xml
CloudSploit сохраняет данные, полученные от API облачных провайдеров, в формате JSON, которые могут быть сохранены вместе с другими файлами для отладки или исторических целей.
$ ./index.js --collection=file.json
Результаты могут быть подавлены с помощью флага --suppress (поддерживается несколько параметров) в следующем формате:
--suppress pluginId:region:resourceId
Например:
# Подавить все результаты для плагина acmValidation
$ ./index.js --suppress acmValidation:*:*
# Подавить все результаты для региона us-east-1
$ ./index.js --suppress *:us-east-1:*
# Подавить все результаты, соответствующие регулярному выражению "certificate/*" во всех регионах для всех плагинов
$ ./index.js --suppress *:*:certificate/*
Флаг --plugin можно использовать, если вы хотите запустить только один плагин.
$ ./index.js --plugin acmValidation
CloudSploit работает в два этапа. Сначала он запрашивает API облачной инфраструктуры для получения различных метаданных о вашей учетной записи, а именно этап «сбора» (collection). После сбора всех необходимых данных результат передается на этап «сканирования» (scanning). Сканирование использует собранные данные для поиска потенциальных неправильных конфигураций, рисков и других проблем безопасности, которые и являются выходными данными.
Пожалуйста, ознакомьтесь с нашими рекомендациями по внесению вклада и полным руководством по написанию плагинов CloudSploit.
Флаг --remediate можно использовать, если вы хотите запустить исправление для плагинов, указанных в этом аргументе. Он принимает список имен плагинов.
Пожалуйста, ознакомьтесь с нашим руководством по разработке исправлений для получения более подробной информации.
Другие сведения о продукте Aqua Wave SaaS, политиках безопасности AWS и многом другом смотрите здесь.