You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过boto3获取AWS IAM用户的控制台访问状态?

如何用Boto3获取AWS IAM用户的控制台访问状态

首先明确:Boto3的IAM客户端没有直接返回用户控制台访问状态的单一函数,但可以通过以下两种方式实现需求:

方法1:使用get_login_profile()(推荐)

IAM用户的控制台访问权限与LoginProfile资源绑定——只有当用户被启用控制台访问时,才会存在对应的LoginProfile。调用get_login_profile(),通过是否抛出NoSuchEntity异常即可判断状态:

import boto3
from botocore.exceptions import ClientError

iam_client = boto3.client('iam')

def has_console_access(username):
    try:
        login_profile = iam_client.get_login_profile(UserName=username)['LoginProfile']
        return True, {
            'create_date': login_profile['CreateDate'],
            'password_reset_required': login_profile.get('PasswordResetRequired', False)
        }
    except ClientError as e:
        if e.response['Error']['Code'] == 'NoSuchEntity':
            return False, None
        raise  # 抛出权限不足等其他异常

# 调用示例
username = 'your-iam-username'
access_status, profile_details = has_console_access(username)
print(f"用户 {username} 控制台访问状态: {'已启用' if access_status else '未启用'}")
if access_status:
    print(f"密码创建时间: {profile_details['create_date']}")
    print(f"是否需重置密码: {'是' if profile_details['password_reset_required'] else '否'}")

方法2:使用get_user()(仅作参考)

get_user()返回的用户数据中包含PasswordLastUsed字段,该字段记录用户最后一次控制台登录时间。但这种方法有局限性:

  • 如果用户有控制台访问权限但从未登录过,PasswordLastUsed字段不会存在
  • 无法区分「有访问权限但未登录」和「无访问权限」的情况

代码示例:

def check_console_access_via_user_details(username):
    user_data = iam_client.get_user(UserName=username)['User']
    has_access = 'PasswordLastUsed' in user_data
    return has_access, user_data.get('PasswordLastUsed')

内容的提问来源于stack exchange,提问作者Sai Teja Makani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 23:35:10