InspecTools提供多个命令行工具,用于InSpec格式之间的相互转换及安全结果数据处理。该工具集支持多种格式转换(如XCCDF、CSV、CKL、PDF、XLSX与InSpec之间的双向转换),并包含可在Ruby应用中使用的API,适用于安全合规检查、基准测试结果处理等场景。
所有Docker命令会挂载当前目录到容器中,使用前需导航至待处理文件所在目录。
Docker运行命令
bashdocker run -it -v$(pwd):/share mitre/inspec_tools
cmddocker run -it -v%cd%:/share mitre/inspec_tools
查看所有命令:
bashinspec_tools help
查看特定命令帮助:
bashinspec_tools help [COMMAND] # 或 inspec_tools [COMMAND] -h
generate_map
生成可用于csv2inspec命令的mapping.xml映射文件。
bashUSAGE: inspec_tools generate_map
generate_ckl_metadata
生成可用于inspec2ckl命令的metadata.json元数据文件。
bashUSAGE: inspec_tools generate_ckl_metadata
generate_inspec_metadata
生成可用于xccdf2inspec命令的metadata.json元数据文件。
bashUSAGE: inspec_tools generate_inspec_metadata
compliance
解析InSpec结果JSON,检查合规水平是否满足指定阈值。若不满足,返回错误码(1)及不合规元素。合规分数向下取整(如77.3显示为77)。
bashUSAGE: inspec_tools compliance [OPTIONS] -j <inspec-json> -i <threshold-inline> inspec_tools compliance [OPTIONS] -j <inspec-json> -f <threshold-file> FLAGS: -j --inspec-json <inspec-json> : InSpec结果JSON文件路径 -i --template-inline <threshold-inline> : 内联合规阈值定义 -f --template-file <threshold-file> : 包含合规阈值定义的YAML文件
示例:
bash# 内联阈值定义 inspec_tools compliance -j examples/sample_json/rhel-simp.json -i '{compliance.min: 80, failed.critical.max: 0, failed.high.max: 0}' # 文件阈值定义 inspec_tools compliance -j examples/sample_json/rhel-simp.json -f examples/sample_yaml/threshold.yaml
阈值定义格式:
YAML文件示例:
yamlfailed: critical: max: 0 high: max: 1 compliance: min: 81
或
yamlcompliance.min: 81 failed.critical.max: 1 failed.high.max: 1
内联示例:
json{compliance: {min: 90}, failed: {critical: {max: 0}, high: {max: 0}}}
或
json{compliance.min: 81, failed.critical.max: 0, failed.high.max: 0}
summary
解析InSpec结果JSON,显示所有测试的执行信息。默认输出示例:
Overall compliance: 77% failed total : 41 critical : 0 high : 3 medium : 33 low : 5 passed total : 174 critical : 0 high : 21 medium : 147 low : 6 ...
bashUSAGE: inspec_tools summary [OPTIONS] -j <inspec-json> FLAGS: -j --inspec-json <inspec-json> : InSpec结果JSON文件路径 -V --verbose : 打印详细调试输出 -f --json-full : 以JSON格式输出完整汇总 -k --json-counts : 以JSON格式输出结果状态计数
示例:
bashinspec_tools summary -j examples/sample_json/rhel-simp.json -f
xccdf2inspec
将STIG XCCDF文件转换为InSpec配置文件。
bashUSAGE: inspec_tools xccdf2inspec [OPTIONS] -x <xccdf-file> FLAGS: -x --xccdf <xccdf-file> : DISA STIG XCCDF文件路径 -a --attributes <xccdf-attr-yml> : 保存XCCDF特有属性的YAML文件路径(可选) -o --output <profile-path> : InSpec配置文件输出路径(默认:profile) -f --format [ruby | hash] : 输出格式(默认:ruby) -s --separate-files [true | false] : 是否将控制项输出为多个文件(默认:true) -m --metadata <metadata-json> : inspec.yml的额外元数据JSON文件路径(可选) -r --replace-tags <array> : 需替换为$的标签列表(区分大小写,空格分隔,可选)
示例:
bashinspec_tools xccdf2inspec -x xccdf_file.xml -a attributes.yml -o myprofile -f ruby -s false
inspec2xccdf
将JSON格式的InSpec配置文件转换为STIG XCCDF文档。
bashUSAGE: inspec_tools inspec2xccdf [OPTIONS] -j <inspec-json> -a <xccdf-attr-yml> -o <xccdf-xml> FLAGS: -j --inspec-json <inspec-json> : InSpec JSON文件路径(使用`inspec json <profile> > example.json`生成) -a --attributes <xccdf-attr-yml> : 提供XCCDF文档所需属性的YAML文件路径 -o --output <xccdf-xml> : XCCDF文件输出路径及名称 -V --verbose : 详细模式(可选)
示例:
bashinspec_tools inspec2xccdf -j example.json -a attributes.yml -o xccdf.xml
csv2inspec
将STIG控制项CSV电子表格转换为InSpec配置文件。
bashUSAGE: inspec_tools csv2inspec [OPTIONS] -c <stig-csv> -m <map-yml> FLAGS: -c --csv <stig-csv> : DISA STIG风格CSV文件路径 -m --mapping <map-yml> : CSV到InSpec控制项的映射YAML文件路径 -V --verbose : 详细模式(可选) -o --output <profile-path> : InSpec配置文件输出路径(默认:profile) -f --format [ruby | hash] : 输出格式(默认:ruby) -s --separate-files [true | false] : 是否将控制项输出为多个文件(默认:true)
示例:
bashinspec_tools csv2inspec -c examples/csv2inspec/stig.csv -m examples/csv2inspec/mapping.yml -o mydir -f ruby -s true
inspec2csv
将JSON格式的InSpec配置文件转换为安全控制项CSV电子表格。
bashUSAGE: inspec_tools inspec2csv [OPTIONS] -j <inspec-json> -o <profile-csv> FLAGS: -j --inspec-json <inspec-json> : InSpec JSON文件路径 -o --output <profile-csv> : CSV输出文件路径 -V --verbose : 详细模式(可选)
示例:
bashinspec_tools inspec2csv -j inspec_profile.json -o mycsv.csv
inspec2ckl
将InSpec结果JSON转换为STIG检查表(CKL)。
bashUSAGE: inspec_tools inspec2ckl [OPTIONS] -j <inspec-json> -o <results-ckl> FLAGS: -j --inspec-json <inspec-json> : InSpec结果JSON文件路径 -o --output <results-ckl> : 检查表输出文件路径 -m --metadata <metadata-json> : 检查表额外元数据JSON文件路径(可选) -V --verbose : 详细模式(可选)
示例:
bashinspec_tools inspec2ckl -j results.json -o output.ckl
pdf2inspec
将包含CIS基准的PDF文件转换为InSpec配置文件。
bashUSAGE: inspec_tools pdf2inspec [OPTIONS] -p <cis-benchmark> FLAGS: -p --pdf <cis-benchmark> : CIS基准PDF文件路径 -o --output <profile-path> : InSpec配置文件输出路径(默认:profile) -f --format [ruby | hash] : 输出格式(默认:ruby) -s --separate-files [true | false] : 是否将控制项输出为多个文件(默认:true) -d --debug : 调试模式(可选)
示例:
bashinspec_tools pdf2inspec -p benchmark.pdf -o /path/to/myprofile -f ruby -s true
xlsx2inspec
将XLSX格式的CIS基准转换为InSpec控制项。
bashUsage: inspec_tools xlsx2inspec -m, --mapping=MAPPING -p, --control-name-prefix=CONTROL_NAME_PREFIX -x, --xlsx=XLSX Options: -x, --xlsx=XLSX : XLSX文件路径 -m, --mapping=MAPPING : 映射文件路径 -p, --control-name-prefix=CONTROL_NAME_PREFIX : 控制项名称前缀 -V, [--verbose] : 详细模式 -o, [--output=OUTPUT] : 输出路径(默认:profile) -f, [--format=FORMAT] : 输出格式(默认:ruby,可选:ruby、hash) -s, [--separate-files] : 是否分离文件(默认:true) [--log-level=LOG_LEVEL] : 日志级别(debug、info、warn、error、fatal) [--log-location=LOG_LOCATION] : 日志输出位置(默认:标准输出) l, [--log-directory=LOG_DIRECTORY] : 日志目录
示例:
bashbundle exec inspec_tools xlsx2inspec -m examples/xlsx2inspec/mapping.cis.yml -p azure-cis-foundations -x examples/cis.xlsx
version
打印工具版本信息。
bashUSAGE: inspec_tools version
在Ruby文件中引入库:
rubyrequire 'inspec_tools'
创建InspecTools实例并转换结果:
ruby# 初始化工具实例 tool = InspecTools::Inspec.new(results_json) # 转换为CKL格式 ckl_results = tool.to_ckl # 转换为CSV格式 csv_results = tool.to_csv # 转换为XCCDF格式(需提供属性JSON) # 属性JSON示例见:examples/attribute.json xccdf_results = tool.to_xccdf(attribs_json)
InspecTools会尽力转换输入文件中的各种遗留术语和值。若遇到不支持的术语,请提交issue反馈。
工具生成的配置文件遵循最新的NIST(美国国家标准与技术研究院)术语和值标准,如通用漏洞评分系统(CVSS)。
有关支持的输入格式和预期输出格式的详细信息,请参阅项目wiki:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务