2014-03-05 176 views
4

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

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

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

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

有没有办法在服务器端使用IAM策略条件呢?

回答

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 ULTS:

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

这些行动允许当标签不存在,是一些其他的值等

此外,EC2允许动作"Action": "ec2:*"是对的缘故例如...您可以删除整个区块或将其用作模板,以便仅允许您的用户使用一组特定的EC2操作。

+0

有没有人真的得到这个工作?根据2015年3月的[AWS论坛帖子](https://forums.aws.amazon.com/message.jspa?messageID=610822#610860),不可能通过IAM策略限制实例的数量。当我使用EC2 api测试这种方法时,它似乎不起作用。 – tfasz