【问题标题】:How to allow an instance to delete old snapshots of an attached volume?如何允许实例删除附加卷的旧快照?
【发布时间】:2012-09-06 07:31:34
【问题描述】:

我正在尝试创建一个 cloudformation 模板,该模板将创建一个 EC2 实例、装载一个 2GB 卷并执行定期快照,同时还删除一周或更长时间的那些。

虽然我可以获取并集成访问密钥和密钥,但删除快照似乎需要签名证书。我找不到使用 cloudformation 创建新证书的方法,所以似乎我应该手动创建一个新用户和证书并将其放入模板参数中?在这种情况下,用户能够删除所有快照是否正确,包括那些不是来自该实例的快照?

有没有办法将快照删除限制为只删除具有匹配描述的快照?或者处理删除旧快照的正确方法是什么?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-cloudformation


    【解决方案1】:

    我的建议是使用 CloudFormation 创建一个 IAM 角色(不是 IAM 用户)并将该角色分配给实例(再次使用 CloudFormation)。应允许该角色酌情删除快照。

    使用实例上的 IAM 角色删除快照的最简单方法之一是使用 boto Python AWS 库。如果您在分配有 IAM 角色的实例上运行 Boto,它会自动查找并使用正确的凭证。

    这是我刚刚用来删除us-east-1 中的快照snap-51930522 的简单boto 脚本:

    #!/usr/bin/python
    import boto.ec2
    boto.ec2.connect_to_region('us-east-1').delete_snapshot('snap-51930522')
    

    或者,您可以让外部服务器运行快照清理,而不是在实例本身上运行它。除了简化凭证管理和 cron 作业分发之外,它还允许您在停止或终止实例后进行清理。

    【讨论】:

    • 这个The role should be allowed to delete snapshots as appropriate.你介意解释一下吗,我只能让它删除账户里的所有快照,对吧?
    • @Fluffy:我的意思是,一旦你弄清楚应该允许哪些权限,你就可以将它们分配给这个角色。不,您不能授予自己删除他人内容的权限。
    • 我在问是否可以允许角色只删除一个特定卷的快照
    • 例如如果该实例遭到入侵,攻击者将无法删除所有快照
    • @Fluffy:目前,Amazon EC2 服务目前不支持使用 ARN(Amazon 资源名称)来限制使用给定功能(如 DeleteSnapshot)控制对特定资源的访问。然而,他们知道人们希望有更精细的控制,并公开表示他们正在考虑这样的事情。
    猜你喜欢
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    相关资源
    最近更新 更多