AWS OpsWorks for Chef Automate 中的合规性扫描 - AWS OpsWorks

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS OpsWorks for Chef Automate 中的合规性扫描

重要

AWS OpsWorks 因为 Chef Automate 不再接受新客户。现有客户在 2024 年 5 月 5 日之前不会受到影响,届时该服务将不可用。我们建议现有客户迁移到 Chef SaaS 或其他替代解决方案。有关更多信息,请参阅Chef Automate 生命周期终止常见问题解答的 AWS OpsWorks

合规性扫描可让您根据预定义的策略(也称为规则)跟踪您的基础设施中托管节点的合规性。合规性视图使您可以定期审核您的应用程序是否存在漏洞和不合规的配置。Chef 提供了超过 100 个预定义的合规性配置文件 - 适用于特定节点配置的规则集 - 您可以在合规性扫描中使用它们。您也可以使用 Chef InSpec 语言创建自己的自定义配置文件。

如果您的服务器尚未运行 Chef Automate 2.0,您可以通过安装 Audit 说明书手动设置 Chef Compliance

注意

在与 AWS OpsWorks for Chef Automate 服务器关联的节点上,Chef Infra 客户端代理软件 (chef-client) 的最低支持版本为 13.x。建议您运行最新、最稳定的 chef-client 版本,或至少为 14.10.9。

Chef Automate 2.0 中的合规性

如果您的 AWS OpsWorks for Chef Automate 服务器正在运行 Chef Automate 2.0,请使用本节中的过程设置 Chef Compliance。

使用 Chef Automate 2.0 运行合规性扫描作业

Chef Automate 2.0 包含 Chef InSpec 法规遵从性扫描功能,此功能以前需要手动设置和说明书配置。您可以在运行 Chef Automate 2.0 的 AWS OpsWorks for Chef Automate 服务器上运行扫描作业。作业可以立即运行(一次),也可以安排在以后运行,或者安排以特定的时间间隔运行(如每天或每隔两小时)。扫描作业的结果发送到合规性报告。您可以在 Chef Automate 控制面板中查看合规性扫描结果并对其执行操作。要打开 Compliance (合规性) 选项卡并查看报告,请在 Chef Automate 控制面板中的 Scan Jobs (扫描作业) 选项卡上,选择位于托管节点行右侧的 Report (报告)

要在托管节点上运行扫描任务,您必须具有以下内容。

  • 至少有一个合规性配置文件安装在您的命名空间中。

  • 至少一个目标节点,手动添加或 EC2 实例自动添加

在 AWS OpsWorks for Chef Automate 中,在以下目标上支持扫描作业。

  • 手动添加的节点

  • aws-ec2 实例

  • 亚马逊云科技 区域

有关如何运行扫描作业的详细说明,请参阅 Chef 文档中的 Chef Automate 扫描作业

(可选,Chef Automate 2.0)使用 Audit 说明书设置合规性

您可以在任何 AWS OpsWorks for Chef Automate 服务器上配置合规性。启动 AWS OpsWorks for Chef Automate 服务器后,您可以从 Chef Automate 控制面板安装配置文件,或者在 Policyfile.rb 策略文件中向 Audit 说明书属性添加所需的配置文件。初学者工具包中包含一个预填充的 Policyfile.rb 文件。

在将配置文件作为 Audit 说明书的属性编辑 Policyfile.rb 之后,运行 chef push 命令以将 Audit 说明书以及在 Policyfile.rb 中指定的其他说明书上传到您的 Chef Automate 服务器。安装 Audit 说明书还会为 Chef InSpec 安装 Gem,这是 Chef 生成的一个开源测试和审计框架。对于 Chef Automate 2.0,选择 Audit 说明书的版本 7.1.0 或更高版本。InSpec Gem 必须为版本 2.2.102 或更高版本。

本部分的说明向您展示如何实施 opsworks-audit 说明书。Audit 说明书从 Chef Automate 服务器下载指定的配置文件,对照 DevSec SSH 基线配置文件评估节点,并报告每次 chef-client 运行的合规性扫描结果。

安装合规性配置文件
  1. 如果您尚未登录到 Chef Automate 基于 Web 的控制面板,请先登录。使用在创建 AWS OpsWorks for Chef Automate 服务器的过程中下载初学者工具包时收到的凭证。

  2. 在 Chef Automate 控制面板中,选择 Asset Store (资产存储) 选项卡。

    
                     合规性配置文件
  3. 选择 Available (可用) 选项卡以查看预定义的配置文件。

  4. 浏览配置文件列表。选择一个与至少一个受管节点的操作系统和配置相匹配的配置文件。要查看有关配置文件的详细信息,包括配置文件的目标违规和基本规则代码的说明,请选择配置文件条目右侧的 >。您可以选择多个配置文件。如果您要设置初学者工具包中的示例,请选择 DevSec SSH Baseline (DevSec SSH 基线)

    
                     Chef Compliance 配置文件详细信息视图
  5. 要在您的 Chef Automate 服务器上安装所选配置文件,请选择 Get

  6. 安装配置文件后,它们会显示在 Chef Automate 控制面板的 Profiles (配置文件) 选项卡中。

使用 Policyfile.rb 安装说明书
  1. 查看初学者工具包中的 Policyfile.rb,可以看到 Audit 说明书的属性在 ['profiles'] 中指定 ssh-baseline 配置文件。

    # Define audit cookbook attributes default["opsworks-demo"]["audit"]["reporter"] = "chef-server-automate" default["opsworks-demo"]["audit"]["profiles"] = [ { "name": "DevSec SSH Baseline", "compliance": "admin/ssh-baseline" } ]
  2. 下载并安装 Policyfile.rb 中定义的说明书。

    chef install

    所有说明书的版本均记录在说明书的 metadata.rb 文件中。每次更改说明书后,必须在 metadata.rb 中提高该说明书的版本。

  3. 将策略 opsworks-demo(在 Policyfile.rb 中定义)推送到服务器。

    chef push opsworks-demo
  4. 验证策略的安装。运行以下命令。

    chef show-policy

    结果应与以下内容类似:

    opsworks-demo-webserver ======================= * opsworks-demo: ec0fe46314
  5. 如果您还没有将节点添加到服务器进行管理,请添加。要将您的第一个节点连接到 AWS OpsWorks for Chef Automate 服务器,请使用此初学者工具包中包含的 userdata.sh 脚本。它使用 AWS OpsWorks AssociateNode API 将节点连接到您的服务器。

    您可以按照 在 AWS OpsWorks for Chef Automate 自动添加节点 中的步骤自动关联节点,或按照 单独添加节点 中的步骤,每次添加一个节点。

  6. 您为节点更新运行列表后,chef-client 代理会在下次运行时运行您指定的配方。默认情况下每 1800 秒 (30 分钟) 发生一次。运行后,您可以从 Chef Automate 控制面板的 Compliance 选项卡中查看合规性结果并对其执行操作。

    
                     Chef Compliance 扫描结果

运行合规性扫描

在配置节点运行列表并首次运行代理之后,应该很快会在 Chef Automate 控制面板中看到合规性扫描结果。


               Chef Compliance 报告页面视图

在 Chef Automate 控制面板中,选择 Compliance 选项卡。在左侧导航窗格中,选择 Reporting。选择 Profiles 选项卡,选择 Scan Results,然后选择扫描失败的节点,以详细了解导致节点失败的规则。


               Compliance 不合规结果列表

通常情况下,您会看到不合规扫描结果,因为新节点尚不满足 DevSec SSH 基线配置文件中的所有规则。DevSec Hardening Framework 是一个基于社区的项目,提供说明书,用于解决违反 DevSec SSH 基线配置文件中规则的问题。

(可选)解决不合规结果

初学者工具包内含开源说明书 ssh-hardening,您可以运行它,针对 DevSec SSH 基线配置文件解决不合规的结果。

注意

ssh-hardening 说明书会对您的节点做出改动,以遵守 DevSec SSH 基线规则。在任何生产节点上运行此说明书之前,请在 Chef Automate 控制台中查看 DevSec SSH 基线配置文件的详情,理解说明书所针对的规则冲突。在任何生产节点上运行开源 ssh-hardening 说明书之前,请查看此说明书的信息。

运行 ssh-hardening 说明书
  1. 在文本编辑器中,将 ssh-hardening 说明书追加到 Policyfile.rb 的运行列表之后。Policyfile.rb 运行列表应与以下内容匹配。

    run_list 'chef-client', 'opsworks-webserver', 'audit', 'ssh-hardening'
  2. 更新 Policyfile.rb 并将其推送至您的 AWS OpsWorks for Chef Automate 服务器。

    chef update Policyfile.rb chef push opsworks-demo
  3. opsworks-demo 策略关联的节点将自动更新运行列表,并在下次运行 chef-client 时应用 ssh-hardening 说明书。

    由于您在使用 chef-client 说明书,将以固定间隔检查节点 (默认情况下为 30 分钟)。在下次签入时,ssh-hardening 说明书会运行,并有助于提高节点安全性,以满足 DevSec SSH 基线配置文件的规则。

  4. 在首次运行 ssh-hardening 说明书之后,请等待 30 分钟,以便合规性扫描再次运行。在 Chef Automate 控制面板中查看结果。最初运行 DevSec SSH 基线扫描时发生的不合规结果应该已解决。

Chef Automate 1.x 中的合规性

如果您的 AWS OpsWorks for Chef Automate 服务器正在运行 Chef Automate 1.x,请使用本节中的过程设置 Chef Compliance。

(可选,Chef Automate 1.x)设置 Chef Compliance

您可以在任何 AWS OpsWorks for Chef Automate 服务器上配置 Chef Compliance。启动 AWS OpsWorks for Chef Automate 服务器后,在 Chef Automate 控制面板的配置文件中选择要运行的配置文件。安装配置文件后,请运行 berks 命令以将 Audit 说明书上传到您的 Chef Automate 服务器。安装 Audit 说明书还会安装 InSpec 的 Gem,InSpec 是由 Chef 生成的开源测试框架,它允许您将自动化测试集成到部署管道的任何阶段。对于 Chef Automate 1.x,选择 Audit 说明书的版本 5.0.1 或更高版本。InSpec Gem 必须为版本 1.24.0 或更高版本。

AWS OpsWorks for Chef Automate 初学者工具包包含包装程序说明书 opsworks-audit,可为您下载并安装 Chef 的 Audit 说明书的正确版本。opsworks-audit 说明书还会指导 chef-client 代理根据 DevSec SSH 基线配置文件评估节点,您将在本主题稍后了解如何从 Chef 的合规控制台中安装该配置文件。您可以使用任一说明书设置合规性,以满足您的偏好。本部分的说明向您展示如何实施 opsworks-audit 说明书。

安装合规性配置文件
  1. 如果您尚未登录到 Chef Automate 基于 Web 的控制面板,请先登录。使用在创建 AWS OpsWorks for Chef Automate 服务器的过程中下载初学者工具包时收到的凭证。

  2. 在 Chef Automate 控制面板中,选择 Compliance 选项卡。

    
                     Chef Compliance 配置文件
  3. 在左侧导航栏中,选择 Profile Store,然后选择 Available 选项卡以查看预定义的配置文件。

  4. 浏览配置文件列表。选择一个与至少一个受管节点的操作系统和配置相匹配的配置文件。要查看有关配置文件的详细信息,包括配置文件的目标违规和基本规则代码的说明,请选择配置文件条目右侧的 >。您可以选择多个配置文件。

    
                     Chef Compliance 配置文件详细信息视图
  5. 要在您的 Chef Automate 服务器上安装所选配置文件,请选择 Get

  6. 下载完成后,请转到下一过程。

安装并设置 opsworks-audit 说明书
  1. 此步骤是可选的,但它可以节省步骤 6 中将配方添加到节点运行列表的时间。编辑 roles/opsworks-example-role.rb 文件,该文件包含在创建 AWS OpsWorks for Chef Automate 服务器时下载的初学者工具包中。添加以下行。最后一行有注释,因为添加 ssh-hardening 说明书和配方,在合规性扫描运行之后来解析不合规节点是可选的。

    run_list( "recipe[chef-client]", "recipe[apache2]", "recipe[opsworks-audit]" # "recipe[ssh-hardening]" )
  2. 使用文本编辑器在 Berksfile 中指定所需的说明书。初学者工具包中提供了示例 Berksfile。在此示例中,我们会安装 Chef Infra 客户端 (chef-client) 说明书、apache2 说明书和 opsworks-audit 说明书。您的 Berksfile 应类似于以下内容。

    source 'https://supermarket.chef.io cookbook 'chef-client' cookbook 'apache2', '~> 5.0.1' cookbook 'opsworks-audit', path: 'cookbooks/opsworks-audit', '~> 1.0.0'

    所有说明书的版本均记录在说明书的 metadata.rb 文件中。每次更改说明书后,必须在 metadata.rb 中提高该说明书的版本。

  3. 运行以下命令,在本地或工作计算机上的 cookbooks 文件夹中下载并安装说明书。

    berks vendor cookbooks
  4. 运行以下命令,将分发的说明书上传到您的 AWS OpsWorks for Chef Automate 服务器。

    knife upload .
  5. 运行以下命令,显示服务器上当前可用的说明书列表,验证是否安装了 opsworks-audit 说明书。

    knife cookbook list
  6. 如果您还没有将节点添加到服务器进行管理,请添加。您可以按照 在 AWS OpsWorks for Chef Automate 自动添加节点 中的步骤自动关联节点,或按照 单独添加节点 中的步骤,每次添加一个节点。编辑节点的运行列表,添加您在步骤 1 中指定的角色 opsworks-example-role。在本示例中,我们编辑 RUN_LIST 脚本中的 userdata 属性,用于自动关联节点。

    RUN_LIST="role[opsworks-example-role]"

    如果您跳过步骤 1,也没有设置角色,请将单个配方的名称添加到运行列表中。保存更改,然后按照 第 3 步:使用自动化关联脚本创建实例 中的步骤,将用户数据脚本应用于 Amazon EC2 实例。

    RUN_LIST="recipe[chef-client],recipe[apache2],recipe[opworks-audit]"
  7. 您为节点更新运行列表后,chef-client 代理会在下次运行时运行您指定的配方。默认情况下每 1800 秒 (30 分钟) 发生一次。运行后,合规性结果将显示在 Chef Automate 控制面板中。

运行合规性扫描

在配置节点运行列表并首次运行代理守护程序之后,应该很快会在 Chef Automate 控制面板中看到合规性扫描结果。


               Chef Compliance 报告页面视图

在 Chef Automate 控制面板中,选择 Compliance 选项卡。在左侧导航窗格中,选择 Reporting。选择 Profiles 选项卡,选择 Scan Results,然后选择扫描失败的节点,以详细了解导致节点失败的规则。


               Chef Compliance 不合规结果列表

通常情况下,您会看到不合规扫描结果,因为新节点尚不满足 DevSec SSH 基线配置文件中的所有规则。DevSec Hardening Framework 是一个基于社区的项目,提供说明书,用于解决违反 DevSec SSH 基线配置文件中规则的问题。

(可选)解决不合规结果

初学者工具包内含开源说明书 ssh-hardening,您可以运行它,针对 DevSec SSH 基线配置文件解决不合规的结果。

注意

ssh-hardening 说明书会对您的节点做出改动,以遵守 DevSec SSH 基线规则。在任何生产节点上运行此说明书之前,请在 Chef Automate 控制台中查看 DevSec SSH 基线配置文件的详情,理解说明书所针对的规则冲突。在任何生产节点上运行开源 ssh-hardening 说明书之前,请查看此说明书的信息。

运行 ssh-hardening 说明书
  1. 在文本编辑器中,将 ssh-hardening 说明书附加到您的 Berksfile。您的 Berksfile 应类似于以下内容。

    source 'https://supermarket.chef.io' cookbook 'chef-client' cookbook 'apache2', '~> 5.0.1' cookbook 'opsworks-audit', path: 'cookbooks/opsworks-audit', '~> 1.0.0' # optional cookbook 'ssh-hardening'
  2. 运行以下命令,将 ssh-hardening 说明书下载到本地说明书文件夹,然后再将它上传到 AWS OpsWorks for Chef Automate 服务器。

    berks vendor cookbooks knife upload .
  3. 根据 安装并设置 opsworks-audit 说明书 步骤 1 和 6 的介绍,将 ssh-hardening 配方添加到您的节点运行列表中。

    如果您更新 opsworks-example-role.rb 文件,请运行以下命令,将改动上传到您的服务器。

    knife upload .

    如果您直接更新运行列表,请运行以下命令上传改动。节点名称通常为实例 ID。

    knife node run_list add <node name> 'recipe[ssh-hardening]'
  4. 由于您在使用 chef-client 说明书,将以固定间隔检查节点 (默认情况下为 30 分钟)。在下次签入时,ssh-hardening 说明书会运行,并有助于提高节点安全性,以满足 DevSec SSH 基线配置文件的规则。

  5. 在首次运行 ssh-hardening 说明书之后,请等待 30 分钟,以便合规性扫描再次运行。在 Chef Automate 控制面板中查看结果。最初运行 DevSec SSH 基线扫描时发生的不合规结果应该已解决。

更新合规性

在 AWS OpsWorks for Chef Automate 服务器上,计划的系统维护会自动更新合规性功能。随着适用于您的 AWS OpsWorks for Chef Automate 服务器的 Chef Automate、Chef Infra Server 和 Chef InSpec 的更新版本推出,您可能需要检查并更新服务器上正在运行的 Audit 说明书和 Chef InSpec 的受支持版本。已经安装在您的 AWS OpsWorks for Chef Automate 服务器上的配置文件不作为维护的一部分进行更新。

社区和自定义合规性配置文件

Chef 目前包括超过 100 个合规性扫描配置文件。您可以将社区和自定义配置文件添加到列表中,然后根据这些配置文件下载和运行合规性扫描,就像对程序附带的配置文件一样。Chef Supermarket 提供了基于社区的合规性配置文件。自定义配置文件是基于 Ruby 的程序,其中包含用于指定扫描规则的控件文件夹。

另请参阅