
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
AquaによるCloudSploitは、Amazon Web Services (AWS)、Microsoft Azure、Google Cloud Platform (GCP)、Oracle Cloud Infrastructure (OCI)、GitHubを含むクラウドインフラストラクチャアカウントにおけるセキュリティリスクを検出するためのオープンソースプロジェクトです。これらのスクリプトは、潜在的な設定ミスやセキュリティリスクのシリーズを返すように設計されています。
CloudSploitは2つのデプロイメントオプションを提供します:
以下の手順に従って、オープンソース版のCloudSploitをお使いのマシンに数ステップでデプロイしてください。
Aqua WaveでホスティングされるCloudSploitの商用版です。今すぐ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
_____ _ _ _____ _ _ _
/ ____| | | |/ ____| | | (_) |
| | | | ___ _ _ __| | (___ _ __ | | ___ _| |_
| | | |/ _ \| | | |/ _` |\___ \| '_ \| |/ _ \| | __|
| |____| | (_) | |_| | (_| |____) | |_) | | (_) | | |_
\_____|_|\___/ \__,_|\__,_|_____/| .__/|_|\___/|_|\__|
| |
|_|
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は、プラグインを特定のコンプライアンスポリシーにマッピングすることをサポートしています。コンプライアンススキャンを実行するには、--complianceフラグを使用します。例:
$ ./index.js --compliance=hipaa
$ ./index.js --compliance=pci
複数のコンプライアンスモードを同時に実行することもできます:
$ ./index.js --compliance=cis1 --compliance=cis2
CloudSploitは現在、以下のコンプライアンスマッピングをサポートしています:
$ ./index.js --compliance=hipaa
HIPAAスキャンは、CloudSploitプラグインを1996年の医療保険の相互運用性と責任に関する法律(HIPAA)にマッピングします。
$ ./index.js --compliance=pci
PCIスキャンは、CloudSploitプラグインをペイメントカード業界データセキュリティ基準(PCI DSS)にマッピングします。
$ ./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
--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フラグを使用すると、1つのプラグインのみを実行できます。
$ ./index.js --plugin acmValidation
CloudSploitは2つのフェーズで動作します。最初に、クラウドインフラストラクチャAPIに対してアカウントに関するさまざまなメタデータを照会します(「コレクション」フェーズ)。必要なデータがすべて収集されると、結果は「スキャン」フェーズに渡されます。スキャンは収集されたデータを使用して、潜在的な設定ミス、リスク、その他のセキュリティ問題を検索し、それが最終的な出力となります。
CloudSploitプラグインの作成については、コントリビューションガイドラインおよび完全なガイドを参照してください。
--remediateフラグを使用すると、この引数の一部として指定されたプラグインの修復を実行できます。プラグイン名のリストを受け取ります。
詳細は修復開発ガイドを参照してください。
Aqua Wave SaaS製品、AWSセキュリティポリシーなどに関するその他の詳細については、こちらをクリックしてください。