我是python和boto3的新手。如果这不是一个合适的地方,请原谅我。
任何人都可以帮我写一个脚本来获取所有未激活其MFA设备的用户。我可以从凭据报告中获得相同的信息。但我想使用脚本获取信息。
由于
答案 0 :(得分:1)
试试这个:
import boto3
client = boto3.client('iam')
iam_users = []
response = client.list_users()
for user in response['Users']:
iam_users.append(user['UserName'])
while 'Marker' in response:
response = client.list_users(Marker=response['Marker'])
for user in response['Users']:
iam_users.append(user['UserName'])
no_mfa_users = []
for iam_user in iam_users:
response = client.list_mfa_devices(UserName=iam_user)
if not response['MFADevices']:
no_mfa_users.append(iam_user)
no_mfa_users
数组将包含未启用MFA的IAM用户列表。
boto3参考可以找到here。
答案 1 :(得分:0)
这是lambda函数,可帮助您定义未在其帐户上激活MFA的用户。另外,我还将SNS主题添加到功能中,该功能将向您发送已定义主题的列表。
import boto3
client=boto3.client('iam')
sns=boto3.client('sns')
response = client.list_users()
userVirtualMfa = client.list_virtual_mfa_devices()
physicalString = ''
def lambda_handler(event,context):
mfa_users=[]
for user in response['Users']:
userMfa = client.list_mfa_devices(UserName=user['UserName'])
for uname in userMfa['MFADevices']:
virtualEnabled = []
virtualEnabled.append(uname['UserName'])
if len(userMfa['MFADevices']) == 0 :
if user['UserName'] not in virtualEnabled:
mfa_users.append(user['UserName'])
print (mfa_users)