0

问题:(如何)是否可以“覆盖”检查控件?(特别是在 DevSec Inspec Baselines 中)?

我不想重写整个检查定义,只是控制文件中的特定控件。

背景:我定期从DevSec 存储库
中 提取当前基线,以跟上当前规范。但我想根据我的需要调整其中的一些“控件”,或者想禁用它们。

是否可以通过更改某些环境变量或通过在 inspec 目录结构中的某处放置具有更高优先级的文件来更改规范?或者我是否必须覆盖/编辑整个“controlfile.rb”规范 - 这将涉及每次控制文件更改时的手动干预并对自动化过程产生反作用。

(我看到了这样的考虑,对于与安全相关的更改,检查控件的每个新更新是明智的)

更新 一个解决方案是下面的答案,只执行特定的控件。我仍然不知道如何排除特定控件(否定正则表达式似乎不起作用)

4

1 回答 1

0

仅使用 specifig 控件:
在命令帮助中找到它说:

 [--controls=one two three]                                             
      # A list of control names to run, or a list of /regexes/ to match a gainst control names. Ignore all other tests. 

(我现在也在文档中找到它:https ://docs.chef.io/inspec/cli/#options-3 )

以下将仅执行指定配置文件中以“ssh”开头的控件:

inspec exec /profilepath/profilename --controls "/ssh-.*/"

覆盖控件 要覆盖特定控件,可以在配置文件的“控件”目录中覆盖它们,该目录可以“应用在基线之上”,其中包含,请参阅https://blog.chef.io/understanding- inspec-profile-inheritance,例如:

include_controls 'linux-baseline' do
  somevariable = attribute('somevariable', value: false, description: 'do something')
    control 'package-08' do
      impact 1.0
      title 'Install pkg'
      desc 'install some packaged'
      only_if { somevariable }
      audit_pkg = 'packagename'
      describe package(mypkg) do
        it { should be_installed }
      end
end

include "linux-patch-baseline"
# nothing to replace here
于 2021-06-11T12:43:12.860 回答