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,13 +1,17 @@
|
|
|
1
|
+
require "resource_support/aws/aws_singular_resource_mixin"
|
|
2
|
+
require "resource_support/aws/aws_backend_base"
|
|
3
|
+
require "aws-sdk-sns"
|
|
4
|
+
|
|
1
5
|
class AwsSnsTopic < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_sns_topic"
|
|
7
|
+
desc "Verifies settings for an SNS Topic"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_sns_topic('arn:aws:sns:us-east-1:123456789012:some-topic') do
|
|
6
10
|
it { should exist }
|
|
7
11
|
its('confirmed_subscription_count') { should_not be_zero }
|
|
8
12
|
end
|
|
9
13
|
EXAMPLE
|
|
10
|
-
supports platform:
|
|
14
|
+
supports platform: "aws"
|
|
11
15
|
|
|
12
16
|
include AwsSingularResourceMixin
|
|
13
17
|
attr_reader :arn, :confirmed_subscription_count
|
|
@@ -19,11 +23,11 @@ class AwsSnsTopic < Inspec.resource(1)
|
|
|
19
23
|
raw_params: raw_params,
|
|
20
24
|
allowed_params: [:arn],
|
|
21
25
|
allowed_scalar_name: :arn,
|
|
22
|
-
allowed_scalar_type: String
|
|
26
|
+
allowed_scalar_type: String
|
|
23
27
|
)
|
|
24
28
|
# Validate the ARN
|
|
25
29
|
unless validated_params[:arn] =~ /^arn:aws:sns:[\w\-]+:\d{12}:[\S]+$/
|
|
26
|
-
raise ArgumentError,
|
|
30
|
+
raise ArgumentError, "Malformed ARN for SNS topics. Expected an ARN of the form " \
|
|
27
31
|
"'arn:aws:sns:REGION:ACCOUNT-ID:TOPIC-NAME'"
|
|
28
32
|
end
|
|
29
33
|
validated_params
|
|
@@ -34,7 +38,7 @@ class AwsSnsTopic < Inspec.resource(1)
|
|
|
34
38
|
@exists = true
|
|
35
39
|
|
|
36
40
|
# The response has a plain hash with CamelCase plain string keys and string values
|
|
37
|
-
@confirmed_subscription_count = aws_response[
|
|
41
|
+
@confirmed_subscription_count = aws_response["SubscriptionsConfirmed"].to_i
|
|
38
42
|
rescue Aws::SNS::Errors::NotFound
|
|
39
43
|
@exists = false
|
|
40
44
|
end
|
|
@@ -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-sns"
|
|
4
|
+
|
|
1
5
|
class AwsSnsTopics < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_sns_topics"
|
|
7
|
+
desc "Verifies settings for SNS Topics in bulk"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_sns_topics do
|
|
6
10
|
its('topic_arns') { should include '' }
|
|
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_sns_topics does not accept resource parameters."
|
|
16
20
|
end
|
|
17
21
|
resource_params
|
|
18
22
|
end
|
|
@@ -38,7 +42,7 @@ class AwsSnsTopics < Inspec.resource(1)
|
|
|
38
42
|
filter.install_filter_methods_on_resource(self, :table)
|
|
39
43
|
|
|
40
44
|
def to_s
|
|
41
|
-
|
|
45
|
+
"EC2 SNS Topics"
|
|
42
46
|
end
|
|
43
47
|
|
|
44
48
|
class Backend
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "resource_support/aws/aws_singular_resource_mixin"
|
|
2
|
+
require "resource_support/aws/aws_backend_base"
|
|
3
|
+
require "aws-sdk-sqs"
|
|
4
|
+
|
|
5
|
+
require "uri"
|
|
2
6
|
|
|
3
7
|
class AwsSqsQueue < Inspec.resource(1)
|
|
4
|
-
name
|
|
5
|
-
desc
|
|
8
|
+
name "aws_sqs_queue"
|
|
9
|
+
desc "Verifies settings for an SQS Queue"
|
|
6
10
|
example <<~EXAMPLE
|
|
7
11
|
describe aws_sqs_queue('https://sqs.ap-southeast-2.amazonaws.com/519527725796/QueueName') do
|
|
8
12
|
it { should exist }
|
|
9
13
|
its('visiblity_timeout') { should be 300}
|
|
10
14
|
end
|
|
11
15
|
EXAMPLE
|
|
12
|
-
supports platform:
|
|
16
|
+
supports platform: "aws"
|
|
13
17
|
|
|
14
18
|
include AwsSingularResourceMixin
|
|
15
19
|
attr_reader :arn, :is_fifo_queue, :visibility_timeout, :maximum_message_size, :message_retention_period, :delay_seconds, :receive_message_wait_timeout_seconds, :content_based_deduplication
|
|
@@ -21,29 +25,29 @@ class AwsSqsQueue < Inspec.resource(1)
|
|
|
21
25
|
raw_params: raw_params,
|
|
22
26
|
allowed_params: [:url],
|
|
23
27
|
allowed_scalar_name: :url,
|
|
24
|
-
allowed_scalar_type: String
|
|
28
|
+
allowed_scalar_type: String
|
|
25
29
|
)
|
|
26
30
|
# Validate the URL
|
|
27
31
|
unless validated_params[:url] =~ /\A#{URI::DEFAULT_PARSER.make_regexp(%w{https})}\z/
|
|
28
|
-
raise ArgumentError,
|
|
32
|
+
raise ArgumentError, "Malformed URL for SQS. Expected an ARN of the form " \
|
|
29
33
|
"'https://sqs.ap-southeast-2.amazonaws.com/111212121/MyQeueue'"
|
|
30
34
|
end
|
|
31
35
|
validated_params
|
|
32
36
|
end
|
|
33
37
|
|
|
34
38
|
def fetch_from_api
|
|
35
|
-
aws_response = BackendFactory.create(inspec_runner).get_queue_attributes(queue_url: @url, attribute_names: [
|
|
39
|
+
aws_response = BackendFactory.create(inspec_runner).get_queue_attributes(queue_url: @url, attribute_names: ["All"]).attributes
|
|
36
40
|
@exists = true
|
|
37
|
-
@visibility_timeout = aws_response[
|
|
38
|
-
@maximum_message_size = aws_response[
|
|
39
|
-
@message_retention_period = aws_response[
|
|
40
|
-
@delay_seconds = aws_response[
|
|
41
|
-
@receive_message_wait_timeout_seconds = aws_response[
|
|
41
|
+
@visibility_timeout = aws_response["VisibilityTimeout"].to_i
|
|
42
|
+
@maximum_message_size = aws_response["MaximumMessageSize"].to_i
|
|
43
|
+
@message_retention_period = aws_response["MessageRetentionPeriod"].to_i
|
|
44
|
+
@delay_seconds = aws_response["DelaySeconds"].to_i
|
|
45
|
+
@receive_message_wait_timeout_seconds = aws_response["ReceiveMessageWaitTimeSeconds"].to_i
|
|
42
46
|
|
|
43
47
|
# FIFO queues - these attributes only exist for FIFO queues, their presence indicates a FIFO
|
|
44
48
|
# queue
|
|
45
|
-
@is_fifo_queue = aws_response[
|
|
46
|
-
@content_based_deduplication = aws_response[
|
|
49
|
+
@is_fifo_queue = aws_response["FifoQueue"].nil? ? false : true
|
|
50
|
+
@content_based_deduplication = aws_response["ContentBasedDeduplication"].nil? ? false : true
|
|
47
51
|
rescue Aws::SQS::Errors::NonExistentQueue
|
|
48
52
|
@exists = false
|
|
49
53
|
end
|
|
@@ -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-ec2"
|
|
4
|
+
|
|
1
5
|
class AwsSubnet < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_subnet"
|
|
7
|
+
desc "This resource is used to test the attributes of a VPC subnet"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_subnet(subnet_id: 'subnet-12345678') do
|
|
6
10
|
it { should exist }
|
|
7
11
|
its('cidr_block') { should eq '10.0.1.0/24' }
|
|
8
12
|
end
|
|
9
13
|
EXAMPLE
|
|
10
|
-
supports platform:
|
|
14
|
+
supports platform: "aws"
|
|
11
15
|
|
|
12
16
|
include AwsSingularResourceMixin
|
|
13
17
|
attr_reader :assigning_ipv_6_address_on_creation, :availability_zone, :available_ip_address_count,
|
|
@@ -29,7 +33,7 @@ class AwsSubnet < Inspec.resource(1)
|
|
|
29
33
|
raw_params: raw_params,
|
|
30
34
|
allowed_params: [:subnet_id],
|
|
31
35
|
allowed_scalar_name: :subnet_id,
|
|
32
|
-
allowed_scalar_type: String
|
|
36
|
+
allowed_scalar_type: String
|
|
33
37
|
)
|
|
34
38
|
|
|
35
39
|
# Make sure the subnet_id parameter was specified and in the correct form.
|
|
@@ -38,7 +42,7 @@ class AwsSubnet < Inspec.resource(1)
|
|
|
38
42
|
end
|
|
39
43
|
|
|
40
44
|
if validated_params.empty?
|
|
41
|
-
raise ArgumentError,
|
|
45
|
+
raise ArgumentError, "You must provide a subnet_id to aws_subnet."
|
|
42
46
|
end
|
|
43
47
|
|
|
44
48
|
validated_params
|
|
@@ -49,7 +53,7 @@ class AwsSubnet < Inspec.resource(1)
|
|
|
49
53
|
|
|
50
54
|
# Transform into filter format expected by AWS
|
|
51
55
|
filters = []
|
|
52
|
-
filters.push({ name:
|
|
56
|
+
filters.push({ name: "subnet-id", values: [@subnet_id] })
|
|
53
57
|
ds_response = backend.describe_subnets(filters: filters)
|
|
54
58
|
|
|
55
59
|
# If no subnets exist in the VPC, exist is false.
|
|
@@ -69,7 +73,7 @@ class AwsSubnet < Inspec.resource(1)
|
|
|
69
73
|
@available_ip_address_count = ds_response.subnets[0].available_ip_address_count
|
|
70
74
|
@default_for_az = ds_response.subnets[0].default_for_az
|
|
71
75
|
@mapping_public_ip_on_launch = ds_response.subnets[0].map_public_ip_on_launch
|
|
72
|
-
@available = ds_response.subnets[0].state ==
|
|
76
|
+
@available = ds_response.subnets[0].state == "available"
|
|
73
77
|
@ipv_6_cidr_block_association_set = ds_response.subnets[0].ipv_6_cidr_block_association_set
|
|
74
78
|
@assigning_ipv_6_address_on_creation = ds_response.subnets[0].assign_ipv_6_address_on_creation
|
|
75
79
|
end
|
|
@@ -1,6 +1,10 @@
|
|
|
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 AwsSubnets < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_subnets"
|
|
7
|
+
desc "Verifies settings for VPC Subnets in bulk"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
# you should be able to test the cidr_block of a subnet
|
|
6
10
|
describe aws_subnets.where(vpc_id: 'vpc-123456789') do
|
|
@@ -9,13 +13,13 @@ class AwsSubnets < Inspec.resource(1)
|
|
|
9
13
|
its('states') { should_not include 'pending' }
|
|
10
14
|
end
|
|
11
15
|
EXAMPLE
|
|
12
|
-
supports platform:
|
|
16
|
+
supports platform: "aws"
|
|
13
17
|
|
|
14
18
|
include AwsPluralResourceMixin
|
|
15
19
|
|
|
16
20
|
def validate_params(resource_params)
|
|
17
21
|
unless resource_params.empty?
|
|
18
|
-
raise ArgumentError,
|
|
22
|
+
raise ArgumentError, "aws_vpc_subnets does not accept resource parameters."
|
|
19
23
|
end
|
|
20
24
|
resource_params
|
|
21
25
|
end
|
|
@@ -35,7 +39,7 @@ class AwsSubnets < Inspec.resource(1)
|
|
|
35
39
|
filter.install_filter_methods_on_resource(self, :table)
|
|
36
40
|
|
|
37
41
|
def to_s
|
|
38
|
-
|
|
42
|
+
"EC2 VPC Subnets"
|
|
39
43
|
end
|
|
40
44
|
|
|
41
45
|
class Backend
|
|
@@ -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-ec2"
|
|
4
|
+
|
|
1
5
|
class AwsVpc < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_vpc"
|
|
7
|
+
desc "Verifies settings for AWS VPC"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_vpc do
|
|
6
10
|
it { should be_default }
|
|
7
11
|
its('cidr_block') { should cmp '10.0.0.0/16' }
|
|
8
12
|
end
|
|
9
13
|
EXAMPLE
|
|
10
|
-
supports platform:
|
|
14
|
+
supports platform: "aws"
|
|
11
15
|
|
|
12
16
|
include AwsSingularResourceMixin
|
|
13
17
|
|
|
@@ -27,7 +31,7 @@ class AwsVpc < Inspec.resource(1)
|
|
|
27
31
|
raw_params: raw_params,
|
|
28
32
|
allowed_params: [:vpc_id],
|
|
29
33
|
allowed_scalar_name: :vpc_id,
|
|
30
|
-
allowed_scalar_type: String
|
|
34
|
+
allowed_scalar_type: String
|
|
31
35
|
)
|
|
32
36
|
|
|
33
37
|
if validated_params.key?(:vpc_id) && validated_params[:vpc_id] !~ /^vpc\-([0-9a-f]{8})|(^vpc\-[0-9a-f]{17})$/
|
|
@@ -41,9 +45,9 @@ class AwsVpc < Inspec.resource(1)
|
|
|
41
45
|
backend = BackendFactory.create(inspec_runner)
|
|
42
46
|
|
|
43
47
|
if @vpc_id.nil?
|
|
44
|
-
filter = { name:
|
|
48
|
+
filter = { name: "isDefault", values: ["true"] }
|
|
45
49
|
else
|
|
46
|
-
filter = { name:
|
|
50
|
+
filter = { name: "vpc-id", values: [@vpc_id] }
|
|
47
51
|
end
|
|
48
52
|
|
|
49
53
|
resp = backend.describe_vpcs({ filters: [filter] })
|
|
@@ -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-ec2"
|
|
4
|
+
|
|
1
5
|
class AwsVpcs < Inspec.resource(1)
|
|
2
|
-
name
|
|
3
|
-
desc
|
|
6
|
+
name "aws_vpcs"
|
|
7
|
+
desc "Verifies settings for AWS VPCs in bulk"
|
|
4
8
|
example <<~EXAMPLE
|
|
5
9
|
describe aws_vpcs 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
|
|
|
@@ -23,13 +27,13 @@ class AwsVpcs < Inspec.resource(1)
|
|
|
23
27
|
def validate_params(raw_params)
|
|
24
28
|
# No params yet
|
|
25
29
|
unless raw_params.empty?
|
|
26
|
-
raise ArgumentError,
|
|
30
|
+
raise ArgumentError, "aws_vpcs does not accept resource parameters"
|
|
27
31
|
end
|
|
28
32
|
raw_params
|
|
29
33
|
end
|
|
30
34
|
|
|
31
35
|
def to_s
|
|
32
|
-
|
|
36
|
+
"VPCs"
|
|
33
37
|
end
|
|
34
38
|
|
|
35
39
|
def fetch_from_api
|
|
@@ -26,10 +26,10 @@ module Inspec::Resources
|
|
|
26
26
|
|
|
27
27
|
# Determine if the environment variables for the options have been set
|
|
28
28
|
option_var_names = {
|
|
29
|
-
group_name:
|
|
30
|
-
name:
|
|
31
|
-
type:
|
|
32
|
-
apiversion:
|
|
29
|
+
group_name: "AZURE_RESOURCE_GROUP_NAME",
|
|
30
|
+
name: "AZURE_RESOURCE_NAME",
|
|
31
|
+
type: "AZURE_RESOURCE_TYPE",
|
|
32
|
+
apiversion: "AZURE_RESOURCE_API_VERSION",
|
|
33
33
|
}
|
|
34
34
|
option_var_names.each do |option_name, env_var_name|
|
|
35
35
|
opts[option_name] = ENV[env_var_name] unless ENV[env_var_name].nil?
|
|
@@ -153,12 +153,14 @@ module Inspec::Resources
|
|
|
153
153
|
# @author Russell Seymour
|
|
154
154
|
def create_tag_methods
|
|
155
155
|
# Iterate around the items of the tags and create the necessary access methods
|
|
156
|
-
tags.item
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
156
|
+
if defined?(tags.item)
|
|
157
|
+
tags.item.each do |name, value|
|
|
158
|
+
method_name = format("%s_tag", name)
|
|
159
|
+
define_singleton_method method_name do
|
|
160
|
+
value
|
|
161
|
+
end
|
|
160
162
|
end
|
|
161
|
-
end
|
|
163
|
+
end
|
|
162
164
|
end
|
|
163
165
|
|
|
164
166
|
private
|
|
@@ -206,11 +208,11 @@ class AzureResourceDynamicMethods
|
|
|
206
208
|
/^Azure::Resources::Mgmt::.*::Models::ResourceGroup$/
|
|
207
209
|
# iterate around the instance variables
|
|
208
210
|
data.instance_variables.each do |var|
|
|
209
|
-
create_method(object, var.to_s.delete(
|
|
211
|
+
create_method(object, var.to_s.delete("@"), data.instance_variable_get(var))
|
|
210
212
|
end
|
|
211
213
|
# When the data is a Hash object iterate around each of the key value pairs and
|
|
212
214
|
# craete a method for each one.
|
|
213
|
-
when
|
|
215
|
+
when "Hash"
|
|
214
216
|
data.each do |key, value|
|
|
215
217
|
create_method(object, key, value)
|
|
216
218
|
end
|
|
@@ -233,12 +235,12 @@ class AzureResourceDynamicMethods
|
|
|
233
235
|
# Create the necessary method based on the var that has been passed
|
|
234
236
|
# Test the value for its type so that the method can be setup correctly
|
|
235
237
|
case value.class.to_s
|
|
236
|
-
when
|
|
238
|
+
when "String", "Integer", "TrueClass", "FalseClass", "Fixnum"
|
|
237
239
|
object.define_singleton_method name do
|
|
238
240
|
value
|
|
239
241
|
end
|
|
240
|
-
when
|
|
241
|
-
value.count
|
|
242
|
+
when "Hash"
|
|
243
|
+
value.count == 0 ? return_value = value : return_value = AzureResourceProbe.new(value)
|
|
242
244
|
object.define_singleton_method name do
|
|
243
245
|
return_value
|
|
244
246
|
end
|
|
@@ -247,16 +249,16 @@ class AzureResourceDynamicMethods
|
|
|
247
249
|
# This is because the plugin is using the Azure SDK to get this information so it is an SDK object
|
|
248
250
|
# that has to be interrogated in a different way. This is the only object type that behaves like this
|
|
249
251
|
value.instance_variables.each do |var|
|
|
250
|
-
create_method(object, var.to_s.delete(
|
|
252
|
+
create_method(object, var.to_s.delete("@"), value.instance_variable_get(var))
|
|
251
253
|
end
|
|
252
|
-
when
|
|
254
|
+
when "Array"
|
|
253
255
|
# Some things are just string or integer arrays
|
|
254
256
|
# Check this by seeing if the first element is a string / integer / boolean or
|
|
255
257
|
# a hashtable
|
|
256
258
|
# This may not be the best methid, but short of testing all elements in the array, this is
|
|
257
259
|
# the quickest test
|
|
258
260
|
case value[0].class.to_s
|
|
259
|
-
when
|
|
261
|
+
when "String", "Integer", "TrueClass", "FalseClass", "Fixnum"
|
|
260
262
|
probes = value
|
|
261
263
|
else
|
|
262
264
|
probes = []
|
|
@@ -369,7 +371,7 @@ class AzureResourceProbe
|
|
|
369
371
|
#
|
|
370
372
|
# @return string
|
|
371
373
|
def camel_case(data)
|
|
372
|
-
camel_case_data = data.split(
|
|
374
|
+
camel_case_data = data.split("_").inject([]) { |buffer, e| buffer.push(buffer.empty? ? e : e.capitalize) }.join
|
|
373
375
|
|
|
374
376
|
# Ensure that gb (as in gigabytes) is uppercased
|
|
375
377
|
camel_case_data.gsub(/[gb]/, &:upcase)
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require 'resources/azure/azure_backend'
|
|
4
|
-
require 'utils/filter'
|
|
1
|
+
require "resources/azure/azure_backend"
|
|
2
|
+
require "inspec/utils/filter"
|
|
5
3
|
|
|
6
4
|
module Inspec::Resources
|
|
7
5
|
class AzureGenericResource < AzureResourceBase
|
|
8
|
-
name
|
|
6
|
+
name "azure_generic_resource"
|
|
9
7
|
|
|
10
8
|
desc '
|
|
11
9
|
InSpec Resource to interrogate any Resource type in Azure
|
|
12
10
|
'
|
|
13
11
|
|
|
14
|
-
supports platform:
|
|
12
|
+
supports platform: "azure"
|
|
15
13
|
|
|
16
14
|
attr_accessor :filter, :total, :counts, :name, :type, :location, :probes
|
|
17
15
|
|
|
@@ -34,21 +32,21 @@ module Inspec::Resources
|
|
|
34
32
|
# Define the filter table so that it can be interrogated
|
|
35
33
|
@filter = FilterTable.create
|
|
36
34
|
@filter.register_filter_method(:contains)
|
|
37
|
-
.register_column(:type, field:
|
|
38
|
-
.register_column(:name, field:
|
|
39
|
-
.register_column(:location, field:
|
|
40
|
-
.register_column(:properties, field:
|
|
35
|
+
.register_column(:type, field: "type")
|
|
36
|
+
.register_column(:name, field: "name")
|
|
37
|
+
.register_column(:location, field: "location")
|
|
38
|
+
.register_column(:properties, field: "properties")
|
|
41
39
|
|
|
42
40
|
@filter.install_filter_methods_on_resource(self, :probes)
|
|
43
41
|
|
|
44
42
|
def parse_resource(resource)
|
|
45
43
|
# return a hash of information
|
|
46
44
|
parsed = {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
45
|
+
"location" => resource.location,
|
|
46
|
+
"name" => resource.name,
|
|
47
|
+
"type" => resource.type,
|
|
48
|
+
"exist?" => true,
|
|
49
|
+
"properties" => AzureResourceProbe.new(resource.properties),
|
|
52
50
|
}
|
|
53
51
|
|
|
54
52
|
parsed
|