class Himeko::UserMimickingRole
Attributes
driver[R]
path[R]
role_name[R]
username[R]
Public Class Methods
new(iam, username, role_name, path = nil, driver: nil)
click to toggle source
# File lib/himeko/user_mimicking_role.rb, line 7 def initialize(iam, username, role_name, path = nil, driver: nil) @driver = driver || Driver.new(iam) @username = username @role_name = role_name @path = path end
Public Instance Methods
account_id()
click to toggle source
# File lib/himeko/user_mimicking_role.rb, line 39 def account_id user.arn.split(?:)[4] end
assume_role_policy_document()
click to toggle source
# File lib/himeko/user_mimicking_role.rb, line 43 def assume_role_policy_document { "Version"=>"2012-10-17", "Statement"=>[ { "Effect"=>"Allow", "Principal"=>{ "AWS"=>[ "arn:aws:iam::#{account_id}:root", ] }, "Action"=>"sts:AssumeRole", "Condition"=>{}, }, ], } end
create()
click to toggle source
@return [String] role arn
# File lib/himeko/user_mimicking_role.rb, line 17 def create arn = driver.create_role( path: path, role_name: role_name, assume_role_policy_document: assume_role_policy_document, ) managed_policies.each do |policy_arn| driver.attach_role_policy(role_name, policy_arn) end policies.each do |policy_name, policy| driver.put_role_policy(role_name, policy_name, policy) end return arn end
groups()
click to toggle source
# File lib/himeko/user_mimicking_role.rb, line 61 def groups @groups ||= driver.list_groups_for_user(username) end
managed_policies()
click to toggle source
# File lib/himeko/user_mimicking_role.rb, line 65 def managed_policies @managed_policies ||= [ *driver.list_attached_user_policies(username), *groups.flat_map do |group_name| driver.list_attached_group_policies(group_name) end, ].sort.uniq end
policies()
click to toggle source
# File lib/himeko/user_mimicking_role.rb, line 74 def policies @policies ||= [ *driver.list_user_policies(username).map do |policy_name| [policy_name, driver.get_user_policy(username, policy_name)] end, *groups.flat_map do |group_name| driver.list_group_policies(group_name).map do |policy_name| ["#{group_name}_#{policy_name}"[0..127], driver.get_group_policy(group_name, policy_name)] end end, ].to_h end
user()
click to toggle source
# File lib/himeko/user_mimicking_role.rb, line 35 def user @user ||= driver.get_user(username) end