【问题标题】:Using boto3, how to check if AWS IAM user has password?使用 boto3,如何检查 AWS IAM 用户是否有密码?
【发布时间】:2017-11-02 11:32:51
【问题描述】:

在 IAM 中的用户中,我想以编程方式获取所有启用密码的用户的列表。通过 AWS 控制台,我可以轻松发现它们。但是,如何以编程方式获取他们的列表?我想使用 python boto 来获得它。

我在这里阅读http://boto3.readthedocs.io/en/latest/reference/services/iam.html#iam,但通过本文档中列出的大多数方式,我只能看到使用“PasswordLastUsed”的选项,这在三种情况下将为空

  1. 用户没有密码
  2. 密码存在但从未使用过
  3. 没有与用户关联的登录数据。

因此,仅通过检查“PasswordLastUsed”是否为空,我不能声称用户没有密码,因此无法获得所有用户的密码。我在这里错过了什么吗?我可以使用任何其他方式或任何其他 python 资源来执行此操作吗?

【问题讨论】:

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


    【解决方案1】:
    import boto3
    
    iam = boto3.resource('iam')
    def isPasswordEnabled(user):
       login_profile = iam.LoginProfile(user)
       try:
         login_profile.create_date
         print True
      except:
         print False
    
    >>> isPasswordEnabled('user1')
    True
    >>> isPasswordEnabled('user2')
    False
    

    【讨论】:

    • 我会解析 csv 文件,但这看起来既快速又简单,即使它是异常驱动的开发;)。
    【解决方案2】:

    我可以看到有一种方法,就在你期望的地方......

    http://boto3.readthedocs.io/en/latest/reference/services/iam.html#IAM.Client.get_credential_report

    在报告中,password_enabled 字段设置为 false 表示没有密码。

    【讨论】:

    • 是的,看到了。但是,想要一种比这更简单的方法。因为这将涉及解析 CSV,然后将其转换为字典。
    【解决方案3】:

    您可以使用GetLoginProfile API 请求来确定 IAM 用户是否具有登录配置文件。如果没有与用户关联的登录配置文件,此请求将返回 404 响应。像这样的一些代码应该可以工作:

    import boto3
    iam = boto3.client('iam')
    user_name = 'bob'
    try:
        response = iam.get_login_profile(UserName=user_name)
    except Exception, e:
        if e.response['ResponseMetadata']['HTTPStatusCode'] == 404:
            print('User {} has no login profile'.format(user_name))
    

    【讨论】:

      猜你喜欢
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 2015-11-24
      相关资源
      最近更新 更多