inspec-core 5.17.4 → 5.18.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/etc/deprecations.json +4 -0
  4. data/inspec-core.gemspec +1 -1
  5. data/lib/inspec/base_cli.rb +5 -0
  6. data/lib/inspec/cli.rb +62 -9
  7. data/lib/inspec/dependencies/dependency_set.rb +6 -2
  8. data/lib/inspec/dsl.rb +18 -5
  9. data/lib/inspec/errors.rb +2 -0
  10. data/lib/inspec/exceptions.rb +2 -0
  11. data/lib/inspec/fetcher/url.rb +1 -1
  12. data/lib/inspec/file_provider.rb +36 -0
  13. data/lib/inspec/iaf_file.rb +127 -0
  14. data/lib/inspec/profile.rb +17 -7
  15. data/lib/inspec/resources/aide_conf.rb +4 -0
  16. data/lib/inspec/resources/apache.rb +4 -0
  17. data/lib/inspec/resources/apache_conf.rb +4 -0
  18. data/lib/inspec/resources/apt.rb +6 -1
  19. data/lib/inspec/resources/audit_policy.rb +5 -0
  20. data/lib/inspec/resources/auditd_conf.rb +4 -0
  21. data/lib/inspec/resources/bash.rb +4 -0
  22. data/lib/inspec/resources/bond.rb +4 -0
  23. data/lib/inspec/resources/bridge.rb +4 -0
  24. data/lib/inspec/resources/cassandradb_conf.rb +5 -0
  25. data/lib/inspec/resources/cassandradb_session.rb +8 -3
  26. data/lib/inspec/resources/chocolatey_package.rb +4 -0
  27. data/lib/inspec/resources/chrony_conf.rb +4 -0
  28. data/lib/inspec/resources/command.rb +5 -0
  29. data/lib/inspec/resources/cpan.rb +4 -0
  30. data/lib/inspec/resources/cran.rb +4 -0
  31. data/lib/inspec/resources/cron.rb +5 -0
  32. data/lib/inspec/resources/csv.rb +6 -1
  33. data/lib/inspec/resources/dh_params.rb +4 -0
  34. data/lib/inspec/resources/docker_container.rb +4 -0
  35. data/lib/inspec/resources/docker_image.rb +4 -0
  36. data/lib/inspec/resources/docker_plugin.rb +4 -0
  37. data/lib/inspec/resources/docker_service.rb +4 -0
  38. data/lib/inspec/resources/etc_group.rb +4 -0
  39. data/lib/inspec/resources/etc_hosts_allow_deny.rb +5 -0
  40. data/lib/inspec/resources/file.rb +6 -1
  41. data/lib/inspec/resources/filesystem.rb +4 -0
  42. data/lib/inspec/resources/gem.rb +4 -0
  43. data/lib/inspec/resources/groups.rb +4 -0
  44. data/lib/inspec/resources/grub_conf.rb +4 -0
  45. data/lib/inspec/resources/host.rb +4 -0
  46. data/lib/inspec/resources/http.rb +4 -0
  47. data/lib/inspec/resources/ibmdb2_conf.rb +8 -0
  48. data/lib/inspec/resources/ibmdb2_session.rb +12 -3
  49. data/lib/inspec/resources/iis_app.rb +4 -0
  50. data/lib/inspec/resources/iis_app_pool.rb +4 -0
  51. data/lib/inspec/resources/iis_site.rb +4 -0
  52. data/lib/inspec/resources/inetd_conf.rb +4 -0
  53. data/lib/inspec/resources/interface.rb +4 -0
  54. data/lib/inspec/resources/ip6tables.rb +4 -0
  55. data/lib/inspec/resources/ipfilter.rb +4 -0
  56. data/lib/inspec/resources/ipnat.rb +4 -0
  57. data/lib/inspec/resources/iptables.rb +4 -0
  58. data/lib/inspec/resources/json.rb +4 -0
  59. data/lib/inspec/resources/kernel_module.rb +4 -0
  60. data/lib/inspec/resources/kernel_parameter.rb +4 -0
  61. data/lib/inspec/resources/key_rsa.rb +4 -0
  62. data/lib/inspec/resources/ksh.rb +4 -0
  63. data/lib/inspec/resources/limits_conf.rb +4 -0
  64. data/lib/inspec/resources/login_defs.rb +4 -0
  65. data/lib/inspec/resources/mongodb.rb +4 -0
  66. data/lib/inspec/resources/mongodb_conf.rb +5 -0
  67. data/lib/inspec/resources/mongodb_session.rb +6 -1
  68. data/lib/inspec/resources/mount.rb +4 -0
  69. data/lib/inspec/resources/mssql_session.rb +4 -0
  70. data/lib/inspec/resources/mssql_sys_conf.rb +7 -0
  71. data/lib/inspec/resources/mysql_conf.rb +4 -0
  72. data/lib/inspec/resources/mysql_session.rb +8 -1
  73. data/lib/inspec/resources/nginx.rb +6 -1
  74. data/lib/inspec/resources/nginx_conf.rb +4 -0
  75. data/lib/inspec/resources/noop.rb +4 -0
  76. data/lib/inspec/resources/npm.rb +4 -0
  77. data/lib/inspec/resources/ntp_conf.rb +4 -0
  78. data/lib/inspec/resources/oneget.rb +4 -0
  79. data/lib/inspec/resources/opa_api.rb +10 -0
  80. data/lib/inspec/resources/opa_cli.rb +14 -0
  81. data/lib/inspec/resources/oracledb_conf.rb +5 -0
  82. data/lib/inspec/resources/oracledb_listener_conf.rb +4 -0
  83. data/lib/inspec/resources/oracledb_session.rb +10 -0
  84. data/lib/inspec/resources/os.rb +4 -0
  85. data/lib/inspec/resources/os_env.rb +4 -0
  86. data/lib/inspec/resources/package.rb +4 -0
  87. data/lib/inspec/resources/parse_config.rb +10 -1
  88. data/lib/inspec/resources/pip.rb +4 -0
  89. data/lib/inspec/resources/platform.rb +4 -0
  90. data/lib/inspec/resources/postfix_conf.rb +4 -0
  91. data/lib/inspec/resources/postgres_conf.rb +4 -0
  92. data/lib/inspec/resources/postgres_session.rb +8 -4
  93. data/lib/inspec/resources/powershell.rb +4 -0
  94. data/lib/inspec/resources/processes.rb +6 -4
  95. data/lib/inspec/resources/rabbitmq_config.rb +4 -0
  96. data/lib/inspec/resources/registry_key.rb +4 -0
  97. data/lib/inspec/resources/security_identifier.rb +4 -0
  98. data/lib/inspec/resources/security_policy.rb +4 -0
  99. data/lib/inspec/resources/service.rb +4 -0
  100. data/lib/inspec/resources/ssh_config.rb +4 -0
  101. data/lib/inspec/resources/sybase_conf.rb +4 -0
  102. data/lib/inspec/resources/sybase_session.rb +4 -0
  103. data/lib/inspec/resources/sys_info.rb +4 -0
  104. data/lib/inspec/resources/timezone.rb +4 -0
  105. data/lib/inspec/resources/users.rb +4 -0
  106. data/lib/inspec/resources/vbscript.rb +5 -0
  107. data/lib/inspec/resources/virtualization.rb +4 -0
  108. data/lib/inspec/resources/windows_feature.rb +5 -1
  109. data/lib/inspec/resources/windows_firewall.rb +4 -0
  110. data/lib/inspec/resources/windows_firewall_rule.rb +4 -0
  111. data/lib/inspec/resources/windows_hotfix.rb +4 -0
  112. data/lib/inspec/resources/windows_task.rb +4 -0
  113. data/lib/inspec/resources/wmi.rb +4 -0
  114. data/lib/inspec/resources/x509_certificate.rb +59 -0
  115. data/lib/inspec/resources/yum.rb +4 -0
  116. data/lib/inspec/resources/zfs_dataset.rb +4 -0
  117. data/lib/inspec/resources/zfs_pool.rb +4 -0
  118. data/lib/inspec/rule.rb +1 -1
  119. data/lib/inspec/secrets/yaml.rb +7 -1
  120. data/lib/inspec/ui.rb +1 -0
  121. data/lib/inspec/utils/yaml_profile_summary.rb +34 -0
  122. data/lib/inspec/version.rb +1 -1
  123. data/lib/plugins/inspec-reporter-html2/templates/body.html.erb +4 -4
  124. data/lib/plugins/inspec-reporter-html2/templates/control.html.erb +1 -1
  125. data/lib/plugins/inspec-reporter-html2/templates/profile.html.erb +1 -1
  126. data/lib/plugins/{inspec-artifact/inspec-artifact.gemspec → inspec-sign/inspec-sign.gemspec} +2 -2
  127. data/lib/plugins/inspec-sign/lib/inspec-sign/base.rb +161 -0
  128. data/lib/plugins/{inspec-artifact/lib/inspec-artifact → inspec-sign/lib/inspec-sign}/cli.rb +14 -23
  129. data/lib/plugins/inspec-sign/lib/inspec-sign.rb +12 -0
  130. data/lib/source_readers/inspec.rb +8 -2
  131. metadata +10 -8
  132. data/lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb +0 -187
  133. data/lib/plugins/inspec-artifact/lib/inspec-artifact.rb +0 -12
@@ -50,6 +50,10 @@ module Inspec::Resources
50
50
 
51
51
  def_delegators :http, :servers, :locations
52
52
 
53
+ def resource_id
54
+ @conf_path || "nginx_conf"
55
+ end
56
+
53
57
  def to_s
54
58
  "nginx_conf #{@conf_path}"
55
59
  end
@@ -2,6 +2,10 @@ module Inspec::Resources
2
2
  class Noop < Inspec.resource(1)
3
3
  name "noop"
4
4
 
5
+ def resource_id
6
+ "No-op"
7
+ end
8
+
5
9
  def to_s
6
10
  "No-op"
7
11
  end
@@ -61,6 +61,10 @@ module Inspec::Resources
61
61
  info[:version]
62
62
  end
63
63
 
64
+ def resource_id
65
+ @package_name || "npm"
66
+ end
67
+
64
68
  def to_s
65
69
  "Npm Package #{@package_name}"
66
70
  end
@@ -30,6 +30,10 @@ module Inspec::Resources
30
30
  param
31
31
  end
32
32
 
33
+ def resource_id
34
+ @conf_path || "ntp_conf"
35
+ end
36
+
33
37
  def to_s
34
38
  "ntp.conf"
35
39
  end
@@ -64,6 +64,10 @@ module Inspec::Resources
64
64
  info[:version]
65
65
  end
66
66
 
67
+ def resource_id
68
+ @package_name || "oneget"
69
+ end
70
+
67
71
  def to_s
68
72
  "OneGet Package #{@package_name}"
69
73
  end
@@ -6,6 +6,12 @@ module Inspec::Resources
6
6
  supports platform: "unix"
7
7
  supports platform: "windows"
8
8
 
9
+ example <<~EXAMPLE
10
+ describe opa_api(url: "localhost:8181/v1/data/example/violation", data: "input.json") do
11
+ its(["result"]) { should eq 'value' }
12
+ end
13
+ EXAMPLE
14
+
9
15
  def initialize(opts = {})
10
16
  @url = opts[:url] || nil
11
17
  @data = opts[:data] || nil
@@ -18,6 +24,10 @@ module Inspec::Resources
18
24
  @content["result"]
19
25
  end
20
26
 
27
+ def resource_id
28
+ @url || "opa_api"
29
+ end
30
+
21
31
  def to_s
22
32
  "OPA api"
23
33
  end
@@ -6,6 +6,12 @@ module Inspec::Resources
6
6
  supports platform: "unix"
7
7
  supports platform: "windows"
8
8
 
9
+ example <<~EXAMPLE
10
+ describe opa_cli(policy: "example.rego", data: "input.json", query: "data.example.allow") do
11
+ its(["result"]) { should eq "value" }
12
+ end
13
+ EXAMPLE
14
+
9
15
  def initialize(opts = {})
10
16
  @opa_executable_path = opts[:opa_executable_path] || "opa" # if this path is not provided then we will assume that it's been set in the ENV PATH
11
17
  @policy = opts[:policy] || nil
@@ -22,6 +28,14 @@ module Inspec::Resources
22
28
  @content["result"][0]["expressions"][0]["value"] if @content["result"][0]["expressions"][0]["text"].include?("allow")
23
29
  end
24
30
 
31
+ def resource_id
32
+ if @policy.nil? && @query.nil?
33
+ "opa_cli"
34
+ else
35
+ "#{@policy}:#{@query}"
36
+ end
37
+ end
38
+
25
39
  def to_s
26
40
  "OPA cli"
27
41
  end
@@ -17,6 +17,7 @@ module Inspec::Resources
17
17
 
18
18
  def initialize(opts = {})
19
19
  @oracledb_session = inspec.oracledb_session(opts)
20
+ @opts = opts
20
21
  end
21
22
 
22
23
  def method_missing(name)
@@ -28,6 +29,10 @@ module Inspec::Resources
28
29
  "Oracle DB Configuration"
29
30
  end
30
31
 
32
+ def resource_id
33
+ @opts[:user] || ""
34
+ end
35
+
31
36
  private
32
37
 
33
38
  def determine_database_setting(setting)
@@ -73,6 +73,10 @@ module Inspec::Resources
73
73
  "Oracle Listener Configuration"
74
74
  end
75
75
 
76
+ def resource_id
77
+ @conf_path
78
+ end
79
+
76
80
  private
77
81
 
78
82
  def read_content
@@ -76,6 +76,16 @@ module Inspec::Resources
76
76
  "Oracle Session"
77
77
  end
78
78
 
79
+ def resource_id
80
+ if @user
81
+ "#{@host}-#{@port}-#{@user}"
82
+ elsif @su_user
83
+ "#{@host}-#{@port}-#{@su_user}"
84
+ else
85
+ ""
86
+ end
87
+ end
88
+
79
89
  private
80
90
 
81
91
  # 3 commands
@@ -27,6 +27,10 @@ module Inspec::Resources
27
27
  end
28
28
  end
29
29
 
30
+ def resource_id
31
+ @platform.name || "OS"
32
+ end
33
+
30
34
  def to_s
31
35
  "Operating System Detection"
32
36
  end
@@ -47,6 +47,10 @@ module Inspec::Resources
47
47
  @content = value_for(@osenv, @target) unless @osenv.nil?
48
48
  end
49
49
 
50
+ def resource_id
51
+ @osenv || ""
52
+ end
53
+
50
54
  def to_s
51
55
  if @osenv.nil?
52
56
  "Environment variables"
@@ -96,6 +96,10 @@ module Inspec::Resources
96
96
  @latest_version ||= ( @pkgman.latest_version(@package_name) || info[:latest_version] )
97
97
  end
98
98
 
99
+ def resource_id
100
+ @package_name || "System Package"
101
+ end
102
+
99
103
  def to_s
100
104
  "System Package #{@package_name}"
101
105
  end
@@ -68,6 +68,10 @@ module Inspec::Resources
68
68
  end
69
69
  end
70
70
 
71
+ def resource_id
72
+ @content || "parse_config"
73
+ end
74
+
71
75
  def to_s
72
76
  "Parse Config #{@conf_path}"
73
77
  end
@@ -104,8 +108,13 @@ module Inspec::Resources
104
108
  EXAMPLE
105
109
 
106
110
  def initialize(path, opts = nil)
111
+ @path = path
107
112
  super(nil, opts)
108
- parse_file(path)
113
+ parse_file(@path)
114
+ end
115
+
116
+ def resource_id
117
+ @path || "parse_config_file"
109
118
  end
110
119
 
111
120
  def to_s
@@ -56,6 +56,10 @@ module Inspec::Resources
56
56
  info[:version]
57
57
  end
58
58
 
59
+ def resource_id
60
+ @package_name || "pip"
61
+ end
62
+
59
63
  def to_s
60
64
  "Pip Package #{@package_name}"
61
65
  end
@@ -93,6 +93,10 @@ module Inspec::Resources
93
93
  key.to_s.tr("-", "_").to_sym
94
94
  end
95
95
 
96
+ def resource_id
97
+ @platform.name || "platform"
98
+ end
99
+
96
100
  def to_s
97
101
  "Platform Detection"
98
102
  end
@@ -22,6 +22,10 @@ module Inspec::Resources
22
22
  SimpleConfig.new(content).params
23
23
  end
24
24
 
25
+ def resource_id
26
+ "Postfix Conf"
27
+ end
28
+
25
29
  def to_s
26
30
  "Postfix Mail Transfer Agent"
27
31
  end
@@ -64,6 +64,10 @@ module Inspec::Resources
64
64
  param
65
65
  end
66
66
 
67
+ def resource_id
68
+ @conf_path || "postgres_conf"
69
+ end
70
+
67
71
  def to_s
68
72
  "PostgreSQL Configuration"
69
73
  end
@@ -4,9 +4,9 @@ require "shellwords" unless defined?(Shellwords)
4
4
 
5
5
  module Inspec::Resources
6
6
  class Lines
7
- attr_reader :output
7
+ attr_reader :output, :exit_status
8
8
 
9
- def initialize(raw, desc)
9
+ def initialize(raw, desc, exit_status)
10
10
  @output = raw
11
11
  @desc = desc
12
12
  end
@@ -58,12 +58,16 @@ module Inspec::Resources
58
58
  if cmd.exit_status != 0 && ( out =~ /could not connect to/ || out =~ /password authentication failed/ ) && out.downcase =~ /error:/
59
59
  raise Inspec::Exceptions::ResourceFailed, "PostgreSQL connection error: #{out}"
60
60
  elsif cmd.exit_status != 0 && out.downcase =~ /error:/
61
- Lines.new(out, "PostgreSQL query with error: #{query}")
61
+ Lines.new(out, "PostgreSQL query with error: #{query}", cmd.exit_status)
62
62
  else
63
- Lines.new(cmd.stdout.strip, "PostgreSQL query: #{query}")
63
+ Lines.new(cmd.stdout.strip, "PostgreSQL query: #{query}", cmd.exit_status)
64
64
  end
65
65
  end
66
66
 
67
+ def resource_id
68
+ "postgress_session:User:#{@user}:Host:#{@host}"
69
+ end
70
+
67
71
  private
68
72
 
69
73
  def escaped_query(query)
@@ -49,6 +49,10 @@ module Inspec::Resources
49
49
  def to_s
50
50
  "Powershell"
51
51
  end
52
+
53
+ def resource_id
54
+ "Powershell"
55
+ end
52
56
  end
53
57
 
54
58
  PowershellScript = Powershell
@@ -43,7 +43,7 @@ module Inspec::Resources
43
43
 
44
44
  all_cmds = ps_axo
45
45
  @list = all_cmds.find_all do |hm|
46
- hm[:command] =~ grep
46
+ hm[:command] =~ grep || hm[:process_name] =~ grep
47
47
  end
48
48
  end
49
49
 
@@ -84,6 +84,7 @@ module Inspec::Resources
84
84
  .register_column(:time, field: "time")
85
85
  .register_column(:users, field: "user")
86
86
  .register_column(:commands, field: "command")
87
+ .register_column(:process_name, field: "process_name")
87
88
  .install_filter_methods_on_resource(self, :filtered_processes)
88
89
 
89
90
  private
@@ -98,9 +99,9 @@ module Inspec::Resources
98
99
  if os.linux?
99
100
  command, regex, field_map = ps_configuration_for_linux
100
101
  elsif os.windows?
101
- command = '$Proc = Get-Process -IncludeUserName | Where-Object {$_.Path -ne $null } | Select-Object PriorityClass,Id,CPU,PM,VirtualMemorySize,NPM,SessionId,Responding,StartTime,TotalProcessorTime,UserName,Path | ConvertTo-Csv -NoTypeInformation;$Proc.Replace("""","").Replace("`r`n","`n")'
102
+ command = '$Proc = Get-Process -IncludeUserName | Select-Object PriorityClass,Id,CPU,PM,VirtualMemorySize,NPM,SessionId,Responding,StartTime,TotalProcessorTime,UserName,Path,ProcessName | ConvertTo-Csv -NoTypeInformation;$Proc.Replace("""","").Replace("`r`n","`n")'
102
103
  # Wanted to use /(?:^|,)([^,]*)/; works on rubular.com not sure why here?
103
- regex = /^(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+),(.+)$/
104
+ regex = /^(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*),(.*)$/
104
105
  field_map = {
105
106
  pid: 2,
106
107
  cpu: 3,
@@ -113,6 +114,7 @@ module Inspec::Resources
113
114
  time: 10,
114
115
  user: 11,
115
116
  command: 12,
117
+ process_name: 13,
116
118
  }
117
119
  else
118
120
  command = "ps axo pid,pcpu,pmem,vsz,rss,tty,stat,start,time,user,command"
@@ -204,7 +206,7 @@ module Inspec::Resources
204
206
 
205
207
  # build a hash of process data that we'll turn into a struct for FilterTable
206
208
  process_data = {}
207
- %i{label pid cpu mem vsz rss tty stat start time user command}.each do |param|
209
+ %i{label pid cpu mem vsz rss tty stat start time user command process_name}.each do |param|
208
210
  # not all operating systems support all fields, so skip the field if we don't have it
209
211
  process_data[param] = line[field_map[param]] if field_map.key?(param)
210
212
  end
@@ -32,6 +32,10 @@ module Inspec::Resources
32
32
  "rabbitmq_config #{@conf_path}"
33
33
  end
34
34
 
35
+ def resource_id
36
+ @conf_path
37
+ end
38
+
35
39
  private
36
40
 
37
41
  def read_content
@@ -140,6 +140,10 @@ module Inspec::Resources
140
140
  "Registry Key #{@options[:name]}"
141
141
  end
142
142
 
143
+ def resource_id
144
+ @options[:path]
145
+ end
146
+
143
147
  private
144
148
 
145
149
  def prep_prop(property)
@@ -51,6 +51,10 @@ module Inspec::Resources
51
51
  "Security Identifier"
52
52
  end
53
53
 
54
+ def resource_id
55
+ @name
56
+ end
57
+
54
58
  private
55
59
 
56
60
  def fetch_sids
@@ -112,6 +112,10 @@ module Inspec::Resources
112
112
  "Security Policy"
113
113
  end
114
114
 
115
+ def resource_id
116
+ "Security Policy"
117
+ end
118
+
115
119
  private
116
120
 
117
121
  def read_content
@@ -297,6 +297,10 @@ module Inspec::Resources
297
297
  current_monitoring_tool.is_service_monitored?
298
298
  end
299
299
 
300
+ def resource_id
301
+ @service_name || "Service"
302
+ end
303
+
300
304
  def to_s
301
305
  "Service #{@service_name}"
302
306
  end
@@ -57,6 +57,10 @@ module Inspec::Resources
57
57
  "SSH Configuration"
58
58
  end
59
59
 
60
+ def resource_id
61
+ @conf_path || "SSH Configuration"
62
+ end
63
+
60
64
  private
61
65
 
62
66
  def read_content
@@ -29,6 +29,10 @@ module Inspec::Resources
29
29
  sql_query.row(0).column("Config Value").value
30
30
  end
31
31
 
32
+ def resource_id
33
+ conf_param || "Sybase config settings"
34
+ end
35
+
32
36
  def to_s
33
37
  "Sybase Conf #{conf_param}"
34
38
  end
@@ -64,6 +64,10 @@ module Inspec::Resources
64
64
  DatabaseHelper::SQLQueryResult.new(isql_cmd, parse_csv_result(isql_cmd.stdout))
65
65
  end
66
66
 
67
+ def resource_id
68
+ @database || "Sybase Session"
69
+ end
70
+
67
71
  def to_s
68
72
  "Sybase Session"
69
73
  end
@@ -112,6 +112,10 @@ module Inspec::Resources
112
112
  end
113
113
  end
114
114
 
115
+ def resource_id
116
+ "sys_info"
117
+ end
118
+
115
119
  def to_s
116
120
  "System Information"
117
121
  end
@@ -52,6 +52,10 @@ module Inspec::Resources
52
52
  @output["time_offset"]
53
53
  end
54
54
 
55
+ def resource_id
56
+ "timezone"
57
+ end
58
+
55
59
  def to_s
56
60
  "Time Zone resource"
57
61
  end
@@ -307,6 +307,10 @@ module Inspec::Resources
307
307
  shadow_information[1]
308
308
  end
309
309
 
310
+ def resource_id
311
+ @username || "User"
312
+ end
313
+
310
314
  def to_s
311
315
  "User #{@username}"
312
316
  end
@@ -51,6 +51,11 @@ module Inspec::Resources
51
51
  @result ||= parse_stdout
52
52
  end
53
53
 
54
+ # vbscript can be of multiple lines so that can't be used as UUID so using the hardcoded string.
55
+ def resource_id
56
+ "Windows VBScript"
57
+ end
58
+
54
59
  def to_s
55
60
  "Windows VBScript"
56
61
  end
@@ -59,6 +59,10 @@ module Inspec::Resources
59
59
  collect_data_linux
60
60
  end
61
61
 
62
+ def resource_id
63
+ @virtualization_data[:system] || "virtualization"
64
+ end
65
+
62
66
  def to_s
63
67
  "Virtualization Detection"
64
68
  end
@@ -59,8 +59,12 @@ module Inspec::Resources
59
59
  @cache
60
60
  end
61
61
 
62
+ def resource_id
63
+ @feature
64
+ end
65
+
62
66
  def to_s
63
- "Windows Feature '#{@feature}'"
67
+ @feature || "windows_feature"
64
68
  end
65
69
 
66
70
  private
@@ -21,6 +21,10 @@ module Inspec::Resources
21
21
  @state = JSON.load(cmd.stdout) unless cmd.stdout.empty?
22
22
  end
23
23
 
24
+ def resource_id
25
+ @profile || "windows_firewall"
26
+ end
27
+
24
28
  def to_s
25
29
  "Windows Firewall (Profile #{@profile})"
26
30
  end
@@ -23,6 +23,10 @@ module Inspec::Resources
23
23
  @state = JSON.load(cmd.stdout) unless cmd.stdout.empty?
24
24
  end
25
25
 
26
+ def resource_id
27
+ @name || "windows_firewall_rule"
28
+ end
29
+
26
30
  def to_s
27
31
  "Windows Firewall Rule #{@name}"
28
32
  end
@@ -24,6 +24,10 @@ module Inspec::Resources
24
24
  @content = cmd.stdout
25
25
  end
26
26
 
27
+ def resource_id
28
+ @id || "windows_hotfix"
29
+ end
30
+
27
31
  def to_s
28
32
  "Windows Hotfix #{@id}"
29
33
  end
@@ -105,6 +105,10 @@ module Inspec::Resources
105
105
  }
106
106
  end
107
107
 
108
+ def resource_id
109
+ @taskuri || "windows_task"
110
+ end
111
+
108
112
  def to_s
109
113
  "Windows Task '#{@taskuri}'"
110
114
  end
@@ -95,6 +95,10 @@ module Inspec::Resources
95
95
  @content
96
96
  end
97
97
 
98
+ def resource_id
99
+ @options[:class] || "WMI"
100
+ end
101
+
98
102
  def to_s
99
103
  "WMI with #{@options}"
100
104
  end