簡體   English   中英

AWS IAM 策略授予某些 EC2 實例的權限

[英]AWS IAM Policy grant permissions for some EC2 instances

我想限制特定用戶的訪問權限,只能查看幾個 EC2 實例。 我在 IAM 角色中創建了一個新用戶,並為其附加了一個新策略。 該政策的內容附在下面。 我試圖查看文檔並像這樣自己做:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:*",
            "Resource": [
                "arn:aws:ec2:eu-west-1:ACCOUNT_ID:instance/i-INSTANCE_ID1",
                "arn:aws:ec2:eu-west-1:ACCOUNT_ID:instance/i-INSTANCE_ID2"
            ]
        }
    ]
}

我放置了我的regionACCOUNT_ID (所有者 ID,不是創建的新用戶instance-id )和instance-id ,但是當我與該用戶連接並列出所有實例時,我得到了這個An error occurred fetching instance data: You are not authorized to perform this operation. .

將代碼放入 JSON 編輯器后,在Policy Review步驟中,我收到以下消息:

此策略定義了一些不提供權限的操作、資源或條件。 要授予訪問權限,策略必須具有具有適用資源或條件的操作。 有關詳細信息,請選擇顯示剩余了解更多

AWS 文檔提到了完全相同的配置或這些示例

我假設您在控制台中以該用戶身份連接(但與 CLI 相同)這是我認為正在發生的事情:

要列出所有實例,控制台很可能會調用DescribeInstances API。 根據可在 IAM 策略中使用的操作/資源/標簽列表,此 API 不支持 IAM 中的資源過濾器。

這意味着您的用戶無權列出實例,並且它們不會顯示在控制台中。 您可以通過使用 CLI 請求特定實例 id 的詳細信息來驗證此理論,如果我的假設正確,它將被授權。

由於 DescribeInstances 不能受資源或標簽的限制,我認為不可能為用戶過濾實例列表。

要使控制台正常工作,您需要在 IAM 策略中添加以下語句

 "Statement": [
     { your existing statement }, 

     {
         "Effect": "Allow",
         "Action": "ec2:DescribeInstances",
         "Resource": "*"
     }
 ]

如果我是對的,請報告 :-) 在問題中提到示例完全表明: Resources = * on DescribeInstances和 Resources 特定 InstanceId 在其他操作上。

之前的答案是錯誤的,您可以有條件地允許通過標簽名稱訪問 ec2:DescribeInstances。 這也是 AWS 的最佳實踐。 還明確拒絕訪問 ec2:CreateTags 和 ec2:DeleteTags 操作,以防止用戶創建或刪除標簽來控制實例。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ec2:DescribeInstances",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "ec2:ResourceTag/UserName": "${aws:username}"
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": [
        "ec2:CreateTags",
        "ec2:DeleteTags"
      ],
      "Resource": "*"
    }
  ]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM