可能将EC2密钥限制为ec2-associate-address?

我有一个具有弹性IP的常规EC2实例。 实例停止的次数很less,我只是通过AWSpipe理控制台手动重新关联IP。 我现在考虑将它迁移到现场实例,这意味着我想要一种在启动时自动重新关联IP的方式,当机器由于被退出市场而closures时。 如何实现这一点在很多地方都有很好的描述(例如这里 )。

我的问题是:

就像许多有这个问题的人一样,我很担心把我的AWS证书文件放在实例本身上。 我有一个模糊的记忆,看到有可能创build更多有限权限的密钥,但无法find任何具体的细节。 所以:是否有可能创build一个密钥,我可以愉快地把它放在机器上,知道它只能用于ec2-associate-instance(但不能login到其他实例,或者通常用我的AWS账户运行),我将如何实现这一目标?

这实际上可以通过AWS Identity and Access Management(IAM)实现 ,它使您能够安全地控制对您的用户的AWS服务和资源的访问权限 (促进IAM,而不是日常AWS使用的主要帐户凭据,现在强烈build议相应) 。

在其他几个之中,IAM启用以下用例:

对AWS资源的细粒度访问控制 :IAM使您能够控制对AWS服务API和特定资源的访问。 IAM还使您能够添加特定的条件来控制用户如何使用AWS,例如一天中的时间,其始发IP地址或他们是否使用SSL。

相应的粒度在可用的AWS服务(随着时间的推移而增加)上有所不同,但幸运的是,EC2 API的粒度很高,您正在寻找的是现成的 – 例如,您可能想查看推荐的AWS策略生成器 ,selectIAM策略和服务Amazon EC2 ,这将允许您依次select操作AssociateAddress

因此,您应该能够通过为当前任务创build一个专用的IAM用户来实现您的目标,制定本质上仅限于AssociateAddress (也许DisassociateAddress )的IAM策略并将该策略分配给IAM用户 – 例如策略可能看起来像这个:

{ "Statement": [ { "Action": [ "ec2:AssociateAddress", "ec2:DisassociateAddress" ], "Effect": "Allow", "Resource": "*" } ] }