【问题标题】:How to remove all resources created by aws federated user如何删除由 aws 联合用户创建的所有资源
【发布时间】:2018-08-09 05:38:26
【问题描述】:

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

【问题讨论】:

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


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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 嗨,Sawyer,我正在创建一个锻炼区域,用户可以在指定的时间内执行指导锻炼。 S3 只是一个用例,它可以是 ec2 练习或其他。
      【解决方案3】:

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

      【讨论】:

      • 但是我们能否即时创建 aws 组织并在到期后即时删除它们?
      • 在这种情况下我们也可以销毁资源。
      猜你喜欢
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 2021-04-22
      • 2020-01-22
      • 2019-12-10
      • 2019-02-09
      • 1970-01-01
      相关资源
      最近更新 更多