$ 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
Aqua 旗下的 CloudSploit 是一个开源项目,旨在检测云基础设施账户中的安全风险,包括: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,您可以直接从 GCP 控制台生成 JSON 文件,不应编辑该文件。
{
"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
_____ _ _ _____ _ _ _
/ ____| | | |/ ____| | | (_) |
| | | | ___ _ _ __| | (___ _ __ | | ___ _| |_
| | | |/ _ \| | | |/ _` |\___ \| '_ \| |/ _ \| | __|
| |____| | (_) | |_| | (_| |____) | |_) | | (_) | | |_
\_____|_|\___/ \__,_|\__,_|_____/| .__/|_|\___/|_|\__|
| |
|_|
Aqua Security, Ltd. 旗下 CloudSploit
用于 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 显示此帮助信息并退出
--config CONFIG
云提供商凭证文件的路径。
--compliance {hipaa,cis,cis1,cis2,pci}
合规模式。仅返回适用于所选程序的结果。
--plugin PLUGIN 要运行的特定插件。如果未提供,将运行所有插件。从 exports.js 文件中获取。例如:acmValidation
--govcloud AWS 专用。启用 GovCloud 模式。
--china AWS 专用。启用 AWS 中国模式。
--csv CSV 输出:CSV 文件
--json JSON 输出:JSON 文件
--junit JUNIT 输出:JUnit 文件
--table 输出:表格
--console {none,text,table}
控制台输出格式。默认:table
--collection COLLECTION
输出:完整集合 JSON 文件
--ignore-ok 忽略通过 (OK) 的结果
--exit-code 如果发现未通过的结果,则以非零状态码退出
--skip-paginate AWS 专用。跳过分页(用于调试)。
--suppress SUPPRESS 抑制与提供的正则表达式匹配的结果。格式: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 年《健康保险可携带性和责任法案》。
$ ./index.js --compliance=pci
PCI 扫描将 CloudSploit 插件映射到《支付卡行业数据安全标准》。
$ ./index.js --compliance=cis
$ ./index.js --compliance=cis1
$ ./index.js --compliance=cis2
CIS 基准支持第 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
您可以通过传递 --ignore-ok 命令行参数,忽略返回 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,获取有关您账户的各种元数据,即“收集”阶段。一旦收集完所有必要数据,结果将传递到“扫描”阶段。扫描使用收集到的数据来搜索潜在的配置错误、风险和其他安全问题,这些就是最终输出结果。
请参阅我们的贡献指南和完整指南以编写 CloudSploit 插件。
如果您想为此参数中提到的插件运行修复,可以使用 --remediate 标志。它接受一个插件名称列表。
请参阅我们的开发修复指南以获取更多详细信息。
有关 Aqua Wave SaaS 产品、AWS 安全策略等的其他详细信息,请点击此处。