强制执行IAM用户的MFA通常是一项非常关键的安全措施,但对于IAM配置文件中不同角色的MFA设置进行管理可能比较棘手。这里提供一种基于AWS Organizations的解决方案。
首先,需要创建一个Lambda函数来检测是否为使用了MFA。以下是Lambda函数的Python代码示例:
import json
import boto3
def lambda_handler(event, context):
iam = boto3.client("iam")
enable_mfa = []
for user in event.get("users"):
mfa_devices = iam.list_mfa_devices(UserName=user)
if not mfa_devices["MFADevices"]:
enable_mfa.append(user)
return {"users_enable_mfa": enable_mfa}
然后,在AWS Organizations中创建一个Policy来调用Lambda函数。Policy包括以下内容:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CheckMFAPolicy",
"Effect": "Allow",
"Action": [
"lambda:InvokeFunction"
],
"Resource": "arn:aws:lambda:::function:",
"Condition": {
"ArnLike": {
"aws:PrincipalARN": "arn:aws:organizations:::ou/"
}
}
}
]
}
最后,需要在Organization中部署Policy,并将Policy附加到需要带MFA权限的用户组。这样就可以强制IAM配置文件中的角色使用MFA。
需要注意的是,在部署该解决方案之前,还需评估方案对现有IAM配置文件的影响,确保不会影响到现有实际运作的应用程序。