Security Hub 合规性分析器 (SHCA) 生成支持国防部风险管理框架 (RMF) 信息系统认证的工件。利用 Amazon Web Services 提供的文档,将 NIST800-53-Rev-5 控制映射到 AWS Security Hub 安全控制 ID,SHCA 向 Security Hub 请求当前环境合规性,并生成存储在 Amazon S3 中的 zip 文件,其中包含 CSV、JSON、 OCSF 为 SecOps 提供可导入 RMF 工具的工件。
安全中心与 NIST 特别出版物 800-53 修订版 5 安全标准并运行至少 24 小时以产生结果
** 有关启用此标准的更多信息,请访问启用和禁用安全标准)
Security Hub 中的所有结果都会提取并保存在 JSON 中。
JSON 中每个控件/资源 ID 的最新发现被写入 CSV 文件,以实现更好的分析和可读性
按照以下方法从 CSV 文件创建所有控制的摘要
此步骤根据每个 NIST SP 800-53 控件的状态创建一个文件,并将它们存储在两个文件夹中:
此外,此步骤从 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 Toolkit 如何执行应用程序。
该项目的设置类似于标准 Python 项目。初始化过程还会在此项目中创建一个 virtualenv,存储在.venv
目录下。要创建 virtualenv,它假设您的路径中有一个可以访问venv
包的python3
(或 Windows 的python
)可执行文件。如果由于任何原因自动创建 virtualenv 失败,您可以手动创建 virtualenv。
要在 MacOS 和 Linux 上手动创建 virtualenv:
$ python3 -m venv .venv
初始化过程完成并创建 virtualenv 后,您可以使用以下步骤激活 virtualenv。
$ source .venv/bin/activate
如果您使用的是 Windows 平台,您可以像这样激活 virtualenv:
% .venvScriptsactivate.bat
激活 virtualenv 后,您可以安装所需的依赖项。
$ pip install -r requirements-deploy.txt
下载适用于 Pandas 的 AWS 开发工具包 (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)的选项
如果您无法访问能够安装上述先决条件的笔记本电脑或开发环境,则可以使用 CloudShell 服务来部署 SHCA。此外,通过使用 AWS IAM Identity Center 中的临时凭证,我们可以在账户中使用单个 CloudShell 进行 CloudFormation API 调用并将代码部署到您有权访问的任何账户中。
CloudShell 经 DISA 批准可在 IL2-IL5 环境中使用,包括商业和 GovCloud 区域。请咨询您组织的合规人员,以确保 CloudShell 获准在您组织的 AWS 部署中使用。
从该存储库的主分支下载 shca-main.zip 等源代码。
导航到您将用作部署环境的 AWS 账户中的 CloudShell 服务。在执行部署之前,请确保 CloudShell 中有足够的空间。如果空间不足,它将失败。
将源代码上传到 CloudShell。解压文件并 cd 到shca-main
目录中:
unzip shca-main.zip && cd shca-main
从 AWS IAM Identity Center 粘贴您想要部署 SHCA 的账户的临时凭证。 AWS CDK 将使用这些临时凭证(现在设置为环境变量)将代码部署到正确的目标账户中,即使您从另一个账户使用 CloudShell 也是如此。
运行aws sts get-caller-identity
并验证委托人和帐号是否符合您的预期值。
授予执行权限并运行./cloud_shell_deployment.sh
chmod +x cloud_shell_deployment.sh && ./cloud_shell_deployment.sh
当 CDK 在 shell 中两次提示您时,请输入y
。
$ cdk deploy
cdk ls
列出应用程序中的所有堆栈cdk synth
发出合成的 CloudFormation 模板cdk deploy
将此堆栈部署到您的默认AWS帐户/区域cdk diff
将部署的堆栈与当前状态进行比较cdk docs
打开 CDK 文档部署 SHCA 后:
导航到 Step Functions/状态机服务:
选择YOUR-ENVIRONMENT-NAME-State-Machine
如果您刚刚第一次部署 SHCA,请通过查看执行情况来验证状态机是否已成功运行。如果状态机成功运行,请跳到步骤 6 。否则,要按需运行 SHCA,请选择“开始执行”:
在弹出的窗口中再次选择“开始执行”。保留所有默认值。
滚动到页面底部并等待所有步骤成功完成。完成后,您将在底部看到“ExecutionSucceeded”。
导航到 Amazon S3 控制台,查找并选择名为“-resources-%YOUR_ACCOUNT_NUMBER%”的存储桶
在此存储桶中导航至 customer/compliance_scraper/
下载最新的工件 zip 文件。
查看 zip 中包含的文件
请参阅贡献以获取更多信息。
该项目根据 Apache-2.0 许可证获得许可。