允许AWS IAM用户仅启动一个ec2实例

时间:2014-03-05 22:14:32

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

在亚马逊AWS中,我想给我的IAM注册(Windows)用户一个基于API的小程序,该程序将启动一个基于AMI的自定义实例,然后将她的机器连接到它。容易 - 但如果同一用户在第一个仍在运行时(从相同或另一台机器)尝试启动另一个实例,则第二次和后续尝试必须失败。 AMI将在多个用户之间共享。该实例对用户来说是唯一的。

请注意,此问题与某些类似的问题不同,因为我需要按需启动实例,但不允许进一步的实例。目标是防止应用程序的使用超过许可。

理想情况下,检测和防止这种情况都会发生在AWS端,因为它更安全。

在客户端,我可以看到如何使用标记来执行此操作 - 使用用户名标记已启动的实例,并在允许实例启动之前搜索标记。

有没有办法在服务器端执行此操作,具有IAM策略条件或什么?

1 个答案:

答案 0 :(得分:6)

不确定。这是一个简单的例子,我给了用户访问所有ec2操作的权限,除非那些我明确否认的,如果存在具有键“MyTag”和值“MyTagValue”的ResourceTag。

拒绝采取行动:

示例:

{
  "Statement": [
    {
      "Action": [
        "ec2:PurchaseReservedInstancesOffering",
        "ec2:RequestSpotInstances",
        "ec2:RunInstances"
      ],
      "Effect": "Deny",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "ec2:ResourceTag/MyTag": "MyTagValue"
        }
      }
    },
    {
      "Action": "ec2:*",
      "Effect": "Allow",
      "Resource": "*"
    }   
  ]
}

以下是IAM Policy Simulator

的结果证明

A screenshot of the IAM Policy Simulator, showing several denied actions.

当该标记不存在时,允许这些操作,是其他值,等等。

此外,ec2允许操作"Action": "ec2:*"是为了示例...您可以删除整个块或将其用作模板以开始仅向用户提供一组特定的EC2操作。