inspec 4.3.2 → 4.6.3
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/Gemfile +36 -38
- data/README.md +37 -21
- data/etc/deprecations.json +10 -0
- data/etc/plugin_filters.json +8 -0
- data/inspec.gemspec +38 -39
- data/lib/bundles/inspec-compliance/api.rb +1 -1
- data/lib/bundles/inspec-compliance/configuration.rb +1 -1
- data/lib/bundles/inspec-compliance/http.rb +1 -1
- data/lib/bundles/inspec-compliance/support.rb +1 -1
- data/lib/bundles/inspec-compliance/target.rb +1 -1
- data/lib/bundles/inspec-supermarket.rb +3 -7
- data/lib/bundles/inspec-supermarket/api.rb +10 -13
- data/lib/bundles/inspec-supermarket/cli.rb +12 -15
- data/lib/bundles/inspec-supermarket/target.rb +7 -11
- data/lib/fetchers/git.rb +14 -15
- data/lib/fetchers/local.rb +6 -10
- data/lib/fetchers/mock.rb +3 -5
- data/lib/fetchers/url.rb +42 -44
- data/lib/inspec.rb +23 -24
- data/lib/inspec/archive/tar.rb +2 -6
- data/lib/inspec/archive/zip.rb +3 -7
- data/lib/inspec/backend.rb +8 -9
- data/lib/inspec/base_cli.rb +64 -65
- data/lib/inspec/cached_fetcher.rb +2 -3
- data/lib/inspec/cli.rb +136 -97
- data/lib/inspec/config.rb +71 -61
- data/lib/inspec/control_eval_context.rb +22 -18
- data/lib/inspec/dependencies/cache.rb +2 -3
- data/lib/inspec/dependencies/dependency_set.rb +2 -3
- data/lib/inspec/dependencies/lockfile.rb +8 -9
- data/lib/inspec/dependencies/requirement.rb +7 -8
- data/lib/inspec/dependencies/resolver.rb +5 -7
- data/lib/inspec/describe.rb +2 -6
- data/lib/inspec/dist.rb +20 -0
- data/lib/inspec/dsl.rb +4 -7
- data/lib/inspec/dsl_shared.rb +1 -2
- data/lib/inspec/env_printer.rb +11 -12
- data/lib/inspec/errors.rb +0 -4
- data/lib/inspec/exceptions.rb +0 -1
- data/lib/inspec/expect.rb +5 -8
- data/lib/inspec/fetcher.rb +7 -10
- data/lib/inspec/file_provider.rb +24 -24
- data/lib/inspec/formatters.rb +3 -3
- data/lib/inspec/formatters/base.rb +8 -8
- data/lib/inspec/globals.rb +2 -2
- data/lib/inspec/impact.rb +5 -7
- data/lib/inspec/input_registry.rb +84 -33
- data/lib/inspec/library_eval_context.rb +3 -6
- data/lib/inspec/log.rb +1 -5
- data/lib/inspec/metadata.rb +17 -16
- data/lib/inspec/method_source.rb +5 -9
- data/lib/inspec/objects.rb +10 -12
- data/lib/inspec/objects/control.rb +7 -9
- data/lib/inspec/objects/describe.rb +9 -11
- data/lib/inspec/objects/each_loop.rb +1 -3
- data/lib/inspec/objects/input.rb +24 -26
- data/lib/inspec/objects/list.rb +4 -6
- data/lib/inspec/objects/or_test.rb +2 -4
- data/lib/inspec/objects/ruby_helper.rb +3 -5
- data/lib/inspec/objects/tag.rb +0 -2
- data/lib/inspec/objects/test.rb +9 -11
- data/lib/inspec/objects/value.rb +3 -5
- data/lib/inspec/plugin/v1.rb +2 -2
- data/lib/inspec/plugin/v1/plugin_types/cli.rb +1 -5
- data/lib/inspec/plugin/v1/plugin_types/fetcher.rb +2 -5
- data/lib/inspec/plugin/v1/plugin_types/resource.rb +4 -6
- data/lib/inspec/plugin/v1/plugin_types/secret.rb +1 -5
- data/lib/inspec/plugin/v1/plugin_types/source_reader.rb +1 -5
- data/lib/inspec/plugin/v1/plugins.rb +15 -19
- data/lib/inspec/plugin/v1/registry.rb +0 -4
- data/lib/inspec/plugin/v2.rb +8 -8
- data/lib/inspec/plugin/v2/activator.rb +1 -1
- data/lib/inspec/plugin/v2/config_file.rb +6 -6
- data/lib/inspec/plugin/v2/filter.rb +13 -13
- data/lib/inspec/plugin/v2/installer.rb +36 -24
- data/lib/inspec/plugin/v2/loader.rb +28 -28
- data/lib/inspec/plugin/v2/plugin_base.rb +15 -2
- data/lib/inspec/plugin/v2/plugin_types/cli.rb +5 -5
- data/lib/inspec/plugin/v2/plugin_types/input.rb +34 -0
- data/lib/inspec/plugin/v2/plugin_types/mock.rb +1 -1
- data/lib/inspec/plugin/v2/registry.rb +7 -7
- data/lib/inspec/polyfill.rb +0 -3
- data/lib/inspec/profile.rb +55 -63
- data/lib/inspec/profile_context.rb +27 -30
- data/lib/inspec/profile_vendor.rb +6 -9
- data/lib/inspec/reporters.rb +24 -24
- data/lib/inspec/reporters/automate.rb +17 -19
- data/lib/inspec/reporters/base.rb +1 -1
- data/lib/inspec/reporters/cli.rb +88 -91
- data/lib/inspec/reporters/json.rb +2 -4
- data/lib/inspec/reporters/json_automate.rb +1 -3
- data/lib/inspec/reporters/json_min.rb +1 -3
- data/lib/inspec/reporters/junit.rb +26 -28
- data/lib/inspec/reporters/yaml.rb +1 -3
- data/lib/inspec/require_loader.rb +0 -4
- data/lib/inspec/resource.rb +4 -125
- data/lib/inspec/resources.rb +121 -0
- data/lib/{resources → inspec/resources}/aide_conf.rb +24 -25
- data/lib/{resources → inspec/resources}/apache.rb +13 -14
- data/lib/{resources → inspec/resources}/apache_conf.rb +16 -17
- data/lib/{resources → inspec/resources}/apt.rb +17 -17
- data/lib/{resources → inspec/resources}/audit_policy.rb +7 -6
- data/lib/{resources → inspec/resources}/auditd.rb +62 -64
- data/lib/{resources → inspec/resources}/auditd_conf.rb +7 -8
- data/lib/{resources → inspec/resources}/bash.rb +6 -8
- data/lib/{resources → inspec/resources}/bond.rb +15 -14
- data/lib/{resources → inspec/resources}/bridge.rb +8 -8
- data/lib/{resources → inspec/resources}/chocolatey_package.rb +10 -8
- data/lib/{resources → inspec/resources}/command.rb +11 -10
- data/lib/{resources → inspec/resources}/cpan.rb +12 -12
- data/lib/{resources → inspec/resources}/cran.rb +9 -9
- data/lib/{resources → inspec/resources}/crontab.rb +47 -48
- data/lib/{resources → inspec/resources}/csv.rb +5 -5
- data/lib/{resources → inspec/resources}/dh_params.rb +5 -7
- data/lib/{resources → inspec/resources}/directory.rb +5 -7
- data/lib/{resources → inspec/resources}/docker.rb +63 -63
- data/lib/{resources → inspec/resources}/docker_container.rb +6 -6
- data/lib/{resources → inspec/resources}/docker_image.rb +9 -9
- data/lib/{resources → inspec/resources}/docker_object.rb +8 -13
- data/lib/{resources → inspec/resources}/docker_plugin.rb +6 -6
- data/lib/{resources → inspec/resources}/docker_service.rb +7 -7
- data/lib/{resources → inspec/resources}/elasticsearch.rb +40 -42
- data/lib/{resources → inspec/resources}/etc_fstab.rb +23 -24
- data/lib/{resources → inspec/resources}/etc_group.rb +26 -27
- data/lib/{resources → inspec/resources}/etc_hosts.rb +11 -13
- data/lib/{resources → inspec/resources}/etc_hosts_allow_deny.rb +25 -27
- data/lib/{resources → inspec/resources}/file.rb +80 -79
- data/lib/{resources → inspec/resources}/filesystem.rb +20 -15
- data/lib/{resources → inspec/resources}/firewalld.rb +26 -26
- data/lib/{resources → inspec/resources}/gem.rb +12 -12
- data/lib/{resources → inspec/resources}/groups.rb +28 -27
- data/lib/{resources → inspec/resources}/grub_conf.rb +46 -48
- data/lib/{resources → inspec/resources}/host.rb +31 -29
- data/lib/{resources → inspec/resources}/http.rb +24 -24
- data/lib/{resources → inspec/resources}/iis_app.rb +6 -7
- data/lib/{resources → inspec/resources}/iis_app_pool.rb +21 -19
- data/lib/{resources → inspec/resources}/iis_site.rb +17 -15
- data/lib/{resources → inspec/resources}/inetd_conf.rb +9 -10
- data/lib/{resources → inspec/resources}/ini.rb +7 -8
- data/lib/{resources → inspec/resources}/interface.rb +30 -30
- data/lib/{resources → inspec/resources}/iptables.rb +8 -8
- data/lib/{resources → inspec/resources}/json.rb +8 -10
- data/lib/{resources → inspec/resources}/kernel_module.rb +15 -15
- data/lib/{resources → inspec/resources}/kernel_parameter.rb +8 -8
- data/lib/{resources → inspec/resources}/key_rsa.rb +8 -10
- data/lib/{resources → inspec/resources}/ksh.rb +6 -8
- data/lib/{resources → inspec/resources}/limits_conf.rb +8 -9
- data/lib/{resources/login_def.rb → inspec/resources/login_defs.rb} +9 -10
- data/lib/{resources → inspec/resources}/mount.rb +6 -8
- data/lib/{resources → inspec/resources}/mssql_session.rb +16 -18
- data/lib/inspec/resources/mysql.rb +81 -0
- data/lib/{resources → inspec/resources}/mysql_conf.rb +13 -14
- data/lib/{resources → inspec/resources}/mysql_session.rb +16 -16
- data/lib/{resources → inspec/resources}/nginx.rb +16 -17
- data/lib/{resources → inspec/resources}/nginx_conf.rb +26 -27
- data/lib/{resources → inspec/resources}/npm.rb +9 -10
- data/lib/{resources → inspec/resources}/ntp_conf.rb +9 -10
- data/lib/{resources → inspec/resources}/oneget.rb +8 -8
- data/lib/{resources → inspec/resources}/oracledb_session.rb +33 -34
- data/lib/{resources → inspec/resources}/os.rb +6 -8
- data/lib/{resources → inspec/resources}/os_env.rb +11 -12
- data/lib/{resources → inspec/resources}/package.rb +66 -65
- data/lib/{resources → inspec/resources}/packages.rb +13 -13
- data/lib/{resources → inspec/resources}/parse_config.rb +8 -8
- data/lib/{resources → inspec/resources}/passwd.rb +18 -19
- data/lib/{resources → inspec/resources}/pip.rb +19 -19
- data/lib/{resources → inspec/resources}/platform.rb +9 -11
- data/lib/{resources → inspec/resources}/port.rb +134 -136
- data/lib/{resources → inspec/resources}/postgres.rb +40 -32
- data/lib/{resources → inspec/resources}/postgres_conf.rb +17 -17
- data/lib/{resources → inspec/resources}/postgres_hba_conf.rb +21 -23
- data/lib/{resources → inspec/resources}/postgres_ident_conf.rb +12 -14
- data/lib/{resources → inspec/resources}/postgres_session.rb +8 -9
- data/lib/{resources → inspec/resources}/powershell.rb +17 -13
- data/lib/{resources → inspec/resources}/processes.rb +29 -29
- data/lib/{resources/rabbitmq_conf.rb → inspec/resources/rabbitmq_config.rb} +10 -11
- data/lib/{resources → inspec/resources}/registry_key.rb +14 -14
- data/lib/inspec/resources/script.rb +1 -0
- data/lib/{resources → inspec/resources}/security_identifier.rb +11 -10
- data/lib/{resources → inspec/resources}/security_policy.rb +59 -58
- data/lib/{resources → inspec/resources}/service.rb +74 -75
- data/lib/{resources → inspec/resources}/shadow.rb +44 -45
- data/lib/{resources/ssh_conf.rb → inspec/resources/ssh_config.rb} +16 -17
- data/lib/{resources → inspec/resources}/ssl.rb +28 -29
- data/lib/inspec/resources/sys_info.rb +30 -0
- data/lib/{resources → inspec/resources}/toml.rb +5 -7
- data/lib/{resources → inspec/resources}/users.rb +65 -65
- data/lib/{resources → inspec/resources}/vbscript.rb +8 -9
- data/lib/{resources → inspec/resources}/virtualization.rb +60 -62
- data/lib/{resources → inspec/resources}/windows_feature.rb +9 -9
- data/lib/{resources → inspec/resources}/windows_hotfix.rb +5 -5
- data/lib/{resources → inspec/resources}/windows_task.rb +16 -15
- data/lib/{resources → inspec/resources}/wmi.rb +7 -8
- data/lib/{resources → inspec/resources}/x509_certificate.rb +9 -11
- data/lib/{resources/xinetd.rb → inspec/resources/xinetd_conf.rb} +27 -29
- data/lib/{resources → inspec/resources}/xml.rb +7 -7
- data/lib/{resources → inspec/resources}/yaml.rb +5 -6
- data/lib/{resources → inspec/resources}/yum.rb +10 -10
- data/lib/{resources → inspec/resources}/zfs_dataset.rb +6 -6
- data/lib/{resources → inspec/resources}/zfs_pool.rb +4 -4
- data/lib/inspec/rspec_extensions.rb +24 -8
- data/lib/inspec/rule.rb +14 -15
- data/lib/inspec/runner.rb +28 -28
- data/lib/inspec/runner_mock.rb +1 -5
- data/lib/inspec/runner_rspec.rb +18 -20
- data/lib/inspec/runtime_profile.rb +2 -5
- data/lib/inspec/schema.rb +142 -143
- data/lib/inspec/secrets.rb +3 -7
- data/lib/inspec/secrets/yaml.rb +3 -5
- data/lib/inspec/shell.rb +11 -15
- data/lib/inspec/shell_detector.rb +6 -7
- data/lib/inspec/source_reader.rb +4 -8
- data/lib/inspec/ui.rb +33 -39
- data/lib/inspec/ui_table_helper.rb +12 -0
- data/lib/{utils → inspec/utils}/command_wrapper.rb +4 -8
- data/lib/{utils → inspec/utils}/convert.rb +0 -4
- data/lib/{utils → inspec/utils}/database_helpers.rb +4 -8
- data/lib/inspec/utils/deprecation.rb +6 -0
- data/lib/{utils → inspec/utils}/deprecation/config_file.rb +19 -19
- data/lib/{utils → inspec/utils}/deprecation/deprecator.rb +12 -12
- data/lib/{utils → inspec/utils}/deprecation/errors.rb +1 -1
- data/lib/{utils → inspec/utils}/deprecation/global_method.rb +2 -2
- data/lib/{utils → inspec/utils}/enumerable_delegation.rb +0 -2
- data/lib/{utils → inspec/utils}/erlang_parser.rb +61 -65
- data/lib/{utils → inspec/utils}/file_reader.rb +1 -2
- data/lib/{utils → inspec/utils}/filter.rb +30 -33
- data/lib/{utils → inspec/utils}/filter_array.rb +0 -2
- data/lib/{utils → inspec/utils}/find_files.rb +9 -12
- data/lib/{utils → inspec/utils}/hash.rb +1 -5
- data/lib/inspec/utils/json_log.rb +15 -0
- data/lib/inspec/utils/latest_version.rb +13 -0
- data/lib/{utils → inspec/utils}/modulator.rb +0 -3
- data/lib/{utils → inspec/utils}/nginx_parser.rb +31 -35
- data/lib/{utils → inspec/utils}/object_traversal.rb +0 -3
- data/lib/{utils → inspec/utils}/parser.rb +45 -45
- data/lib/{utils → inspec/utils}/pkey_reader.rb +4 -2
- data/lib/{utils → inspec/utils}/simpleconfig.rb +8 -10
- data/lib/{utils → inspec/utils}/spdx.rb +1 -4
- data/lib/{utils → inspec/utils}/spdx.txt +0 -0
- data/lib/inspec/utils/telemetry.rb +3 -3
- data/lib/inspec/utils/telemetry/collector.rb +30 -9
- data/lib/inspec/utils/telemetry/data_series.rb +3 -1
- data/lib/inspec/utils/telemetry/global_methods.rb +1 -1
- data/lib/inspec/version.rb +1 -1
- data/lib/matchers/matchers.rb +22 -25
- data/lib/plugins/inspec-artifact/lib/inspec-artifact.rb +1 -1
- data/lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb +52 -45
- data/lib/plugins/inspec-artifact/lib/inspec-artifact/cli.rb +18 -16
- data/lib/plugins/inspec-artifact/test/functional/inspec_artifact_test.rb +12 -11
- data/lib/plugins/inspec-compliance/lib/inspec-compliance.rb +1 -1
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/api.rb +73 -73
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/api/login.rb +66 -62
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/cli.rb +59 -57
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/configuration.rb +11 -11
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/http.rb +20 -22
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/support.rb +2 -4
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/target.rb +30 -27
- data/lib/plugins/inspec-compliance/test/functional/inspec_compliance_test.rb +12 -14
- data/lib/plugins/inspec-compliance/test/integration/default/cli.rb +39 -41
- data/lib/plugins/inspec-compliance/test/unit/api/login_test.rb +64 -64
- data/lib/plugins/inspec-compliance/test/unit/api_test.rb +157 -156
- data/lib/plugins/inspec-compliance/test/unit/target_test.rb +85 -85
- data/lib/plugins/inspec-habitat/Berksfile +2 -2
- data/lib/plugins/inspec-habitat/lib/inspec-habitat.rb +1 -1
- data/lib/plugins/inspec-habitat/lib/inspec-habitat/cli.rb +15 -13
- data/lib/plugins/inspec-habitat/lib/inspec-habitat/profile.rb +64 -63
- data/lib/plugins/inspec-habitat/templates/habitat/hooks/run.erb +3 -3
- data/lib/plugins/inspec-habitat/templates/habitat/plan.sh.erb +11 -11
- data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/Berksfile +1 -1
- data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/metadata.rb +8 -8
- data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/recipes/default.rb +17 -17
- data/lib/plugins/inspec-habitat/test/functional/inspec_habitat_test.rb +9 -8
- data/lib/plugins/inspec-habitat/test/integration/default/inspec_habitat/controls/inspec_habitat.rb +14 -14
- data/lib/plugins/inspec-habitat/test/support/example_profile/controls/example.rb +4 -4
- data/lib/plugins/inspec-habitat/test/unit/profile_test.rb +42 -41
- data/lib/plugins/inspec-init/lib/inspec-init.rb +1 -1
- data/lib/plugins/inspec-init/lib/inspec-init/cli.rb +6 -8
- data/lib/plugins/inspec-init/lib/inspec-init/cli_plugin.rb +72 -74
- data/lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb +9 -11
- data/lib/plugins/inspec-init/lib/inspec-init/renderer.rb +4 -4
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/Gemfile +0 -1
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/inspec-plugin-template.gemspec +0 -2
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template.rb +0 -2
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/cli_command.rb +0 -2
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/plugin.rb +0 -2
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/version.rb +0 -2
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/functional/inspec_plugin_template_test.rb +5 -5
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/helper.rb +1 -3
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/cli_args_test.rb +2 -2
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/plugin_def_test.rb +2 -2
- data/lib/plugins/inspec-init/templates/profiles/aws/controls/example.rb +10 -11
- data/lib/plugins/inspec-init/templates/profiles/azure/controls/example.rb +4 -5
- data/lib/plugins/inspec-init/templates/profiles/gcp/controls/example.rb +10 -11
- data/lib/plugins/inspec-init/templates/profiles/os/controls/example.rb +6 -7
- data/lib/plugins/inspec-init/test/functional/inspec_init_plugin_test.rb +51 -50
- data/lib/plugins/inspec-init/test/functional/inspec_init_profile_test.rb +35 -33
- data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli.rb +1 -2
- data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb +72 -70
- data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/plugin.rb +1 -1
- data/lib/plugins/inspec-plugin-manager-cli/test/fixtures/plugins/wrong-name/lib/wrong-name.rb +1 -1
- data/lib/plugins/inspec-plugin-manager-cli/test/functional/inspec-plugin_test.rb +281 -271
- data/lib/plugins/inspec-plugin-manager-cli/test/unit/cli_args_test.rb +41 -41
- data/lib/plugins/inspec-plugin-manager-cli/test/unit/plugin_def_test.rb +25 -6
- data/lib/plugins/shared/core_plugin_test_helper.rb +43 -38
- data/lib/resource_support/aws.rb +67 -67
- data/lib/resource_support/aws/aws_plural_resource_mixin.rb +4 -1
- data/lib/resource_support/aws/aws_resource_mixin.rb +4 -3
- data/lib/resource_support/aws/aws_singular_resource_mixin.rb +4 -1
- data/lib/resources/aws/aws_billing_report.rb +15 -8
- data/lib/resources/aws/aws_billing_reports.rb +10 -7
- data/lib/resources/aws/aws_cloudtrail_trail.rb +9 -5
- data/lib/resources/aws/aws_cloudtrail_trails.rb +9 -5
- data/lib/resources/aws/aws_cloudwatch_alarm.rb +9 -5
- data/lib/resources/aws/aws_cloudwatch_log_metric_filter.rb +12 -8
- data/lib/resources/aws/aws_config_delivery_channel.rb +13 -9
- data/lib/resources/aws/aws_config_recorder.rb +10 -6
- data/lib/resources/aws/aws_ebs_volume.rb +12 -8
- data/lib/resources/aws/aws_ebs_volumes.rb +9 -5
- data/lib/resources/aws/aws_ec2_instance.rb +14 -11
- data/lib/resources/aws/aws_ec2_instances.rb +9 -5
- data/lib/resources/aws/aws_ecs_cluster.rb +11 -7
- data/lib/resources/aws/aws_eks_cluster.rb +13 -9
- data/lib/resources/aws/aws_elb.rb +9 -5
- data/lib/resources/aws/aws_elbs.rb +9 -5
- data/lib/resources/aws/aws_flow_log.rb +17 -13
- data/lib/resources/aws/aws_iam_access_key.rb +15 -11
- data/lib/resources/aws/aws_iam_access_keys.rb +19 -15
- data/lib/resources/aws/aws_iam_group.rb +9 -5
- data/lib/resources/aws/aws_iam_groups.rb +9 -5
- data/lib/resources/aws/aws_iam_password_policy.rb +13 -10
- data/lib/resources/aws/aws_iam_policies.rb +9 -5
- data/lib/resources/aws/aws_iam_policy.rb +16 -12
- data/lib/resources/aws/aws_iam_role.rb +9 -5
- data/lib/resources/aws/aws_iam_root_user.rb +12 -8
- data/lib/resources/aws/aws_iam_user.rb +12 -12
- data/lib/resources/aws/aws_iam_users.rb +10 -10
- data/lib/resources/aws/aws_kms_key.rb +12 -8
- data/lib/resources/aws/aws_kms_keys.rb +9 -5
- data/lib/resources/aws/aws_rds_instance.rb +11 -8
- data/lib/resources/aws/aws_route_table.rb +11 -7
- data/lib/resources/aws/aws_route_tables.rb +10 -6
- data/lib/resources/aws/aws_s3_bucket.rb +14 -11
- data/lib/resources/aws/aws_s3_bucket_object.rb +12 -9
- data/lib/resources/aws/aws_s3_buckets.rb +9 -7
- data/lib/resources/aws/aws_security_group.rb +16 -12
- data/lib/resources/aws/aws_security_groups.rb +12 -8
- data/lib/resources/aws/aws_sns_subscription.rb +15 -11
- data/lib/resources/aws/aws_sns_topic.rb +10 -6
- data/lib/resources/aws/aws_sns_topics.rb +9 -5
- data/lib/resources/aws/aws_sqs_queue.rb +18 -14
- data/lib/resources/aws/aws_subnet.rb +11 -7
- data/lib/resources/aws/aws_subnets.rb +9 -5
- data/lib/resources/aws/aws_vpc.rb +10 -6
- data/lib/resources/aws/aws_vpcs.rb +9 -5
- data/lib/resources/azure/azure_backend.rb +20 -18
- data/lib/resources/azure/azure_generic_resource.rb +13 -15
- data/lib/resources/azure/azure_resource_group.rb +17 -19
- data/lib/resources/azure/azure_virtual_machine.rb +6 -8
- data/lib/resources/azure/azure_virtual_machine_data_disk.rb +6 -8
- data/lib/source_readers/flat.rb +6 -10
- data/lib/source_readers/inspec.rb +8 -12
- metadata +141 -142
- data/lib/resources/mysql.rb +0 -82
- data/lib/resources/sys_info.rb +0 -28
- data/lib/utils/deprecation.rb +0 -6
- data/lib/utils/json_log.rb +0 -18
- data/lib/utils/latest_version.rb +0 -22
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
require "resource_support/aws/aws_singular_resource_mixin"
|
|
2
|
+
require "resource_support/aws/aws_backend_base"
|
|
3
|
+
require "aws-sdk-iam"
|
|
4
|
+
|
|
1
5
|
class AwsIamGroup < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_iam_group"
|
|
7
|
+
desc "Verifies settings for AWS IAM Group"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_iam_group('mygroup') do
|
|
6
10
|
it { should exist }
|
|
7
11
|
end
|
|
8
12
|
EXAMPLE
|
|
9
|
-
supports platform:
|
|
13
|
+
supports platform: "aws"
|
|
10
14
|
|
|
11
15
|
include AwsSingularResourceMixin
|
|
12
16
|
attr_reader :group_name, :users
|
|
@@ -22,11 +26,11 @@ class AwsIamGroup < Inspec.resource(1)
|
|
|
22
26
|
raw_params: raw_params,
|
|
23
27
|
allowed_params: [:group_name],
|
|
24
28
|
allowed_scalar_name: :group_name,
|
|
25
|
-
allowed_scalar_type: String
|
|
29
|
+
allowed_scalar_type: String
|
|
26
30
|
)
|
|
27
31
|
|
|
28
32
|
if validated_params.empty?
|
|
29
|
-
raise ArgumentError,
|
|
33
|
+
raise ArgumentError, "You must provide a group_name to aws_iam_group."
|
|
30
34
|
end
|
|
31
35
|
|
|
32
36
|
validated_params
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
+
require "resource_support/aws/aws_plural_resource_mixin"
|
|
2
|
+
require "resource_support/aws/aws_backend_base"
|
|
3
|
+
require "aws-sdk-iam"
|
|
4
|
+
|
|
1
5
|
class AwsIamGroups < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_iam_groups"
|
|
7
|
+
desc "Verifies settings for AWS IAM groups in bulk"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_iam_groups do
|
|
6
10
|
it { should exist }
|
|
7
11
|
end
|
|
8
12
|
EXAMPLE
|
|
9
|
-
supports platform:
|
|
13
|
+
supports platform: "aws"
|
|
10
14
|
|
|
11
15
|
include AwsPluralResourceMixin
|
|
12
16
|
|
|
13
17
|
def validate_params(resource_params)
|
|
14
18
|
unless resource_params.empty?
|
|
15
|
-
raise ArgumentError,
|
|
19
|
+
raise ArgumentError, "aws_iam_groups does not accept resource parameters."
|
|
16
20
|
end
|
|
17
21
|
resource_params
|
|
18
22
|
end
|
|
@@ -23,7 +27,7 @@ class AwsIamGroups < Inspec.resource(1)
|
|
|
23
27
|
filter.install_filter_methods_on_resource(self, :table)
|
|
24
28
|
|
|
25
29
|
def to_s
|
|
26
|
-
|
|
30
|
+
"IAM Groups"
|
|
27
31
|
end
|
|
28
32
|
|
|
29
33
|
def fetch_from_api
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
require "resource_support/aws/aws_singular_resource_mixin"
|
|
2
|
+
require "resource_support/aws/aws_backend_base"
|
|
3
|
+
require "aws-sdk-iam"
|
|
4
|
+
|
|
2
5
|
class AwsIamPasswordPolicy < Inspec.resource(1)
|
|
3
|
-
name
|
|
4
|
-
desc
|
|
6
|
+
name "aws_iam_password_policy"
|
|
7
|
+
desc "Verifies iam password policy"
|
|
5
8
|
|
|
6
9
|
example <<~EXAMPLE
|
|
7
10
|
describe aws_iam_password_policy do
|
|
@@ -12,7 +15,7 @@ class AwsIamPasswordPolicy < Inspec.resource(1)
|
|
|
12
15
|
its('requires_uppercase_characters?') { should be true }
|
|
13
16
|
end
|
|
14
17
|
EXAMPLE
|
|
15
|
-
supports platform:
|
|
18
|
+
supports platform: "aws"
|
|
16
19
|
|
|
17
20
|
# TODO: rewrite to avoid direct injection, match other resources, use AwsSingularResourceMixin
|
|
18
21
|
def initialize(conn = nil)
|
|
@@ -41,7 +44,7 @@ class AwsIamPasswordPolicy < Inspec.resource(1)
|
|
|
41
44
|
# The AWS error here is unhelpful:
|
|
42
45
|
# "unable to sign request without credentials set"
|
|
43
46
|
Inspec::Log.error "It appears that you have not set your AWS credentials. You may set them using environment variables, or using the 'aws://region/aws_credentials_profile' target. See https://www.inspec.io/docs/reference/platforms for details."
|
|
44
|
-
fail_resource(
|
|
47
|
+
fail_resource("No AWS credentials available")
|
|
45
48
|
rescue Aws::Errors::ServiceError => e
|
|
46
49
|
fail_resource e.message
|
|
47
50
|
end
|
|
@@ -59,7 +62,7 @@ class AwsIamPasswordPolicy < Inspec.resource(1)
|
|
|
59
62
|
end
|
|
60
63
|
|
|
61
64
|
def to_s
|
|
62
|
-
|
|
65
|
+
"IAM Password-Policy"
|
|
63
66
|
end
|
|
64
67
|
|
|
65
68
|
def exists?
|
|
@@ -73,12 +76,12 @@ class AwsIamPasswordPolicy < Inspec.resource(1)
|
|
|
73
76
|
end
|
|
74
77
|
|
|
75
78
|
def max_password_age_in_days
|
|
76
|
-
raise
|
|
79
|
+
raise "this policy does not expire passwords" unless expire_passwords?
|
|
77
80
|
@policy.max_password_age
|
|
78
81
|
end
|
|
79
82
|
|
|
80
83
|
def number_of_passwords_to_remember
|
|
81
|
-
raise
|
|
84
|
+
raise "this policy does not prevent password reuse" \
|
|
82
85
|
unless prevent_password_reuse?
|
|
83
86
|
@policy.password_reuse_prevention
|
|
84
87
|
end
|
|
@@ -92,13 +95,13 @@ class AwsIamPasswordPolicy < Inspec.resource(1)
|
|
|
92
95
|
:expire_passwords,
|
|
93
96
|
].each do |matcher_stem|
|
|
94
97
|
# Create our predicates (for example, 'require_symbols?')
|
|
95
|
-
stem_with_question_mark = (matcher_stem.to_s +
|
|
98
|
+
stem_with_question_mark = (matcher_stem.to_s + "?").to_sym
|
|
96
99
|
define_method stem_with_question_mark do
|
|
97
100
|
@policy.send(matcher_stem)
|
|
98
101
|
end
|
|
99
102
|
# RSpec will expose that as (for example) `be_require_symbols`.
|
|
100
103
|
# To undo that, we have to make a matcher alias.
|
|
101
|
-
stem_with_be = (
|
|
104
|
+
stem_with_be = ("be_" + matcher_stem.to_s).to_sym
|
|
102
105
|
RSpec::Matchers.alias_matcher matcher_stem, stem_with_be
|
|
103
106
|
end
|
|
104
107
|
|
|
@@ -1,17 +1,21 @@
|
|
|
1
|
+
require "resource_support/aws/aws_plural_resource_mixin"
|
|
2
|
+
require "resource_support/aws/aws_backend_base"
|
|
3
|
+
require "aws-sdk-iam"
|
|
4
|
+
|
|
1
5
|
class AwsIamPolicies < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_iam_policies"
|
|
7
|
+
desc "Verifies settings for AWS IAM Policies in bulk"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_iam_policies do
|
|
6
10
|
it { should exist }
|
|
7
11
|
end
|
|
8
12
|
EXAMPLE
|
|
9
|
-
supports platform:
|
|
13
|
+
supports platform: "aws"
|
|
10
14
|
|
|
11
15
|
include AwsPluralResourceMixin
|
|
12
16
|
def validate_params(resource_params)
|
|
13
17
|
unless resource_params.empty?
|
|
14
|
-
raise ArgumentError,
|
|
18
|
+
raise ArgumentError, "aws_iam_policies does not accept resource parameters."
|
|
15
19
|
end
|
|
16
20
|
resource_params
|
|
17
21
|
end
|
|
@@ -24,7 +28,7 @@ class AwsIamPolicies < Inspec.resource(1)
|
|
|
24
28
|
filter.install_filter_methods_on_resource(self, :table)
|
|
25
29
|
|
|
26
30
|
def to_s
|
|
27
|
-
|
|
31
|
+
"IAM Policies"
|
|
28
32
|
end
|
|
29
33
|
|
|
30
34
|
def fetch_from_api
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
require
|
|
1
|
+
require "resource_support/aws/aws_singular_resource_mixin"
|
|
2
|
+
require "resource_support/aws/aws_backend_base"
|
|
3
|
+
require "aws-sdk-iam"
|
|
4
|
+
|
|
5
|
+
require "json"
|
|
6
|
+
require "set"
|
|
7
|
+
require "uri"
|
|
4
8
|
|
|
5
9
|
class AwsIamPolicy < Inspec.resource(1)
|
|
6
|
-
name
|
|
7
|
-
desc
|
|
10
|
+
name "aws_iam_policy"
|
|
11
|
+
desc "Verifies settings for individual AWS IAM Policy"
|
|
8
12
|
example <<~EXAMPLE
|
|
9
13
|
describe aws_iam_policy('AWSSupportAccess') do
|
|
10
14
|
it { should be_attached }
|
|
11
15
|
end
|
|
12
16
|
EXAMPLE
|
|
13
|
-
supports platform:
|
|
17
|
+
supports platform: "aws"
|
|
14
18
|
|
|
15
19
|
include AwsSingularResourceMixin
|
|
16
20
|
|
|
@@ -37,7 +41,7 @@ class AwsIamPolicy < Inspec.resource(1)
|
|
|
37
41
|
end
|
|
38
42
|
|
|
39
43
|
def attached?
|
|
40
|
-
|
|
44
|
+
attachment_count > 0
|
|
41
45
|
end
|
|
42
46
|
|
|
43
47
|
def attached_users
|
|
@@ -85,8 +89,8 @@ class AwsIamPolicy < Inspec.resource(1)
|
|
|
85
89
|
def statement_count
|
|
86
90
|
return nil unless exists?
|
|
87
91
|
# Typically it is an array of statements
|
|
88
|
-
if policy[
|
|
89
|
-
policy[
|
|
92
|
+
if policy["Statement"].is_a? Array
|
|
93
|
+
policy["Statement"].count
|
|
90
94
|
else
|
|
91
95
|
# But if there is one statement, it is permissable to degenerate the array,
|
|
92
96
|
# and place the statement as a hash directly under the 'Statement' key
|
|
@@ -160,8 +164,8 @@ class AwsIamPolicy < Inspec.resource(1)
|
|
|
160
164
|
# directly in policy['Statement'], rather than in an
|
|
161
165
|
# Array within it. See arn:aws:iam::aws:policy/AWSCertificateManagerReadOnly
|
|
162
166
|
# Thus, coerce to Array.
|
|
163
|
-
policy[
|
|
164
|
-
policy[
|
|
167
|
+
policy["Statement"] = [policy["Statement"]] if policy["Statement"].is_a? Hash
|
|
168
|
+
policy["Statement"].map do |statement|
|
|
165
169
|
# Coerce some values into arrays
|
|
166
170
|
%w{Action Resource}.each do |field|
|
|
167
171
|
if statement.key?(field)
|
|
@@ -226,7 +230,7 @@ class AwsIamPolicy < Inspec.resource(1)
|
|
|
226
230
|
raw_params: raw_params,
|
|
227
231
|
allowed_params: [:policy_name],
|
|
228
232
|
allowed_scalar_name: :policy_name,
|
|
229
|
-
allowed_scalar_type: String
|
|
233
|
+
allowed_scalar_type: String
|
|
230
234
|
)
|
|
231
235
|
|
|
232
236
|
if validated_params.empty?
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
require "resource_support/aws/aws_singular_resource_mixin"
|
|
2
|
+
require "resource_support/aws/aws_backend_base"
|
|
3
|
+
require "aws-sdk-iam"
|
|
4
|
+
|
|
1
5
|
class AwsIamRole < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_iam_role"
|
|
7
|
+
desc "Verifies settings for an IAM Role"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_iam_role('my-role') do
|
|
6
10
|
it { should exist }
|
|
7
11
|
end
|
|
8
12
|
EXAMPLE
|
|
9
|
-
supports platform:
|
|
13
|
+
supports platform: "aws"
|
|
10
14
|
|
|
11
15
|
include AwsSingularResourceMixin
|
|
12
16
|
attr_reader :description, :role_name
|
|
@@ -22,10 +26,10 @@ class AwsIamRole < Inspec.resource(1)
|
|
|
22
26
|
raw_params: raw_params,
|
|
23
27
|
allowed_params: [:role_name],
|
|
24
28
|
allowed_scalar_name: :role_name,
|
|
25
|
-
allowed_scalar_type: String
|
|
29
|
+
allowed_scalar_type: String
|
|
26
30
|
)
|
|
27
31
|
if validated_params.empty?
|
|
28
|
-
raise ArgumentError,
|
|
32
|
+
raise ArgumentError, "You must provide a role_name to aws_iam_role."
|
|
29
33
|
end
|
|
30
34
|
validated_params
|
|
31
35
|
end
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
require "resource_support/aws/aws_singular_resource_mixin"
|
|
2
|
+
require "resource_support/aws/aws_backend_base"
|
|
3
|
+
require "aws-sdk-iam"
|
|
4
|
+
|
|
1
5
|
class AwsIamRootUser < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_iam_root_user"
|
|
7
|
+
desc "Verifies settings for AWS root account"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_iam_root_user do
|
|
6
10
|
it { should have_access_key }
|
|
7
11
|
end
|
|
8
12
|
EXAMPLE
|
|
9
|
-
supports platform:
|
|
13
|
+
supports platform: "aws"
|
|
10
14
|
|
|
11
15
|
# TODO: rewrite to avoid direct injection, match other resources, use AwsSingularResourceMixin
|
|
12
16
|
def initialize(conn = nil)
|
|
@@ -21,7 +25,7 @@ class AwsIamRootUser < Inspec.resource(1)
|
|
|
21
25
|
# The AWS error here is unhelpful:
|
|
22
26
|
# "unable to sign request without credentials set"
|
|
23
27
|
Inspec::Log.error "It appears that you have not set your AWS credentials. You may set them using environment variables, or using the 'aws://region/aws_credentials_profile' target. See https://www.inspec.io/docs/reference/platforms for details."
|
|
24
|
-
fail_resource(
|
|
28
|
+
fail_resource("No AWS credentials available")
|
|
25
29
|
rescue Aws::Errors::ServiceError => e
|
|
26
30
|
fail_resource e.message
|
|
27
31
|
end
|
|
@@ -39,11 +43,11 @@ class AwsIamRootUser < Inspec.resource(1)
|
|
|
39
43
|
end
|
|
40
44
|
|
|
41
45
|
def has_access_key?
|
|
42
|
-
summary_account[
|
|
46
|
+
summary_account["AccountAccessKeysPresent"] == 1
|
|
43
47
|
end
|
|
44
48
|
|
|
45
49
|
def has_mfa_enabled?
|
|
46
|
-
summary_account[
|
|
50
|
+
summary_account["AccountMFAEnabled"] == 1
|
|
47
51
|
end
|
|
48
52
|
|
|
49
53
|
# if the root account has a Virtual MFA device then it will have a special
|
|
@@ -51,7 +55,7 @@ class AwsIamRootUser < Inspec.resource(1)
|
|
|
51
55
|
def has_virtual_mfa_enabled?
|
|
52
56
|
mfa_device_pattern = %r{arn:aws:iam::\d{12}:mfa\/root-account-mfa-device}
|
|
53
57
|
|
|
54
|
-
virtual_mfa_devices.any? { |d| mfa_device_pattern =~ d[
|
|
58
|
+
virtual_mfa_devices.any? { |d| mfa_device_pattern =~ d["serial_number"] }
|
|
55
59
|
end
|
|
56
60
|
|
|
57
61
|
def has_hardware_mfa_enabled?
|
|
@@ -59,7 +63,7 @@ class AwsIamRootUser < Inspec.resource(1)
|
|
|
59
63
|
end
|
|
60
64
|
|
|
61
65
|
def to_s
|
|
62
|
-
|
|
66
|
+
"AWS Root-User"
|
|
63
67
|
end
|
|
64
68
|
|
|
65
69
|
private
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
require "resource_support/aws/aws_singular_resource_mixin"
|
|
2
|
+
require "resource_support/aws/aws_backend_base"
|
|
3
|
+
require "aws-sdk-iam"
|
|
4
|
+
|
|
5
5
|
class AwsIamUser < Inspec.resource(1)
|
|
6
|
-
name
|
|
7
|
-
desc
|
|
6
|
+
name "aws_iam_user"
|
|
7
|
+
desc "Verifies settings for AWS IAM user"
|
|
8
8
|
example <<~EXAMPLE
|
|
9
9
|
describe aws_iam_user(username: 'test_user') do
|
|
10
10
|
it { should have_mfa_enabled }
|
|
@@ -13,7 +13,7 @@ class AwsIamUser < Inspec.resource(1)
|
|
|
13
13
|
it { should_not have_attached_user_policies }
|
|
14
14
|
end
|
|
15
15
|
EXAMPLE
|
|
16
|
-
supports platform:
|
|
16
|
+
supports platform: "aws"
|
|
17
17
|
|
|
18
18
|
include AwsSingularResourceMixin
|
|
19
19
|
attr_reader :access_keys, :attached_policy_names, :attached_policy_arns, \
|
|
@@ -22,7 +22,7 @@ class AwsIamUser < Inspec.resource(1)
|
|
|
22
22
|
alias has_console_password? has_console_password
|
|
23
23
|
|
|
24
24
|
def name
|
|
25
|
-
Inspec.deprecate(:properties_aws_iam_user,
|
|
25
|
+
Inspec.deprecate(:properties_aws_iam_user, "The aws_iam_user `name` property is deprecated. Please use `username` instead")
|
|
26
26
|
username
|
|
27
27
|
end
|
|
28
28
|
|
|
@@ -47,22 +47,22 @@ class AwsIamUser < Inspec.resource(1)
|
|
|
47
47
|
raw_params: raw_params,
|
|
48
48
|
allowed_params: [:username, :aws_user_struct, :name, :user],
|
|
49
49
|
allowed_scalar_name: :username,
|
|
50
|
-
allowed_scalar_type: String
|
|
50
|
+
allowed_scalar_type: String
|
|
51
51
|
)
|
|
52
52
|
# If someone passed :name, rename it to :username
|
|
53
53
|
if validated_params.key?(:name)
|
|
54
|
-
Inspec.deprecate(:properties_aws_iam_user,
|
|
54
|
+
Inspec.deprecate(:properties_aws_iam_user, "The aws_iam_users `name` property is deprecated. Please use `username` instead")
|
|
55
55
|
validated_params[:username] = validated_params.delete(:name)
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
# If someone passed :user, rename it to :aws_user_struct
|
|
59
59
|
if validated_params.key?(:user)
|
|
60
|
-
Inspec.deprecate(:properties_aws_iam_user,
|
|
60
|
+
Inspec.deprecate(:properties_aws_iam_user, "The aws_iam_users `user` property is deprecated. Please use `aws_user_struct` instead")
|
|
61
61
|
validated_params[:aws_user_struct] = validated_params.delete(:user)
|
|
62
62
|
end
|
|
63
63
|
|
|
64
64
|
if validated_params.empty?
|
|
65
|
-
raise ArgumentError,
|
|
65
|
+
raise ArgumentError, "You must provide a username to aws_iam_user."
|
|
66
66
|
end
|
|
67
67
|
validated_params
|
|
68
68
|
end
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
require "resource_support/aws/aws_plural_resource_mixin"
|
|
2
|
+
require "resource_support/aws/aws_backend_base"
|
|
3
|
+
require "aws-sdk-iam"
|
|
4
|
+
|
|
5
5
|
class AwsIamUsers < Inspec.resource(1)
|
|
6
|
-
name
|
|
7
|
-
desc
|
|
6
|
+
name "aws_iam_users"
|
|
7
|
+
desc "Verifies settings for AWS IAM users"
|
|
8
8
|
example <<~EXAMPLE
|
|
9
9
|
describe aws_iam_users.where(has_mfa_enabled?: false) do
|
|
10
10
|
it { should_not exist }
|
|
@@ -19,7 +19,7 @@ class AwsIamUsers < Inspec.resource(1)
|
|
|
19
19
|
it { should_not exist }
|
|
20
20
|
end
|
|
21
21
|
EXAMPLE
|
|
22
|
-
supports platform:
|
|
22
|
+
supports platform: "aws"
|
|
23
23
|
|
|
24
24
|
include AwsPluralResourceMixin
|
|
25
25
|
|
|
@@ -90,7 +90,7 @@ class AwsIamUsers < Inspec.resource(1)
|
|
|
90
90
|
def validate_params(raw_params)
|
|
91
91
|
# No params yet
|
|
92
92
|
unless raw_params.empty?
|
|
93
|
-
raise ArgumentError,
|
|
93
|
+
raise ArgumentError, "aws_iam_users does not accept resource parameters"
|
|
94
94
|
end
|
|
95
95
|
raw_params
|
|
96
96
|
end
|
|
@@ -116,14 +116,14 @@ class AwsIamUsers < Inspec.resource(1)
|
|
|
116
116
|
user[:password_ever_used?] = !password_last_used.nil?
|
|
117
117
|
user[:password_never_used?] = password_last_used.nil?
|
|
118
118
|
if user[:password_ever_used?]
|
|
119
|
-
user[:password_last_used_days_ago] = ((Time.now - password_last_used) / (24*60*60)).to_i
|
|
119
|
+
user[:password_last_used_days_ago] = ((Time.now - password_last_used) / (24 * 60 * 60)).to_i
|
|
120
120
|
end
|
|
121
121
|
end
|
|
122
122
|
@table
|
|
123
123
|
end
|
|
124
124
|
|
|
125
125
|
def to_s
|
|
126
|
-
|
|
126
|
+
"IAM Users"
|
|
127
127
|
end
|
|
128
128
|
|
|
129
129
|
#===========================================================================#
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
+
require "resource_support/aws/aws_singular_resource_mixin"
|
|
2
|
+
require "resource_support/aws/aws_backend_base"
|
|
3
|
+
require "aws-sdk-kms"
|
|
4
|
+
|
|
1
5
|
class AwsKmsKey < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_kms_key"
|
|
7
|
+
desc "Verifies settings for an individual AWS KMS Key"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_kms_key('arn:aws:kms:us-east-1::key/4321dcba-21io-23de-85he-ab0987654321') do
|
|
6
10
|
it { should exist }
|
|
7
11
|
end
|
|
8
12
|
EXAMPLE
|
|
9
13
|
|
|
10
|
-
supports platform:
|
|
14
|
+
supports platform: "aws"
|
|
11
15
|
|
|
12
16
|
include AwsSingularResourceMixin
|
|
13
17
|
attr_reader :key_id, :arn, :creation_date, :key_usage, :key_state, :description,
|
|
@@ -27,7 +31,7 @@ class AwsKmsKey < Inspec.resource(1)
|
|
|
27
31
|
end
|
|
28
32
|
|
|
29
33
|
def created_days_ago
|
|
30
|
-
((Time.now - creation_date)/(24*60*60)).to_i unless creation_date.nil?
|
|
34
|
+
((Time.now - creation_date) / (24 * 60 * 60)).to_i unless creation_date.nil?
|
|
31
35
|
end
|
|
32
36
|
|
|
33
37
|
private
|
|
@@ -37,7 +41,7 @@ class AwsKmsKey < Inspec.resource(1)
|
|
|
37
41
|
raw_params: raw_params,
|
|
38
42
|
allowed_params: [:key_id],
|
|
39
43
|
allowed_scalar_name: :key_id,
|
|
40
|
-
allowed_scalar_type: String
|
|
44
|
+
allowed_scalar_type: String
|
|
41
45
|
)
|
|
42
46
|
|
|
43
47
|
if validated_params.empty?
|
|
@@ -66,9 +70,9 @@ class AwsKmsKey < Inspec.resource(1)
|
|
|
66
70
|
@key_state = @key[:key_state]
|
|
67
71
|
@deletion_date = @key[:deletion_date]
|
|
68
72
|
@valid_to = @key[:valid_to]
|
|
69
|
-
@external = @key[:origin] ==
|
|
70
|
-
@has_key_expiration = @key[:expiration_model] ==
|
|
71
|
-
@managed_by_aws = @key[:key_manager] ==
|
|
73
|
+
@external = @key[:origin] == "EXTERNAL"
|
|
74
|
+
@has_key_expiration = @key[:expiration_model] == "KEY_MATERIAL_EXPIRES"
|
|
75
|
+
@managed_by_aws = @key[:key_manager] == "AWS"
|
|
72
76
|
|
|
73
77
|
resp = backend.get_key_rotation_status(query)
|
|
74
78
|
@has_rotation_enabled = resp.key_rotation_enabled unless resp.empty?
|