到目前为止,我已经实现了以下功能:我使用AWS系统管理器自动化、AWS配置和AWS SNS服务来获取我电子邮件上所有过期访问密钥的列表。这很好用。
要求:我在AWS帐户中有多个IAM用户,他们的访问密钥在过去90天内没有轮换。现在我想在账户中建立一些自动化功能,向每个IAM用户发送电子邮件,告知他们的访问密钥已过期。
请对此提供指导。
我创建了一个Lambda来完成这项工作,每天运行它,并向用户发送电子邮件。
- 从IAM获取用户列表
- 循环浏览用户列表
- 对于与用户关联的每个访问密钥,确定其年龄(今天-AccessKey创建日期(
- 如果超过90天,做点什么(在我的情况下,我会删除它们(
这是我的Lambda:中的一个python片段
import json
import boto3
import datetime
from dateutil.tz import tzutc
users = iam.list_users()['Users']
def list_old_keys(warning_sent, keys_disabled):
for user in users:
for access_key in iam.list_access_keys(UserName = user['UserName'])['AccessKeyMetadata']:
delta = (today - access_key['CreateDate'].replace(tzinfo=None)).days
if access_key['Status'] == 'Active':
if delta >= 90:
<Give a Strong Warning to update key>
else:
if delta >= 90:
<Disable the key because it's Inactive and Old>
return ()
顺便说一句,根据您的合规性,如果密钥超过90天,您可能至少需要禁用它。我开始警告75天大的人,他们的密钥将被删除,如果超过90天,就会被删除。