如何删除AWS联合用户创建的所有资源

时间:2018-08-09 05:38:27

标签: amazon-web-services amazon-iam aws-organizations

我有一个用例,其中我动态创建了联盟用户,并允许在30分钟内对AWS执行操作。之后,我将从联合用户那里收回访问权限,但是我需要通过自动方式删除由他创建的资源。

3 个答案:

答案 0 :(得分:1)

您可以使用AWS Cloudtrail。 使用AWS Cloudtrail,您可以获得特定用户执行的所有操作

以下是一个示例AWS CLI命令,用于列出用户执行的所有操作

aws cloudtrail lookup-events --lookup-attributes AttributeKey=Username,AttributeValue=Some.Federated.User@MyCompany.com

一旦有了,您就可以提取用户创建的所有资源的列表,然后相应地删除它们。

以下是用户创建SNS主题时获得的示例事件

{
    "EventId": "HHHHe1bc-73b1-4c0c-bcaa-6666947f3eec",
    "Username": "Some.Federated.User@MyCompany.com",
    "EventTime": 1534234453.0,
    "CloudTrailEvent": "{\"eventVersion\":\"1.05\",\"userIdentity\":{\"type\":\"AssumedRole\",\"principalId\":\"KKKKAJOTFHFJGLLFGHJF34:Some.Federated.User@MyCompany.com\",\"arn\":\"arn:aws:sts::888888888888:assumed-role/dev/Some.Federated.User@MyCompany.com\",\"accountId\":\"888888888888\",\"accessKeyId\":\"ASIA53RBKAC2XUI7CT5W\",\"sessionContext\":{\"attributes\":{\"mfaAuthenticated\":\"false\",\"creationDate\":\"2018-08-14T08:11:35Z\"},\"sessionIssuer\":{\"type\":\"Role\",\"principalId\":\"KKKKAJOTFHFJGLLFGHJF34\",\"arn\":\"arn:aws:iam::888888888888:role/dev\",\"accountId\":\"888888888888\",\"userName\":\"dev\"}}},\"eventTime\":\"2018-08-14T08:14:13Z\",\"eventSource\":\"sns.amazonaws.com\",\"eventName\":\"CreateTopic\",\"awsRegion\":\"us-east-1\",\"sourceIPAddress\":\"121.244.109.2\",\"userAgent\":\"aws-cli/1.11.47 Python/2.7.9 Windows/8 botocore/1.5.10\",\"requestParameters\":{\"name\":\"Temp6789\"},\"responseElements\":{\"topicArn\":\"arn:aws:sns:us-east-1:888888888888:Temp6789\"},\"requestID\":\"3787d2fe-a88c-53ee-h328-81123919c93e\",\"eventID\":\"HHHHe1bc-73b1-4c0c-bcaa-6666947f3eec\",\"eventType\":\"AwsApiCall\",\"recipientAccountId\":\"888888888888\"}",
    "EventName": "CreateTopic",
    "EventSource": "sns.amazonaws.com",
    "Resources": []
}

您可以使用任何可用的AWS开发工具包以编程方式完成此操作

答案 1 :(得分:0)

如果您为用户提供一种游乐场,而只需要丢弃垃圾,最好的解决方案是创建一个Organization并为用户API_CreateAccount设置帐户,然后授予仅他们需要的权限,然后每1分钟运行一次CloudWatch规则以检查可以删除哪些帐户。跟踪起来更容易,api调用更少。

答案 2 :(得分:0)

要以@Arafat Nalkhande的答案为基础,云径可以跟踪要删除的内容,但是仍然存在如何触发何时删除的问题。

如果持续时间较短(15分钟或更短),则可以在SQS中放置一个可能会延迟的任务,然后触发通过云径查看并执行删除操作的lambda。 30分钟调度的一个可能解决方案是在联盟用户登录后立即触发lambda。第一个lambda将创建与调度事件as explained here相关联的第二lambda。第二个lambda将需要包含用户的信息,删除用户创建的所有资源的说明以及删除计划事件的说明(因此它不会每30分钟保持运行一次)。

您可以共享更多用例吗?如果您创建的所有用户都是s3对象,并且时间不必恰好是30分钟,则可以设置存储桶生命周期以在24小时后删除。