簡體   English   中英

為什么要使用IAM角色?

[英]Why should I use IAM roles?

請幫助我理解為什么AWS建議通過在實例上的文件中存儲API密鑰(“基於文件的方法”)來將角色分配給EC2實例(“基於角色的方法”)?

考慮三個用例:(i)在運行Web應用程序的實例上有一個“ tomcat”帳戶。 該應用程序不使用AWS API。 實例上還有另一個帳戶(“支持”),該帳戶使用AWS API進行內部維護和維護(日志,指標等)。

使用基於文件的方法,如果攻擊者利用該應用程序並訪問了文件系統(例如“ tomcat”),則他們將無法讀取憑據文件(只能由“支持”讀取)並且不會能夠進行AWS API調用。 如果攻擊者在“ tomcat”帳戶下執行任意代碼,情況也是如此。

但是,使用基於角色的方法,如果攻擊者可以訪問文件系統,則他們將一無所獲(因為根本沒有憑證文件),並且他們無法調用AWS API。 但是,如果攻擊者執行任意代碼,他們可能會調用API。

(ii)有一個運行Web應用程序的“ tomcat”帳戶。 該應用程序調用AWS API進行操作。 還有另一個帳戶(“支持”)使用AWS API進行內部維護和維護。 兩個帳戶都需要訪問不同的資源(例如,“ tomcat”需要S3,而“支持”需要日志和指標)。

在基於角色的方法中,分配給實例的角色將有效地包含“ tomcat”和“ support”所需的權限的並集,這違背了“最小特權”原則。 即使將權限從技術上划分為兩個角色,每個帳戶最終仍將能夠承擔其並不需要的角色。

使用基於文件的方法,如果攻擊者獲得對文件系統的訪問權限,他們將能夠讀取“ tomcat”憑據並從另一台計算機進行API調用(通過將策略限制為特定的源IP可以避免這種情況,盡管維護起來很麻煩)。 如果攻擊者執行任意代碼,他們將能夠從EC2實例進行API調用。 在這兩種情況下,“支持”帳戶都將受到操作系統的保護。

使用基於角色的方法,如果攻擊者獲得了對文件系統的訪問權,那么在API調用方面就一無所獲,因為根本沒有憑證文件。 但是,如果攻擊者執行任意代碼,則他們可以代表兩個角色(“ tomcat”和“ support”)從現場進行API調用。

(iii)有一個運行Web應用程序的“ tomcat”帳戶。 該應用程序調用AWS API進行操作。 實例不會進行其他API調用。

使用基於文件的方法,如果攻擊者獲得對文件系統的訪問權限,他們將能夠讀取“ tomcat”憑據並從另一台計算機進行API調用(通過將策略限制為特定的源IP可以避免這種情況,盡管維護起來很麻煩)。 如果攻擊者執行任意代碼,他們將能夠從EC2實例進行API調用。

使用基於角色的方法,如果攻擊者獲得了對文件系統的訪問權,那么在API調用方面就一無所獲,因為根本沒有憑證文件。 但是,如果攻擊者執行任意代碼,則他們可以從實例進行API調用。

因此,似乎建議的基於角色的方法實際上會增加情況(i)和(ii)的風險。

我在這里想念什么?

如果您在Amazon EC2實例上多個用戶集 ,每個用戶集需要不同的IAM權限,則不適合通過為EC2實例分配IAM角色來提供憑證。

通常,建議使用Role方法,因為憑據不會存儲在任何地方。 有時會不小心將存儲在磁盤上的憑據檢查到源代碼存儲庫中。 有能力創建磁盤卷快照的用戶也可以訪問它們,然后可以將其附加到其他實例以訪問配置文件並避免常規安全性。 這表明使用最低特權也很重要,因為它僅向IAM用戶授予其工作所需的特定權限 ,而不是更多。

為實例分配角色需要ec2:PassRole權限,因此還必須仔細授予此權限,以確保用戶不會為自己分配那些授予過多權限來訪問AWS服務的角色。

底線:非常高興您一直在考慮安全性。 遵循您認為最適合業務需求的過程。

暫無
暫無

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

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