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

tim*_*day 7 security amazon-ec2 amazon-elastic-ip

我有一个带有弹性 IP 的常规 EC2 实例。实例停止了几次,我只是通过 AWS 管理控制台手动将 IP 与它重新关联。我现在正在考虑将它迁移到一个现货实例,这意味着我想要一种在启动时自动将它与 IP 关联的方法,如果/当机器由于定价超出市场而关闭时。如何实现这一点在很多地方都有很好的描述(例如这里)。

我的问题是:

像许多有此问题的人一样,我对将我的 AWS 凭证文件放在实例本身上持谨慎态度。我有一种模糊的记忆,知道可以创建具有更有限权限的附加密钥,但我无法找到任何具体细节。所以:是否有可能创建一个我可以愉快地放在机器上的密钥,因为我知道它只能用于 ec2-associate-instance(但不能登录到其他实例,或者通常使用我的 AWS 帐户运行),我将如何实现这一目标?

Ste*_*pel 9

这确实可以通过AWS Identity and Access Management (IAM) 实现,它使您能够安全地控制用户对 AWS 服务和资源的访问(现在强烈建议使用 IAM 而不是日常 AWS 使用的主账户凭证) .

其中,IAM 支持以下用例:

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

可用的 AWS 服务之间各自的粒度各不相同(它往往会随着时间的推移而增加),但幸运的是 EC2 API 的粒度很高,并且您正在寻找的内容随时可用 - 例如,您可能想查看推荐的AWS Policy Generator,选择类型IAM Policy和 service Amazon EC2,这将允许您依次选择操作AssociateAddress

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

{
  "Statement": [
    {
      "Action": [
        "ec2:AssociateAddress",
        "ec2:DisassociateAddress"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

  • 我一直在研究这个,并希望限制对特定弹性 IP 的访问。我还没有找到 EIP 的 ARN 语法。我缺少什么吗? (2认同)