【问题标题】:How can we fetch IAM users, their groups and policies?我们如何获取 IAM 用户、他们的组和策略?
【发布时间】:2018-02-14 20:08:46
【问题描述】:

我需要获取所有 aws 用户、他们相应的组、策略以及是否为他们激活了 mfa。谁能告诉我如何通过 aws cli 或 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()

【问题讨论】:

  • 您遇到的具体问题是什么?您有了一个良好的开端,您只需向脚本添加更多 AWS API 调用即可获取所需的其余数据。

标签: python amazon-web-services boto amazon-iam


【解决方案1】:

这里,我用boto命令做了四个操作——

  1. 列出所有用户
  2. 列出附加到每个用户的策略
  3. 列出添加到每个用户的角色
  4. 列出 Mfa 设备以查看 MFA 是否已由用户配置(这里我不检查是否未启用 MFA,而是检查设备是否已由用户配置。)

获取与 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 设备。

如果您想将输出添加为字典列表,其中每个索引将包含字典具有用户名、组、策略、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}

【讨论】:

  • 感谢您的努力。但是我们如何才能以 csv 格式获取这些内容,或者可以打印字典 >> name: value 或者可以用逗号分隔,如下面的用户名、组、策略或 mfa
  • 不,它不起作用,不幸的是它只是列出了我们的用户名,并不是所有的用户名我都需要像 USERNAME、GROUP NAME、MFA 这样的输出。我正在尝试编辑它。但失败了。
  • 您正在使用哪些凭据 - 该凭据应通过具有所有必需权限的用户生成。
  • 您可以将值作为字典获取,我在其中打印值,您可以创建列表或字典
  • 我不想为我公司的 aws 帐户的所有用户打印出来我正在使用我的凭据以及如何创建字典列表?
猜你喜欢
  • 1970-01-01
  • 2018-01-06
  • 2020-10-22
  • 2020-10-28
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多