inspec-core 2.1.67
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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +3136 -0
- data/Gemfile +56 -0
- data/LICENSE +14 -0
- data/MAINTAINERS.md +33 -0
- data/MAINTAINERS.toml +52 -0
- data/README.md +453 -0
- data/bin/inspec +12 -0
- data/docs/.gitignore +2 -0
- data/docs/README.md +40 -0
- data/docs/dev/control-eval.md +62 -0
- data/docs/dsl_inspec.md +258 -0
- data/docs/dsl_resource.md +100 -0
- data/docs/glossary.md +99 -0
- data/docs/habitat.md +192 -0
- data/docs/inspec_and_friends.md +114 -0
- data/docs/matchers.md +169 -0
- data/docs/migration.md +293 -0
- data/docs/platforms.md +119 -0
- data/docs/plugin_kitchen_inspec.md +50 -0
- data/docs/profiles.md +378 -0
- data/docs/reporters.md +105 -0
- data/docs/resources/aide_conf.md.erb +76 -0
- data/docs/resources/apache.md.erb +67 -0
- data/docs/resources/apache_conf.md.erb +68 -0
- data/docs/resources/apt.md.erb +71 -0
- data/docs/resources/audit_policy.md.erb +47 -0
- data/docs/resources/auditd.md.erb +79 -0
- data/docs/resources/auditd_conf.md.erb +68 -0
- data/docs/resources/bash.md.erb +75 -0
- data/docs/resources/bond.md.erb +90 -0
- data/docs/resources/bridge.md.erb +57 -0
- data/docs/resources/bsd_service.md.erb +67 -0
- data/docs/resources/chocolatey_package.md.erb +58 -0
- data/docs/resources/command.md.erb +138 -0
- data/docs/resources/cpan.md.erb +79 -0
- data/docs/resources/cran.md.erb +64 -0
- data/docs/resources/crontab.md.erb +89 -0
- data/docs/resources/csv.md.erb +54 -0
- data/docs/resources/dh_params.md.erb +205 -0
- data/docs/resources/directory.md.erb +30 -0
- data/docs/resources/docker.md.erb +219 -0
- data/docs/resources/docker_container.md.erb +103 -0
- data/docs/resources/docker_image.md.erb +94 -0
- data/docs/resources/docker_service.md.erb +114 -0
- data/docs/resources/elasticsearch.md.erb +242 -0
- data/docs/resources/etc_fstab.md.erb +125 -0
- data/docs/resources/etc_group.md.erb +75 -0
- data/docs/resources/etc_hosts.md.erb +78 -0
- data/docs/resources/etc_hosts_allow.md.erb +74 -0
- data/docs/resources/etc_hosts_deny.md.erb +74 -0
- data/docs/resources/file.md.erb +526 -0
- data/docs/resources/filesystem.md.erb +41 -0
- data/docs/resources/firewalld.md.erb +107 -0
- data/docs/resources/gem.md.erb +79 -0
- data/docs/resources/group.md.erb +61 -0
- data/docs/resources/grub_conf.md.erb +101 -0
- data/docs/resources/host.md.erb +86 -0
- data/docs/resources/http.md.erb +197 -0
- data/docs/resources/iis_app.md.erb +122 -0
- data/docs/resources/iis_site.md.erb +135 -0
- data/docs/resources/inetd_conf.md.erb +94 -0
- data/docs/resources/ini.md.erb +76 -0
- data/docs/resources/interface.md.erb +58 -0
- data/docs/resources/iptables.md.erb +64 -0
- data/docs/resources/json.md.erb +63 -0
- data/docs/resources/kernel_module.md.erb +120 -0
- data/docs/resources/kernel_parameter.md.erb +53 -0
- data/docs/resources/key_rsa.md.erb +85 -0
- data/docs/resources/launchd_service.md.erb +57 -0
- data/docs/resources/limits_conf.md.erb +75 -0
- data/docs/resources/login_defs.md.erb +71 -0
- data/docs/resources/mount.md.erb +69 -0
- data/docs/resources/mssql_session.md.erb +60 -0
- data/docs/resources/mysql_conf.md.erb +99 -0
- data/docs/resources/mysql_session.md.erb +74 -0
- data/docs/resources/nginx.md.erb +79 -0
- data/docs/resources/nginx_conf.md.erb +138 -0
- data/docs/resources/npm.md.erb +60 -0
- data/docs/resources/ntp_conf.md.erb +60 -0
- data/docs/resources/oneget.md.erb +53 -0
- data/docs/resources/oracledb_session.md.erb +52 -0
- data/docs/resources/os.md.erb +141 -0
- data/docs/resources/os_env.md.erb +91 -0
- data/docs/resources/package.md.erb +120 -0
- data/docs/resources/packages.md.erb +67 -0
- data/docs/resources/parse_config.md.erb +103 -0
- data/docs/resources/parse_config_file.md.erb +138 -0
- data/docs/resources/passwd.md.erb +141 -0
- data/docs/resources/pip.md.erb +67 -0
- data/docs/resources/port.md.erb +137 -0
- data/docs/resources/postgres_conf.md.erb +79 -0
- data/docs/resources/postgres_hba_conf.md.erb +93 -0
- data/docs/resources/postgres_ident_conf.md.erb +76 -0
- data/docs/resources/postgres_session.md.erb +69 -0
- data/docs/resources/powershell.md.erb +102 -0
- data/docs/resources/processes.md.erb +109 -0
- data/docs/resources/rabbitmq_config.md.erb +41 -0
- data/docs/resources/registry_key.md.erb +158 -0
- data/docs/resources/runit_service.md.erb +57 -0
- data/docs/resources/security_policy.md.erb +47 -0
- data/docs/resources/service.md.erb +121 -0
- data/docs/resources/shadow.md.erb +146 -0
- data/docs/resources/ssh_config.md.erb +73 -0
- data/docs/resources/sshd_config.md.erb +83 -0
- data/docs/resources/ssl.md.erb +119 -0
- data/docs/resources/sys_info.md.erb +42 -0
- data/docs/resources/systemd_service.md.erb +57 -0
- data/docs/resources/sysv_service.md.erb +57 -0
- data/docs/resources/upstart_service.md.erb +57 -0
- data/docs/resources/user.md.erb +140 -0
- data/docs/resources/users.md.erb +127 -0
- data/docs/resources/vbscript.md.erb +55 -0
- data/docs/resources/virtualization.md.erb +57 -0
- data/docs/resources/windows_feature.md.erb +47 -0
- data/docs/resources/windows_hotfix.md.erb +53 -0
- data/docs/resources/windows_task.md.erb +95 -0
- data/docs/resources/wmi.md.erb +81 -0
- data/docs/resources/x509_certificate.md.erb +151 -0
- data/docs/resources/xinetd_conf.md.erb +156 -0
- data/docs/resources/xml.md.erb +85 -0
- data/docs/resources/yaml.md.erb +69 -0
- data/docs/resources/yum.md.erb +98 -0
- data/docs/resources/zfs_dataset.md.erb +53 -0
- data/docs/resources/zfs_pool.md.erb +47 -0
- data/docs/ruby_usage.md +203 -0
- data/docs/shared/matcher_be.md.erb +1 -0
- data/docs/shared/matcher_cmp.md.erb +43 -0
- data/docs/shared/matcher_eq.md.erb +3 -0
- data/docs/shared/matcher_include.md.erb +1 -0
- data/docs/shared/matcher_match.md.erb +1 -0
- data/docs/shell.md +217 -0
- data/examples/README.md +8 -0
- data/examples/inheritance/README.md +65 -0
- data/examples/inheritance/controls/example.rb +14 -0
- data/examples/inheritance/inspec.yml +15 -0
- data/examples/kitchen-ansible/.kitchen.yml +25 -0
- data/examples/kitchen-ansible/Gemfile +19 -0
- data/examples/kitchen-ansible/README.md +53 -0
- data/examples/kitchen-ansible/files/nginx.repo +6 -0
- data/examples/kitchen-ansible/tasks/main.yml +16 -0
- data/examples/kitchen-ansible/test/integration/default/default.yml +5 -0
- data/examples/kitchen-ansible/test/integration/default/web_spec.rb +28 -0
- data/examples/kitchen-chef/.kitchen.yml +20 -0
- data/examples/kitchen-chef/Berksfile +3 -0
- data/examples/kitchen-chef/Gemfile +19 -0
- data/examples/kitchen-chef/README.md +27 -0
- data/examples/kitchen-chef/metadata.rb +7 -0
- data/examples/kitchen-chef/recipes/default.rb +6 -0
- data/examples/kitchen-chef/recipes/nginx.rb +30 -0
- data/examples/kitchen-chef/test/integration/default/web_spec.rb +28 -0
- data/examples/kitchen-puppet/.kitchen.yml +23 -0
- data/examples/kitchen-puppet/Gemfile +20 -0
- data/examples/kitchen-puppet/Puppetfile +25 -0
- data/examples/kitchen-puppet/README.md +53 -0
- data/examples/kitchen-puppet/manifests/site.pp +33 -0
- data/examples/kitchen-puppet/metadata.json +11 -0
- data/examples/kitchen-puppet/modules/.gitkeep +0 -0
- data/examples/kitchen-puppet/test/integration/default/web_spec.rb +28 -0
- data/examples/meta-profile/README.md +37 -0
- data/examples/meta-profile/controls/example.rb +13 -0
- data/examples/meta-profile/inspec.yml +13 -0
- data/examples/profile-attribute.yml +2 -0
- data/examples/profile-attribute/README.md +14 -0
- data/examples/profile-attribute/controls/example.rb +11 -0
- data/examples/profile-attribute/inspec.yml +8 -0
- data/examples/profile-sensitive/README.md +29 -0
- data/examples/profile-sensitive/controls/sensitive-failures.rb +9 -0
- data/examples/profile-sensitive/controls/sensitive.rb +9 -0
- data/examples/profile-sensitive/inspec.yml +8 -0
- data/examples/profile/README.md +48 -0
- data/examples/profile/controls/example.rb +23 -0
- data/examples/profile/controls/gordon.rb +36 -0
- data/examples/profile/controls/meta.rb +34 -0
- data/examples/profile/inspec.yml +10 -0
- data/examples/profile/libraries/gordon_config.rb +59 -0
- data/inspec-core.gemspec +43 -0
- data/lib/bundles/README.md +3 -0
- data/lib/bundles/inspec-artifact.rb +7 -0
- data/lib/bundles/inspec-artifact/README.md +1 -0
- data/lib/bundles/inspec-artifact/cli.rb +277 -0
- data/lib/bundles/inspec-compliance.rb +16 -0
- data/lib/bundles/inspec-compliance/.kitchen.yml +20 -0
- data/lib/bundles/inspec-compliance/README.md +193 -0
- data/lib/bundles/inspec-compliance/api.rb +360 -0
- data/lib/bundles/inspec-compliance/api/login.rb +193 -0
- data/lib/bundles/inspec-compliance/bootstrap.sh +41 -0
- data/lib/bundles/inspec-compliance/cli.rb +260 -0
- data/lib/bundles/inspec-compliance/configuration.rb +103 -0
- data/lib/bundles/inspec-compliance/http.rb +125 -0
- data/lib/bundles/inspec-compliance/images/cc-token.png +0 -0
- data/lib/bundles/inspec-compliance/support.rb +36 -0
- data/lib/bundles/inspec-compliance/target.rb +106 -0
- data/lib/bundles/inspec-compliance/test/integration/default/cli.rb +93 -0
- data/lib/bundles/inspec-habitat.rb +12 -0
- data/lib/bundles/inspec-habitat/cli.rb +36 -0
- data/lib/bundles/inspec-habitat/log.rb +10 -0
- data/lib/bundles/inspec-habitat/profile.rb +391 -0
- data/lib/bundles/inspec-init.rb +8 -0
- data/lib/bundles/inspec-init/README.md +31 -0
- data/lib/bundles/inspec-init/cli.rb +97 -0
- data/lib/bundles/inspec-init/templates/profile/README.md +3 -0
- data/lib/bundles/inspec-init/templates/profile/controls/example.rb +19 -0
- data/lib/bundles/inspec-init/templates/profile/inspec.yml +8 -0
- data/lib/bundles/inspec-init/templates/profile/libraries/.gitkeep +0 -0
- data/lib/bundles/inspec-supermarket.rb +13 -0
- data/lib/bundles/inspec-supermarket/README.md +45 -0
- data/lib/bundles/inspec-supermarket/api.rb +84 -0
- data/lib/bundles/inspec-supermarket/cli.rb +73 -0
- data/lib/bundles/inspec-supermarket/target.rb +34 -0
- data/lib/fetchers/git.rb +163 -0
- data/lib/fetchers/local.rb +74 -0
- data/lib/fetchers/mock.rb +35 -0
- data/lib/fetchers/url.rb +247 -0
- data/lib/inspec.rb +24 -0
- data/lib/inspec/archive/tar.rb +29 -0
- data/lib/inspec/archive/zip.rb +19 -0
- data/lib/inspec/backend.rb +93 -0
- data/lib/inspec/base_cli.rb +368 -0
- data/lib/inspec/cached_fetcher.rb +66 -0
- data/lib/inspec/cli.rb +292 -0
- data/lib/inspec/completions/bash.sh.erb +45 -0
- data/lib/inspec/completions/fish.sh.erb +34 -0
- data/lib/inspec/completions/zsh.sh.erb +61 -0
- data/lib/inspec/control_eval_context.rb +179 -0
- data/lib/inspec/dependencies/cache.rb +72 -0
- data/lib/inspec/dependencies/dependency_set.rb +92 -0
- data/lib/inspec/dependencies/lockfile.rb +115 -0
- data/lib/inspec/dependencies/requirement.rb +123 -0
- data/lib/inspec/dependencies/resolver.rb +86 -0
- data/lib/inspec/describe.rb +27 -0
- data/lib/inspec/dsl.rb +66 -0
- data/lib/inspec/dsl_shared.rb +33 -0
- data/lib/inspec/env_printer.rb +157 -0
- data/lib/inspec/errors.rb +14 -0
- data/lib/inspec/exceptions.rb +12 -0
- data/lib/inspec/expect.rb +45 -0
- data/lib/inspec/fetcher.rb +45 -0
- data/lib/inspec/file_provider.rb +275 -0
- data/lib/inspec/formatters.rb +3 -0
- data/lib/inspec/formatters/base.rb +259 -0
- data/lib/inspec/formatters/json_rspec.rb +20 -0
- data/lib/inspec/formatters/show_progress.rb +12 -0
- data/lib/inspec/library_eval_context.rb +58 -0
- data/lib/inspec/log.rb +11 -0
- data/lib/inspec/metadata.rb +247 -0
- data/lib/inspec/method_source.rb +24 -0
- data/lib/inspec/objects.rb +14 -0
- data/lib/inspec/objects/attribute.rb +75 -0
- data/lib/inspec/objects/control.rb +61 -0
- data/lib/inspec/objects/describe.rb +92 -0
- data/lib/inspec/objects/each_loop.rb +36 -0
- data/lib/inspec/objects/list.rb +15 -0
- data/lib/inspec/objects/or_test.rb +40 -0
- data/lib/inspec/objects/ruby_helper.rb +15 -0
- data/lib/inspec/objects/tag.rb +27 -0
- data/lib/inspec/objects/test.rb +87 -0
- data/lib/inspec/objects/value.rb +27 -0
- data/lib/inspec/plugins.rb +60 -0
- data/lib/inspec/plugins/cli.rb +24 -0
- data/lib/inspec/plugins/fetcher.rb +86 -0
- data/lib/inspec/plugins/resource.rb +135 -0
- data/lib/inspec/plugins/secret.rb +15 -0
- data/lib/inspec/plugins/source_reader.rb +40 -0
- data/lib/inspec/polyfill.rb +12 -0
- data/lib/inspec/profile.rb +513 -0
- data/lib/inspec/profile_context.rb +208 -0
- data/lib/inspec/profile_vendor.rb +66 -0
- data/lib/inspec/reporters.rb +60 -0
- data/lib/inspec/reporters/automate.rb +76 -0
- data/lib/inspec/reporters/base.rb +25 -0
- data/lib/inspec/reporters/cli.rb +356 -0
- data/lib/inspec/reporters/json.rb +116 -0
- data/lib/inspec/reporters/json_min.rb +48 -0
- data/lib/inspec/reporters/junit.rb +78 -0
- data/lib/inspec/require_loader.rb +33 -0
- data/lib/inspec/resource.rb +190 -0
- data/lib/inspec/rule.rb +280 -0
- data/lib/inspec/runner.rb +345 -0
- data/lib/inspec/runner_mock.rb +41 -0
- data/lib/inspec/runner_rspec.rb +175 -0
- data/lib/inspec/runtime_profile.rb +26 -0
- data/lib/inspec/schema.rb +213 -0
- data/lib/inspec/secrets.rb +19 -0
- data/lib/inspec/secrets/yaml.rb +30 -0
- data/lib/inspec/shell.rb +220 -0
- data/lib/inspec/shell_detector.rb +90 -0
- data/lib/inspec/source_reader.rb +29 -0
- data/lib/inspec/version.rb +8 -0
- data/lib/matchers/matchers.rb +339 -0
- data/lib/resources/aide_conf.rb +151 -0
- data/lib/resources/apache.rb +48 -0
- data/lib/resources/apache_conf.rb +149 -0
- data/lib/resources/apt.rb +149 -0
- data/lib/resources/audit_policy.rb +63 -0
- data/lib/resources/auditd.rb +231 -0
- data/lib/resources/auditd_conf.rb +46 -0
- data/lib/resources/bash.rb +35 -0
- data/lib/resources/bond.rb +69 -0
- data/lib/resources/bridge.rb +122 -0
- data/lib/resources/chocolatey_package.rb +78 -0
- data/lib/resources/command.rb +73 -0
- data/lib/resources/cpan.rb +58 -0
- data/lib/resources/cran.rb +64 -0
- data/lib/resources/crontab.rb +169 -0
- data/lib/resources/csv.rb +56 -0
- data/lib/resources/dh_params.rb +77 -0
- data/lib/resources/directory.rb +25 -0
- data/lib/resources/docker.rb +236 -0
- data/lib/resources/docker_container.rb +89 -0
- data/lib/resources/docker_image.rb +83 -0
- data/lib/resources/docker_object.rb +57 -0
- data/lib/resources/docker_service.rb +90 -0
- data/lib/resources/elasticsearch.rb +169 -0
- data/lib/resources/etc_fstab.rb +94 -0
- data/lib/resources/etc_group.rb +154 -0
- data/lib/resources/etc_hosts.rb +66 -0
- data/lib/resources/etc_hosts_allow_deny.rb +112 -0
- data/lib/resources/file.rb +298 -0
- data/lib/resources/filesystem.rb +31 -0
- data/lib/resources/firewalld.rb +143 -0
- data/lib/resources/gem.rb +70 -0
- data/lib/resources/groups.rb +215 -0
- data/lib/resources/grub_conf.rb +227 -0
- data/lib/resources/host.rb +306 -0
- data/lib/resources/http.rb +253 -0
- data/lib/resources/iis_app.rb +101 -0
- data/lib/resources/iis_site.rb +148 -0
- data/lib/resources/inetd_conf.rb +54 -0
- data/lib/resources/ini.rb +29 -0
- data/lib/resources/interface.rb +129 -0
- data/lib/resources/iptables.rb +80 -0
- data/lib/resources/json.rb +111 -0
- data/lib/resources/kernel_module.rb +107 -0
- data/lib/resources/kernel_parameter.rb +58 -0
- data/lib/resources/key_rsa.rb +63 -0
- data/lib/resources/limits_conf.rb +46 -0
- data/lib/resources/login_def.rb +57 -0
- data/lib/resources/mount.rb +88 -0
- data/lib/resources/mssql_session.rb +101 -0
- data/lib/resources/mysql.rb +82 -0
- data/lib/resources/mysql_conf.rb +127 -0
- data/lib/resources/mysql_session.rb +85 -0
- data/lib/resources/nginx.rb +96 -0
- data/lib/resources/nginx_conf.rb +226 -0
- data/lib/resources/npm.rb +48 -0
- data/lib/resources/ntp_conf.rb +51 -0
- data/lib/resources/oneget.rb +71 -0
- data/lib/resources/oracledb_session.rb +139 -0
- data/lib/resources/os.rb +36 -0
- data/lib/resources/os_env.rb +86 -0
- data/lib/resources/package.rb +370 -0
- data/lib/resources/packages.rb +111 -0
- data/lib/resources/parse_config.rb +112 -0
- data/lib/resources/passwd.rb +76 -0
- data/lib/resources/pip.rb +130 -0
- data/lib/resources/platform.rb +109 -0
- data/lib/resources/port.rb +771 -0
- data/lib/resources/postgres.rb +131 -0
- data/lib/resources/postgres_conf.rb +114 -0
- data/lib/resources/postgres_hba_conf.rb +90 -0
- data/lib/resources/postgres_ident_conf.rb +79 -0
- data/lib/resources/postgres_session.rb +71 -0
- data/lib/resources/powershell.rb +67 -0
- data/lib/resources/processes.rb +204 -0
- data/lib/resources/rabbitmq_conf.rb +51 -0
- data/lib/resources/registry_key.rb +297 -0
- data/lib/resources/security_policy.rb +180 -0
- data/lib/resources/service.rb +794 -0
- data/lib/resources/shadow.rb +159 -0
- data/lib/resources/ssh_conf.rb +97 -0
- data/lib/resources/ssl.rb +99 -0
- data/lib/resources/sys_info.rb +28 -0
- data/lib/resources/toml.rb +32 -0
- data/lib/resources/users.rb +654 -0
- data/lib/resources/vbscript.rb +68 -0
- data/lib/resources/virtualization.rb +247 -0
- data/lib/resources/windows_feature.rb +84 -0
- data/lib/resources/windows_hotfix.rb +35 -0
- data/lib/resources/windows_task.rb +102 -0
- data/lib/resources/wmi.rb +110 -0
- data/lib/resources/x509_certificate.rb +137 -0
- data/lib/resources/xinetd.rb +106 -0
- data/lib/resources/xml.rb +46 -0
- data/lib/resources/yaml.rb +43 -0
- data/lib/resources/yum.rb +180 -0
- data/lib/resources/zfs_dataset.rb +60 -0
- data/lib/resources/zfs_pool.rb +49 -0
- data/lib/source_readers/flat.rb +39 -0
- data/lib/source_readers/inspec.rb +75 -0
- data/lib/utils/command_wrapper.rb +27 -0
- data/lib/utils/convert.rb +12 -0
- data/lib/utils/database_helpers.rb +77 -0
- data/lib/utils/enumerable_delegation.rb +9 -0
- data/lib/utils/erlang_parser.rb +192 -0
- data/lib/utils/file_reader.rb +25 -0
- data/lib/utils/filter.rb +273 -0
- data/lib/utils/filter_array.rb +27 -0
- data/lib/utils/find_files.rb +47 -0
- data/lib/utils/hash.rb +41 -0
- data/lib/utils/json_log.rb +18 -0
- data/lib/utils/latest_version.rb +22 -0
- data/lib/utils/modulator.rb +12 -0
- data/lib/utils/nginx_parser.rb +105 -0
- data/lib/utils/object_traversal.rb +49 -0
- data/lib/utils/parser.rb +274 -0
- data/lib/utils/pkey_reader.rb +15 -0
- data/lib/utils/plugin_registry.rb +93 -0
- data/lib/utils/simpleconfig.rb +120 -0
- data/lib/utils/spdx.rb +13 -0
- data/lib/utils/spdx.txt +344 -0
- metadata +713 -0
@@ -0,0 +1,30 @@
|
|
1
|
+
---
|
2
|
+
title: About the directory Resource
|
3
|
+
platform: os
|
4
|
+
---
|
5
|
+
|
6
|
+
# directory
|
7
|
+
|
8
|
+
Use the `directory` InSpec audit resource to test if the file type is a directory. This is equivalent to using the `file` resource and the `be_directory` matcher, but provides a simpler and more direct way to test directories.
|
9
|
+
|
10
|
+
<br>
|
11
|
+
|
12
|
+
## Syntax
|
13
|
+
|
14
|
+
A `directory` resource block declares the location of the directory to be tested, and then one (or more) matchers.
|
15
|
+
|
16
|
+
describe directory('path') do
|
17
|
+
its('property') { should cmp 'value' }
|
18
|
+
end
|
19
|
+
|
20
|
+
<br>
|
21
|
+
|
22
|
+
## Properties
|
23
|
+
|
24
|
+
All of the properties available to `file` may be used with `directory`.
|
25
|
+
|
26
|
+
<br>
|
27
|
+
|
28
|
+
## Matchers
|
29
|
+
|
30
|
+
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
@@ -0,0 +1,219 @@
|
|
1
|
+
---
|
2
|
+
title: About the docker Resource
|
3
|
+
platform: linux
|
4
|
+
---
|
5
|
+
|
6
|
+
# docker
|
7
|
+
|
8
|
+
Use the `docker` InSpec audit resource to test configuration data for the Docker daemon. It is a very comprehensive resource. See also: [docker_container](https://www.inspec.io/docs/reference/resources/docker_container/) and [docker_image](https://www.inspec.io/docs/reference/resources/docker_image/), too.
|
9
|
+
|
10
|
+
<br>
|
11
|
+
|
12
|
+
## Syntax
|
13
|
+
|
14
|
+
A `docker` resource block declares allows you to write test for many containers:
|
15
|
+
|
16
|
+
describe docker.containers do
|
17
|
+
its('images') { should_not include 'u12:latest' }
|
18
|
+
end
|
19
|
+
|
20
|
+
or:
|
21
|
+
|
22
|
+
describe docker.containers.where { names == 'flamboyant_colden' } do
|
23
|
+
it { should be_running }
|
24
|
+
end
|
25
|
+
|
26
|
+
where
|
27
|
+
|
28
|
+
* `.where()` may specify a specific item and value, to which the resource parameters are compared
|
29
|
+
* `commands`, `ids`, `images`, `labels`, `local_volumes`, `mounts`, `names`, `networks`, `ports`, `sizes` and `status` are valid parameters for `containers`
|
30
|
+
|
31
|
+
The `docker` resource block also declares allows you to write test for many images:
|
32
|
+
|
33
|
+
describe docker.images do
|
34
|
+
its('repositories') { should_not include 'inssecure_image' }
|
35
|
+
end
|
36
|
+
|
37
|
+
or if you want to query specific images:
|
38
|
+
|
39
|
+
describe docker.images.where { repository == 'ubuntu' && tag == '12.04' } do
|
40
|
+
it { should_not exist }
|
41
|
+
end
|
42
|
+
|
43
|
+
where
|
44
|
+
|
45
|
+
* `.where()` may specify a specific filter and expected value, against which parameters are compared
|
46
|
+
|
47
|
+
<br>
|
48
|
+
|
49
|
+
## Examples
|
50
|
+
|
51
|
+
The following examples show how to use this InSpec audit resource.
|
52
|
+
|
53
|
+
### Return all running containers
|
54
|
+
|
55
|
+
docker.containers.running?.ids.each do |id|
|
56
|
+
describe docker.object(id) do
|
57
|
+
its('State.Health.Status') { should eq 'healthy' }
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
### Verify a Docker Server and Client version
|
62
|
+
|
63
|
+
describe docker.version do
|
64
|
+
its('Server.Version') { should cmp >= '1.12'}
|
65
|
+
its('Client.Version') { should cmp >= '1.12'}
|
66
|
+
end
|
67
|
+
|
68
|
+
### Iterate over all containers to verify host coniguration
|
69
|
+
|
70
|
+
docker.containers.ids.each do |id|
|
71
|
+
# call Docker inspect for a specific container id
|
72
|
+
describe docker.object(id) do
|
73
|
+
its(%w(HostConfig Privileged)) { should cmp false }
|
74
|
+
its(%w(HostConfig Privileged)) { should_not cmp true }
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
### Iterate over all images to verify the container was built without ADD instruction
|
79
|
+
|
80
|
+
docker.images.ids.each do |id|
|
81
|
+
describe command("docker history #{id}| grep 'ADD'") do
|
82
|
+
its('stdout') { should eq '' }
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
### Verify that health-checks are enabled for a container
|
87
|
+
|
88
|
+
describe docker.object('71b5df59442b') do
|
89
|
+
its(%w(Config Healthcheck)) { should_not eq nil }
|
90
|
+
end
|
91
|
+
|
92
|
+
<br>
|
93
|
+
|
94
|
+
## How to run the DevSec Docker baseline profile
|
95
|
+
|
96
|
+
There are two ways to run the `docker-baseline` profile to test Docker via the `docker` resource.
|
97
|
+
|
98
|
+
Clone the profile:
|
99
|
+
|
100
|
+
$ git clone https://github.com/dev-sec/cis-docker-benchmark.git
|
101
|
+
|
102
|
+
and then run:
|
103
|
+
|
104
|
+
$ inspec exec cis-docker-benchmark
|
105
|
+
|
106
|
+
Or execute the profile directly via URL:
|
107
|
+
|
108
|
+
$ inspec exec https://github.com/dev-sec/cis-docker-benchmark
|
109
|
+
|
110
|
+
<br>
|
111
|
+
|
112
|
+
## Resource Parameters
|
113
|
+
|
114
|
+
* `commands`, `ids`, `images`, `labels`, `local_volumes`, `mounts`, `names`, `networks`, `ports`, `sizes` and `status` are valid parameters for `containers`
|
115
|
+
|
116
|
+
<br>
|
117
|
+
|
118
|
+
## Resource Parameter Examples
|
119
|
+
|
120
|
+
### containers
|
121
|
+
|
122
|
+
`containers` returns information about containers as returned by [docker ps -a](https://docs.docker.com/engine/reference/commandline/ps/).
|
123
|
+
|
124
|
+
describe docker.containers do
|
125
|
+
its('ids') { should include 'sha:71b5df59...442b' }
|
126
|
+
its('commands') { should_not include '/bin/sh' }
|
127
|
+
its('images') { should_not include 'u12:latest' }
|
128
|
+
its('ports') { should include '0.0.0.0:1234->1234/tcp' }
|
129
|
+
its('labels') { should include 'License=GPLv2,Vendor=CentOS' }
|
130
|
+
end
|
131
|
+
|
132
|
+
### object('id')
|
133
|
+
|
134
|
+
`object` returns low-level information about Docker objects. It is calling [docker inspect](https://docs.docker.com/engine/reference/commandline/info/) under the hood.
|
135
|
+
|
136
|
+
describe docker.object(id) do
|
137
|
+
its('Configuration.Path') { should eq 'value' }
|
138
|
+
end
|
139
|
+
|
140
|
+
### images
|
141
|
+
|
142
|
+
`images` returns information about a Docker image as returned by [docker images](https://docs.docker.com/engine/reference/commandline/images/).
|
143
|
+
|
144
|
+
describe docker.images do
|
145
|
+
its('ids') { should include 'sha:12b5df59...442b' }
|
146
|
+
its('repositories') { should_not include 'my_image' }
|
147
|
+
its('tags') { should_not include 'unwanted_tag' }
|
148
|
+
its('sizes') { should_not include "1.41 GB" }
|
149
|
+
end
|
150
|
+
|
151
|
+
### info
|
152
|
+
|
153
|
+
`info` returns the parsed result of [docker info](https://docs.docker.com/engine/reference/commandline/info/)
|
154
|
+
|
155
|
+
describe docker.info do
|
156
|
+
its('Configuration.Path') { should eq 'value' }
|
157
|
+
end
|
158
|
+
|
159
|
+
### version
|
160
|
+
|
161
|
+
`info` returns the parsed result of [docker version](https://docs.docker.com/engine/reference/commandline/version/)
|
162
|
+
|
163
|
+
describe docker.version do
|
164
|
+
its('Server.Version') { should cmp >= '1.12'}
|
165
|
+
its('Client.Version') { should cmp >= '1.12'}
|
166
|
+
end
|
167
|
+
|
168
|
+
<br>
|
169
|
+
|
170
|
+
## Properties
|
171
|
+
|
172
|
+
* `id`, `image`, `repo`, `tag`, `ports`, `command`
|
173
|
+
|
174
|
+
<br>
|
175
|
+
|
176
|
+
## Property Examples
|
177
|
+
|
178
|
+
### id
|
179
|
+
|
180
|
+
describe docker_container(name: 'an-echo-server') do
|
181
|
+
its('id') { should_not eq '' }
|
182
|
+
end
|
183
|
+
|
184
|
+
### image
|
185
|
+
|
186
|
+
describe docker_container(name: 'an-echo-server') do
|
187
|
+
its('image') { should eq 'busybox:latest' }
|
188
|
+
end
|
189
|
+
|
190
|
+
### repo
|
191
|
+
|
192
|
+
describe docker_container(name: 'an-echo-server') do
|
193
|
+
its('repo') { should eq 'busybox' }
|
194
|
+
end
|
195
|
+
|
196
|
+
### tag
|
197
|
+
|
198
|
+
describe docker_container(name: 'an-echo-server') do
|
199
|
+
its('tag') { should eq 'latest' }
|
200
|
+
end
|
201
|
+
|
202
|
+
### ports
|
203
|
+
|
204
|
+
describe docker_container(name: 'an-echo-server') do
|
205
|
+
its('ports') { should eq "0.0.0.0:1234->1234/tcp" }
|
206
|
+
end
|
207
|
+
|
208
|
+
### command
|
209
|
+
|
210
|
+
describe docker_container(name: 'an-echo-server') do
|
211
|
+
its('command') { should eq 'nc -ll -p 1234 -e /bin/cat' }
|
212
|
+
end
|
213
|
+
|
214
|
+
<br>
|
215
|
+
|
216
|
+
## Matchers
|
217
|
+
|
218
|
+
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
219
|
+
|
@@ -0,0 +1,103 @@
|
|
1
|
+
---
|
2
|
+
title: About the docker_container Resource
|
3
|
+
platform: linux
|
4
|
+
---
|
5
|
+
|
6
|
+
# docker_container
|
7
|
+
|
8
|
+
Use the `docker_container` InSpec audit resource to test a Docker container.
|
9
|
+
|
10
|
+
<br>
|
11
|
+
|
12
|
+
## Syntax
|
13
|
+
|
14
|
+
A `docker_container` resource block declares the configuration data to be tested:
|
15
|
+
|
16
|
+
describe docker_container('container') do
|
17
|
+
it { should exist }
|
18
|
+
it { should be_running }
|
19
|
+
its('id') { should_not eq '' }
|
20
|
+
its('image') { should eq 'busybox:latest' }
|
21
|
+
its('repo') { should eq 'busybox' }
|
22
|
+
its('tag') { should eq 'latest' }
|
23
|
+
its('ports') { should eq [] }
|
24
|
+
its('command') { should eq 'nc -ll -p 1234 -e /bin/cat' }
|
25
|
+
end
|
26
|
+
|
27
|
+
<br>
|
28
|
+
|
29
|
+
## Resource Parameter Examples
|
30
|
+
|
31
|
+
### name
|
32
|
+
|
33
|
+
The container name can also be passed with the `name` resource parameter:
|
34
|
+
|
35
|
+
describe docker_container(name: 'an-echo-server') do
|
36
|
+
it { should exist }
|
37
|
+
it { should be_running }
|
38
|
+
end
|
39
|
+
|
40
|
+
### id
|
41
|
+
|
42
|
+
Alternatively, you can pass in the container id:
|
43
|
+
|
44
|
+
describe docker_container(id: '71b5df59442b') do
|
45
|
+
it { should exist }
|
46
|
+
it { should be_running }
|
47
|
+
end
|
48
|
+
|
49
|
+
<br>
|
50
|
+
|
51
|
+
## Property Examples
|
52
|
+
|
53
|
+
The following examples show how to use this InSpec resource.
|
54
|
+
|
55
|
+
### id
|
56
|
+
|
57
|
+
The `id` property tests the container id:
|
58
|
+
|
59
|
+
its('id') { should eq 'sha:71b5df59...442b' }
|
60
|
+
|
61
|
+
### repo
|
62
|
+
|
63
|
+
The `repo` property tests the value of the image repository:
|
64
|
+
|
65
|
+
its('repo') { should eq 'busybox' }
|
66
|
+
|
67
|
+
### tag
|
68
|
+
|
69
|
+
The `tag` property tests the value of the image tag:
|
70
|
+
|
71
|
+
its('tag') { should eq 'latest' }
|
72
|
+
|
73
|
+
### ports
|
74
|
+
|
75
|
+
The `ports` property tests the value the Docker ports:
|
76
|
+
|
77
|
+
its('ports') { should eq '0.0.0.0:1234->1234/tcp' }
|
78
|
+
|
79
|
+
### command
|
80
|
+
|
81
|
+
The `command` property tests the value of the container run command:
|
82
|
+
|
83
|
+
its('command') { should eq 'nc -ll -p 1234 -e /bin/cat' }
|
84
|
+
|
85
|
+
|
86
|
+
### Verify a running container:
|
87
|
+
|
88
|
+
describe docker_container('an-echo-server') do
|
89
|
+
it { should exist }
|
90
|
+
it { should be_running }
|
91
|
+
its('id') { should_not eq '' }
|
92
|
+
its('image') { should eq 'busybox:latest' }
|
93
|
+
its('repo') { should eq 'busybox' }
|
94
|
+
its('tag') { should eq 'latest' }
|
95
|
+
its('ports') { should eq [] }
|
96
|
+
its('command') { should eq 'nc -ll -p 1234 -e /bin/cat' }
|
97
|
+
end
|
98
|
+
|
99
|
+
<br>
|
100
|
+
|
101
|
+
## Matchers
|
102
|
+
|
103
|
+
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
@@ -0,0 +1,94 @@
|
|
1
|
+
---
|
2
|
+
title: About the docker_image Resource
|
3
|
+
platform: linux
|
4
|
+
---
|
5
|
+
|
6
|
+
# docker_image
|
7
|
+
|
8
|
+
Use the `docker_image` InSpec audit resource to verify a Docker image.
|
9
|
+
|
10
|
+
<br>
|
11
|
+
|
12
|
+
## Syntax
|
13
|
+
|
14
|
+
A `docker_image` resource block declares the image:
|
15
|
+
|
16
|
+
describe docker_image('alpine:latest') do
|
17
|
+
it { should exist }
|
18
|
+
its('id') { should eq 'sha256:4a415e...a526' }
|
19
|
+
its('repo') { should eq 'alpine' }
|
20
|
+
its('tag') { should eq 'latest' }
|
21
|
+
end
|
22
|
+
|
23
|
+
<br>
|
24
|
+
|
25
|
+
## Resource Parameter Examples
|
26
|
+
|
27
|
+
The resource allows you to pass in an image id:
|
28
|
+
|
29
|
+
describe docker_image(id: alpine_id) do
|
30
|
+
...
|
31
|
+
end
|
32
|
+
|
33
|
+
If the tag is missing for an image, `latest` is assumed as default:
|
34
|
+
|
35
|
+
describe docker_image('alpine') do
|
36
|
+
...
|
37
|
+
end
|
38
|
+
|
39
|
+
You can also pass in repository and tag as separate values
|
40
|
+
|
41
|
+
describe docker_image(repo: 'alpine', tag: 'latest') do
|
42
|
+
...
|
43
|
+
end
|
44
|
+
|
45
|
+
<br>
|
46
|
+
|
47
|
+
## Property Examples
|
48
|
+
|
49
|
+
### id
|
50
|
+
|
51
|
+
The `id` property returns the full image id:
|
52
|
+
|
53
|
+
its('id') { should eq 'sha256:4a415e3663882fbc554ee830889c68a33b3585503892cc718a4698e91ef2a526' }
|
54
|
+
|
55
|
+
### image
|
56
|
+
|
57
|
+
The `image` property tests the value of the image. It is a combination of `repository/tag`:
|
58
|
+
|
59
|
+
its('image') { should eq 'alpine:latest' }
|
60
|
+
|
61
|
+
### repo
|
62
|
+
|
63
|
+
The `repo` property tests the value of the repository name:
|
64
|
+
|
65
|
+
its('repo') { should eq 'alpine' }
|
66
|
+
|
67
|
+
### tag
|
68
|
+
|
69
|
+
The `tag` property tests the value of image tag:
|
70
|
+
|
71
|
+
its('tag') { should eq 'latest' }
|
72
|
+
|
73
|
+
### Test a Docker image
|
74
|
+
|
75
|
+
describe docker_image('alpine:latest') do
|
76
|
+
it { should exist }
|
77
|
+
its('id') { should eq 'sha256:4a415e...a526' }
|
78
|
+
its('image') { should eq 'alpine:latest' }
|
79
|
+
its('repo') { should eq 'alpine' }
|
80
|
+
its('tag') { should eq 'latest' }
|
81
|
+
end
|
82
|
+
|
83
|
+
<br>
|
84
|
+
|
85
|
+
## Matchers
|
86
|
+
|
87
|
+
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
88
|
+
|
89
|
+
### exist
|
90
|
+
|
91
|
+
The `exist` matcher tests if the image is available on the node:
|
92
|
+
|
93
|
+
it { should exist }
|
94
|
+
|
@@ -0,0 +1,114 @@
|
|
1
|
+
---
|
2
|
+
title: About the docker_service Resource
|
3
|
+
platform: linux
|
4
|
+
---
|
5
|
+
|
6
|
+
# docker_service
|
7
|
+
|
8
|
+
Use the `docker_service` InSpec audit resource to verify a docker swarm service.
|
9
|
+
|
10
|
+
<br>
|
11
|
+
|
12
|
+
## Syntax
|
13
|
+
|
14
|
+
A `docker_service` resource block declares the service by name:
|
15
|
+
|
16
|
+
describe docker_service('foo') do
|
17
|
+
it { should exist }
|
18
|
+
its('id') { should eq '2ghswegspre1' }
|
19
|
+
its('repo') { should eq 'alpine' }
|
20
|
+
its('tag') { should eq 'latest' }
|
21
|
+
end
|
22
|
+
|
23
|
+
<br>
|
24
|
+
|
25
|
+
## Resource Parameter Examples
|
26
|
+
|
27
|
+
The resource allows you to pass in a service id:
|
28
|
+
|
29
|
+
describe docker_service(id: '2ghswegspre1') do
|
30
|
+
...
|
31
|
+
end
|
32
|
+
|
33
|
+
You can also pass in the fully-qualified image:
|
34
|
+
|
35
|
+
describe docker_service(image: 'localhost:5000/alpine:latest') do
|
36
|
+
...
|
37
|
+
end
|
38
|
+
|
39
|
+
<br>
|
40
|
+
|
41
|
+
## Property Examples
|
42
|
+
|
43
|
+
The following examples show how to use InSpec `docker_service` resource.
|
44
|
+
|
45
|
+
### id
|
46
|
+
|
47
|
+
The `id` property returns the service id:
|
48
|
+
|
49
|
+
its('id') { should eq '2ghswegspre1' }
|
50
|
+
|
51
|
+
### image
|
52
|
+
|
53
|
+
The `image` property tests the value of the image. It is a combination of `repository:tag`:
|
54
|
+
|
55
|
+
its('image') { should eq 'alpine:latest' }
|
56
|
+
|
57
|
+
### mode
|
58
|
+
|
59
|
+
The `mode` property tests the value of the service mode:
|
60
|
+
|
61
|
+
its('mode') { should eq 'replicated' }
|
62
|
+
|
63
|
+
### name
|
64
|
+
|
65
|
+
The `name` property tests the value of the service name:
|
66
|
+
|
67
|
+
its('name') { should eq 'foo' }
|
68
|
+
|
69
|
+
### ports
|
70
|
+
|
71
|
+
The `ports` property tests the value of the service's published ports:
|
72
|
+
|
73
|
+
its('ports') { should include '*:8000->8000/tcp' }
|
74
|
+
|
75
|
+
### repo
|
76
|
+
|
77
|
+
The `repo` property tests the value of the repository name:
|
78
|
+
|
79
|
+
its('repo') { should eq 'alpine' }
|
80
|
+
|
81
|
+
### replicas
|
82
|
+
|
83
|
+
The `replicas` property tests the value of the service's replica count:
|
84
|
+
|
85
|
+
its('replicas') { should eq '3/3' }
|
86
|
+
|
87
|
+
### tag
|
88
|
+
|
89
|
+
The `tag` property tests the value of image tag:
|
90
|
+
|
91
|
+
its('tag') { should eq 'latest' }
|
92
|
+
|
93
|
+
### Test a docker service
|
94
|
+
|
95
|
+
describe docker_service('foo') do
|
96
|
+
it { should exist }
|
97
|
+
its('id') { should eq '2ghswegspre1' }
|
98
|
+
its('repo') { should eq 'alpine' }
|
99
|
+
its('tag') { should eq 'latest' }
|
100
|
+
end
|
101
|
+
|
102
|
+
<br>
|
103
|
+
|
104
|
+
## Matchers
|
105
|
+
|
106
|
+
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
107
|
+
|
108
|
+
### exist
|
109
|
+
|
110
|
+
The `exist` matcher tests if the image is available on the node:
|
111
|
+
|
112
|
+
it { should exist }
|
113
|
+
|
114
|
+
|