-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathiam_api.py
More file actions
70 lines (61 loc) · 2.51 KB
/
Copy pathiam_api.py
File metadata and controls
70 lines (61 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import boto3
import json
import datetime
import time
from pprint import pprint
def lambda_handler():
accountId = '894143528341'
iam = cross_account_client(accountId)['iam']
paginator = iam.get_paginator('get_account_authorization_details')
userDetails = [user['UserDetailList'] for user in paginator.paginate(Filter=['User'])][0]
#roleDetails = [role['RoleDetailList'] for rolcross_account_client(acce in paginator.paginate(Filter=['Role'])][0]
#groupDetails = [group['GroupDetailList'] for group in paginator.paginate(Filter=['Group'])][0]
print(json.dumps(users(userDetails),sort_keys=True,indent=1,default=default))
def users(userDetails):
user_details = []
for users in userDetails:
userPolicy = []
if users.get('UserPolicyList'):
for inline in users.get('UserPolicyList'):
inline_policy = {
'PolicyName': inline['PolicyName']
}
userPolicy.append(inline_policy)
if users.get('AttachedManagedPolicies'):
for attached in users['AttachedManagedPolicies']:
attached_policy = {
'PolicyName': attached['PolicyName']
}
userPolicy.append(attached_policy)
if users.get('GroupList'):
for group in users['GroupList']:
group_list = {
'GroupName': group
}
userPolicy.append(group_list)
user_details.append({
'UserName':users['UserName'],
'CreationDate':users['CreateDate'],
'AttachedPolicies':userPolicy
})
return user_details
#print(json.dumps(user_details,sort_keys=True,indent=1,default=default))
def default(obj):
if isinstance(obj, (datetime.date, datetime.datetime)):
return obj.isoformat()
def cross_account_client(accountId):
sts = boto3.client('sts')
role_arn = f"arn:aws:iam::{accountId}:role/WM-L1SupportRole"
acct = sts.assume_role(RoleArn=role_arn,RoleSessionName="wm-rnd-account")
access_key = acct['Credentials']['AccessKeyId']
secret_access_key = acct['Credentials']['SecretAccessKey']
session_token = acct['Credentials']['SessionToken']
iam = boto3.client('iam',
aws_access_key_id=access_key,
aws_secret_access_key=secret_access_key,
aws_session_token=session_token)
return {
'iam':iam
}
if __name__ == '__main__':
lambda_handler()