使用boto3,如何检查AWS IAM用户是否有密码?

2024-10-01 17:40:48 发布

您现在位置:Python中文网/ 问答频道 /正文

在IAM中的用户中,我希望以编程方式获取所有启用密码的用户的列表。从AWS控制台,我可以很容易地找到它们。但是,如何以编程方式获取他们的列表呢?我想用python boto来实现。在

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

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

因此,仅仅通过检查“PasswordLastUsed”是否为空,我不能断言用户没有密码,因此,无法获得所有有密码的用户。我是不是少了点什么?我可以用其他方法或任何其他python资源来完成这个任务吗?在


Tags: 用户ioawshttp密码列表编程方式
3条回答

我知道有一种方法,就在你期望的地方。。。在

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

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

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

您可以使用GetLoginProfileAPI请求来确定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))

相关问题 更多 >

    热门问题