在亚马逊AWS中,我想给我的IAM注册(Windows)用户一个基于API的小程序,该程序将启动一个基于AMI的自定义实例,然后将她的机器连接到它。容易 - 但如果同一用户在第一个仍在运行时(从相同或另一台机器)尝试启动另一个实例,则第二次和后续尝试必须失败。 AMI将在多个用户之间共享。该实例对用户来说是唯一的。
请注意,此问题与某些类似的问题不同,因为我需要按需启动实例,但不允许进一步的实例。目标是防止应用程序的使用超过许可。
理想情况下,检测和防止这种情况都会发生在AWS端,因为它更安全。
在客户端,我可以看到如何使用标记来执行此操作 - 使用用户名标记已启动的实例,并在允许实例启动之前搜索标记。
有没有办法在服务器端执行此操作,具有IAM策略条件或什么?
答案 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": "*"
}
]
}
的结果证明
当该标记不存在时,允许这些操作,是其他值,等等。
此外,ec2允许操作"Action": "ec2:*"
是为了示例...您可以删除整个块或将其用作模板以开始仅向用户提供一组特定的EC2操作。