inspec-core 5.17.4 → 5.18.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
@@ -34,6 +34,10 @@ module Inspec::Resources
34
34
  param
35
35
  end
36
36
 
37
+ def resource_id
38
+ @conf_path || "chrony_conf"
39
+ end
40
+
37
41
  def to_s
38
42
  "chrony.conf"
39
43
  end
@@ -93,6 +93,11 @@ module Inspec::Resources
93
93
  res.exit_status.to_i == 0
94
94
  end
95
95
 
96
+ # to_s method outputs the command which we are using here as UUID to identify resource and also it take cares of Redact output
97
+ def resource_id
98
+ to_s || "command"
99
+ end
100
+
96
101
  def to_s
97
102
  output = "Command: `#{@command}`"
98
103
  # Redact output if the `redact_regex` option is passed
@@ -51,6 +51,10 @@ module Inspec::Resources
51
51
  info[:version]
52
52
  end
53
53
 
54
+ def resource_id
55
+ @package_name || "cpan"
56
+ end
57
+
54
58
  def to_s
55
59
  "Perl Module #{@package_name}"
56
60
  end
@@ -57,6 +57,10 @@ module Inspec::Resources
57
57
  info[:version]
58
58
  end
59
59
 
60
+ def resource_id
61
+ @package_name || "cran"
62
+ end
63
+
60
64
  def to_s
61
65
  "R Module #{@package_name}"
62
66
  end
@@ -38,6 +38,11 @@ module Inspec::Resources
38
38
  @params.include?(rule)
39
39
  end
40
40
 
41
+ def resource_id
42
+ user = @user || "current user"
43
+ "cron #{user}"
44
+ end
45
+
41
46
  def to_s
42
47
  if is_user_crontab?
43
48
  "cron for user #{@user}"
@@ -19,7 +19,8 @@ module Inspec::Resources
19
19
 
20
20
  def initialize(path, headers = true)
21
21
  @headers = headers
22
- super(path)
22
+ @path = path
23
+ super(@path)
23
24
  end
24
25
 
25
26
  # override the parse method from JsonConfig
@@ -68,6 +69,10 @@ module Inspec::Resources
68
69
  end
69
70
  end
70
71
 
72
+ def resource_id
73
+ @path || "csv"
74
+ end
75
+
71
76
  private
72
77
 
73
78
  # used by JsonConfig to build up a full to_s method
@@ -76,6 +76,10 @@ module Inspec::Resources
76
76
  @dh_params.params_ok?
77
77
  end
78
78
 
79
+ def resource_id
80
+ @dh_params_path || "dh_params"
81
+ end
82
+
79
83
  def to_s
80
84
  "dh_params #{@dh_params_path}"
81
85
  end
@@ -92,6 +92,10 @@ module Inspec::Resources
92
92
  "Docker Container #{name}"
93
93
  end
94
94
 
95
+ def resource_id
96
+ object_info.ids[0] || @opts[:id] || @opts[:name] || ""
97
+ end
98
+
95
99
  private
96
100
 
97
101
  def object_info
@@ -72,6 +72,10 @@ module Inspec::Resources
72
72
  "Docker Image #{img}"
73
73
  end
74
74
 
75
+ def resource_id
76
+ object_info.ids[0] || @opts[:id] || @opts[:image] || ""
77
+ end
78
+
75
79
  private
76
80
 
77
81
  def sanitize_options(opts)
@@ -50,6 +50,10 @@ module Inspec::Resources
50
50
  "Docker plugin #{plugin}"
51
51
  end
52
52
 
53
+ def resource_id
54
+ id || @opts[:id] || @opts[:name] || ""
55
+ end
56
+
53
57
  private
54
58
 
55
59
  def object_info
@@ -73,6 +73,10 @@ module Inspec::Resources
73
73
  "Docker Service #{service}"
74
74
  end
75
75
 
76
+ def resource_id
77
+ object_info.ids[0] || @opts[:id] || @opts[:name] || ""
78
+ end
79
+
76
80
  private
77
81
 
78
82
  def sanitize_options(opts)
@@ -95,6 +95,10 @@ module Inspec::Resources
95
95
  "/etc/group"
96
96
  end
97
97
 
98
+ def resource_id
99
+ @path
100
+ end
101
+
98
102
  private
99
103
 
100
104
  def parse_group(path)
@@ -37,6 +37,10 @@ module Inspec::Resources
37
37
  "hosts.allow Configuration"
38
38
  end
39
39
 
40
+ def resource_id
41
+ @conf_path
42
+ end
43
+
40
44
  private
41
45
 
42
46
  def read_content
@@ -110,5 +114,6 @@ module Inspec::Resources
110
114
  def to_s
111
115
  "hosts.deny Configuration"
112
116
  end
117
+
113
118
  end
114
119
  end
@@ -35,11 +35,12 @@ module Inspec::Resources
35
35
  end
36
36
  EXAMPLE
37
37
 
38
- attr_reader :file, :mount_options
38
+ attr_reader :file, :mount_options, :path
39
39
  def initialize(path)
40
40
  # select permissions style
41
41
  @perms_provider = select_file_perms_style(inspec.os)
42
42
  @file = inspec.backend.file(path)
43
+ @path = path
43
44
  end
44
45
 
45
46
  %w{
@@ -217,6 +218,10 @@ module Inspec::Resources
217
218
  end
218
219
  end
219
220
 
221
+ def resource_id
222
+ path
223
+ end
224
+
220
225
  private
221
226
 
222
227
  def file_permission_granted?(access_type, by_usergroup, by_specific_user)
@@ -84,6 +84,10 @@ module Inspec::Resources
84
84
  info = @fsman.info(@partition)
85
85
  info[:name]
86
86
  end
87
+
88
+ def resource_id
89
+ partition
90
+ end
87
91
  end
88
92
 
89
93
  class FsManagement
@@ -76,5 +76,9 @@ module Inspec::Resources
76
76
  def to_s
77
77
  "gem package #{@package_name}"
78
78
  end
79
+
80
+ def resource_id
81
+ "#{@package_name}-#{version}"
82
+ end
79
83
  end
80
84
  end
@@ -154,6 +154,10 @@ module Inspec::Resources
154
154
  "Group #{@group}"
155
155
  end
156
156
 
157
+ def resource_id
158
+ gid ? "#{@group}-#{gid}" : ""
159
+ end
160
+
157
161
  private
158
162
 
159
163
  def flatten_entry(group_info, prop)
@@ -69,6 +69,10 @@ module Inspec::Resources
69
69
  "Grub Config"
70
70
  end
71
71
 
72
+ def resource_id
73
+ @conf_path
74
+ end
75
+
72
76
  private
73
77
 
74
78
  ######################################################################
@@ -130,6 +130,10 @@ module Inspec::Resources
130
130
  resource_name
131
131
  end
132
132
 
133
+ def resource_id
134
+ port ? "#{hostname}-#{port}-#{protocol}" : hostname
135
+ end
136
+
133
137
  private
134
138
 
135
139
  def ping
@@ -83,6 +83,10 @@ module Inspec::Resources
83
83
  @response = nil
84
84
  end
85
85
 
86
+ def resource_id
87
+ @url
88
+ end
89
+
86
90
  private
87
91
 
88
92
  def params
@@ -24,6 +24,14 @@ module Inspec::Resources
24
24
  @output = run_command
25
25
  end
26
26
 
27
+ def resource_id
28
+ if inspec.os.platform?("windows")
29
+ "ibmdb2_conf"
30
+ else
31
+ "ibmdb2_conf:DatabaseInstance:#{@db_instance}"
32
+ end
33
+ end
34
+
27
35
  def to_s
28
36
  "IBM Db2 Conf"
29
37
  end
@@ -1,10 +1,11 @@
1
1
  module Inspec::Resources
2
2
  class Lines
3
- attr_reader :output
3
+ attr_reader :output, :exit_status
4
4
 
5
- def initialize(raw, desc)
5
+ def initialize(raw, desc, exit_status)
6
6
  @output = raw
7
7
  @desc = desc
8
+ @exit_status = exit_status
8
9
  end
9
10
 
10
11
  def to_s
@@ -58,7 +59,15 @@ module Inspec::Resources
58
59
  if cmd.exit_status != 0 || out =~ /Can't connect to IBM Db2 / || out.downcase =~ /^error:.*/
59
60
  raise Inspec::Exceptions::ResourceFailed, "IBM Db2 connection error: #{out}"
60
61
  else
61
- Lines.new(cmd.stdout.strip, "IBM Db2 Query: #{q}")
62
+ Lines.new(cmd.stdout.strip, "IBM Db2 Query: #{q}", cmd.exit_status)
63
+ end
64
+ end
65
+
66
+ def resource_id
67
+ if inspec.os.platform?("windows")
68
+ "ibmdb2_session:DatabaseName#{@db_name}"
69
+ else
70
+ "ibmdb2_session:DatabaseInstance:#{@db_instance}:DatabaseName#{@db_name}"
62
71
  end
63
72
  end
64
73
 
@@ -72,6 +72,10 @@ module Inspec::Resources
72
72
  "iis_app '#{@site_name}#{@path}'"
73
73
  end
74
74
 
75
+ def resource_id
76
+ @path
77
+ end
78
+
75
79
  private
76
80
 
77
81
  def iis_app
@@ -80,6 +80,10 @@ module Inspec::Resources
80
80
  "IIS App Pool '#{@pool_name}'"
81
81
  end
82
82
 
83
+ def resource_id
84
+ @pool_name
85
+ end
86
+
83
87
  private
84
88
 
85
89
  def iis_app_pool
@@ -77,6 +77,10 @@ module Inspec::Resources
77
77
  iis_site.nil? ? false : (iis_site[:bindings].include? binding)
78
78
  end
79
79
 
80
+ def resource_id
81
+ @site_name || "IIS Site"
82
+ end
83
+
80
84
  def to_s
81
85
  "iis_site '#{@site_name}'"
82
86
  end
@@ -46,6 +46,10 @@ module Inspec::Resources
46
46
  @params = conf.params
47
47
  end
48
48
 
49
+ def resource_id
50
+ @conf_path || "inetd.conf"
51
+ end
52
+
49
53
  def to_s
50
54
  "inetd.conf"
51
55
  end
@@ -83,6 +83,10 @@ module Inspec::Resources
83
83
  interface_info && Array(interface_info[:ipv6_addresses])
84
84
  end
85
85
 
86
+ def resource_id
87
+ @iface || "Interface"
88
+ end
89
+
86
90
  def to_s
87
91
  "Interface #{@iface}"
88
92
  end
@@ -62,6 +62,10 @@ module Inspec::Resources
62
62
  @ip6tables_cache = cmd.stdout.split("\n").map(&:strip)
63
63
  end
64
64
 
65
+ def resource_id
66
+ format("Ip6tables %s %s", @table && "table: #{@table}", @chain && "chain: #{@chain}").strip
67
+ end
68
+
65
69
  def to_s
66
70
  format("Ip6tables %s %s", @table && "table: #{@table}", @chain && "chain: #{@chain}").strip
67
71
  end
@@ -42,6 +42,10 @@ module Inspec::Resources
42
42
  @ipfilter_cache = cmd.stdout.split("\n").map(&:strip)
43
43
  end
44
44
 
45
+ def resource_id
46
+ "Ipfilter"
47
+ end
48
+
45
49
  def to_s
46
50
  "Ipfilter"
47
51
  end
@@ -41,6 +41,10 @@ module Inspec::Resources
41
41
  @ipnat_cache = cmd.stdout.split("\n").map(&:strip)
42
42
  end
43
43
 
44
+ def resource_id
45
+ "Ipnat"
46
+ end
47
+
44
48
  def to_s
45
49
  "Ipnat"
46
50
  end
@@ -69,6 +69,10 @@ module Inspec::Resources
69
69
  end
70
70
  end
71
71
 
72
+ def resource_id
73
+ format("Iptables %s %s", @table && "table: #{@table}", @chain && "chain: #{@chain}").strip
74
+ end
75
+
72
76
  def to_s
73
77
  format("Iptables %s %s", @table && "table: #{@table}", @chain && "chain: #{@chain}").strip
74
78
  end
@@ -59,6 +59,10 @@ module Inspec::Resources
59
59
  extract_value(key, params)
60
60
  end
61
61
 
62
+ def resource_id
63
+ @resource_name_supplement || "#{resource_base_name}'s content"
64
+ end
65
+
62
66
  def to_s
63
67
  "#{resource_base_name} #{@resource_name_supplement || "content"}"
64
68
  end
@@ -69,6 +69,10 @@ module Inspec::Resources
69
69
  cmd.exit_status == 0 ? cmd.stdout.delete("\n") : nil
70
70
  end
71
71
 
72
+ def resource_id
73
+ @module || "Kernel Module"
74
+ end
75
+
72
76
  def to_s
73
77
  "Kernel Module #{@module}"
74
78
  end
@@ -29,6 +29,10 @@ module Inspec::Resources
29
29
  cmd
30
30
  end
31
31
 
32
+ def resource_id
33
+ @parameter || "Kernel Parameter"
34
+ end
35
+
32
36
  def to_s
33
37
  "Kernel Parameter #{@parameter}"
34
38
  end
@@ -59,6 +59,10 @@ module Inspec::Resources
59
59
  @key.public_key.n.num_bytes * 8
60
60
  end
61
61
 
62
+ def resource_id
63
+ @key_path || "RSA Key"
64
+ end
65
+
62
66
  def to_s
63
67
  "rsa_key #{@key_path}"
64
68
  end
@@ -26,6 +26,10 @@ module Inspec::Resources
26
26
  super(CommandWrapper.wrap(command, options))
27
27
  end
28
28
 
29
+ def resource_id
30
+ @raw_command || "Kornshell command"
31
+ end
32
+
29
33
  def to_s
30
34
  "KornShell command #{@raw_command}"
31
35
  end
@@ -38,6 +38,10 @@ module Inspec::Resources
38
38
  @params = conf.params
39
39
  end
40
40
 
41
+ def resource_id
42
+ @conf_path
43
+ end
44
+
41
45
  def to_s
42
46
  "limits.conf"
43
47
  end
@@ -49,6 +49,10 @@ module Inspec::Resources
49
49
  @params = conf.params
50
50
  end
51
51
 
52
+ def resource_id
53
+ @conf_path
54
+ end
55
+
52
56
  def to_s
53
57
  "login.defs"
54
58
  end
@@ -19,6 +19,10 @@ module Inspec::Resources
19
19
  end
20
20
  end
21
21
 
22
+ def resource_id
23
+ @conf_path
24
+ end
25
+
22
26
  def to_s
23
27
  "MongoDB"
24
28
  end
@@ -24,6 +24,11 @@ module Inspec::Resources
24
24
  super(@conf_path)
25
25
  end
26
26
 
27
+ # set resource_id to "" if system is not able to determine the @conf_path
28
+ def resource_id
29
+ @conf_path || "mongodb_conf"
30
+ end
31
+
27
32
  private
28
33
 
29
34
  def parse(content)
@@ -4,9 +4,10 @@ module Inspec::Resources
4
4
  class Lines
5
5
  attr_reader :params
6
6
 
7
- def initialize(raw, desc)
7
+ def initialize(raw, desc, exit_status = nil)
8
8
  @params = raw
9
9
  @desc = desc
10
+ @exit_status = exit_status
10
11
  end
11
12
 
12
13
  def to_s
@@ -62,6 +63,10 @@ module Inspec::Resources
62
63
  raise Inspec::Exceptions::ResourceFailed, "Can't run MongoDB command Error: #{e.message}"
63
64
  end
64
65
 
66
+ def resource_id
67
+ "mongodb_session:User:#{@user}:Host:#{@host}:Database:#{@database}"
68
+ end
69
+
65
70
  private
66
71
 
67
72
  def create_session
@@ -51,6 +51,10 @@ module Inspec::Resources
51
51
  @mount_options[name]
52
52
  end
53
53
 
54
+ def resource_id
55
+ @path || "mount"
56
+ end
57
+
54
58
  def to_s
55
59
  "Mount #{@path}"
56
60
  end
@@ -80,6 +80,10 @@ module Inspec::Resources
80
80
  end
81
81
  end
82
82
 
83
+ def resource_id
84
+ "mssql_session:User:#{@user}:Host:#{@host}:Database:#{@db_name}:Instance:#{@instance}"
85
+ end
86
+
83
87
  def to_s
84
88
  "MSSQL session"
85
89
  end
@@ -19,6 +19,8 @@ module Inspec::Resources
19
19
  attr_reader :mssql_session, :sql_query
20
20
 
21
21
  def initialize(conf_param_name, opts = {})
22
+ @conf_param_name = conf_param_name
23
+ @opts = opts
22
24
  opts[:username] ||= "SA"
23
25
  @mssql_session = inspec.mssql_session(opts)
24
26
  setting = conf_param_name.to_s.gsub("_", " ").split.map(&:capitalize).join(" ")
@@ -37,6 +39,11 @@ module Inspec::Resources
37
39
  "MsSql DB Configuration"
38
40
  end
39
41
 
42
+ def resource_id
43
+ username = @opts[:username] || "SA"
44
+ "#{@conf_param_name}-#{username}"
45
+ end
46
+
40
47
  private
41
48
 
42
49
  def determine_system_configurations(setting)
@@ -121,6 +121,10 @@ module Inspec::Resources
121
121
  @files_contents[path] ||= read_file_content(path)
122
122
  end
123
123
 
124
+ def resource_id
125
+ @conf_path || "mysql_conf"
126
+ end
127
+
124
128
  def to_s
125
129
  "MySQL Configuration"
126
130
  end
@@ -43,6 +43,7 @@ module Inspec::Resources
43
43
  @host = host
44
44
  @port = port
45
45
  @socket = socket
46
+ @db = nil
46
47
  init_fallback if user.nil? || pass.nil?
47
48
  raise Inspec::Exceptions::ResourceFailed, "Can't run MySQL SQL checks without authentication." if @user.nil? || @pass.nil?
48
49
 
@@ -52,7 +53,9 @@ module Inspec::Resources
52
53
  def query(q, db = "")
53
54
  raise Inspec::Exceptions::ResourceFailed, "#{resource_exception_message}" if resource_failed?
54
55
 
55
- mysql_cmd = create_mysql_cmd(q, db)
56
+ @db = db
57
+ mysql_cmd = create_mysql_cmd(q, @db)
58
+
56
59
  cmd = if !@pass.nil?
57
60
  inspec.command(mysql_cmd, redact_regex: /(mysql -u\w+ -p).+(\s-(h|S).*)/)
58
61
  else
@@ -66,6 +69,10 @@ module Inspec::Resources
66
69
  end
67
70
  end
68
71
 
72
+ def resource_id
73
+ "mysql_session:User:#{@user}:Host:#{@host}:Database:#{@db}"
74
+ end
75
+
69
76
  def to_s
70
77
  "MySQL Session"
71
78
  end
@@ -18,12 +18,13 @@ module Inspec::Resources
18
18
  its('modules') { should include 'my_module' }
19
19
  end
20
20
  EXAMPLE
21
- attr_reader :params, :bin_dir
21
+ attr_reader :params, :bin_dir, :nginx_path
22
22
 
23
23
  def initialize(nginx_path = "/usr/sbin/nginx")
24
24
  return skip_resource "The `nginx` resource is not yet available on your OS." if inspec.os.windows?
25
25
  return skip_resource "The `nginx` binary not found in the path provided." unless inspec.command(nginx_path).exist?
26
26
 
27
+ @nginx_path = nginx_path
27
28
  cmd = inspec.command("#{nginx_path} -V 2>&1")
28
29
  if cmd.exit_status != 0
29
30
  return skip_resource "Error using the command nginx -V"
@@ -59,6 +60,10 @@ module Inspec::Resources
59
60
  @data.scan(/--with-(\S+)_module/).flatten
60
61
  end
61
62
 
63
+ def resource_id
64
+ nginx_path || "nginx"
65
+ end
66
+
62
67
  def to_s
63
68
  "Nginx Environment"
64
69
  end