inspec/libraries/aws_iam_user.rb
Clinton Wolfe 82dc6f3ec7
Documentation for existing resources
* Update docs in source to use matcher-style calls, not properties-as-predicates

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Main doc file for aws_iam_user

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Add documentation for existing resources

This adds documentation for the following resources, including custom matchers:

  - aws_ec2_instance
  - aws_iam_access_key
  - aws_iam_password_policy
  - aws_iam_root_user
  - aws_iam_users

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>

* Fix `aws_iam_users` example (Console + No MFA) (#104)

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>

* Correct copypasta

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Remove misleading singular matcher information from the plural docs for aws_iam_users

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* Correct `aws-iam-userss` typo (#105)

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>

* Add EC2 instance state info

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>

* test commit

Signed-off-by: kgarmoe <kgarmoe@chef.io>

* copy edits

Signed-off-by: kgarmoe <kgarmoe@chef.io>

* Yikes, forgot to save after correcting a merge conflict

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>
2017-10-27 16:31:36 -04:00

54 lines
1.3 KiB
Ruby

# author: Alex Bedley
# author: Steffanie Freeman
# author: Simon Varlow
# author: Chris Redekop
class AwsIamUser < Inspec.resource(1)
name 'aws_iam_user'
desc 'Verifies settings for AWS IAM user'
example "
describe aws_iam_user(name: 'test_user') do
it { should have_mfa_enabled }
it { should_not have_console_password }
end
"
def initialize(
opts,
aws_user_provider = AwsIam::UserProvider.new,
aws_user_details_provider_ini = AwsIam::UserDetailsProviderInitializer.new,
access_key_factory = AwsIamAccessKeyFactory.new
)
user = opts[:user]
user = aws_user_provider.user(opts[:name]) if user.nil?
@aws_user_details_provider = aws_user_details_provider_ini.create(user)
@access_key_factory = access_key_factory
end
def has_mfa_enabled?
@aws_user_details_provider.has_mfa_enabled?
end
def has_console_password?
@aws_user_details_provider.has_console_password?
end
def access_keys
@aws_user_details_provider.access_keys.map { |access_key|
@access_key_factory.create_access_key(access_key)
}
end
def name
@aws_user_details_provider.name
end
def to_s
"IAM User #{name}"
end
class AwsIamAccessKeyFactory
def create_access_key(access_key)
AwsIamAccessKey.new({ access_key: access_key })
end
end
end