cloudsploit - CloudSploit by Aquaは、Amazon Web Services(AWS)、Microsoft Azure、Google Cloud Platform(GCP)、Oracle Cloud Infrastructure(OCI)、GitHubなどのクラウドインフラストラクチャアカウントのセキュリティリスクを検出できるように設計されたオープンソースプロジェクトです。これらのスクリプトは、一連の潜在的な設定ミスとセキュリティリスクを返すように設計されています。

(Cloud Security Posture Management (CSPM))

Created at: 2015-06-29 23:33:40
Language: JavaScript
License: GPL-3.0

ビルドステータス

アクアによるCloudSploit-クラウドセキュリティスキャン

クイックスタート

ジェネリック

$ git clone https://github.com/aquasecurity/cloudsploit.git
$ cd cloudsploit
$ npm install
$ ./index.js -h

Docker

$ 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 by Aquaは、Amazon Web Services(AWS)、Microsoft Azure、Google Cloud Platform(GCP)、Oracle Cloud Infrastructure(OCI)、GitHubなどのクラウドインフラストラクチャアカウントのセキュリティリスクを検出できるように設計されたオープンソースプロジェクトです。これらのスクリプトは、一連の潜在的な設定ミスとセキュリティリスクを返すように設計されています。

展開オプション

CloudSploitは、次の2つの展開オプションで利用できます。

セルフホスト

以下の手順に従って、いくつかの簡単な手順でCloudSploitのオープンソースバージョンをマシンにデプロイします。

AquaWaveでホスト

AquaWaveでホストされているCloudSploitの商用バージョン。今日アクアウェーブをお試しください!

インストール

NodeJSがインストールされていることを確認します。そうでない場合は、ここからインストールしてください。

$ git clone [email protected]:cloudsploit/scans.git
$ npm install

構成

CloudSploitには、クラウドアカウントへの読み取り専用権限が必要です。このアクセスをプロビジョニングするには、以下のガイドに従ってください。

AWSの場合、CloudSploitを直接実行でき、デフォルトのAWSクレデンシャルチェーンを使用してクレデンシャルを検出します。

CloudSploit構成ファイル

CloudSploit構成ファイルを使用すると、次の方法でクラウドプロバイダーのクレデンシャルを渡すことができます。

  1. ファイルシステム上のJSONファイル
  2. 環境変数
  3. ハードコーディング(非推奨)

サンプルの設定ファイルをコピーすることから始めます。

$ cp config_example.js config.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_file
ているクラウドに適した形式に従うファイルシステム内のファイルをポイントしてください。

AWS

{
  "accessKeyId": "YOURACCESSKEY",
  "secretAccessKey": "YOURSECRETKEY"
}

Azure

{
  "ApplicationID": "YOURAZUREAPPLICATIONID",
  "KeyValue": "YOURAZUREKEYVALUE",
  "DirectoryID": "YOURAZUREDIRECTORYID",
  "SubscriptionID": "YOURAZURESUBSCRIPTIONID"
}

GCP

注:GCPの場合、JSONファイルをGCPコンソールから直接生成します。これは編集しないでください。

{
    "type": "service_account",
    "project": "GCPPROJECTNAME",
    "client_email": "GCPCLIENTEMAIL",
    "private_key": "GCPPRIVATEKEY"
}

Oracle OCI

{
  "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

CLIオプション

CloudSploitは、実行時間をカスタマイズするための多くのオプションをサポートしています。人気のあるオプションは次のとおりです。

  • AWS GovCloudのサポート:
    --govcloud
  • AWS Chinaのサポート:
    --china
  • 生のクラウドプロバイダーの応答データを保存します。
    --collection=file.json
  • 合格(OK)の結果を無視します:
    --ignore-ok
  • 合格しない結果が見つかった場合は、ゼロ以外のコードで終了します。
    --exit-code
    • これはCI/CDシステムに適したオプションです
  • 出力をテーブルから生のテキストに変更します。
    --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は現在、次のコンプライアンスマッピングをサポートしています。

HIPAA

$ ./index.js --compliance=hipaa

HIPAAスキャンは、CloudSploitプラグインを1996年の医療保険の相互運用性と説明責任に関する法律にマッピングします。

PCI

$ ./index.js --compliance=pci

PCIスキャンは、CloudSploitプラグインをPayment Card Industry DataSecurityStandardにマップします。

CISベンチマーク

$ ./index.js --compliance=cis
$ ./index.js --compliance=cis1
$ ./index.js --compliance=cis2

CISベンチマークは、レベル1とレベル2の両方のコントロールでサポートされています。合格

--compliance=cis
すると、レベル1とレベル2の両方のコントロールが実行されます。

出力フォーマット

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

コンソール出力

デフォルトでは、CloudSploitの結果は表形式(色付き)でコンソールに出力されます。次のコマンドを実行することで、これをオーバーライドして、代わりにプレーンテキストを使用できます。

$ ./index.js --console=text

または、次のコマンドを実行して、コンソール出力を完全に抑制することもできます。

$ ./index.js --console=none

合格結果を無視する

--ignore-ok
コマンドライン引数を渡すことにより、OKステータスを返す出力からの結果を無視できます。

CSV

$ ./index.js --csv=file.csv

JSON

$ ./index.js --json=file.json

JUnit XML

$ ./index.js --junit=file.xml

コレクションの出力

CloudSploitは、クラウドプロバイダーAPIからクエリされたデータをJSON形式で保存します。このデータは、デバッグや履歴の目的で他のファイルと一緒に保存できます。

$ ./index.js --collection=file.json

抑制

--suppress
次の形式でフラグ(複数のオプションがサポートされています)を渡すことにより、結果を抑制することができます。

--suppress pluginId:region:resourceId

例えば:

# 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/*

単一のプラグインの実行

この

--plugin
フラグは、プラグインを1つだけ実行する場合に使用できます。

$ ./index.js --plugin acmValidation

建築

CloudSploitは2つのフェーズで機能します。まず、アカウントに関するさまざまなメタデータ、つまり「収集」フェーズについて、クラウドインフラストラクチャAPIにクエリを実行します。必要なデータがすべて収集されると、結果は「スキャン」フェーズに渡されます。スキャンでは、収集されたデータを使用して、潜在的な構成の誤り、リスク、およびその他のセキュリティ問題を検索します。これらは結果として出力されます。

プラグインを書く

CloudSploitプラグインを作成するための貢献ガイドライン完全なガイドをご覧ください。

修復を書く

この

--remediate
引数の一部として言及されているプラ​​グインの修復を実行する場合は、フラグを使用できます。これはプラグイン名のリストを取ります。詳細については、開発中の修復ガイドを参照してください。

その他の注意事項

Aqua Wave SaaS製品、AWSセキュリティポリシーなどの詳細については、ここをクリックしてください