すべてのawsユーザー、それに対応するグループ、ポリシーを取得し、mfaがアクティブ化されているかどうかを取得する必要があります。誰かがawscliまたはbotoを介してそれを行う方法を教えてもらえますか?.
私はawsのすべてのユーザーだけをフェッチするスクリプトを持っています。
import boto3
from boto3 import *
import argparse
access_key = ''
secret_key = ''
def get_iam_uses_list():
client = boto3.client('iam',
aws_access_key_id=access_key,
aws_secret_access_key=secret_key)
my_list=list()
iam_all_users = client.list_users(MaxItems=200)
for user in iam_all_users['Users']:
my_list.append(user['UserName'])
#
for i in my_list:
print i
# print "read complete"
#
# for i in my_list:
# iam_user_policy=client.list_attached_user_policies(UserName=i)
# for policy in iam_user_policy['AttachedPolicies']:
# print "%s \t %s" %(i, policy['PolicyName'])
def main():
parser = argparse.ArgumentParser()
parser.add_argument('access_key', help='Access Key');
parser.add_argument('secret_key', help='Secret Key');
args = parser.parse_args()
global access_key
global secret_key
access_key = args.access_key
secret_key = args.secret_key
get_iam_uses_list()
if __name__ =='__main__':main()
ここでは、botoコマンドを使用して4つの操作を実行しています-
AWSアカウントへのIAM接続を取得
import boto3
client = boto3.client('iam',aws_access_key_id="XXX",aws_secret_access_key="XXX")
IAMユーザーの取得これにより、すべてのユーザー名が出力されます。他の詳細も印刷したい場合は、カスタマイズできます。
users = client.list_users()
for key in users['Users']:
print key['UserName']
各ユーザーに添付されたポリシーのリストの取得
for key in users['Users']:
List_of_Policies = client.list_user_policies(UserName=key['UserName'])
for key in List_of_Policies['PolicyNames']:
print key['PolicyName']
各ユーザーに関連付けられているグループのリストを取得する
for key in users['Users']:
List_of_Groups = client.list_groups_for_user(UserName=key['UserName'])
for key in List_of_Groups['Groups']:
print key['GroupName']
MFAデバイスが構成されているかどうかの確認
for key in users['Users']:
List_of_MFA_Devices = client.list_mfa_devices(UserName=key['UserName'])
for key in List_of_MFA_Devices['MFADevices']:
print key
List_of_MFA_Devices ['MFADevices']が空かどうかをさらに確認できます。空の場合、MFAデバイスは構成されていません。
各インデックスにdictが含まれるDictのリストとして出力を追加する場合は、userName、Groups、Policy、isMFA_flag_configuredの値のペアがあります。次のコードを使用してください-
import boto3
client = boto3.client('iam',aws_access_key_id="XXXX",aws_secret_access_key="YYY")
users = client.list_users()
user_list = []
for key in users['Users']:
result = {}
Policies = []
Groups=[]
result['userName']=key['UserName']
List_of_Policies = client.list_user_policies(UserName=key['UserName'])
result['Policies'] = List_of_Policies['PolicyNames']
List_of_Groups = client.list_groups_for_user(UserName=key['UserName'])
for Group in List_of_Groups['Groups']:
Groups.append(Group['GroupName'])
result['Groups'] = Groups
List_of_MFA_Devices = client.list_mfa_devices(UserName=key['UserName'])
if not len(List_of_MFA_Devices['MFADevices']):
result['isMFADeviceConfigured']=False
else:
result['isMFADeviceConfigured']=True
user_list.append(result)
for key in user_list:
print key
上記のコードの出力-
{'userName': 'user1'、 'Groups':['grp1'、 'grp2']、 'Policies':['policy1'、 'policy2]、' isMFADeviceConfigured ':False/True}
{'userName': 'user2'、 'Groups':['grp1'、 'grp2']、 'Policies':['policy1'、 'policy2]、' isMFADeviceConfigured ':False/True}