2014-03-05 172 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