CSPM云安全配置管理CSPM(云安全动态管理)
CSPM能够对基础设施安全配置进行分析与管理。这些安全配置包括账号特权、网络和存储配置、以及安全配置(如加密设置)。如果发现配置不合规,CSPM会采取行动进行修正。如图6所示,应该将CSPM视为一个持续改进和适应云安全态势的过程,其目标是降低攻击成功的可能性,以及在攻击者获得访问权限的情况下降低发生的损害。
由于云基础架构始终处于变化之中,因此,CSPM策略应该是在云应用的整个生命周期中进行持续评估和改进的一个策略,从研发开始一直延伸到运维(图6中从左到右),并在需要时做出响应和改进。同样,由于不断提出新的云功能,不断颁发新法规,云使用安全的策略也在不断变化。图6的顶部显示,CSPM策略应不断发展并适应新的情况、不断发展的行业标准和外部威胁情报,并根据在开发和运维中观察到的风险进行改进。
CloudSploit by Aqua-云安全扫描
Quick Start
$gitclonegit@github.com:cloudsploit/scans.git$cdscans$ npm install$ ./index.js -h
Documentation
部署选项Self-Hosted托管在Aqua Wave
配置Amazon Web Services Microsoft AzureGoogle Cloud PlatformOracle云基础设施CloudSploit配置文件凭据文件AWS Azure GCP Oracle OCI环境变量
输出格式控制台输出忽略传递结果CSV JSON JUnit XML集合输出
运行单个插件
编写插件
Background
CloudSploit by Aqua是一个open-source项目,旨在检测云基础设施帐户中的安全风险,包括:Amazon Web Services(AWS)、Microsoft Azure、Google Cloud Platform(GCP)、Oracle云基础设施(OCI)和GitHub。这些脚本旨在返回一系列潜在的错误配置和安全风险。
Deployment Options
CloudSploit有两种部署选项:
Self-Hosted
按照下面的说明,只需几个简单的步骤就可以在您的机器上部署open-source版本的CloudSploit。
在Aqua Wave举办
在Aqua Wave上托管的CloudSploit的商业版本。今天试试水波吧!
Installation
确保已安装NodeJS。如果没有,从这里安装。
$ git clone git@github.com:cloudsploit/scans.git$ npm install
Configuration
CloudSploit需要read-only权限才能访问您的云帐户。按照以下指南设置此访问权限:
对于AWS,您可以直接运行CloudSploit,它将使用默认的AWS凭证链检测凭证。
CloudSploit Config File
CloudSploit配置文件允许您通过以下方式传递云提供商凭据:
文件系统上的JSON文件
Environment variables
Hard-coding(不推荐)
首先复制示例配置文件:
$ cp config_example.jsconfig.js
通过取消注释正在测试的云提供程序的相关部分来编辑配置文件。每个云既有credential_file选项,也有内联选项。例如:
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 || ''}
Credential Files
如果使用credential_file选项,请指向文件系统中符合所使用云的正确格式的文件。
AWS
{"accessKeyId":"YOURACCESSKEY","secretAccessKey":"YOURSECRETKEY"}
Azure
{"ApplicationID":"YOURAZUREAPPLICATIONID","KeyValue":"YOURAZUREKEYVALUE","DirectoryID":"YOURAZUREDIRECTORYID","SubscriptionID":"YOURAZURESUBSCRIPTIONID"}
GCP
注意:对于GCP,您可以直接从GCP控制台生成一个JSON文件,您不应该编辑它。
{"type":"service_account","project":"GCPPROJECTNAME","client_email":"GCPCLIENTEMAIL","private_key":"GCPPRIVATEKEY"}
Oracle OCI
{"tenancyId":"YOURORACLETENANCYID","compartmentId":"YOURORACLECOMPARTMENTID","userId":"YOURORACLEUSERID","keyFingerprint":"YOURORACLEKEYFINGERPRINT","keyValue":"YOURORACLEKEYVALUE",}
Environment Variables
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 ||'',}
Running
要运行标准扫描,显示所有输出和结果,只需运行:
$ ./index.js
CLI Options
CloudSploit支持许多选项来定制运行时。一些流行的选项包括:
AWS GovCloud支持:--govcloud
AWS中国支持:--china
保存原始云提供程序响应数据:--collection=file.json
忽略传递(确定)结果:--ignore-ok
如果找到non-passing结果,则使用non-zero代码退出:--exit-code这对于CI/CD系统是一个不错的选择
将输出从表更改为原始文本:--console=text
有关更多输出选项,请参见下面的输出格式。
Click for a full list of options
Compliance
CloudSploit支持将其插件映射到特定的法规遵从性策略。要运行符合性扫描,请使用--compliance标志。例如:
$ ./index.js--compliance=hipaa$ ./index.js--compliance=pci
可以同时运行多种合规模式:
$ ./index.js--compliance=cis1 --compliance=cis2
CloudSploit目前支持以下合规映射:
HIPAA
$ ./index.js--compliance=hipaa
HIPAA扫描将CloudSploit插件映射到1996年的健康保险可移植性和责任法案。
PCI
$ ./index.js--compliance=pci
PCI扫描将CloudSploit插件映射到支付卡行业数据安全标准。
CIS Benchmarks
$ ./index.js--compliance=cis$ ./index.js--compliance=cis1$ ./index.js--compliance=cis2
一级和二级控制都支持CIS基准测试。传递--compliance=cis将同时运行级别1和级别2控件。
Output Formats
CloudSploit支持多种格式的输出,供其他工具使用。如果不另外指定,CloudSploit将输出作为表写入标准输出(控制台)。
注意:您可以传递多种输出格式并组合选项以进行进一步的自定义。例如:
# 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
Console Output
默认情况下,CloudSploit结果以表格格式(带颜色)打印到控制台。您可以通过运行以下命令覆盖此选项并改用纯文本:
$ ./index.js --console=text
或者,您可以通过运行以下命令来完全抑制控制台输出:
$ ./index.js --console=none
Ignoring Passing Results
通过传递--ignore-ok命令行参数,可以忽略返回OK状态的输出结果。
CSV
$ ./index.js--csv=file.csv
JSON
$ ./index.js--json=file.json
JUnit XML
$ ./index.js--junit=file.xml
Collection Output
CloudSploit以JSON格式保存从云提供者api查询的数据,这些数据可以与其他文件一起保存,以用于调试或历史目的。
$ ./index.js--collection=file.json
Suppressions
可以通过以下格式传递--suppress标志(支持多个选项)来抑制结果:
--suppresspluginId:region:resourceId
For example:
# Suppress all results for the acmValidation plugin$ ./index.js --suppressacmValidation:*:*# 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/*
运行单个插件
如果只想运行一个插件,可以使用--plugin标志。
$ ./index.js--plugin acmValidation
Architecture
CloudSploit分两个阶段工作。首先,它查询云基础设施api以获取关于您帐户的各种元数据,即“收集”阶段。一旦收集到所有必要的数据,结果将被传递到“扫描”阶段。扫描使用收集的数据来搜索潜在的错误配置、风险和其他安全问题,这些都是最终的输出。
编写插件
请参阅我们的贡献指南和编写CloudSploit插件的完整指南。
Other Notes
有关Aqua Wave SaaS产品、AWS安全策略等的其他详细信息,请单击此处。