inspec 2.0.32 → 2.0.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +101 -101
- data/CHANGELOG.md +2991 -2970
- data/Gemfile +55 -55
- data/LICENSE +14 -14
- data/MAINTAINERS.md +33 -33
- data/MAINTAINERS.toml +52 -52
- data/README.md +446 -437
- data/Rakefile +322 -322
- data/bin/inspec +12 -12
- data/docs/.gitignore +2 -2
- data/docs/README.md +40 -40
- data/docs/dsl_inspec.md +258 -258
- data/docs/dsl_resource.md +93 -93
- data/docs/glossary.md +99 -99
- data/docs/habitat.md +191 -191
- data/docs/inspec_and_friends.md +107 -107
- data/docs/matchers.md +169 -168
- data/docs/migration.md +293 -293
- data/docs/platforms.md +118 -118
- data/docs/plugin_kitchen_inspec.md +49 -49
- data/docs/profiles.md +370 -370
- data/docs/reporters.md +105 -105
- data/docs/resources/aide_conf.md.erb +75 -75
- data/docs/resources/apache.md.erb +67 -67
- data/docs/resources/apache_conf.md.erb +68 -68
- data/docs/resources/apt.md.erb +71 -71
- data/docs/resources/audit_policy.md.erb +47 -47
- data/docs/resources/auditd.md.erb +79 -79
- data/docs/resources/auditd_conf.md.erb +68 -68
- data/docs/resources/aws_cloudtrail_trail.md.erb +140 -140
- data/docs/resources/aws_cloudtrail_trails.md.erb +81 -81
- data/docs/resources/aws_cloudwatch_alarm.md.erb +86 -86
- data/docs/resources/aws_cloudwatch_log_metric_filter.md.erb +151 -151
- data/docs/resources/aws_config_recorder.md.erb +71 -71
- data/docs/resources/aws_ec2_instance.md.erb +106 -106
- data/docs/resources/aws_iam_access_key.md.erb +123 -123
- data/docs/resources/aws_iam_access_keys.md.erb +198 -198
- data/docs/resources/aws_iam_group.md.erb +46 -46
- data/docs/resources/aws_iam_groups.md.erb +43 -43
- data/docs/resources/aws_iam_password_policy.md.erb +76 -76
- data/docs/resources/aws_iam_policies.md.erb +82 -82
- data/docs/resources/aws_iam_policy.md.erb +144 -144
- data/docs/resources/aws_iam_role.md.erb +63 -63
- data/docs/resources/aws_iam_root_user.md.erb +58 -58
- data/docs/resources/aws_iam_user.md.erb +64 -64
- data/docs/resources/aws_iam_users.md.erb +89 -89
- data/docs/resources/aws_kms_keys.md.erb +84 -84
- data/docs/resources/aws_route_table.md.erb +47 -47
- data/docs/resources/aws_s3_bucket.md.erb +134 -134
- data/docs/resources/aws_security_group.md.erb +151 -151
- data/docs/resources/aws_security_groups.md.erb +91 -91
- data/docs/resources/aws_sns_topic.md.erb +63 -63
- data/docs/resources/aws_subnet.md.erb +133 -133
- data/docs/resources/aws_subnets.md.erb +126 -126
- data/docs/resources/aws_vpc.md.erb +120 -120
- data/docs/resources/aws_vpcs.md.erb +48 -48
- data/docs/resources/azure_generic_resource.md.erb +170 -170
- data/docs/resources/azure_resource_group.md.erb +284 -284
- data/docs/resources/azure_virtual_machine.md.erb +347 -347
- data/docs/resources/azure_virtual_machine_data_disk.md.erb +224 -224
- data/docs/resources/bash.md.erb +75 -75
- data/docs/resources/bond.md.erb +90 -90
- data/docs/resources/bridge.md.erb +57 -57
- data/docs/resources/bsd_service.md.erb +67 -67
- data/docs/resources/command.md.erb +138 -138
- data/docs/resources/cpan.md.erb +79 -79
- data/docs/resources/cran.md.erb +64 -64
- data/docs/resources/crontab.md.erb +89 -89
- data/docs/resources/csv.md.erb +54 -54
- data/docs/resources/dh_params.md.erb +205 -205
- data/docs/resources/directory.md.erb +30 -30
- data/docs/resources/docker.md.erb +219 -219
- data/docs/resources/docker_container.md.erb +104 -104
- data/docs/resources/docker_image.md.erb +94 -94
- data/docs/resources/docker_service.md.erb +114 -114
- data/docs/resources/elasticsearch.md.erb +242 -242
- data/docs/resources/etc_fstab.md.erb +125 -125
- data/docs/resources/etc_group.md.erb +75 -75
- data/docs/resources/etc_hosts.md.erb +78 -78
- data/docs/resources/etc_hosts_allow.md.erb +74 -74
- data/docs/resources/etc_hosts_deny.md.erb +74 -74
- data/docs/resources/file.md.erb +526 -515
- data/docs/resources/filesystem.md.erb +41 -41
- data/docs/resources/firewalld.md.erb +107 -107
- data/docs/resources/gem.md.erb +79 -79
- data/docs/resources/group.md.erb +61 -61
- data/docs/resources/grub_conf.md.erb +101 -101
- data/docs/resources/host.md.erb +86 -86
- data/docs/resources/http.md.erb +196 -196
- data/docs/resources/iis_app.md.erb +122 -122
- data/docs/resources/iis_site.md.erb +135 -135
- data/docs/resources/inetd_conf.md.erb +94 -94
- data/docs/resources/ini.md.erb +76 -76
- data/docs/resources/interface.md.erb +58 -58
- data/docs/resources/iptables.md.erb +64 -64
- data/docs/resources/json.md.erb +63 -63
- data/docs/resources/kernel_module.md.erb +120 -120
- data/docs/resources/kernel_parameter.md.erb +53 -53
- data/docs/resources/key_rsa.md.erb +85 -85
- data/docs/resources/launchd_service.md.erb +57 -57
- data/docs/resources/limits_conf.md.erb +75 -75
- data/docs/resources/login_def.md.erb +71 -71
- data/docs/resources/mount.md.erb +69 -69
- data/docs/resources/mssql_session.md.erb +60 -60
- data/docs/resources/mysql_conf.md.erb +99 -99
- data/docs/resources/mysql_session.md.erb +74 -74
- data/docs/resources/nginx.md.erb +79 -79
- data/docs/resources/nginx_conf.md.erb +128 -128
- data/docs/resources/npm.md.erb +60 -60
- data/docs/resources/ntp_conf.md.erb +60 -60
- data/docs/resources/oneget.md.erb +53 -53
- data/docs/resources/oracledb_session.md.erb +52 -52
- data/docs/resources/os.md.erb +141 -141
- data/docs/resources/os_env.md.erb +78 -78
- data/docs/resources/package.md.erb +120 -120
- data/docs/resources/packages.md.erb +67 -67
- data/docs/resources/parse_config.md.erb +103 -103
- data/docs/resources/parse_config_file.md.erb +138 -138
- data/docs/resources/passwd.md.erb +141 -141
- data/docs/resources/pip.md.erb +67 -67
- data/docs/resources/port.md.erb +137 -137
- data/docs/resources/postgres_conf.md.erb +79 -79
- data/docs/resources/postgres_hba_conf.md.erb +93 -93
- data/docs/resources/postgres_ident_conf.md.erb +76 -76
- data/docs/resources/postgres_session.md.erb +69 -69
- data/docs/resources/powershell.md.erb +102 -102
- data/docs/resources/processes.md.erb +109 -109
- data/docs/resources/rabbitmq_config.md.erb +41 -41
- data/docs/resources/registry_key.md.erb +158 -158
- data/docs/resources/runit_service.md.erb +57 -57
- data/docs/resources/security_policy.md.erb +47 -47
- data/docs/resources/service.md.erb +121 -121
- data/docs/resources/shadow.md.erb +146 -144
- data/docs/resources/ssh_config.md.erb +80 -80
- data/docs/resources/sshd_config.md.erb +83 -83
- data/docs/resources/ssl.md.erb +119 -119
- data/docs/resources/sys_info.md.erb +42 -42
- data/docs/resources/systemd_service.md.erb +57 -57
- data/docs/resources/sysv_service.md.erb +57 -57
- data/docs/resources/upstart_service.md.erb +57 -57
- data/docs/resources/user.md.erb +140 -140
- data/docs/resources/users.md.erb +127 -127
- data/docs/resources/vbscript.md.erb +55 -55
- data/docs/resources/virtualization.md.erb +57 -57
- data/docs/resources/windows_feature.md.erb +47 -47
- data/docs/resources/windows_hotfix.md.erb +53 -53
- data/docs/resources/windows_task.md.erb +95 -95
- data/docs/resources/wmi.md.erb +81 -81
- data/docs/resources/x509_certificate.md.erb +151 -151
- data/docs/resources/xinetd_conf.md.erb +156 -156
- data/docs/resources/xml.md.erb +85 -85
- data/docs/resources/yaml.md.erb +69 -69
- data/docs/resources/yum.md.erb +98 -98
- data/docs/resources/zfs_dataset.md.erb +53 -53
- data/docs/resources/zfs_pool.md.erb +47 -47
- data/docs/ruby_usage.md +203 -203
- data/docs/shared/matcher_be.md.erb +1 -1
- data/docs/shared/matcher_cmp.md.erb +43 -43
- data/docs/shared/matcher_eq.md.erb +3 -3
- data/docs/shared/matcher_include.md.erb +1 -1
- data/docs/shared/matcher_match.md.erb +1 -1
- data/docs/shell.md +215 -215
- data/examples/README.md +8 -8
- data/examples/inheritance/README.md +65 -65
- data/examples/inheritance/controls/example.rb +14 -14
- data/examples/inheritance/inspec.yml +15 -15
- data/examples/kitchen-ansible/.kitchen.yml +25 -25
- data/examples/kitchen-ansible/Gemfile +19 -19
- data/examples/kitchen-ansible/README.md +53 -53
- data/examples/kitchen-ansible/files/nginx.repo +6 -6
- data/examples/kitchen-ansible/tasks/main.yml +16 -16
- data/examples/kitchen-ansible/test/integration/default/default.yml +5 -5
- data/examples/kitchen-ansible/test/integration/default/web_spec.rb +28 -28
- data/examples/kitchen-chef/.kitchen.yml +20 -20
- data/examples/kitchen-chef/Berksfile +3 -3
- data/examples/kitchen-chef/Gemfile +19 -19
- data/examples/kitchen-chef/README.md +27 -27
- data/examples/kitchen-chef/metadata.rb +7 -7
- data/examples/kitchen-chef/recipes/default.rb +6 -6
- data/examples/kitchen-chef/recipes/nginx.rb +30 -30
- data/examples/kitchen-chef/test/integration/default/web_spec.rb +28 -28
- data/examples/kitchen-puppet/.kitchen.yml +22 -22
- data/examples/kitchen-puppet/Gemfile +20 -20
- data/examples/kitchen-puppet/Puppetfile +25 -25
- data/examples/kitchen-puppet/README.md +53 -53
- data/examples/kitchen-puppet/manifests/site.pp +33 -33
- data/examples/kitchen-puppet/metadata.json +11 -11
- data/examples/kitchen-puppet/test/integration/default/web_spec.rb +28 -28
- data/examples/meta-profile/README.md +37 -37
- data/examples/meta-profile/controls/example.rb +13 -13
- data/examples/meta-profile/inspec.yml +13 -13
- data/examples/profile-attribute.yml +2 -2
- data/examples/profile-attribute/README.md +14 -14
- data/examples/profile-attribute/controls/example.rb +11 -11
- data/examples/profile-attribute/inspec.yml +8 -8
- data/examples/profile-aws/controls/iam_password_policy_expiration.rb +8 -8
- data/examples/profile-aws/controls/iam_password_policy_max_age.rb +8 -8
- data/examples/profile-aws/controls/iam_root_user_mfa.rb +8 -8
- data/examples/profile-aws/controls/iam_users_access_key_age.rb +8 -8
- data/examples/profile-aws/controls/iam_users_console_users_mfa.rb +8 -8
- data/examples/profile-aws/inspec.yml +11 -11
- data/examples/profile-azure/controls/azure_resource_group_example.rb +24 -24
- data/examples/profile-azure/controls/azure_vm_example.rb +29 -29
- data/examples/profile-azure/inspec.yml +11 -11
- data/examples/profile-sensitive/README.md +29 -29
- data/examples/profile-sensitive/controls/sensitive-failures.rb +9 -9
- data/examples/profile-sensitive/controls/sensitive.rb +9 -9
- data/examples/profile-sensitive/inspec.yml +8 -8
- data/examples/profile/README.md +48 -48
- data/examples/profile/controls/example.rb +23 -23
- data/examples/profile/controls/gordon.rb +36 -36
- data/examples/profile/controls/meta.rb +34 -34
- data/examples/profile/inspec.yml +10 -10
- data/examples/profile/libraries/gordon_config.rb +53 -53
- data/inspec.gemspec +47 -47
- data/lib/bundles/README.md +3 -3
- data/lib/bundles/inspec-artifact.rb +7 -7
- data/lib/bundles/inspec-artifact/README.md +1 -1
- data/lib/bundles/inspec-artifact/cli.rb +277 -277
- data/lib/bundles/inspec-compliance.rb +16 -16
- data/lib/bundles/inspec-compliance/.kitchen.yml +20 -20
- data/lib/bundles/inspec-compliance/README.md +185 -185
- data/lib/bundles/inspec-compliance/api.rb +316 -316
- data/lib/bundles/inspec-compliance/api/login.rb +152 -152
- data/lib/bundles/inspec-compliance/bootstrap.sh +41 -41
- data/lib/bundles/inspec-compliance/cli.rb +254 -254
- data/lib/bundles/inspec-compliance/configuration.rb +103 -103
- data/lib/bundles/inspec-compliance/http.rb +86 -86
- data/lib/bundles/inspec-compliance/support.rb +36 -36
- data/lib/bundles/inspec-compliance/target.rb +98 -98
- data/lib/bundles/inspec-compliance/test/integration/default/cli.rb +93 -93
- data/lib/bundles/inspec-habitat.rb +12 -12
- data/lib/bundles/inspec-habitat/cli.rb +36 -36
- data/lib/bundles/inspec-habitat/log.rb +10 -10
- data/lib/bundles/inspec-habitat/profile.rb +390 -390
- data/lib/bundles/inspec-init.rb +8 -8
- data/lib/bundles/inspec-init/README.md +31 -31
- data/lib/bundles/inspec-init/cli.rb +97 -97
- data/lib/bundles/inspec-init/templates/profile/README.md +3 -3
- data/lib/bundles/inspec-init/templates/profile/controls/example.rb +19 -19
- data/lib/bundles/inspec-init/templates/profile/inspec.yml +8 -8
- data/lib/bundles/inspec-supermarket.rb +13 -13
- data/lib/bundles/inspec-supermarket/README.md +45 -45
- data/lib/bundles/inspec-supermarket/api.rb +84 -84
- data/lib/bundles/inspec-supermarket/cli.rb +73 -73
- data/lib/bundles/inspec-supermarket/target.rb +34 -34
- data/lib/fetchers/git.rb +163 -163
- data/lib/fetchers/local.rb +74 -74
- data/lib/fetchers/mock.rb +35 -35
- data/lib/fetchers/url.rb +204 -204
- data/lib/inspec.rb +24 -24
- data/lib/inspec/archive/tar.rb +29 -29
- data/lib/inspec/archive/zip.rb +19 -19
- data/lib/inspec/backend.rb +92 -92
- data/lib/inspec/base_cli.rb +355 -350
- data/lib/inspec/cached_fetcher.rb +66 -66
- data/lib/inspec/cli.rb +292 -292
- data/lib/inspec/completions/bash.sh.erb +45 -45
- data/lib/inspec/completions/fish.sh.erb +34 -34
- data/lib/inspec/completions/zsh.sh.erb +61 -61
- data/lib/inspec/control_eval_context.rb +179 -179
- data/lib/inspec/dependencies/cache.rb +72 -72
- data/lib/inspec/dependencies/dependency_set.rb +92 -92
- data/lib/inspec/dependencies/lockfile.rb +115 -115
- data/lib/inspec/dependencies/requirement.rb +123 -123
- data/lib/inspec/dependencies/resolver.rb +86 -86
- data/lib/inspec/describe.rb +27 -27
- data/lib/inspec/dsl.rb +66 -66
- data/lib/inspec/dsl_shared.rb +33 -33
- data/lib/inspec/env_printer.rb +157 -157
- data/lib/inspec/errors.rb +13 -13
- data/lib/inspec/exceptions.rb +12 -12
- data/lib/inspec/expect.rb +45 -45
- data/lib/inspec/fetcher.rb +45 -45
- data/lib/inspec/file_provider.rb +275 -275
- data/lib/inspec/formatters.rb +3 -3
- data/lib/inspec/formatters/base.rb +250 -250
- data/lib/inspec/formatters/json_rspec.rb +20 -20
- data/lib/inspec/formatters/show_progress.rb +12 -12
- data/lib/inspec/library_eval_context.rb +58 -58
- data/lib/inspec/log.rb +11 -11
- data/lib/inspec/metadata.rb +247 -247
- data/lib/inspec/method_source.rb +24 -24
- data/lib/inspec/objects.rb +14 -14
- data/lib/inspec/objects/attribute.rb +65 -65
- data/lib/inspec/objects/control.rb +61 -61
- data/lib/inspec/objects/describe.rb +92 -92
- data/lib/inspec/objects/each_loop.rb +36 -36
- data/lib/inspec/objects/list.rb +15 -15
- data/lib/inspec/objects/or_test.rb +40 -40
- data/lib/inspec/objects/ruby_helper.rb +15 -15
- data/lib/inspec/objects/tag.rb +27 -27
- data/lib/inspec/objects/test.rb +87 -87
- data/lib/inspec/objects/value.rb +27 -27
- data/lib/inspec/plugins.rb +60 -60
- data/lib/inspec/plugins/cli.rb +24 -24
- data/lib/inspec/plugins/fetcher.rb +86 -86
- data/lib/inspec/plugins/resource.rb +135 -135
- data/lib/inspec/plugins/secret.rb +15 -15
- data/lib/inspec/plugins/source_reader.rb +40 -40
- data/lib/inspec/polyfill.rb +12 -12
- data/lib/inspec/profile.rb +510 -510
- data/lib/inspec/profile_context.rb +207 -207
- data/lib/inspec/profile_vendor.rb +66 -66
- data/lib/inspec/reporters.rb +54 -50
- data/lib/inspec/reporters/base.rb +24 -24
- data/lib/inspec/reporters/cli.rb +356 -356
- data/lib/inspec/reporters/json.rb +116 -116
- data/lib/inspec/reporters/json_min.rb +48 -48
- data/lib/inspec/reporters/junit.rb +77 -77
- data/lib/inspec/require_loader.rb +33 -33
- data/lib/inspec/resource.rb +186 -186
- data/lib/inspec/rule.rb +266 -266
- data/lib/inspec/runner.rb +345 -345
- data/lib/inspec/runner_mock.rb +41 -41
- data/lib/inspec/runner_rspec.rb +175 -175
- data/lib/inspec/runtime_profile.rb +26 -26
- data/lib/inspec/schema.rb +213 -213
- data/lib/inspec/secrets.rb +19 -19
- data/lib/inspec/secrets/yaml.rb +30 -30
- data/lib/inspec/shell.rb +220 -220
- data/lib/inspec/shell_detector.rb +90 -90
- data/lib/inspec/source_reader.rb +29 -29
- data/lib/inspec/version.rb +8 -8
- data/lib/matchers/matchers.rb +339 -339
- data/lib/resource_support/aws.rb +41 -41
- data/lib/resource_support/aws/aws_backend_base.rb +12 -12
- data/lib/resource_support/aws/aws_backend_factory_mixin.rb +12 -12
- data/lib/resource_support/aws/aws_plural_resource_mixin.rb +21 -21
- data/lib/resource_support/aws/aws_resource_mixin.rb +66 -66
- data/lib/resource_support/aws/aws_singular_resource_mixin.rb +24 -24
- data/lib/resources/aide_conf.rb +159 -160
- data/lib/resources/apache.rb +48 -48
- data/lib/resources/apache_conf.rb +156 -156
- data/lib/resources/apt.rb +149 -149
- data/lib/resources/audit_policy.rb +63 -63
- data/lib/resources/auditd.rb +231 -231
- data/lib/resources/auditd_conf.rb +55 -55
- data/lib/resources/aws/aws_cloudtrail_trail.rb +77 -77
- data/lib/resources/aws/aws_cloudtrail_trails.rb +47 -47
- data/lib/resources/aws/aws_cloudwatch_alarm.rb +62 -62
- data/lib/resources/aws/aws_cloudwatch_log_metric_filter.rb +100 -100
- data/lib/resources/aws/aws_config_recorder.rb +98 -98
- data/lib/resources/aws/aws_ec2_instance.rb +157 -157
- data/lib/resources/aws/aws_iam_access_key.rb +106 -106
- data/lib/resources/aws/aws_iam_access_keys.rb +149 -144
- data/lib/resources/aws/aws_iam_group.rb +56 -56
- data/lib/resources/aws/aws_iam_groups.rb +52 -45
- data/lib/resources/aws/aws_iam_password_policy.rb +116 -116
- data/lib/resources/aws/aws_iam_policies.rb +53 -46
- data/lib/resources/aws/aws_iam_policy.rb +125 -119
- data/lib/resources/aws/aws_iam_role.rb +51 -51
- data/lib/resources/aws/aws_iam_root_user.rb +60 -60
- data/lib/resources/aws/aws_iam_user.rb +111 -111
- data/lib/resources/aws/aws_iam_users.rb +108 -96
- data/lib/resources/aws/aws_kms_keys.rb +53 -46
- data/lib/resources/aws/aws_route_table.rb +61 -61
- data/lib/resources/aws/aws_s3_bucket.rb +115 -115
- data/lib/resources/aws/aws_security_group.rb +93 -93
- data/lib/resources/aws/aws_security_groups.rb +68 -68
- data/lib/resources/aws/aws_sns_topic.rb +53 -53
- data/lib/resources/aws/aws_subnet.rb +88 -88
- data/lib/resources/aws/aws_subnets.rb +53 -53
- data/lib/resources/aws/aws_vpc.rb +69 -69
- data/lib/resources/aws/aws_vpcs.rb +45 -45
- data/lib/resources/azure/azure_backend.rb +377 -377
- data/lib/resources/azure/azure_generic_resource.rb +59 -59
- data/lib/resources/azure/azure_resource_group.rb +152 -152
- data/lib/resources/azure/azure_virtual_machine.rb +264 -264
- data/lib/resources/azure/azure_virtual_machine_data_disk.rb +136 -136
- data/lib/resources/bash.rb +35 -35
- data/lib/resources/bond.rb +68 -68
- data/lib/resources/bridge.rb +122 -122
- data/lib/resources/command.rb +73 -69
- data/lib/resources/cpan.rb +58 -58
- data/lib/resources/cran.rb +64 -64
- data/lib/resources/crontab.rb +169 -170
- data/lib/resources/csv.rb +60 -60
- data/lib/resources/dh_params.rb +82 -82
- data/lib/resources/directory.rb +25 -25
- data/lib/resources/docker.rb +236 -236
- data/lib/resources/docker_container.rb +89 -89
- data/lib/resources/docker_image.rb +83 -83
- data/lib/resources/docker_object.rb +57 -57
- data/lib/resources/docker_service.rb +90 -90
- data/lib/resources/elasticsearch.rb +169 -169
- data/lib/resources/etc_fstab.rb +101 -102
- data/lib/resources/etc_group.rb +152 -156
- data/lib/resources/etc_hosts.rb +82 -81
- data/lib/resources/etc_hosts_allow_deny.rb +122 -123
- data/lib/resources/file.rb +298 -298
- data/lib/resources/filesystem.rb +31 -31
- data/lib/resources/firewalld.rb +143 -144
- data/lib/resources/gem.rb +70 -70
- data/lib/resources/groups.rb +215 -215
- data/lib/resources/grub_conf.rb +237 -237
- data/lib/resources/host.rb +306 -300
- data/lib/resources/http.rb +251 -250
- data/lib/resources/iis_app.rb +101 -104
- data/lib/resources/iis_site.rb +148 -148
- data/lib/resources/inetd_conf.rb +62 -62
- data/lib/resources/ini.rb +29 -29
- data/lib/resources/interface.rb +129 -129
- data/lib/resources/iptables.rb +80 -69
- data/lib/resources/json.rb +117 -117
- data/lib/resources/kernel_module.rb +107 -107
- data/lib/resources/kernel_parameter.rb +58 -58
- data/lib/resources/key_rsa.rb +67 -67
- data/lib/resources/limits_conf.rb +55 -55
- data/lib/resources/login_def.rb +66 -66
- data/lib/resources/mount.rb +88 -88
- data/lib/resources/mssql_session.rb +101 -101
- data/lib/resources/mysql.rb +81 -81
- data/lib/resources/mysql_conf.rb +134 -134
- data/lib/resources/mysql_session.rb +71 -71
- data/lib/resources/nginx.rb +96 -96
- data/lib/resources/nginx_conf.rb +227 -227
- data/lib/resources/npm.rb +48 -48
- data/lib/resources/ntp_conf.rb +58 -58
- data/lib/resources/oneget.rb +71 -71
- data/lib/resources/oracledb_session.rb +139 -139
- data/lib/resources/os.rb +36 -36
- data/lib/resources/os_env.rb +76 -76
- data/lib/resources/package.rb +370 -370
- data/lib/resources/packages.rb +111 -111
- data/lib/resources/parse_config.rb +116 -116
- data/lib/resources/passwd.rb +74 -74
- data/lib/resources/pip.rb +89 -89
- data/lib/resources/platform.rb +109 -109
- data/lib/resources/port.rb +771 -771
- data/lib/resources/postgres.rb +130 -130
- data/lib/resources/postgres_conf.rb +121 -121
- data/lib/resources/postgres_hba_conf.rb +99 -100
- data/lib/resources/postgres_ident_conf.rb +76 -78
- data/lib/resources/postgres_session.rb +71 -71
- data/lib/resources/powershell.rb +53 -57
- data/lib/resources/processes.rb +204 -204
- data/lib/resources/rabbitmq_conf.rb +52 -52
- data/lib/resources/registry_key.rb +296 -296
- data/lib/resources/security_policy.rb +180 -180
- data/lib/resources/service.rb +789 -789
- data/lib/resources/shadow.rb +146 -140
- data/lib/resources/ssh_conf.rb +102 -102
- data/lib/resources/ssl.rb +99 -99
- data/lib/resources/sys_info.rb +28 -28
- data/lib/resources/toml.rb +32 -32
- data/lib/resources/users.rb +654 -654
- data/lib/resources/vbscript.rb +68 -69
- data/lib/resources/virtualization.rb +247 -247
- data/lib/resources/windows_feature.rb +84 -84
- data/lib/resources/windows_hotfix.rb +35 -35
- data/lib/resources/windows_task.rb +102 -105
- data/lib/resources/wmi.rb +110 -113
- data/lib/resources/x509_certificate.rb +143 -143
- data/lib/resources/xinetd.rb +111 -111
- data/lib/resources/xml.rb +46 -46
- data/lib/resources/yaml.rb +47 -47
- data/lib/resources/yum.rb +180 -180
- data/lib/resources/zfs_dataset.rb +60 -60
- data/lib/resources/zfs_pool.rb +49 -49
- data/lib/source_readers/flat.rb +39 -39
- data/lib/source_readers/inspec.rb +75 -75
- data/lib/utils/command_wrapper.rb +27 -27
- data/lib/utils/convert.rb +12 -12
- data/lib/utils/database_helpers.rb +77 -77
- data/lib/utils/erlang_parser.rb +192 -192
- data/lib/utils/filter.rb +272 -272
- data/lib/utils/filter_array.rb +27 -27
- data/lib/utils/find_files.rb +44 -44
- data/lib/utils/hash.rb +41 -41
- data/lib/utils/json_log.rb +18 -18
- data/lib/utils/latest_version.rb +22 -22
- data/lib/utils/modulator.rb +12 -12
- data/lib/utils/nginx_parser.rb +85 -85
- data/lib/utils/object_traversal.rb +49 -49
- data/lib/utils/parser.rb +274 -274
- data/lib/utils/plugin_registry.rb +93 -93
- data/lib/utils/simpleconfig.rb +120 -120
- data/lib/utils/spdx.rb +13 -13
- data/lib/utils/spdx.txt +343 -343
- metadata +2 -2
|
@@ -1,119 +1,125 @@
|
|
|
1
|
-
class AwsIamPolicy < Inspec.resource(1)
|
|
2
|
-
name 'aws_iam_policy'
|
|
3
|
-
desc 'Verifies settings for individual AWS IAM Policy'
|
|
4
|
-
example "
|
|
5
|
-
describe aws_iam_policy('AWSSupportAccess') do
|
|
6
|
-
it { should be_attached }
|
|
7
|
-
end
|
|
8
|
-
"
|
|
9
|
-
supports platform: 'aws'
|
|
10
|
-
|
|
11
|
-
include AwsSingularResourceMixin
|
|
12
|
-
|
|
13
|
-
attr_reader :arn, :attachment_count, :default_version_id
|
|
14
|
-
|
|
15
|
-
def to_s
|
|
16
|
-
"Policy #{@policy_name}"
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def attached?
|
|
20
|
-
!attachment_count.zero?
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def attached_users
|
|
24
|
-
return @attached_users if defined? @attached_users
|
|
25
|
-
fetch_attached_entities
|
|
26
|
-
@attached_users
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def attached_groups
|
|
30
|
-
return @attached_groups if defined? @attached_groups
|
|
31
|
-
fetch_attached_entities
|
|
32
|
-
@attached_groups
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def attached_roles
|
|
36
|
-
return @attached_roles if defined? @attached_roles
|
|
37
|
-
fetch_attached_entities
|
|
38
|
-
@attached_roles
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def attached_to_user?(user_name)
|
|
42
|
-
attached_users.include?(user_name)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def attached_to_group?(group_name)
|
|
46
|
-
attached_groups.include?(group_name)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def attached_to_role?(role_name)
|
|
50
|
-
attached_roles.include?(role_name)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
private
|
|
54
|
-
|
|
55
|
-
def validate_params(raw_params)
|
|
56
|
-
validated_params = check_resource_param_names(
|
|
57
|
-
raw_params: raw_params,
|
|
58
|
-
allowed_params: [:policy_name],
|
|
59
|
-
allowed_scalar_name: :policy_name,
|
|
60
|
-
allowed_scalar_type: String,
|
|
61
|
-
)
|
|
62
|
-
|
|
63
|
-
if validated_params.empty?
|
|
64
|
-
raise ArgumentError, "You must provide the parameter 'policy_name' to aws_iam_policy."
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
validated_params
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def fetch_from_api
|
|
71
|
-
backend = BackendFactory.create(inspec_runner)
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
1
|
+
class AwsIamPolicy < Inspec.resource(1)
|
|
2
|
+
name 'aws_iam_policy'
|
|
3
|
+
desc 'Verifies settings for individual AWS IAM Policy'
|
|
4
|
+
example "
|
|
5
|
+
describe aws_iam_policy('AWSSupportAccess') do
|
|
6
|
+
it { should be_attached }
|
|
7
|
+
end
|
|
8
|
+
"
|
|
9
|
+
supports platform: 'aws'
|
|
10
|
+
|
|
11
|
+
include AwsSingularResourceMixin
|
|
12
|
+
|
|
13
|
+
attr_reader :arn, :attachment_count, :default_version_id
|
|
14
|
+
|
|
15
|
+
def to_s
|
|
16
|
+
"Policy #{@policy_name}"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def attached?
|
|
20
|
+
!attachment_count.zero?
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def attached_users
|
|
24
|
+
return @attached_users if defined? @attached_users
|
|
25
|
+
fetch_attached_entities
|
|
26
|
+
@attached_users
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def attached_groups
|
|
30
|
+
return @attached_groups if defined? @attached_groups
|
|
31
|
+
fetch_attached_entities
|
|
32
|
+
@attached_groups
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def attached_roles
|
|
36
|
+
return @attached_roles if defined? @attached_roles
|
|
37
|
+
fetch_attached_entities
|
|
38
|
+
@attached_roles
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def attached_to_user?(user_name)
|
|
42
|
+
attached_users.include?(user_name)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def attached_to_group?(group_name)
|
|
46
|
+
attached_groups.include?(group_name)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def attached_to_role?(role_name)
|
|
50
|
+
attached_roles.include?(role_name)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
def validate_params(raw_params)
|
|
56
|
+
validated_params = check_resource_param_names(
|
|
57
|
+
raw_params: raw_params,
|
|
58
|
+
allowed_params: [:policy_name],
|
|
59
|
+
allowed_scalar_name: :policy_name,
|
|
60
|
+
allowed_scalar_type: String,
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
if validated_params.empty?
|
|
64
|
+
raise ArgumentError, "You must provide the parameter 'policy_name' to aws_iam_policy."
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
validated_params
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def fetch_from_api
|
|
71
|
+
backend = BackendFactory.create(inspec_runner)
|
|
72
|
+
|
|
73
|
+
policy = nil
|
|
74
|
+
pagination_opts = { max_items: 1000 }
|
|
75
|
+
loop do
|
|
76
|
+
api_result = backend.list_policies(pagination_opts)
|
|
77
|
+
policy = api_result.policies.detect do |p|
|
|
78
|
+
p.policy_name == @policy_name
|
|
79
|
+
end
|
|
80
|
+
break if policy # Found it!
|
|
81
|
+
break unless api_result.is_truncated # Not found and no more results
|
|
82
|
+
pagination_opts[:marker] = api_result.marker
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
@exists = !policy.nil?
|
|
86
|
+
|
|
87
|
+
return unless @exists
|
|
88
|
+
@arn = policy[:arn]
|
|
89
|
+
@default_version_id = policy[:default_version_id]
|
|
90
|
+
@attachment_count = policy[:attachment_count]
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def fetch_attached_entities
|
|
94
|
+
unless @exists
|
|
95
|
+
@attached_groups = nil
|
|
96
|
+
@attached_users = nil
|
|
97
|
+
@attached_roles = nil
|
|
98
|
+
return
|
|
99
|
+
end
|
|
100
|
+
backend = AwsIamPolicy::BackendFactory.create(inspec_runner)
|
|
101
|
+
criteria = { policy_arn: arn }
|
|
102
|
+
resp = nil
|
|
103
|
+
catch_aws_errors do
|
|
104
|
+
resp = backend.list_entities_for_policy(criteria)
|
|
105
|
+
end
|
|
106
|
+
@attached_groups = resp.policy_groups.map(&:group_name)
|
|
107
|
+
@attached_users = resp.policy_users.map(&:user_name)
|
|
108
|
+
@attached_roles = resp.policy_roles.map(&:role_name)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
class Backend
|
|
112
|
+
class AwsClientApi < AwsBackendBase
|
|
113
|
+
BackendFactory.set_default_backend(self)
|
|
114
|
+
self.aws_client_class = Aws::IAM::Client
|
|
115
|
+
|
|
116
|
+
def list_policies(criteria)
|
|
117
|
+
aws_service_client.list_policies(criteria)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def list_entities_for_policy(criteria)
|
|
121
|
+
aws_service_client.list_entities_for_policy(criteria)
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
class AwsIamRole < Inspec.resource(1)
|
|
2
|
-
name 'aws_iam_role'
|
|
3
|
-
desc 'Verifies settings for an IAM Role'
|
|
4
|
-
example "
|
|
5
|
-
describe aws_iam_role('my-role') do
|
|
6
|
-
it { should exist }
|
|
7
|
-
end
|
|
8
|
-
"
|
|
9
|
-
supports platform: 'aws'
|
|
10
|
-
|
|
11
|
-
include AwsSingularResourceMixin
|
|
12
|
-
attr_reader :description, :role_name
|
|
13
|
-
|
|
14
|
-
private
|
|
15
|
-
|
|
16
|
-
def validate_params(raw_params)
|
|
17
|
-
validated_params = check_resource_param_names(
|
|
18
|
-
raw_params: raw_params,
|
|
19
|
-
allowed_params: [:role_name],
|
|
20
|
-
allowed_scalar_name: :role_name,
|
|
21
|
-
allowed_scalar_type: String,
|
|
22
|
-
)
|
|
23
|
-
if validated_params.empty?
|
|
24
|
-
raise ArgumentError, 'You must provide a role_name to aws_iam_role.'
|
|
25
|
-
end
|
|
26
|
-
validated_params
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def fetch_from_api
|
|
30
|
-
role_info = nil
|
|
31
|
-
begin
|
|
32
|
-
role_info = BackendFactory.create(inspec_runner).get_role(role_name: role_name)
|
|
33
|
-
rescue Aws::IAM::Errors::NoSuchEntity
|
|
34
|
-
@exists = false
|
|
35
|
-
return
|
|
36
|
-
end
|
|
37
|
-
@exists = true
|
|
38
|
-
@description = role_info.role.description
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# Uses the SDK API to really talk to AWS
|
|
42
|
-
class Backend
|
|
43
|
-
class AwsClientApi < AwsBackendBase
|
|
44
|
-
BackendFactory.set_default_backend(self)
|
|
45
|
-
self.aws_client_class = Aws::IAM::Client
|
|
46
|
-
def get_role(query)
|
|
47
|
-
aws_service_client.get_role(query)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
1
|
+
class AwsIamRole < Inspec.resource(1)
|
|
2
|
+
name 'aws_iam_role'
|
|
3
|
+
desc 'Verifies settings for an IAM Role'
|
|
4
|
+
example "
|
|
5
|
+
describe aws_iam_role('my-role') do
|
|
6
|
+
it { should exist }
|
|
7
|
+
end
|
|
8
|
+
"
|
|
9
|
+
supports platform: 'aws'
|
|
10
|
+
|
|
11
|
+
include AwsSingularResourceMixin
|
|
12
|
+
attr_reader :description, :role_name
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
|
|
16
|
+
def validate_params(raw_params)
|
|
17
|
+
validated_params = check_resource_param_names(
|
|
18
|
+
raw_params: raw_params,
|
|
19
|
+
allowed_params: [:role_name],
|
|
20
|
+
allowed_scalar_name: :role_name,
|
|
21
|
+
allowed_scalar_type: String,
|
|
22
|
+
)
|
|
23
|
+
if validated_params.empty?
|
|
24
|
+
raise ArgumentError, 'You must provide a role_name to aws_iam_role.'
|
|
25
|
+
end
|
|
26
|
+
validated_params
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def fetch_from_api
|
|
30
|
+
role_info = nil
|
|
31
|
+
begin
|
|
32
|
+
role_info = BackendFactory.create(inspec_runner).get_role(role_name: role_name)
|
|
33
|
+
rescue Aws::IAM::Errors::NoSuchEntity
|
|
34
|
+
@exists = false
|
|
35
|
+
return
|
|
36
|
+
end
|
|
37
|
+
@exists = true
|
|
38
|
+
@description = role_info.role.description
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Uses the SDK API to really talk to AWS
|
|
42
|
+
class Backend
|
|
43
|
+
class AwsClientApi < AwsBackendBase
|
|
44
|
+
BackendFactory.set_default_backend(self)
|
|
45
|
+
self.aws_client_class = Aws::IAM::Client
|
|
46
|
+
def get_role(query)
|
|
47
|
+
aws_service_client.get_role(query)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
class AwsIamRootUser < Inspec.resource(1)
|
|
2
|
-
name 'aws_iam_root_user'
|
|
3
|
-
desc 'Verifies settings for AWS root account'
|
|
4
|
-
example "
|
|
5
|
-
describe aws_iam_root_user do
|
|
6
|
-
it { should have_access_key }
|
|
7
|
-
end
|
|
8
|
-
"
|
|
9
|
-
supports platform: 'aws'
|
|
10
|
-
|
|
11
|
-
# TODO: rewrite to avoid direct injection, match other resources, use AwsSingularResourceMixin
|
|
12
|
-
def initialize(conn = nil)
|
|
13
|
-
@client = conn ? conn.iam_client : inspec_runner.backend.aws_client(Aws::IAM::Client)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# TODO: DRY up, see https://github.com/chef/inspec/issues/2633
|
|
17
|
-
# Copied from resource_support/aws/aws_resource_mixin.rb
|
|
18
|
-
def catch_aws_errors
|
|
19
|
-
yield
|
|
20
|
-
rescue Aws::Errors::MissingCredentialsError
|
|
21
|
-
# The AWS error here is unhelpful:
|
|
22
|
-
# "unable to sign request without credentials set"
|
|
23
|
-
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('No AWS credentials available')
|
|
25
|
-
rescue Aws::Errors::ServiceError => e
|
|
26
|
-
fail_resource e.message
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
# TODO: DRY up, see https://github.com/chef/inspec/issues/2633
|
|
30
|
-
# Copied from resource_support/aws/aws_singular_resource_mixin.rb
|
|
31
|
-
def inspec_runner
|
|
32
|
-
# When running under inspec-cli, we have an 'inspec' method that
|
|
33
|
-
# returns the runner. When running under unit tests, we don't
|
|
34
|
-
# have that, but we still have to call this to pass something
|
|
35
|
-
# (nil is OK) to the backend.
|
|
36
|
-
# TODO: remove with https://github.com/chef/inspec-aws/issues/216
|
|
37
|
-
# TODO: remove after rewrite to include AwsSingularResource
|
|
38
|
-
inspec if respond_to?(:inspec)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def has_access_key?
|
|
42
|
-
summary_account['AccountAccessKeysPresent'] == 1
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def has_mfa_enabled?
|
|
46
|
-
summary_account['AccountMFAEnabled'] == 1
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def to_s
|
|
50
|
-
'AWS Root-User'
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
private
|
|
54
|
-
|
|
55
|
-
def summary_account
|
|
56
|
-
catch_aws_errors do
|
|
57
|
-
@summary_account ||= @client.get_account_summary.summary_map
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
1
|
+
class AwsIamRootUser < Inspec.resource(1)
|
|
2
|
+
name 'aws_iam_root_user'
|
|
3
|
+
desc 'Verifies settings for AWS root account'
|
|
4
|
+
example "
|
|
5
|
+
describe aws_iam_root_user do
|
|
6
|
+
it { should have_access_key }
|
|
7
|
+
end
|
|
8
|
+
"
|
|
9
|
+
supports platform: 'aws'
|
|
10
|
+
|
|
11
|
+
# TODO: rewrite to avoid direct injection, match other resources, use AwsSingularResourceMixin
|
|
12
|
+
def initialize(conn = nil)
|
|
13
|
+
@client = conn ? conn.iam_client : inspec_runner.backend.aws_client(Aws::IAM::Client)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# TODO: DRY up, see https://github.com/chef/inspec/issues/2633
|
|
17
|
+
# Copied from resource_support/aws/aws_resource_mixin.rb
|
|
18
|
+
def catch_aws_errors
|
|
19
|
+
yield
|
|
20
|
+
rescue Aws::Errors::MissingCredentialsError
|
|
21
|
+
# The AWS error here is unhelpful:
|
|
22
|
+
# "unable to sign request without credentials set"
|
|
23
|
+
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('No AWS credentials available')
|
|
25
|
+
rescue Aws::Errors::ServiceError => e
|
|
26
|
+
fail_resource e.message
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# TODO: DRY up, see https://github.com/chef/inspec/issues/2633
|
|
30
|
+
# Copied from resource_support/aws/aws_singular_resource_mixin.rb
|
|
31
|
+
def inspec_runner
|
|
32
|
+
# When running under inspec-cli, we have an 'inspec' method that
|
|
33
|
+
# returns the runner. When running under unit tests, we don't
|
|
34
|
+
# have that, but we still have to call this to pass something
|
|
35
|
+
# (nil is OK) to the backend.
|
|
36
|
+
# TODO: remove with https://github.com/chef/inspec-aws/issues/216
|
|
37
|
+
# TODO: remove after rewrite to include AwsSingularResource
|
|
38
|
+
inspec if respond_to?(:inspec)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def has_access_key?
|
|
42
|
+
summary_account['AccountAccessKeysPresent'] == 1
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def has_mfa_enabled?
|
|
46
|
+
summary_account['AccountMFAEnabled'] == 1
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def to_s
|
|
50
|
+
'AWS Root-User'
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
def summary_account
|
|
56
|
+
catch_aws_errors do
|
|
57
|
+
@summary_account ||= @client.get_account_summary.summary_map
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|