0

在 InSpec 1.9.0 中,我定义了以下具有依赖关系的配置文件,包括依赖配置文件中的所有控件。

但是,执行时出现错误,指示配置文件“未列为依赖项

我错过了什么?


  • inspec.yml

    name: my-profile
    version: 0.0.1
    supports:
      - os-family: unix
    depends:
      - name: ssh-baseline
        url: https://github.com/dev-sec/ssh-baseline/archive/master.zip
    
  • controls/include_ssh_baseline.rb

    include_controls 'ssh-baseline'
    
  • 命令:

    inspec exec my-profile -t ssh://user@host.domain
    
  • 执行配置文件的结果:

    无法加载 ssh-baseline,因为它未列为
    my-profile 的依赖项。

    此上下文中可用的依赖项是:
     
     

    (两个空行)

我没有看到语法错误。这几乎是来自InSpec Profiles页面的复制粘贴示例。

以下依赖定义(git而不是url)也导致了与上面相同的错误消息:

depends:
  - name: ssh-baseline
    git: https://github.com/dev-sec/ssh-baseline.git
4

2 回答 2

2

inspec.lock文件是在第一次执行配置文件时创建的,并包含对依赖项的引用。如果您以增量方式构建配置文件,您最终可能会得到一个inspec.yml不包含依赖项的文件(从第一次运行开始):

---
lockfile_version: 1
depends: []

如果要inspec.yml反映对 的更改或在配置文件目录中运行以下命令,则需要删除该文件:

inspec vendor --overwrite

请参阅供应商依赖项(它没有提到--overwrite,但如果它不存在,它会立即抛出一个错误):

当您执行本地配置inspec.yml文件时,将读取该文件以获取任何配置文件依赖项。然后它将在本地缓存依赖项并生成一个inspec.lock文件。如果您在 中添加或更新依赖项inspec.yml,请通过以下任一方式刷新锁定文件:

  • 在配置文件目录中运行inspec vendor;或者
  • inspec.lock在运行 inspec exec 之前删除
于 2017-01-20T21:33:09.040 回答
1

我刚刚根据您的帖子创建了一个配置文件,它可以正常工作。我使用了inspec 1.9.0。只是为了确定,你可以试试inspec exec ./my-profile -t ssh://user@host.domain吗?

于 2017-01-20T16:58:19.833 回答