inspec 2.0.32 → 2.0.45
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 +4 -4
- data/.rubocop.yml +101 -101
- data/CHANGELOG.md +2991 -2970
- data/Gemfile +55 -55
- data/LICENSE +14 -14
- data/MAINTAINERS.md +33 -33
- data/MAINTAINERS.toml +52 -52
- data/README.md +446 -437
- data/Rakefile +322 -322
- data/bin/inspec +12 -12
- data/docs/.gitignore +2 -2
- data/docs/README.md +40 -40
- data/docs/dsl_inspec.md +258 -258
- data/docs/dsl_resource.md +93 -93
- data/docs/glossary.md +99 -99
- data/docs/habitat.md +191 -191
- data/docs/inspec_and_friends.md +107 -107
- data/docs/matchers.md +169 -168
- data/docs/migration.md +293 -293
- data/docs/platforms.md +118 -118
- data/docs/plugin_kitchen_inspec.md +49 -49
- data/docs/profiles.md +370 -370
- data/docs/reporters.md +105 -105
- data/docs/resources/aide_conf.md.erb +75 -75
- data/docs/resources/apache.md.erb +67 -67
- data/docs/resources/apache_conf.md.erb +68 -68
- data/docs/resources/apt.md.erb +71 -71
- data/docs/resources/audit_policy.md.erb +47 -47
- data/docs/resources/auditd.md.erb +79 -79
- data/docs/resources/auditd_conf.md.erb +68 -68
- data/docs/resources/aws_cloudtrail_trail.md.erb +140 -140
- data/docs/resources/aws_cloudtrail_trails.md.erb +81 -81
- data/docs/resources/aws_cloudwatch_alarm.md.erb +86 -86
- data/docs/resources/aws_cloudwatch_log_metric_filter.md.erb +151 -151
- data/docs/resources/aws_config_recorder.md.erb +71 -71
- data/docs/resources/aws_ec2_instance.md.erb +106 -106
- data/docs/resources/aws_iam_access_key.md.erb +123 -123
- data/docs/resources/aws_iam_access_keys.md.erb +198 -198
- data/docs/resources/aws_iam_group.md.erb +46 -46
- data/docs/resources/aws_iam_groups.md.erb +43 -43
- data/docs/resources/aws_iam_password_policy.md.erb +76 -76
- data/docs/resources/aws_iam_policies.md.erb +82 -82
- data/docs/resources/aws_iam_policy.md.erb +144 -144
- data/docs/resources/aws_iam_role.md.erb +63 -63
- data/docs/resources/aws_iam_root_user.md.erb +58 -58
- data/docs/resources/aws_iam_user.md.erb +64 -64
- data/docs/resources/aws_iam_users.md.erb +89 -89
- data/docs/resources/aws_kms_keys.md.erb +84 -84
- data/docs/resources/aws_route_table.md.erb +47 -47
- data/docs/resources/aws_s3_bucket.md.erb +134 -134
- data/docs/resources/aws_security_group.md.erb +151 -151
- data/docs/resources/aws_security_groups.md.erb +91 -91
- data/docs/resources/aws_sns_topic.md.erb +63 -63
- data/docs/resources/aws_subnet.md.erb +133 -133
- data/docs/resources/aws_subnets.md.erb +126 -126
- data/docs/resources/aws_vpc.md.erb +120 -120
- data/docs/resources/aws_vpcs.md.erb +48 -48
- data/docs/resources/azure_generic_resource.md.erb +170 -170
- data/docs/resources/azure_resource_group.md.erb +284 -284
- data/docs/resources/azure_virtual_machine.md.erb +347 -347
- data/docs/resources/azure_virtual_machine_data_disk.md.erb +224 -224
- data/docs/resources/bash.md.erb +75 -75
- data/docs/resources/bond.md.erb +90 -90
- data/docs/resources/bridge.md.erb +57 -57
- data/docs/resources/bsd_service.md.erb +67 -67
- data/docs/resources/command.md.erb +138 -138
- data/docs/resources/cpan.md.erb +79 -79
- data/docs/resources/cran.md.erb +64 -64
- data/docs/resources/crontab.md.erb +89 -89
- data/docs/resources/csv.md.erb +54 -54
- data/docs/resources/dh_params.md.erb +205 -205
- data/docs/resources/directory.md.erb +30 -30
- data/docs/resources/docker.md.erb +219 -219
- data/docs/resources/docker_container.md.erb +104 -104
- data/docs/resources/docker_image.md.erb +94 -94
- data/docs/resources/docker_service.md.erb +114 -114
- data/docs/resources/elasticsearch.md.erb +242 -242
- data/docs/resources/etc_fstab.md.erb +125 -125
- data/docs/resources/etc_group.md.erb +75 -75
- data/docs/resources/etc_hosts.md.erb +78 -78
- data/docs/resources/etc_hosts_allow.md.erb +74 -74
- data/docs/resources/etc_hosts_deny.md.erb +74 -74
- data/docs/resources/file.md.erb +526 -515
- data/docs/resources/filesystem.md.erb +41 -41
- data/docs/resources/firewalld.md.erb +107 -107
- data/docs/resources/gem.md.erb +79 -79
- data/docs/resources/group.md.erb +61 -61
- data/docs/resources/grub_conf.md.erb +101 -101
- data/docs/resources/host.md.erb +86 -86
- data/docs/resources/http.md.erb +196 -196
- data/docs/resources/iis_app.md.erb +122 -122
- data/docs/resources/iis_site.md.erb +135 -135
- data/docs/resources/inetd_conf.md.erb +94 -94
- data/docs/resources/ini.md.erb +76 -76
- data/docs/resources/interface.md.erb +58 -58
- data/docs/resources/iptables.md.erb +64 -64
- data/docs/resources/json.md.erb +63 -63
- data/docs/resources/kernel_module.md.erb +120 -120
- data/docs/resources/kernel_parameter.md.erb +53 -53
- data/docs/resources/key_rsa.md.erb +85 -85
- data/docs/resources/launchd_service.md.erb +57 -57
- data/docs/resources/limits_conf.md.erb +75 -75
- data/docs/resources/login_def.md.erb +71 -71
- data/docs/resources/mount.md.erb +69 -69
- data/docs/resources/mssql_session.md.erb +60 -60
- data/docs/resources/mysql_conf.md.erb +99 -99
- data/docs/resources/mysql_session.md.erb +74 -74
- data/docs/resources/nginx.md.erb +79 -79
- data/docs/resources/nginx_conf.md.erb +128 -128
- data/docs/resources/npm.md.erb +60 -60
- data/docs/resources/ntp_conf.md.erb +60 -60
- data/docs/resources/oneget.md.erb +53 -53
- data/docs/resources/oracledb_session.md.erb +52 -52
- data/docs/resources/os.md.erb +141 -141
- data/docs/resources/os_env.md.erb +78 -78
- data/docs/resources/package.md.erb +120 -120
- data/docs/resources/packages.md.erb +67 -67
- data/docs/resources/parse_config.md.erb +103 -103
- data/docs/resources/parse_config_file.md.erb +138 -138
- data/docs/resources/passwd.md.erb +141 -141
- data/docs/resources/pip.md.erb +67 -67
- data/docs/resources/port.md.erb +137 -137
- data/docs/resources/postgres_conf.md.erb +79 -79
- data/docs/resources/postgres_hba_conf.md.erb +93 -93
- data/docs/resources/postgres_ident_conf.md.erb +76 -76
- data/docs/resources/postgres_session.md.erb +69 -69
- data/docs/resources/powershell.md.erb +102 -102
- data/docs/resources/processes.md.erb +109 -109
- data/docs/resources/rabbitmq_config.md.erb +41 -41
- data/docs/resources/registry_key.md.erb +158 -158
- data/docs/resources/runit_service.md.erb +57 -57
- data/docs/resources/security_policy.md.erb +47 -47
- data/docs/resources/service.md.erb +121 -121
- data/docs/resources/shadow.md.erb +146 -144
- data/docs/resources/ssh_config.md.erb +80 -80
- data/docs/resources/sshd_config.md.erb +83 -83
- data/docs/resources/ssl.md.erb +119 -119
- data/docs/resources/sys_info.md.erb +42 -42
- data/docs/resources/systemd_service.md.erb +57 -57
- data/docs/resources/sysv_service.md.erb +57 -57
- data/docs/resources/upstart_service.md.erb +57 -57
- data/docs/resources/user.md.erb +140 -140
- data/docs/resources/users.md.erb +127 -127
- data/docs/resources/vbscript.md.erb +55 -55
- data/docs/resources/virtualization.md.erb +57 -57
- data/docs/resources/windows_feature.md.erb +47 -47
- data/docs/resources/windows_hotfix.md.erb +53 -53
- data/docs/resources/windows_task.md.erb +95 -95
- data/docs/resources/wmi.md.erb +81 -81
- data/docs/resources/x509_certificate.md.erb +151 -151
- data/docs/resources/xinetd_conf.md.erb +156 -156
- data/docs/resources/xml.md.erb +85 -85
- data/docs/resources/yaml.md.erb +69 -69
- data/docs/resources/yum.md.erb +98 -98
- data/docs/resources/zfs_dataset.md.erb +53 -53
- data/docs/resources/zfs_pool.md.erb +47 -47
- data/docs/ruby_usage.md +203 -203
- data/docs/shared/matcher_be.md.erb +1 -1
- data/docs/shared/matcher_cmp.md.erb +43 -43
- data/docs/shared/matcher_eq.md.erb +3 -3
- data/docs/shared/matcher_include.md.erb +1 -1
- data/docs/shared/matcher_match.md.erb +1 -1
- data/docs/shell.md +215 -215
- data/examples/README.md +8 -8
- data/examples/inheritance/README.md +65 -65
- data/examples/inheritance/controls/example.rb +14 -14
- data/examples/inheritance/inspec.yml +15 -15
- data/examples/kitchen-ansible/.kitchen.yml +25 -25
- data/examples/kitchen-ansible/Gemfile +19 -19
- data/examples/kitchen-ansible/README.md +53 -53
- data/examples/kitchen-ansible/files/nginx.repo +6 -6
- data/examples/kitchen-ansible/tasks/main.yml +16 -16
- data/examples/kitchen-ansible/test/integration/default/default.yml +5 -5
- data/examples/kitchen-ansible/test/integration/default/web_spec.rb +28 -28
- data/examples/kitchen-chef/.kitchen.yml +20 -20
- data/examples/kitchen-chef/Berksfile +3 -3
- data/examples/kitchen-chef/Gemfile +19 -19
- data/examples/kitchen-chef/README.md +27 -27
- data/examples/kitchen-chef/metadata.rb +7 -7
- data/examples/kitchen-chef/recipes/default.rb +6 -6
- data/examples/kitchen-chef/recipes/nginx.rb +30 -30
- data/examples/kitchen-chef/test/integration/default/web_spec.rb +28 -28
- data/examples/kitchen-puppet/.kitchen.yml +22 -22
- data/examples/kitchen-puppet/Gemfile +20 -20
- data/examples/kitchen-puppet/Puppetfile +25 -25
- data/examples/kitchen-puppet/README.md +53 -53
- data/examples/kitchen-puppet/manifests/site.pp +33 -33
- data/examples/kitchen-puppet/metadata.json +11 -11
- data/examples/kitchen-puppet/test/integration/default/web_spec.rb +28 -28
- data/examples/meta-profile/README.md +37 -37
- data/examples/meta-profile/controls/example.rb +13 -13
- data/examples/meta-profile/inspec.yml +13 -13
- data/examples/profile-attribute.yml +2 -2
- data/examples/profile-attribute/README.md +14 -14
- data/examples/profile-attribute/controls/example.rb +11 -11
- data/examples/profile-attribute/inspec.yml +8 -8
- data/examples/profile-aws/controls/iam_password_policy_expiration.rb +8 -8
- data/examples/profile-aws/controls/iam_password_policy_max_age.rb +8 -8
- data/examples/profile-aws/controls/iam_root_user_mfa.rb +8 -8
- data/examples/profile-aws/controls/iam_users_access_key_age.rb +8 -8
- data/examples/profile-aws/controls/iam_users_console_users_mfa.rb +8 -8
- data/examples/profile-aws/inspec.yml +11 -11
- data/examples/profile-azure/controls/azure_resource_group_example.rb +24 -24
- data/examples/profile-azure/controls/azure_vm_example.rb +29 -29
- data/examples/profile-azure/inspec.yml +11 -11
- data/examples/profile-sensitive/README.md +29 -29
- data/examples/profile-sensitive/controls/sensitive-failures.rb +9 -9
- data/examples/profile-sensitive/controls/sensitive.rb +9 -9
- data/examples/profile-sensitive/inspec.yml +8 -8
- data/examples/profile/README.md +48 -48
- data/examples/profile/controls/example.rb +23 -23
- data/examples/profile/controls/gordon.rb +36 -36
- data/examples/profile/controls/meta.rb +34 -34
- data/examples/profile/inspec.yml +10 -10
- data/examples/profile/libraries/gordon_config.rb +53 -53
- data/inspec.gemspec +47 -47
- data/lib/bundles/README.md +3 -3
- data/lib/bundles/inspec-artifact.rb +7 -7
- data/lib/bundles/inspec-artifact/README.md +1 -1
- data/lib/bundles/inspec-artifact/cli.rb +277 -277
- data/lib/bundles/inspec-compliance.rb +16 -16
- data/lib/bundles/inspec-compliance/.kitchen.yml +20 -20
- data/lib/bundles/inspec-compliance/README.md +185 -185
- data/lib/bundles/inspec-compliance/api.rb +316 -316
- data/lib/bundles/inspec-compliance/api/login.rb +152 -152
- data/lib/bundles/inspec-compliance/bootstrap.sh +41 -41
- data/lib/bundles/inspec-compliance/cli.rb +254 -254
- data/lib/bundles/inspec-compliance/configuration.rb +103 -103
- data/lib/bundles/inspec-compliance/http.rb +86 -86
- data/lib/bundles/inspec-compliance/support.rb +36 -36
- data/lib/bundles/inspec-compliance/target.rb +98 -98
- data/lib/bundles/inspec-compliance/test/integration/default/cli.rb +93 -93
- data/lib/bundles/inspec-habitat.rb +12 -12
- data/lib/bundles/inspec-habitat/cli.rb +36 -36
- data/lib/bundles/inspec-habitat/log.rb +10 -10
- data/lib/bundles/inspec-habitat/profile.rb +390 -390
- data/lib/bundles/inspec-init.rb +8 -8
- data/lib/bundles/inspec-init/README.md +31 -31
- data/lib/bundles/inspec-init/cli.rb +97 -97
- data/lib/bundles/inspec-init/templates/profile/README.md +3 -3
- data/lib/bundles/inspec-init/templates/profile/controls/example.rb +19 -19
- data/lib/bundles/inspec-init/templates/profile/inspec.yml +8 -8
- data/lib/bundles/inspec-supermarket.rb +13 -13
- data/lib/bundles/inspec-supermarket/README.md +45 -45
- data/lib/bundles/inspec-supermarket/api.rb +84 -84
- data/lib/bundles/inspec-supermarket/cli.rb +73 -73
- data/lib/bundles/inspec-supermarket/target.rb +34 -34
- data/lib/fetchers/git.rb +163 -163
- data/lib/fetchers/local.rb +74 -74
- data/lib/fetchers/mock.rb +35 -35
- data/lib/fetchers/url.rb +204 -204
- data/lib/inspec.rb +24 -24
- data/lib/inspec/archive/tar.rb +29 -29
- data/lib/inspec/archive/zip.rb +19 -19
- data/lib/inspec/backend.rb +92 -92
- data/lib/inspec/base_cli.rb +355 -350
- data/lib/inspec/cached_fetcher.rb +66 -66
- data/lib/inspec/cli.rb +292 -292
- data/lib/inspec/completions/bash.sh.erb +45 -45
- data/lib/inspec/completions/fish.sh.erb +34 -34
- data/lib/inspec/completions/zsh.sh.erb +61 -61
- data/lib/inspec/control_eval_context.rb +179 -179
- data/lib/inspec/dependencies/cache.rb +72 -72
- data/lib/inspec/dependencies/dependency_set.rb +92 -92
- data/lib/inspec/dependencies/lockfile.rb +115 -115
- data/lib/inspec/dependencies/requirement.rb +123 -123
- data/lib/inspec/dependencies/resolver.rb +86 -86
- data/lib/inspec/describe.rb +27 -27
- data/lib/inspec/dsl.rb +66 -66
- data/lib/inspec/dsl_shared.rb +33 -33
- data/lib/inspec/env_printer.rb +157 -157
- data/lib/inspec/errors.rb +13 -13
- data/lib/inspec/exceptions.rb +12 -12
- data/lib/inspec/expect.rb +45 -45
- data/lib/inspec/fetcher.rb +45 -45
- data/lib/inspec/file_provider.rb +275 -275
- data/lib/inspec/formatters.rb +3 -3
- data/lib/inspec/formatters/base.rb +250 -250
- data/lib/inspec/formatters/json_rspec.rb +20 -20
- data/lib/inspec/formatters/show_progress.rb +12 -12
- data/lib/inspec/library_eval_context.rb +58 -58
- data/lib/inspec/log.rb +11 -11
- data/lib/inspec/metadata.rb +247 -247
- data/lib/inspec/method_source.rb +24 -24
- data/lib/inspec/objects.rb +14 -14
- data/lib/inspec/objects/attribute.rb +65 -65
- data/lib/inspec/objects/control.rb +61 -61
- data/lib/inspec/objects/describe.rb +92 -92
- data/lib/inspec/objects/each_loop.rb +36 -36
- data/lib/inspec/objects/list.rb +15 -15
- data/lib/inspec/objects/or_test.rb +40 -40
- data/lib/inspec/objects/ruby_helper.rb +15 -15
- data/lib/inspec/objects/tag.rb +27 -27
- data/lib/inspec/objects/test.rb +87 -87
- data/lib/inspec/objects/value.rb +27 -27
- data/lib/inspec/plugins.rb +60 -60
- data/lib/inspec/plugins/cli.rb +24 -24
- data/lib/inspec/plugins/fetcher.rb +86 -86
- data/lib/inspec/plugins/resource.rb +135 -135
- data/lib/inspec/plugins/secret.rb +15 -15
- data/lib/inspec/plugins/source_reader.rb +40 -40
- data/lib/inspec/polyfill.rb +12 -12
- data/lib/inspec/profile.rb +510 -510
- data/lib/inspec/profile_context.rb +207 -207
- data/lib/inspec/profile_vendor.rb +66 -66
- data/lib/inspec/reporters.rb +54 -50
- data/lib/inspec/reporters/base.rb +24 -24
- data/lib/inspec/reporters/cli.rb +356 -356
- data/lib/inspec/reporters/json.rb +116 -116
- data/lib/inspec/reporters/json_min.rb +48 -48
- data/lib/inspec/reporters/junit.rb +77 -77
- data/lib/inspec/require_loader.rb +33 -33
- data/lib/inspec/resource.rb +186 -186
- data/lib/inspec/rule.rb +266 -266
- data/lib/inspec/runner.rb +345 -345
- data/lib/inspec/runner_mock.rb +41 -41
- data/lib/inspec/runner_rspec.rb +175 -175
- data/lib/inspec/runtime_profile.rb +26 -26
- data/lib/inspec/schema.rb +213 -213
- data/lib/inspec/secrets.rb +19 -19
- data/lib/inspec/secrets/yaml.rb +30 -30
- data/lib/inspec/shell.rb +220 -220
- data/lib/inspec/shell_detector.rb +90 -90
- data/lib/inspec/source_reader.rb +29 -29
- data/lib/inspec/version.rb +8 -8
- data/lib/matchers/matchers.rb +339 -339
- data/lib/resource_support/aws.rb +41 -41
- data/lib/resource_support/aws/aws_backend_base.rb +12 -12
- data/lib/resource_support/aws/aws_backend_factory_mixin.rb +12 -12
- data/lib/resource_support/aws/aws_plural_resource_mixin.rb +21 -21
- data/lib/resource_support/aws/aws_resource_mixin.rb +66 -66
- data/lib/resource_support/aws/aws_singular_resource_mixin.rb +24 -24
- data/lib/resources/aide_conf.rb +159 -160
- data/lib/resources/apache.rb +48 -48
- data/lib/resources/apache_conf.rb +156 -156
- data/lib/resources/apt.rb +149 -149
- data/lib/resources/audit_policy.rb +63 -63
- data/lib/resources/auditd.rb +231 -231
- data/lib/resources/auditd_conf.rb +55 -55
- data/lib/resources/aws/aws_cloudtrail_trail.rb +77 -77
- data/lib/resources/aws/aws_cloudtrail_trails.rb +47 -47
- data/lib/resources/aws/aws_cloudwatch_alarm.rb +62 -62
- data/lib/resources/aws/aws_cloudwatch_log_metric_filter.rb +100 -100
- data/lib/resources/aws/aws_config_recorder.rb +98 -98
- data/lib/resources/aws/aws_ec2_instance.rb +157 -157
- data/lib/resources/aws/aws_iam_access_key.rb +106 -106
- data/lib/resources/aws/aws_iam_access_keys.rb +149 -144
- data/lib/resources/aws/aws_iam_group.rb +56 -56
- data/lib/resources/aws/aws_iam_groups.rb +52 -45
- data/lib/resources/aws/aws_iam_password_policy.rb +116 -116
- data/lib/resources/aws/aws_iam_policies.rb +53 -46
- data/lib/resources/aws/aws_iam_policy.rb +125 -119
- data/lib/resources/aws/aws_iam_role.rb +51 -51
- data/lib/resources/aws/aws_iam_root_user.rb +60 -60
- data/lib/resources/aws/aws_iam_user.rb +111 -111
- data/lib/resources/aws/aws_iam_users.rb +108 -96
- data/lib/resources/aws/aws_kms_keys.rb +53 -46
- data/lib/resources/aws/aws_route_table.rb +61 -61
- data/lib/resources/aws/aws_s3_bucket.rb +115 -115
- data/lib/resources/aws/aws_security_group.rb +93 -93
- data/lib/resources/aws/aws_security_groups.rb +68 -68
- data/lib/resources/aws/aws_sns_topic.rb +53 -53
- data/lib/resources/aws/aws_subnet.rb +88 -88
- data/lib/resources/aws/aws_subnets.rb +53 -53
- data/lib/resources/aws/aws_vpc.rb +69 -69
- data/lib/resources/aws/aws_vpcs.rb +45 -45
- data/lib/resources/azure/azure_backend.rb +377 -377
- data/lib/resources/azure/azure_generic_resource.rb +59 -59
- data/lib/resources/azure/azure_resource_group.rb +152 -152
- data/lib/resources/azure/azure_virtual_machine.rb +264 -264
- data/lib/resources/azure/azure_virtual_machine_data_disk.rb +136 -136
- data/lib/resources/bash.rb +35 -35
- data/lib/resources/bond.rb +68 -68
- data/lib/resources/bridge.rb +122 -122
- data/lib/resources/command.rb +73 -69
- data/lib/resources/cpan.rb +58 -58
- data/lib/resources/cran.rb +64 -64
- data/lib/resources/crontab.rb +169 -170
- data/lib/resources/csv.rb +60 -60
- data/lib/resources/dh_params.rb +82 -82
- data/lib/resources/directory.rb +25 -25
- data/lib/resources/docker.rb +236 -236
- data/lib/resources/docker_container.rb +89 -89
- data/lib/resources/docker_image.rb +83 -83
- data/lib/resources/docker_object.rb +57 -57
- data/lib/resources/docker_service.rb +90 -90
- data/lib/resources/elasticsearch.rb +169 -169
- data/lib/resources/etc_fstab.rb +101 -102
- data/lib/resources/etc_group.rb +152 -156
- data/lib/resources/etc_hosts.rb +82 -81
- data/lib/resources/etc_hosts_allow_deny.rb +122 -123
- data/lib/resources/file.rb +298 -298
- data/lib/resources/filesystem.rb +31 -31
- data/lib/resources/firewalld.rb +143 -144
- data/lib/resources/gem.rb +70 -70
- data/lib/resources/groups.rb +215 -215
- data/lib/resources/grub_conf.rb +237 -237
- data/lib/resources/host.rb +306 -300
- data/lib/resources/http.rb +251 -250
- data/lib/resources/iis_app.rb +101 -104
- data/lib/resources/iis_site.rb +148 -148
- data/lib/resources/inetd_conf.rb +62 -62
- data/lib/resources/ini.rb +29 -29
- data/lib/resources/interface.rb +129 -129
- data/lib/resources/iptables.rb +80 -69
- data/lib/resources/json.rb +117 -117
- data/lib/resources/kernel_module.rb +107 -107
- data/lib/resources/kernel_parameter.rb +58 -58
- data/lib/resources/key_rsa.rb +67 -67
- data/lib/resources/limits_conf.rb +55 -55
- data/lib/resources/login_def.rb +66 -66
- data/lib/resources/mount.rb +88 -88
- data/lib/resources/mssql_session.rb +101 -101
- data/lib/resources/mysql.rb +81 -81
- data/lib/resources/mysql_conf.rb +134 -134
- data/lib/resources/mysql_session.rb +71 -71
- data/lib/resources/nginx.rb +96 -96
- data/lib/resources/nginx_conf.rb +227 -227
- data/lib/resources/npm.rb +48 -48
- data/lib/resources/ntp_conf.rb +58 -58
- data/lib/resources/oneget.rb +71 -71
- data/lib/resources/oracledb_session.rb +139 -139
- data/lib/resources/os.rb +36 -36
- data/lib/resources/os_env.rb +76 -76
- data/lib/resources/package.rb +370 -370
- data/lib/resources/packages.rb +111 -111
- data/lib/resources/parse_config.rb +116 -116
- data/lib/resources/passwd.rb +74 -74
- data/lib/resources/pip.rb +89 -89
- data/lib/resources/platform.rb +109 -109
- data/lib/resources/port.rb +771 -771
- data/lib/resources/postgres.rb +130 -130
- data/lib/resources/postgres_conf.rb +121 -121
- data/lib/resources/postgres_hba_conf.rb +99 -100
- data/lib/resources/postgres_ident_conf.rb +76 -78
- data/lib/resources/postgres_session.rb +71 -71
- data/lib/resources/powershell.rb +53 -57
- data/lib/resources/processes.rb +204 -204
- data/lib/resources/rabbitmq_conf.rb +52 -52
- data/lib/resources/registry_key.rb +296 -296
- data/lib/resources/security_policy.rb +180 -180
- data/lib/resources/service.rb +789 -789
- data/lib/resources/shadow.rb +146 -140
- data/lib/resources/ssh_conf.rb +102 -102
- data/lib/resources/ssl.rb +99 -99
- data/lib/resources/sys_info.rb +28 -28
- data/lib/resources/toml.rb +32 -32
- data/lib/resources/users.rb +654 -654
- data/lib/resources/vbscript.rb +68 -69
- data/lib/resources/virtualization.rb +247 -247
- data/lib/resources/windows_feature.rb +84 -84
- data/lib/resources/windows_hotfix.rb +35 -35
- data/lib/resources/windows_task.rb +102 -105
- data/lib/resources/wmi.rb +110 -113
- data/lib/resources/x509_certificate.rb +143 -143
- data/lib/resources/xinetd.rb +111 -111
- data/lib/resources/xml.rb +46 -46
- data/lib/resources/yaml.rb +47 -47
- data/lib/resources/yum.rb +180 -180
- data/lib/resources/zfs_dataset.rb +60 -60
- data/lib/resources/zfs_pool.rb +49 -49
- data/lib/source_readers/flat.rb +39 -39
- data/lib/source_readers/inspec.rb +75 -75
- data/lib/utils/command_wrapper.rb +27 -27
- data/lib/utils/convert.rb +12 -12
- data/lib/utils/database_helpers.rb +77 -77
- data/lib/utils/erlang_parser.rb +192 -192
- data/lib/utils/filter.rb +272 -272
- data/lib/utils/filter_array.rb +27 -27
- data/lib/utils/find_files.rb +44 -44
- data/lib/utils/hash.rb +41 -41
- data/lib/utils/json_log.rb +18 -18
- data/lib/utils/latest_version.rb +22 -22
- data/lib/utils/modulator.rb +12 -12
- data/lib/utils/nginx_parser.rb +85 -85
- data/lib/utils/object_traversal.rb +49 -49
- data/lib/utils/parser.rb +274 -274
- data/lib/utils/plugin_registry.rb +93 -93
- data/lib/utils/simpleconfig.rb +120 -120
- data/lib/utils/spdx.rb +13 -13
- data/lib/utils/spdx.txt +343 -343
- metadata +2 -2
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: About the postgres_session Resource
|
|
3
|
-
platform: os
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# postgres_session
|
|
7
|
-
|
|
8
|
-
Use the `postgres_session` InSpec audit resource to test SQL commands run against a PostgreSQL database.
|
|
9
|
-
|
|
10
|
-
<br>
|
|
11
|
-
|
|
12
|
-
## Syntax
|
|
13
|
-
|
|
14
|
-
A `postgres_session` resource block declares the username and password to use for the session, and then the command to be run:
|
|
15
|
-
|
|
16
|
-
# Create a PostgreSQL session:
|
|
17
|
-
sql = postgres_session('username', 'password', 'host')
|
|
18
|
-
|
|
19
|
-
# default values:
|
|
20
|
-
# username: 'postgres'
|
|
21
|
-
# host: 'localhost'
|
|
22
|
-
|
|
23
|
-
# Run an SQL query with an optional database to execute
|
|
24
|
-
sql.query('sql_query', ['database_name'])`
|
|
25
|
-
|
|
26
|
-
A full example is:
|
|
27
|
-
|
|
28
|
-
sql = postgres_session('username', 'password', 'host')
|
|
29
|
-
describe sql.query('SELECT * FROM pg_shadow WHERE passwd IS NULL;') do
|
|
30
|
-
its('output') { should eq '' }
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
where `its('output') { should eq '' }` compares the results of the query against the expected result in the test
|
|
34
|
-
|
|
35
|
-
<br>
|
|
36
|
-
|
|
37
|
-
## Examples
|
|
38
|
-
|
|
39
|
-
The following examples show how to use this InSpec audit resource.
|
|
40
|
-
|
|
41
|
-
### Test the PostgreSQL shadow password
|
|
42
|
-
|
|
43
|
-
sql = postgres_session('my_user', 'password', '192.168.1.2')
|
|
44
|
-
|
|
45
|
-
describe sql.query('SELECT * FROM pg_shadow WHERE passwd IS NULL;', ['testdb']) do
|
|
46
|
-
its('output') { should eq('') }
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
### Test for risky database entries
|
|
50
|
-
|
|
51
|
-
describe postgres_session('my_user', 'password').query('SELECT count (*)
|
|
52
|
-
FROM pg_language
|
|
53
|
-
WHERE lanpltrusted = \'f\'
|
|
54
|
-
AND lanname!=\'internal\'
|
|
55
|
-
AND lanname!=\'c\';', ['postgres']) do
|
|
56
|
-
its('output') { should eq '0' }
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
<br>
|
|
60
|
-
|
|
61
|
-
## Matchers
|
|
62
|
-
|
|
63
|
-
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
64
|
-
|
|
65
|
-
### output
|
|
66
|
-
|
|
67
|
-
The `output` matcher tests the results of the query:
|
|
68
|
-
|
|
69
|
-
its('output') { should eq(/^0/) }
|
|
1
|
+
---
|
|
2
|
+
title: About the postgres_session Resource
|
|
3
|
+
platform: os
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# postgres_session
|
|
7
|
+
|
|
8
|
+
Use the `postgres_session` InSpec audit resource to test SQL commands run against a PostgreSQL database.
|
|
9
|
+
|
|
10
|
+
<br>
|
|
11
|
+
|
|
12
|
+
## Syntax
|
|
13
|
+
|
|
14
|
+
A `postgres_session` resource block declares the username and password to use for the session, and then the command to be run:
|
|
15
|
+
|
|
16
|
+
# Create a PostgreSQL session:
|
|
17
|
+
sql = postgres_session('username', 'password', 'host')
|
|
18
|
+
|
|
19
|
+
# default values:
|
|
20
|
+
# username: 'postgres'
|
|
21
|
+
# host: 'localhost'
|
|
22
|
+
|
|
23
|
+
# Run an SQL query with an optional database to execute
|
|
24
|
+
sql.query('sql_query', ['database_name'])`
|
|
25
|
+
|
|
26
|
+
A full example is:
|
|
27
|
+
|
|
28
|
+
sql = postgres_session('username', 'password', 'host')
|
|
29
|
+
describe sql.query('SELECT * FROM pg_shadow WHERE passwd IS NULL;') do
|
|
30
|
+
its('output') { should eq '' }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
where `its('output') { should eq '' }` compares the results of the query against the expected result in the test
|
|
34
|
+
|
|
35
|
+
<br>
|
|
36
|
+
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
The following examples show how to use this InSpec audit resource.
|
|
40
|
+
|
|
41
|
+
### Test the PostgreSQL shadow password
|
|
42
|
+
|
|
43
|
+
sql = postgres_session('my_user', 'password', '192.168.1.2')
|
|
44
|
+
|
|
45
|
+
describe sql.query('SELECT * FROM pg_shadow WHERE passwd IS NULL;', ['testdb']) do
|
|
46
|
+
its('output') { should eq('') }
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
### Test for risky database entries
|
|
50
|
+
|
|
51
|
+
describe postgres_session('my_user', 'password').query('SELECT count (*)
|
|
52
|
+
FROM pg_language
|
|
53
|
+
WHERE lanpltrusted = \'f\'
|
|
54
|
+
AND lanname!=\'internal\'
|
|
55
|
+
AND lanname!=\'c\';', ['postgres']) do
|
|
56
|
+
its('output') { should eq '0' }
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
<br>
|
|
60
|
+
|
|
61
|
+
## Matchers
|
|
62
|
+
|
|
63
|
+
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
64
|
+
|
|
65
|
+
### output
|
|
66
|
+
|
|
67
|
+
The `output` matcher tests the results of the query:
|
|
68
|
+
|
|
69
|
+
its('output') { should eq(/^0/) }
|
|
@@ -1,102 +1,102 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: About the powershell Resource
|
|
3
|
-
platform: windows
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# powershell
|
|
7
|
-
|
|
8
|
-
Use the `powershell` InSpec audit resource to test a Powershell script on the Windows platform.
|
|
9
|
-
|
|
10
|
-
<br>
|
|
11
|
-
|
|
12
|
-
## Syntax
|
|
13
|
-
|
|
14
|
-
A `powershell` resource block declares a Powershell script to be tested, and then compares the output of that command to the matcher in the test:
|
|
15
|
-
|
|
16
|
-
script = <<-EOH
|
|
17
|
-
# a PowerShell script
|
|
18
|
-
EOH
|
|
19
|
-
|
|
20
|
-
describe powershell(script) do
|
|
21
|
-
its('property') { should eq 'output' }
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
where
|
|
25
|
-
|
|
26
|
-
* `'script'` must specify a Powershell script to be run
|
|
27
|
-
* `'matcher'` is one of `exit_status`, `stderr`, or `stdout`
|
|
28
|
-
* `'output'` tests the output of the command run on the system versus the output value stated in the test
|
|
29
|
-
|
|
30
|
-
<br>
|
|
31
|
-
|
|
32
|
-
## Examples
|
|
33
|
-
|
|
34
|
-
The following examples show how to use this InSpec audit resource.
|
|
35
|
-
|
|
36
|
-
### Get all groups of Administrator user
|
|
37
|
-
|
|
38
|
-
script = <<-EOH
|
|
39
|
-
# find user
|
|
40
|
-
$user = Get-WmiObject Win32_UserAccount -filter "Name = 'Administrator'"
|
|
41
|
-
# get related groups
|
|
42
|
-
$groups = $user.GetRelated('Win32_Group') | Select-Object -Property Caption, Domain, Name, LocalAccount, SID, SIDType, Status
|
|
43
|
-
$groups | ConvertTo-Json
|
|
44
|
-
EOH
|
|
45
|
-
|
|
46
|
-
describe powershell(script) do
|
|
47
|
-
its('stdout') { should_not eq '' }
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
### Write-Output 'hello'
|
|
51
|
-
|
|
52
|
-
The following Powershell script:
|
|
53
|
-
|
|
54
|
-
script = <<-EOH
|
|
55
|
-
Write-Output 'hello'
|
|
56
|
-
EOH
|
|
57
|
-
|
|
58
|
-
can be tested in the following ways.
|
|
59
|
-
|
|
60
|
-
For a newline:
|
|
61
|
-
|
|
62
|
-
describe powershell(script) do
|
|
63
|
-
its('stdout') { should eq "hello\r\n" }
|
|
64
|
-
its('stderr') { should eq '' }
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
Removing whitespace `\r\n` from `stdout`:
|
|
68
|
-
|
|
69
|
-
describe powershell(script) do
|
|
70
|
-
its('strip') { should eq "hello" }
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
No newline:
|
|
74
|
-
|
|
75
|
-
describe powershell("'hello' | Write-Host -NoNewLine") do
|
|
76
|
-
its('stdout') { should eq 'hello' }
|
|
77
|
-
its('stderr') { should eq '' }
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
<br>
|
|
81
|
-
|
|
82
|
-
## Matchers
|
|
83
|
-
|
|
84
|
-
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
85
|
-
|
|
86
|
-
### exit_status
|
|
87
|
-
|
|
88
|
-
The `exit_status` matcher tests the exit status for the command:
|
|
89
|
-
|
|
90
|
-
its('exit_status') { should eq 123 }
|
|
91
|
-
|
|
92
|
-
### stderr
|
|
93
|
-
|
|
94
|
-
The `stderr` matcher tests results of the command as returned in standard error (stderr):
|
|
95
|
-
|
|
96
|
-
its('stderr') { should eq 'error' }
|
|
97
|
-
|
|
98
|
-
### stdout
|
|
99
|
-
|
|
100
|
-
The `stdout` matcher tests results of the command as returned in standard output (stdout):
|
|
101
|
-
|
|
102
|
-
its('stdout') { should eq '/^1$/' }
|
|
1
|
+
---
|
|
2
|
+
title: About the powershell Resource
|
|
3
|
+
platform: windows
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# powershell
|
|
7
|
+
|
|
8
|
+
Use the `powershell` InSpec audit resource to test a Powershell script on the Windows platform.
|
|
9
|
+
|
|
10
|
+
<br>
|
|
11
|
+
|
|
12
|
+
## Syntax
|
|
13
|
+
|
|
14
|
+
A `powershell` resource block declares a Powershell script to be tested, and then compares the output of that command to the matcher in the test:
|
|
15
|
+
|
|
16
|
+
script = <<-EOH
|
|
17
|
+
# a PowerShell script
|
|
18
|
+
EOH
|
|
19
|
+
|
|
20
|
+
describe powershell(script) do
|
|
21
|
+
its('property') { should eq 'output' }
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
where
|
|
25
|
+
|
|
26
|
+
* `'script'` must specify a Powershell script to be run
|
|
27
|
+
* `'matcher'` is one of `exit_status`, `stderr`, or `stdout`
|
|
28
|
+
* `'output'` tests the output of the command run on the system versus the output value stated in the test
|
|
29
|
+
|
|
30
|
+
<br>
|
|
31
|
+
|
|
32
|
+
## Examples
|
|
33
|
+
|
|
34
|
+
The following examples show how to use this InSpec audit resource.
|
|
35
|
+
|
|
36
|
+
### Get all groups of Administrator user
|
|
37
|
+
|
|
38
|
+
script = <<-EOH
|
|
39
|
+
# find user
|
|
40
|
+
$user = Get-WmiObject Win32_UserAccount -filter "Name = 'Administrator'"
|
|
41
|
+
# get related groups
|
|
42
|
+
$groups = $user.GetRelated('Win32_Group') | Select-Object -Property Caption, Domain, Name, LocalAccount, SID, SIDType, Status
|
|
43
|
+
$groups | ConvertTo-Json
|
|
44
|
+
EOH
|
|
45
|
+
|
|
46
|
+
describe powershell(script) do
|
|
47
|
+
its('stdout') { should_not eq '' }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
### Write-Output 'hello'
|
|
51
|
+
|
|
52
|
+
The following Powershell script:
|
|
53
|
+
|
|
54
|
+
script = <<-EOH
|
|
55
|
+
Write-Output 'hello'
|
|
56
|
+
EOH
|
|
57
|
+
|
|
58
|
+
can be tested in the following ways.
|
|
59
|
+
|
|
60
|
+
For a newline:
|
|
61
|
+
|
|
62
|
+
describe powershell(script) do
|
|
63
|
+
its('stdout') { should eq "hello\r\n" }
|
|
64
|
+
its('stderr') { should eq '' }
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
Removing whitespace `\r\n` from `stdout`:
|
|
68
|
+
|
|
69
|
+
describe powershell(script) do
|
|
70
|
+
its('strip') { should eq "hello" }
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
No newline:
|
|
74
|
+
|
|
75
|
+
describe powershell("'hello' | Write-Host -NoNewLine") do
|
|
76
|
+
its('stdout') { should eq 'hello' }
|
|
77
|
+
its('stderr') { should eq '' }
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
<br>
|
|
81
|
+
|
|
82
|
+
## Matchers
|
|
83
|
+
|
|
84
|
+
For a full list of available matchers, please visit our [matchers page](https://www.inspec.io/docs/reference/matchers/).
|
|
85
|
+
|
|
86
|
+
### exit_status
|
|
87
|
+
|
|
88
|
+
The `exit_status` matcher tests the exit status for the command:
|
|
89
|
+
|
|
90
|
+
its('exit_status') { should eq 123 }
|
|
91
|
+
|
|
92
|
+
### stderr
|
|
93
|
+
|
|
94
|
+
The `stderr` matcher tests results of the command as returned in standard error (stderr):
|
|
95
|
+
|
|
96
|
+
its('stderr') { should eq 'error' }
|
|
97
|
+
|
|
98
|
+
### stdout
|
|
99
|
+
|
|
100
|
+
The `stdout` matcher tests results of the command as returned in standard output (stdout):
|
|
101
|
+
|
|
102
|
+
its('stdout') { should eq '/^1$/' }
|
|
@@ -1,109 +1,109 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: About the processes Resource
|
|
3
|
-
platform: os
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# processes
|
|
7
|
-
|
|
8
|
-
Use the `processes` InSpec audit resource to test properties for programs that are running on the system.
|
|
9
|
-
|
|
10
|
-
<br>
|
|
11
|
-
|
|
12
|
-
## Syntax
|
|
13
|
-
|
|
14
|
-
A `processes` resource block declares the name of the process to be tested, and then declares one (or more) property/value pairs:
|
|
15
|
-
|
|
16
|
-
describe processes('process_name') do
|
|
17
|
-
its('property_name') { should eq ['property_value'] }
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
where
|
|
21
|
-
|
|
22
|
-
* `processes('process_name')` specifies the name of a process to check. If this is a string, it will be converted to a Regexp. For more specificity, pass a Regexp directly. If left blank, all processes will be returned.
|
|
23
|
-
* `property_name` may be used to test user (`its('users')`) and state properties (`its('states')`)
|
|
24
|
-
|
|
25
|
-
<br>
|
|
26
|
-
|
|
27
|
-
## Examples
|
|
28
|
-
|
|
29
|
-
The following examples show how to use this InSpec audit resource.
|
|
30
|
-
|
|
31
|
-
### Test if the list length for the mysqld process is 1
|
|
32
|
-
|
|
33
|
-
describe processes('mysqld') do
|
|
34
|
-
its('list.length') { should eq 1 }
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
### Test if the process is owned by a specifc user
|
|
38
|
-
|
|
39
|
-
describe processes('init') do
|
|
40
|
-
its('users') { should eq ['root'] }
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
describe processes('winlogon') do
|
|
44
|
-
its('users') { should cmp "NT AUTHORITY\\SYSTEM" }
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
### Test if a high-priority process is running
|
|
49
|
-
|
|
50
|
-
describe processes('linux_process') do
|
|
51
|
-
its('states') { should eq ['R<'] }
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
describe processes('windows_process') do
|
|
55
|
-
its('labels') { should cmp "High" }
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
### Test if a process exists on the system
|
|
59
|
-
|
|
60
|
-
describe processes('some_process') do
|
|
61
|
-
it { should exist }
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
### Test for a process using a specific Regexp
|
|
65
|
-
|
|
66
|
-
If the process name is too common for a string to uniquely find it,
|
|
67
|
-
you may use a regexp. Inclusion of whitespace characters may be
|
|
68
|
-
needed.
|
|
69
|
-
|
|
70
|
-
describe processes(Regexp.new("/usr/local/bin/swap -d")) do
|
|
71
|
-
its('list.length') { should eq 1 }
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
### Notes for auditing Windows systems
|
|
75
|
-
|
|
76
|
-
Sometimes with system properties there isn't a direct comparison between different operating systems.
|
|
77
|
-
Most of the `property_name`'s do align between the different OS's.
|
|
78
|
-
|
|
79
|
-
There are however some exception's, for example, within linux `states` offers multiple properties.
|
|
80
|
-
Windows doesn't have direct comparison that is a single property so instead `states` is mapped to the property of `Responding`, This is a boolean true/false flag to help determine if the process is hung.
|
|
81
|
-
|
|
82
|
-
Below is a mapping table to help you understand what property the unix field maps to the windows `Get-Process` Property
|
|
83
|
-
|
|
84
|
-
| *unix ps field* | *windows PowerShell Property* |
|
|
85
|
-
|:---------------:|:-----------------------------:|
|
|
86
|
-
|labels |PriorityClass|
|
|
87
|
-
|pids |Id|
|
|
88
|
-
|cpus |CPU|
|
|
89
|
-
|mem |PM|
|
|
90
|
-
|vsz |VirtualMemorySize|
|
|
91
|
-
|rss |NPM|
|
|
92
|
-
|tty |SessionId|
|
|
93
|
-
|states |Responding|
|
|
94
|
-
|start |StartTime|
|
|
95
|
-
|time |TotalProcessorTime|
|
|
96
|
-
|users |UserName|
|
|
97
|
-
|commands |Path|
|
|
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/).
|
|
104
|
-
|
|
105
|
-
### property_name
|
|
106
|
-
|
|
107
|
-
The `property_name` matcher tests the named property for the specified value:
|
|
108
|
-
|
|
109
|
-
its('property_name') { should eq ['property_value'] }
|
|
1
|
+
---
|
|
2
|
+
title: About the processes Resource
|
|
3
|
+
platform: os
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# processes
|
|
7
|
+
|
|
8
|
+
Use the `processes` InSpec audit resource to test properties for programs that are running on the system.
|
|
9
|
+
|
|
10
|
+
<br>
|
|
11
|
+
|
|
12
|
+
## Syntax
|
|
13
|
+
|
|
14
|
+
A `processes` resource block declares the name of the process to be tested, and then declares one (or more) property/value pairs:
|
|
15
|
+
|
|
16
|
+
describe processes('process_name') do
|
|
17
|
+
its('property_name') { should eq ['property_value'] }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
where
|
|
21
|
+
|
|
22
|
+
* `processes('process_name')` specifies the name of a process to check. If this is a string, it will be converted to a Regexp. For more specificity, pass a Regexp directly. If left blank, all processes will be returned.
|
|
23
|
+
* `property_name` may be used to test user (`its('users')`) and state properties (`its('states')`)
|
|
24
|
+
|
|
25
|
+
<br>
|
|
26
|
+
|
|
27
|
+
## Examples
|
|
28
|
+
|
|
29
|
+
The following examples show how to use this InSpec audit resource.
|
|
30
|
+
|
|
31
|
+
### Test if the list length for the mysqld process is 1
|
|
32
|
+
|
|
33
|
+
describe processes('mysqld') do
|
|
34
|
+
its('list.length') { should eq 1 }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
### Test if the process is owned by a specifc user
|
|
38
|
+
|
|
39
|
+
describe processes('init') do
|
|
40
|
+
its('users') { should eq ['root'] }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe processes('winlogon') do
|
|
44
|
+
its('users') { should cmp "NT AUTHORITY\\SYSTEM" }
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
### Test if a high-priority process is running
|
|
49
|
+
|
|
50
|
+
describe processes('linux_process') do
|
|
51
|
+
its('states') { should eq ['R<'] }
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
describe processes('windows_process') do
|
|
55
|
+
its('labels') { should cmp "High" }
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
### Test if a process exists on the system
|
|
59
|
+
|
|
60
|
+
describe processes('some_process') do
|
|
61
|
+
it { should exist }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
### Test for a process using a specific Regexp
|
|
65
|
+
|
|
66
|
+
If the process name is too common for a string to uniquely find it,
|
|
67
|
+
you may use a regexp. Inclusion of whitespace characters may be
|
|
68
|
+
needed.
|
|
69
|
+
|
|
70
|
+
describe processes(Regexp.new("/usr/local/bin/swap -d")) do
|
|
71
|
+
its('list.length') { should eq 1 }
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
### Notes for auditing Windows systems
|
|
75
|
+
|
|
76
|
+
Sometimes with system properties there isn't a direct comparison between different operating systems.
|
|
77
|
+
Most of the `property_name`'s do align between the different OS's.
|
|
78
|
+
|
|
79
|
+
There are however some exception's, for example, within linux `states` offers multiple properties.
|
|
80
|
+
Windows doesn't have direct comparison that is a single property so instead `states` is mapped to the property of `Responding`, This is a boolean true/false flag to help determine if the process is hung.
|
|
81
|
+
|
|
82
|
+
Below is a mapping table to help you understand what property the unix field maps to the windows `Get-Process` Property
|
|
83
|
+
|
|
84
|
+
| *unix ps field* | *windows PowerShell Property* |
|
|
85
|
+
|:---------------:|:-----------------------------:|
|
|
86
|
+
|labels |PriorityClass|
|
|
87
|
+
|pids |Id|
|
|
88
|
+
|cpus |CPU|
|
|
89
|
+
|mem |PM|
|
|
90
|
+
|vsz |VirtualMemorySize|
|
|
91
|
+
|rss |NPM|
|
|
92
|
+
|tty |SessionId|
|
|
93
|
+
|states |Responding|
|
|
94
|
+
|start |StartTime|
|
|
95
|
+
|time |TotalProcessorTime|
|
|
96
|
+
|users |UserName|
|
|
97
|
+
|commands |Path|
|
|
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/).
|
|
104
|
+
|
|
105
|
+
### property_name
|
|
106
|
+
|
|
107
|
+
The `property_name` matcher tests the named property for the specified value:
|
|
108
|
+
|
|
109
|
+
its('property_name') { should eq ['property_value'] }
|