Security Hub Compliance Analyzer (SHCA) は、国防総省リスク管理フレームワーク (RMF) 情報システム認定をサポートするアーティファクトを生成します。アマゾン ウェブ サービスが提供するドキュメントを利用して、NIST800-53-Rev-5 コントロールを AWS Security Hub セキュリティ コントロール ID にマッピングすると、SHCA は Security Hub から現在の環境コンプライアンスをリクエストし、CSV、JSON、 OCSF は、RMF ツールにインポートするアーティファクトを SecOps に提供します。
NIST Special Publication 800-53 Revision 5 Security Standard を備えたセキュリティ ハブであり、結果が得られるまで少なくとも 24 時間実行される
** この標準の有効化の詳細については、「セキュリティ標準の有効化と無効化」を参照してください)
Security Hub 内のすべての検出結果は抽出され、JSON で保存されます。
JSON 内の各コントロール/リソース ID から得られた最新の結果は、分析と読みやすさを向上させるために CSV ファイルに書き込まれます。
すべてのコントロールの概要は、次の方法に従って CSV ファイルから作成されます。
この手順では、各 NIST SP 800-53 コントロールのステータスに基づいてファイルを作成し、それらを 2 つのフォルダーに保存します。
さらに、このステップでは、S3 バケットからさまざまなファイルを取得して含めます。フォルダーとその内容は次のとおりです。
これらのファイルは、Security Hub の NIST SP 800-53 自動セキュリティ チェックに基づいて、AWS リソースのセキュリティ状態に関する包括的なデータを提供します。
AWS CDK を使用するためにインストールする必要があるものは次のとおりです。
Linux での Python 3.7 以降、pip、virtualenv、および Node.js のインストールの検証
node --version
すべての AWS CDK 開発者は、Python、Java、または C# を使用している開発者も含めて、Node.js 14.15.0 以降が必要です。サポートされているすべての言語は、Node.js 上で実行される同じバックエンドを使用します。長期サポートが有効なバージョンをお勧めします。組織によっては異なる推奨事項がある場合があります。
その他の前提条件は、AWS CDK アプリケーションを開発する言語によって異なり、次のとおりです。
python3 --version
pip3 --version
virtualenv --version
wget --version
jq --version
npm install -g aws-cdk
次のコマンドを実行して、インストールが正しいことを確認し、AWS CDK のバージョン番号を出力します。
cdk --version
cdk.json
ファイルは、CDK ツールキットにアプリの実行方法を指示します。
このプロジェクトは、標準の Python プロジェクトと同様にセットアップされます。初期化プロセスでは、このプロジェクト内に virtualenv も作成され、 .venv
ディレクトリに保存されます。 virtualenv を作成するには、パスにvenv
パッケージにアクセスできるpython3
(または Windows の場合はpython
) 実行可能ファイルがあることが前提となります。何らかの理由で virtualenv の自動作成が失敗した場合は、virtualenv を手動で作成できます。
MacOS および Linux で virtualenv を手動で作成するには:
$ python3 -m venv .venv
init プロセスが完了し、virtualenv が作成されたら、次の手順を使用して virtualenv をアクティブ化できます。
$ source .venv/bin/activate
Windows プラットフォームを使用している場合は、次のように virtualenv をアクティブ化します。
% .venvScriptsactivate.bat
virtualenv がアクティブ化されたら、必要な依存関係をインストールできます。
$ pip install -r requirements-deploy.txt
AWS SDK for Pandas (AWS Wrangler) の AWS Lambda Layer をダウンロードし、次の場所に配置します。 詳細については、README.md を参照してください。
bash update_aws_wrangler.sh
AWS CDK を使用してスタックをデプロイするには、デプロイ中に AWS CloudFormation で使用できる専用の Amazon S3 バケットおよびその他のコンテナが必要です。これらを作成することをブートストラップと呼びます。ブートストラップするには、次のように発行します。
cdk bootstrap aws://ACCOUNT-NUMBER/REGION
この時点で、このコードの CloudFormation テンプレートを合成できるようになります。
$ cdk synth
cdk.json
の次の値を変更します - "environment": "shca"
- これに SHCA デプロイメントを説明する名前を付けます。これは任意の値にすることができ、機能には影響しません。 AWS アカウント内の SHCA リソースにラベルを付けるためです。 - "vpc_cidr": "10.30.0.0/24"
- Lambda 関数が実行されるように作成された小さな VPC の CIDR 範囲を設定します。[Lambda.3] Lambda 関数は VPC 検出内に存在する必要があります。環境内でまだ使用されていない CIDR 範囲を選択します。 - "schedule_frequency_days": 7
- この設定は、SHCA がコンプライアンス レポートを生成する頻度を指定します。 - "send_failure_notification_email": true
またはfalse
- true
の場合、電子メールはfailure_notification_email
で指定されたアドレスに送信されます。 - "failure_notification_email": [email protected]
- この電子メール アドレスは、SHCA の実行に失敗したときに通知を受け取ります。
ここから、SHCA (CloudShell または CDK) をインストールする方法には 2 つのオプションがあります。
上記の前提条件をインストールできるラップトップまたは開発環境にアクセスできない場合は、CloudShell サービスを使用して SHCA を展開できます。さらに、AWS IAM Identity Center からの一時認証情報を使用することで、アカウント内の単一の CloudShell を使用して CloudFormation API 呼び出しを行い、アクセス権のある任意のアカウントにコードをデプロイできます。
CloudShell は、商用および GovCloud リージョンを含む IL2 ~ IL5 環境での使用が DISA によって承認されています。組織のコンプライアンス担当者に相談して、組織の AWS デプロイメントでの CloudShell の使用が承認されていることを確認してください。
このリポジトリのメイン ブランチから shca-main.zip などのソース コードをダウンロードします。
デプロイメント環境として使用する AWS アカウントの CloudShell サービスに移動します。デプロイを実行する前に、CloudShell に十分なスペースがあることを確認してください。スペースが不足すると失敗します。
ソースコードをCloudShellにアップロードします。ファイルを解凍し、 shca-main
ディレクトリに移動します。
unzip shca-main.zip && cd shca-main
SHCA をデプロイするアカウントの一時認証情報を AWS IAM Identity Center から貼り付けます。 AWS CDK は、別のアカウントから CloudShell を使用している場合でも、これらの一時的な認証情報 (現在は環境変数として設定されています) を使用して、対象の正しいアカウントにコードをデプロイします。
aws sts get-caller-identity
を実行し、プリンシパルとアカウント番号が期待値と一致することを確認します。
実行権限を付与し、 ./cloud_shell_deployment.sh
を実行します。
chmod +x cloud_shell_deployment.sh && ./cloud_shell_deployment.sh
CDK がシェルでプロンプトを表示する場合は両方ともy
を入力します。
$ cdk deploy
cdk ls
アプリ内のすべてのスタックをリストしますcdk synth
合成された CloudFormation テンプレートを出力しますcdk deploy
このスタックをデフォルトの AWS アカウント/リージョンにデプロイしますcdk diff
デプロイされたスタックと現在の状態を比較しますcdk docs
CDK ドキュメントを開くSHCA が展開されたら、次のようになります。
Step Functions/State Machines サービスに移動します。
YOUR-ENVIRONMENT-NAME-State-Machine
選択します
SHCA を初めてデプロイしたばかりの場合は、実行を表示してステート マシンが正常に実行されたことを確認します。ステート マシンが正常に実行された場合は、ステップ 6 に進みます。それ以外の場合、SHCA をオンデマンドで実行するには、「実行の開始」を選択します。
ポップアップウィンドウで再度「実行開始」を選択します。すべてデフォルト値のままにします。
ページの一番下までスクロールし、すべての手順が正常に完了するまで待ちます。完了すると、下部に「ExecutionSucceeded」と表示されます。
Amazon S3 コンソールに移動し、「-resources-%YOUR_ACCOUNT_NUMBER%」という名前のバケットを見つけて選択します
このバケットで、customer/compliance_scraper/ に移動します。
最新のアーティファクトの zip ファイルをダウンロードします。
zip 内に含まれるファイルを確認します
詳細については、「貢献」を参照してください。
このプロジェクトは、Apache-2.0 ライセンスに基づいてライセンスされています。