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,17 +1,21 @@
|
|
|
1
|
+
require "resource_support/aws/aws_plural_resource_mixin"
|
|
2
|
+
require "resource_support/aws/aws_backend_base"
|
|
3
|
+
require "aws-sdk-ec2"
|
|
4
|
+
|
|
1
5
|
class AwsEbsVolumes < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_ebs_volumes"
|
|
7
|
+
desc "Verifies settings for AWS EBS Volumes in bulk"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_ebs_volumes 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_ebs_volumes does not accept resource parameters."
|
|
15
19
|
end
|
|
16
20
|
resource_params
|
|
17
21
|
end
|
|
@@ -23,7 +27,7 @@ class AwsEbsVolumes < Inspec.resource(1)
|
|
|
23
27
|
filter.install_filter_methods_on_resource(self, :table)
|
|
24
28
|
|
|
25
29
|
def to_s
|
|
26
|
-
|
|
30
|
+
"EBS Volumes"
|
|
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-ec2"
|
|
4
|
+
|
|
2
5
|
class AwsEc2Instance < Inspec.resource(1)
|
|
3
|
-
name
|
|
4
|
-
desc
|
|
6
|
+
name "aws_ec2_instance"
|
|
7
|
+
desc "Verifies settings for an EC2 instance"
|
|
5
8
|
|
|
6
9
|
example <<~EXAMPLE
|
|
7
10
|
describe aws_ec2_instance('i-123456') do
|
|
@@ -14,7 +17,7 @@ class AwsEc2Instance < Inspec.resource(1)
|
|
|
14
17
|
it { should have_roles }
|
|
15
18
|
end
|
|
16
19
|
EXAMPLE
|
|
17
|
-
supports platform:
|
|
20
|
+
supports platform: "aws"
|
|
18
21
|
|
|
19
22
|
# TODO: rewrite to avoid direct injection, match other resources, use AwsSingularResourceMixin
|
|
20
23
|
def initialize(opts, conn = nil)
|
|
@@ -33,7 +36,7 @@ class AwsEc2Instance < Inspec.resource(1)
|
|
|
33
36
|
# The AWS error here is unhelpful:
|
|
34
37
|
# "unable to sign request without credentials set"
|
|
35
38
|
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."
|
|
36
|
-
fail_resource(
|
|
39
|
+
fail_resource("No AWS credentials available")
|
|
37
40
|
rescue Aws::Errors::ServiceError => e
|
|
38
41
|
fail_resource e.message
|
|
39
42
|
end
|
|
@@ -57,10 +60,10 @@ class AwsEc2Instance < Inspec.resource(1)
|
|
|
57
60
|
first = @ec2_resource.instances(
|
|
58
61
|
{
|
|
59
62
|
filters: [{
|
|
60
|
-
name:
|
|
63
|
+
name: "tag:Name",
|
|
61
64
|
values: [@opts[:name]],
|
|
62
65
|
}],
|
|
63
|
-
}
|
|
66
|
+
}
|
|
64
67
|
).first
|
|
65
68
|
# catch case where the instance is not known
|
|
66
69
|
@instance_id = first.id unless first.nil?
|
|
@@ -88,7 +91,7 @@ class AwsEc2Instance < Inspec.resource(1)
|
|
|
88
91
|
pending running shutting-down
|
|
89
92
|
terminated stopping stopped unknown
|
|
90
93
|
}.each do |state_name|
|
|
91
|
-
define_method state_name.tr(
|
|
94
|
+
define_method state_name.tr("-", "_") + "?" do
|
|
92
95
|
state == state_name
|
|
93
96
|
end
|
|
94
97
|
end
|
|
@@ -111,9 +114,9 @@ class AwsEc2Instance < Inspec.resource(1)
|
|
|
111
114
|
# is to use dumb things, like arrays of strings - use security_group_ids instead.
|
|
112
115
|
def security_groups
|
|
113
116
|
catch_aws_errors do
|
|
114
|
-
@security_groups ||= instance.security_groups.map
|
|
117
|
+
@security_groups ||= instance.security_groups.map do |sg|
|
|
115
118
|
{ id: sg.group_id, name: sg.group_name }
|
|
116
|
-
|
|
119
|
+
end
|
|
117
120
|
end
|
|
118
121
|
end
|
|
119
122
|
|
|
@@ -139,7 +142,7 @@ class AwsEc2Instance < Inspec.resource(1)
|
|
|
139
142
|
|
|
140
143
|
if instance_profile
|
|
141
144
|
roles = @iam_resource.instance_profile(
|
|
142
|
-
instance_profile.arn.gsub(%r{^.*\/},
|
|
145
|
+
instance_profile.arn.gsub(%r{^.*\/}, "")
|
|
143
146
|
).roles
|
|
144
147
|
else
|
|
145
148
|
roles = nil
|
|
@@ -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-ec2"
|
|
4
|
+
|
|
1
5
|
class AwsEc2Instances < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_ec2_instances"
|
|
7
|
+
desc "Verifies settings for AWS EC2 Instances in bulk"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_ec2_instances 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_ec2_instances does not accept resource parameters."
|
|
15
19
|
end
|
|
16
20
|
resource_params
|
|
17
21
|
end
|
|
@@ -23,7 +27,7 @@ class AwsEc2Instances < Inspec.resource(1)
|
|
|
23
27
|
filter.install_filter_methods_on_resource(self, :table)
|
|
24
28
|
|
|
25
29
|
def to_s
|
|
26
|
-
|
|
30
|
+
"EC2 Instances"
|
|
27
31
|
end
|
|
28
32
|
|
|
29
33
|
def fetch_from_api
|
|
@@ -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-ecs"
|
|
4
|
+
|
|
1
5
|
class AwsEcsCluster < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_ecs_cluster"
|
|
7
|
+
desc "Verifies settings for an ECS cluster"
|
|
4
8
|
|
|
5
9
|
example <<~EXAMPLE
|
|
6
10
|
describe aws_ecs_cluster('default') do
|
|
7
11
|
it { should exist }
|
|
8
12
|
end
|
|
9
13
|
EXAMPLE
|
|
10
|
-
supports platform:
|
|
14
|
+
supports platform: "aws"
|
|
11
15
|
|
|
12
16
|
include AwsSingularResourceMixin
|
|
13
17
|
attr_reader :cluster_arn, :cluster_name, :status,
|
|
@@ -25,7 +29,7 @@ class AwsEcsCluster < Inspec.resource(1)
|
|
|
25
29
|
raw_params: raw_params,
|
|
26
30
|
allowed_params: [:cluster_name],
|
|
27
31
|
allowed_scalar_name: :cluster_name,
|
|
28
|
-
allowed_scalar_type: String
|
|
32
|
+
allowed_scalar_type: String
|
|
29
33
|
)
|
|
30
34
|
|
|
31
35
|
validated_params
|
|
@@ -61,9 +65,9 @@ class AwsEcsCluster < Inspec.resource(1)
|
|
|
61
65
|
end
|
|
62
66
|
|
|
63
67
|
def populate_as_missing
|
|
64
|
-
@cluster_arn =
|
|
65
|
-
@cluster_name =
|
|
66
|
-
@status =
|
|
68
|
+
@cluster_arn = ""
|
|
69
|
+
@cluster_name = ""
|
|
70
|
+
@status = ""
|
|
67
71
|
@registered_container_instances_count = 0
|
|
68
72
|
@running_tasks_count = 0
|
|
69
73
|
@pending_tasks_count = 0
|
|
@@ -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-eks"
|
|
4
|
+
|
|
1
5
|
class AwsEksCluster < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_eks_cluster"
|
|
7
|
+
desc "Verifies settings for an EKS cluster"
|
|
4
8
|
|
|
5
9
|
example <<~EXAMPLE
|
|
6
10
|
describe aws_eks_cluster('default') do
|
|
7
11
|
it { should exist }
|
|
8
12
|
end
|
|
9
13
|
EXAMPLE
|
|
10
|
-
supports platform:
|
|
14
|
+
supports platform: "aws"
|
|
11
15
|
|
|
12
16
|
include AwsSingularResourceMixin
|
|
13
17
|
attr_reader :version, :arn, :cluster_name, :certificate_authority, :name,
|
|
@@ -31,11 +35,11 @@ class AwsEksCluster < Inspec.resource(1)
|
|
|
31
35
|
raw_params: raw_params,
|
|
32
36
|
allowed_params: [:cluster_name],
|
|
33
37
|
allowed_scalar_name: :cluster_name,
|
|
34
|
-
allowed_scalar_type: String
|
|
38
|
+
allowed_scalar_type: String
|
|
35
39
|
)
|
|
36
40
|
|
|
37
41
|
if validated_params.empty?
|
|
38
|
-
raise ArgumentError,
|
|
42
|
+
raise ArgumentError, "You must provide a cluster_name to aws_eks_cluster."
|
|
39
43
|
end
|
|
40
44
|
|
|
41
45
|
validated_params
|
|
@@ -66,10 +70,10 @@ class AwsEksCluster < Inspec.resource(1)
|
|
|
66
70
|
@vpc_id = cluster[:resources_vpc_config][:vpc_id]
|
|
67
71
|
@role_arn = cluster[:role_arn]
|
|
68
72
|
@status = cluster[:status]
|
|
69
|
-
@active = cluster[:status] ==
|
|
70
|
-
@failed = cluster[:status] ==
|
|
71
|
-
@creating = cluster[:status] ==
|
|
72
|
-
@deleting = cluster[:status] ==
|
|
73
|
+
@active = cluster[:status] == "ACTIVE"
|
|
74
|
+
@failed = cluster[:status] == "FAILED"
|
|
75
|
+
@creating = cluster[:status] == "CREATING"
|
|
76
|
+
@deleting = cluster[:status] == "DELETING"
|
|
73
77
|
end
|
|
74
78
|
|
|
75
79
|
def populate_as_missing
|
|
@@ -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-elasticloadbalancing"
|
|
4
|
+
|
|
1
5
|
class AwsElb < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_elb"
|
|
7
|
+
desc "Verifies settings for AWS Elastic Load Balancer"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_elb('myelb') 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 :availability_zones, :dns_name, :elb_name, :external_ports,
|
|
@@ -24,11 +28,11 @@ class AwsElb < Inspec.resource(1)
|
|
|
24
28
|
raw_params: raw_params,
|
|
25
29
|
allowed_params: [:elb_name],
|
|
26
30
|
allowed_scalar_name: :elb_name,
|
|
27
|
-
allowed_scalar_type: String
|
|
31
|
+
allowed_scalar_type: String
|
|
28
32
|
)
|
|
29
33
|
|
|
30
34
|
if validated_params.empty?
|
|
31
|
-
raise ArgumentError,
|
|
35
|
+
raise ArgumentError, "You must provide a elb_name to aws_elb."
|
|
32
36
|
end
|
|
33
37
|
|
|
34
38
|
validated_params
|
|
@@ -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-elasticloadbalancing"
|
|
4
|
+
|
|
1
5
|
class AwsElbs < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_elbs"
|
|
7
|
+
desc "Verifies settings for AWS ELBs (classic Elastic Load Balancers) in bulk"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_elbs 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_elbs does not accept resource parameters."
|
|
15
19
|
end
|
|
16
20
|
resource_params
|
|
17
21
|
end
|
|
@@ -34,7 +38,7 @@ class AwsElbs < Inspec.resource(1)
|
|
|
34
38
|
filter.connect(self, :table)
|
|
35
39
|
|
|
36
40
|
def to_s
|
|
37
|
-
|
|
41
|
+
"AWS ELBs"
|
|
38
42
|
end
|
|
39
43
|
|
|
40
44
|
def fetch_from_api
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
require "resource_support/aws/aws_singular_resource_mixin"
|
|
2
|
+
require "resource_support/aws/aws_backend_base"
|
|
3
|
+
require "aws-sdk-ec2"
|
|
4
|
+
|
|
1
5
|
class AwsFlowLog < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
supports platform:
|
|
4
|
-
desc
|
|
6
|
+
name "aws_flow_log"
|
|
7
|
+
supports platform: "aws"
|
|
8
|
+
desc "This resource is used to test the attributes of a Flow Log."
|
|
5
9
|
example <<~EXAMPLE
|
|
6
10
|
describe aws_flow_log('fl-9c718cf5') do
|
|
7
11
|
it { should exist }
|
|
@@ -17,24 +21,24 @@ class AwsFlowLog < Inspec.resource(1)
|
|
|
17
21
|
def resource_type
|
|
18
22
|
case @resource_id
|
|
19
23
|
when /^eni/
|
|
20
|
-
@resource_type =
|
|
24
|
+
@resource_type = "eni"
|
|
21
25
|
when /^subnet/
|
|
22
|
-
@resource_type =
|
|
26
|
+
@resource_type = "subnet"
|
|
23
27
|
when /^vpc/
|
|
24
|
-
@resource_type =
|
|
28
|
+
@resource_type = "vpc"
|
|
25
29
|
end
|
|
26
30
|
end
|
|
27
31
|
|
|
28
32
|
def attached_to_eni?
|
|
29
|
-
resource_type.eql?(
|
|
33
|
+
resource_type.eql?("eni") ? true : false
|
|
30
34
|
end
|
|
31
35
|
|
|
32
36
|
def attached_to_subnet?
|
|
33
|
-
resource_type.eql?(
|
|
37
|
+
resource_type.eql?("subnet") ? true : false
|
|
34
38
|
end
|
|
35
39
|
|
|
36
40
|
def attached_to_vpc?
|
|
37
|
-
resource_type.eql?(
|
|
41
|
+
resource_type.eql?("vpc") ? true : false
|
|
38
42
|
end
|
|
39
43
|
|
|
40
44
|
attr_reader :log_group_name, :resource_id, :flow_log_id
|
|
@@ -46,12 +50,12 @@ class AwsFlowLog < Inspec.resource(1)
|
|
|
46
50
|
raw_params: raw_params,
|
|
47
51
|
allowed_params: [:flow_log_id, :subnet_id, :vpc_id],
|
|
48
52
|
allowed_scalar_name: :flow_log_id,
|
|
49
|
-
allowed_scalar_type: String
|
|
53
|
+
allowed_scalar_type: String
|
|
50
54
|
)
|
|
51
55
|
|
|
52
56
|
if validated_params.empty?
|
|
53
57
|
raise ArgumentError,
|
|
54
|
-
|
|
58
|
+
"aws_flow_log requires a parameter: flow_log_id, subnet_id, or vpc_id"
|
|
55
59
|
end
|
|
56
60
|
|
|
57
61
|
validated_params
|
|
@@ -72,10 +76,10 @@ class AwsFlowLog < Inspec.resource(1)
|
|
|
72
76
|
|
|
73
77
|
def filter_args
|
|
74
78
|
if @flow_log_id
|
|
75
|
-
{ filter: [{ name:
|
|
79
|
+
{ filter: [{ name: "flow-log-id", values: [@flow_log_id] }] }
|
|
76
80
|
elsif @subnet_id || @vpc_id
|
|
77
81
|
filter = @subnet_id || @vpc_id
|
|
78
|
-
{ filter: [{ name:
|
|
82
|
+
{ filter: [{ name: "resource-id", values: [filter] }] }
|
|
79
83
|
end
|
|
80
84
|
end
|
|
81
85
|
|
|
@@ -1,6 +1,10 @@
|
|
|
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 AwsIamAccessKey < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_iam_access_key"
|
|
7
|
+
desc "Verifies settings for an individual IAM access key"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_iam_access_key(username: 'username', id: 'access-key id') do
|
|
6
10
|
it { should exist }
|
|
@@ -9,7 +13,7 @@ class AwsIamAccessKey < Inspec.resource(1)
|
|
|
9
13
|
its('last_used_date') { should be > Time.now - 90 * 86400 }
|
|
10
14
|
end
|
|
11
15
|
EXAMPLE
|
|
12
|
-
supports platform:
|
|
16
|
+
supports platform: "aws"
|
|
13
17
|
|
|
14
18
|
include AwsSingularResourceMixin
|
|
15
19
|
attr_reader :access_key_id, :create_date, :status, :username
|
|
@@ -20,22 +24,22 @@ class AwsIamAccessKey < Inspec.resource(1)
|
|
|
20
24
|
raw_params: raw_params,
|
|
21
25
|
allowed_params: [:username, :id, :access_key_id],
|
|
22
26
|
allowed_scalar_name: :access_key_id,
|
|
23
|
-
allowed_scalar_type: String
|
|
27
|
+
allowed_scalar_type: String
|
|
24
28
|
)
|
|
25
29
|
|
|
26
30
|
# id and access_key_id are aliases; standardize on access_key_id
|
|
27
31
|
recognized_params[:access_key_id] = recognized_params.delete(:id) if recognized_params.key?(:id)
|
|
28
32
|
|
|
29
33
|
# Validate format of access_key_id
|
|
30
|
-
if recognized_params[:access_key_id]
|
|
31
|
-
|
|
32
|
-
raise ArgumentError,
|
|
33
|
-
|
|
34
|
+
if recognized_params[:access_key_id] &&
|
|
35
|
+
recognized_params[:access_key_id] !~ (/^AKIA[0-9A-Z]{16}$/)
|
|
36
|
+
raise ArgumentError, "Incorrect format for Access Key ID - expected AKIA followed " \
|
|
37
|
+
"by 16 letters or numbers"
|
|
34
38
|
end
|
|
35
39
|
|
|
36
40
|
# One of username and access_key_id is required
|
|
37
41
|
if recognized_params[:username].nil? && recognized_params[:access_key_id].nil?
|
|
38
|
-
raise ArgumentError,
|
|
42
|
+
raise ArgumentError, "You must provide at lease one of access_key_id or username to aws_iam_access_key"
|
|
39
43
|
end
|
|
40
44
|
|
|
41
45
|
recognized_params
|
|
@@ -43,7 +47,7 @@ class AwsIamAccessKey < Inspec.resource(1)
|
|
|
43
47
|
|
|
44
48
|
def active?
|
|
45
49
|
return nil unless exists?
|
|
46
|
-
status ==
|
|
50
|
+
status == "Active"
|
|
47
51
|
end
|
|
48
52
|
|
|
49
53
|
def to_s
|
|
@@ -80,7 +84,7 @@ class AwsIamAccessKey < Inspec.resource(1)
|
|
|
80
84
|
end
|
|
81
85
|
|
|
82
86
|
if access_keys.count > 1
|
|
83
|
-
raise
|
|
87
|
+
raise "More than one access key matched for aws_iam_access_key. Use more specific paramaters, such as access_key_id."
|
|
84
88
|
end
|
|
85
89
|
|
|
86
90
|
@exists = true
|
|
@@ -1,12 +1,16 @@
|
|
|
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 AwsIamAccessKeys < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_iam_access_keys"
|
|
7
|
+
desc "Verifies settings for AWS IAM Access Keys in bulk"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_iam_access_keys do
|
|
6
10
|
it { should_not exist }
|
|
7
11
|
end
|
|
8
12
|
EXAMPLE
|
|
9
|
-
supports platform:
|
|
13
|
+
supports platform: "aws"
|
|
10
14
|
|
|
11
15
|
include AwsPluralResourceMixin
|
|
12
16
|
|
|
@@ -15,15 +19,15 @@ class AwsIamAccessKeys < Inspec.resource(1)
|
|
|
15
19
|
raw_params: raw_params,
|
|
16
20
|
allowed_params: [:username, :id, :access_key_id, :created_date],
|
|
17
21
|
allowed_scalar_name: :access_key_id,
|
|
18
|
-
allowed_scalar_type: String
|
|
22
|
+
allowed_scalar_type: String
|
|
19
23
|
)
|
|
20
24
|
|
|
21
25
|
# id and access_key_id are aliases; standardize on access_key_id
|
|
22
26
|
recognized_params[:access_key_id] = recognized_params.delete(:id) if recognized_params.key?(:id)
|
|
23
|
-
if recognized_params[:access_key_id]
|
|
24
|
-
|
|
25
|
-
raise
|
|
26
|
-
|
|
27
|
+
if recognized_params[:access_key_id] &&
|
|
28
|
+
recognized_params[:access_key_id] !~ (/^AKIA[0-9A-Z]{16}$/)
|
|
29
|
+
raise "Incorrect format for Access Key ID - expected AKIA followed " \
|
|
30
|
+
"by 16 letters or numbers"
|
|
27
31
|
end
|
|
28
32
|
|
|
29
33
|
recognized_params
|
|
@@ -56,7 +60,7 @@ class AwsIamAccessKeys < Inspec.resource(1)
|
|
|
56
60
|
filter.install_filter_methods_on_resource(self, :table)
|
|
57
61
|
|
|
58
62
|
def to_s
|
|
59
|
-
|
|
63
|
+
"IAM Access Keys"
|
|
60
64
|
end
|
|
61
65
|
|
|
62
66
|
# Internal support class. This is used to fetch
|
|
@@ -123,12 +127,12 @@ class AwsIamAccessKeys < Inspec.resource(1)
|
|
|
123
127
|
|
|
124
128
|
def add_synthetic_fields(key_info, user_details) # rubocop:disable Metrics/AbcSize
|
|
125
129
|
key_info[:id] = key_info[:access_key_id]
|
|
126
|
-
key_info[:active] = key_info[:status] ==
|
|
127
|
-
key_info[:inactive] = key_info[:status] !=
|
|
128
|
-
key_info[:created_hours_ago] = ((Time.now - key_info[:create_date]) / (60*60)).to_i
|
|
130
|
+
key_info[:active] = key_info[:status] == "Active"
|
|
131
|
+
key_info[:inactive] = key_info[:status] != "Active"
|
|
132
|
+
key_info[:created_hours_ago] = ((Time.now - key_info[:create_date]) / (60 * 60)).to_i
|
|
129
133
|
key_info[:created_days_ago] = (key_info[:created_hours_ago] / 24).to_i
|
|
130
134
|
key_info[:user_created_date] = user_details[:create_date]
|
|
131
|
-
key_info[:created_with_user] = (key_info[:create_date] - key_info[:user_created_date]).abs < 1.0/24.0
|
|
135
|
+
key_info[:created_with_user] = (key_info[:create_date] - key_info[:user_created_date]).abs < 1.0 / 24.0
|
|
132
136
|
|
|
133
137
|
# Last used is a separate API call
|
|
134
138
|
iam_client = aws_service_client
|
|
@@ -139,8 +143,8 @@ class AwsIamAccessKeys < Inspec.resource(1)
|
|
|
139
143
|
key_info[:never_used] = last_used.nil?
|
|
140
144
|
key_info[:last_used_time] = last_used
|
|
141
145
|
return unless last_used
|
|
142
|
-
key_info[:last_used_hours_ago] = ((Time.now - last_used) / (60*60)).to_i
|
|
143
|
-
key_info[:last_used_days_ago] = (key_info[:last_used_hours_ago]/24).to_i
|
|
146
|
+
key_info[:last_used_hours_ago] = ((Time.now - last_used) / (60 * 60)).to_i
|
|
147
|
+
key_info[:last_used_days_ago] = (key_info[:last_used_hours_ago] / 24).to_i
|
|
144
148
|
end
|
|
145
149
|
end
|
|
146
150
|
end
|