class AWSEdges::IAM

Attributes

nodes[R]

Public Class Methods

new(iam) click to toggle source
# File lib/aws-edges/iam.rb, line 5
def initialize(iam)
  @nodes = Array.new

  # get IAM groups
  iam.list_groups[:groups].each{|g|
    @nodes.push({
      :group_name => g[:group_name],
      :group_id => g[:group_id],
      :group_arn => g[:arn],
      :group_create_date => g[:create_date],
      :users => [],
      :group_policies => []
    }) 

    # get group members
    assigned_users = Array.new
    iam.get_group(options = {:group_name => g[:group_name]})[:users].each {|u|
      assigned_users.push({
        :user_name => u[:user_name],
        :user_id => u[:user_id],
        :arn => u[:arn],
        :path => u[:path],
        :create_date => u[:create_date],
      })
    }
    @nodes[@nodes.length - 1][:users] = assigned_users

    # get group policies
    assigned_policies = Array.new
    iam.list_group_policies(options = {:group_name => g[:group_name]})[:policy_names].each {|p|
      assigned_policies.push({
        :policy_name => p
      })
    }
    @nodes[@nodes.length - 1][:group_policies] = assigned_policies
  }

  # get IAM users
  iam.list_users[:users].each{|u|
    @nodes.push({
      :user_name => u[:user_name],
      :user_id => u[:user_id],
      :user_arn => u[:arn],
      :user_path => u[:path],
      :user_create_date => u[:create_date],
      :groups => [],
      :user_policies => []
    })

    # get membership
    assigned_groups = Array.new
    iam.list_groups_for_user(options = {:user_name => u[:user_name]})[:groups].each {|g|
      assigned_groups.push({
        :path => g[:path],
        :group_name => g[:group_name],
        :group_id => g[:group_id],
        :arn => g[:arn],
        :create_date => g[:create_date]
      }) 
    }
    @nodes[@nodes.length - 1][:groups] = assigned_groups

    # get user policies
    assigned_policies = Array.new
    iam.list_user_policies(options = {:user_name => u[:user_name]})[:policy_names].each {|p|
      assigned_policies.push({
        :policy_name => p
      })
    }
    @nodes[@nodes.length - 1][:user_policies] = assigned_policies
  }
end
supported_fields() click to toggle source
# File lib/aws-edges/iam.rb, line 78
def self.supported_fields
  [ "group_path", "group_name", "group_id", "group_arn",
    "group_create_date", "users-path", "users-user_name",
    "users-user_id", "users-arn", "users-create_date",
    "group_policies-policy_name",
    "user_path", "user_name", "user_id", "user_arn",
    "user_create_date", "groups-path", "groups-group_name",
    "groups-group_id", "groups-arn", "groups-create_date",
    "user_policies-policy_name"
  ]
end