1

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

4

3 回答 3

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 开发工具包以编程方式执行此操作

于 2018-08-14T08:47:45.607 回答
0

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

如果您的持续时间较短(15 分钟或更短),您可以在 SQS 中放置一个可能会延迟的任务,然后触发一个 lambda 来查看云跟踪并执行删除。30 分钟调度的一种可能解决方案是在联合用户登录后立即触发 lambda。第一个 lambda 将创建与预定事件关联的第二个 lambda,如此处所述。第二个 lambda 需要包含用户信息、删除他们创建的所有资源的说明以及删除计划事件的说明(因此它不会每 30 分钟运行一次)。

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

于 2018-08-16T03:16:49.200 回答
0

如果您允许用户使用某种游乐场区域并且只需要丢弃垃圾,那么最好的解决方案可能是创建一个组织并为用户配置帐户API_CreateAccount,仅授予他们需要的权限,然后分别运行 CloudWatch 规则1分钟检查可以删除哪些帐户。更容易跟踪和调用更少的 api。

于 2018-08-16T01:36:09.317 回答