2017-05-31 101 views
1

我試圖創建IAM策略,該限制將IAM角色傳遞給EC2實例,如果實例ID不等於i-1234567890abcd如果實例標識與IAM策略中的實例標識不匹配,則限制IAM角色附加到EC2實例

政策沒有錯誤,但這個政策也沒有影響。如果我從以下策略中刪除Condition,它會起作用,但它將限制角色被附加到任何EC2實例。

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Deny", 
     "Action": ["iam:PassRole"], 
     "Resource": ["arn:aws:iam::000000000000:role/MyEC2InstanceSpecificRole"], 
     "Condition": { 
     "ArnNotEquals": { 
      "ec2:SourceInstanceARN": "arn:aws:ec2:us-east-1:000000000000:instance/i-1234567890abcd" 
     } 
     } 
    } 
    ] 
} 

回答

0

我懷疑這是不可能的。

Granting a User Permissions to Pass a Role to an AWS Service文檔狀態:

傳遞一個角色(和它的權限)的AWS服務,用戶必須有權傳遞作用的服務。這有助於管理員確保只有經過批准的用戶才能使用授予權限的角色配置服務。要允許用戶將角色傳遞給AWS服務,您必須將PassRole權限授予用戶的IAM用戶,角色或組。

當用戶將角色ARN作爲參數傳遞給任何使用該角色爲該服務分配權限的API時,該服務會檢查該用戶是否具有iam:PassRole權限。要限制用戶只傳遞批准的角色,可以使用IAM策略語句的Resources元素過濾iam:PassRole權限。

同樣在Using an IAM Role to Grant Permissions to Applications Running on Amazon EC2 Instances它指出:

PassRole不相同的方式,RunInstances或ListInstanceProfiles是一個API動作。相反,只要角色ARN作爲參數傳遞給API(或者控制檯代表用戶執行此操作),就是AWS檢查的權限。它可以幫助管理員控制哪些用戶可以傳遞哪些角色。

PassRole的正常使用情況是爲了確保用戶不會再授予AWS服務更多的權限以允許他們自己使用。它試圖避免非管理員用戶將管理員角色傳遞給服務的情況,其目的在於使用該服務訪問通常不被允許訪問的資源。例如,啓動具有管理員角色的Amazon EC2實例,以便他們可以登錄到該實例併發出他們通常無權使用的管理員命令。

上述文件表明PassRole權限進行評估,以確認其允許通過一定的作用,在一定服務,而不是服務是怎麼回事,屆時在分配給使用角色本身(例如到EC2實例以生成STS憑證)。

相關問題