AWS身份和訪問管理模組新增標籤和基於屬性的訪問控制能力

weixin_34127717發表於2019-02-13

最近,Amazon Web Services(AWS)啟用了IAM使用者和角色標籤,以簡化IAM資源的管理工作。值得注意的是,這個版本還提供了基於屬性的訪問控制(ABAC)能力,並將AWS資源與IAM主體動態匹配,以“簡化大規模的許可權管理”。

最近,Amazon Web Services(AWS)啟用了IAM使用者和角色標籤,以簡化IAM資源的管理工作。值得注意的是,這個版本還提供了基於屬性的訪問控制(ABAC)能力,並將AWS資源與IAM主體動態匹配,以“簡化大規模的許可權管理”。

AWS身份和訪問管理(IAM)是主要的帳戶級功能,用來安全地管理對AWS服務和資源的細粒度訪問控制。IAM的核心是通過在策略中定義許可權並將其附加到適用的主體(IAM使用者和角色)來支援基於角色的訪問控制(RBAC)。此外,除了支援基於身份和資源的策略之外,IAM還通過可選的條件策略元素和“使用了條件運算子的表示式(等於、小於,等等)”來支援基於屬性的訪問控制(ABAC),例如IP地址或時間。此外,還可以使用標籤動態控制對支援基於標籤授權的資源型別(相對較少的)的訪問。

IAM產品經理Sulay Shah在一篇介紹性文章中詳細地說明了AWS新增的IAM使用者和角色標籤功能,通過啟用委託標記許可權和執行標記schema來簡化IAM實體的​​管理。在隨後的文章中,Shah接著說明了如何通過兩個新的條件上下文鍵來啟用“基於屬性的訪問控制(ABAC)來大規模簡化許可權管理”:

  • aws:PrincipalTag/——這個全域性條件鍵將檢查附加到發出請求的主體(使用者或角色)的標記是否與指定的鍵名和值匹配。
  • iam:ResourceTag/——這個IAM條件鍵將檢查附加到請求中的目標標識資源(使用者或角色)的標記是否與指定的鍵名和值匹配。
    新功能的一個主要使用場景是根據屬性動態地授予IAM主體對AWS資源的訪問許可權。現在可以通過在一個條件中匹配AWS資源標籤來實現——在以下的示例中,可以為每個團隊的當前和未來例項和成員操作EC2例項,並且可以通過調整“team”標籤值將例項和成員移動到另一個團隊:
{  \u0026quot;Version\u0026quot;: \u0026quot;2012-10-17\u0026quot;,  \u0026quot;Statement\u0026quot;: [    {      \u0026quot;Effect\u0026quot;: \u0026quot;Allow\u0026quot;,      \u0026quot;Action\u0026quot;: [        \u0026quot;ec2:RebootInstances\u0026quot;,        \u0026quot;ec2:StartInstances\u0026quot;,        \u0026quot;ec2:StopInstances\u0026quot;      ],      \u0026quot;Resource\u0026quot;: \u0026quot;*\u0026quot;,      \u0026quot;Condition\u0026quot;: {        \u0026quot;StringEquals\u0026quot;: {          \u0026quot;ec2:ResourceTag/team\u0026quot;: \u0026quot;${aws:PrincipalTag/team}\u0026quot;        }      }    }  ]}

另一個重要的使用場景是允許IAM主體基於屬性動態地假設IAM角色。雖然通過AWS Organizations進行多賬戶使用和基於策略的集中式賬戶管理變得越來越普遍(之前的報導),但到目前為止,安全地管理底層跨賬戶IAM角色仍然是一個繁瑣的過程。在新增新角色時,需要重複“AssumeRole”語句,並且IAM主體需要被授予訪問許可權,使用特定角色的ARN作為目標“Resource”。現在可以使用萬用字元“*”來表示所有的角色,這有利於在條件中對匹配的IAM資源標記進行細粒度訪問控制——下面的示例表示只有當角色的“audit”標籤值為“true”時才允許主體為每個角色假設一個安全審計:

{  \u0026quot;Version\u0026quot;: \u0026quot;2012-10-17\u0026quot;,  \u0026quot;Statement\u0026quot;: [    {      \u0026quot;Action\u0026quot;: \u0026quot;sts:AssumeRole\u0026quot;,      \u0026quot;Effect\u0026quot;: \u0026quot;Allow\u0026quot;,      \u0026quot;Resource\u0026quot;: \u0026quot;*\u0026quot;,      \u0026quot;Condition\u0026quot;: {        \u0026quot;Bool\u0026quot;: {          \u0026quot;iam:ResourceTag/audit\u0026quot;: \u0026quot;true\u0026quot;        }      }    }  ]}

微軟的Azure資源管理器和谷歌的Cloud IAM主要支援RBAC,儘管Cloud IAM在一個私有測試版中(之前的報導)提供了條件。Kubernetes是一個例外,它支援ABAC和RBAC授權模組。不過,一篇介紹Kubernetes對RBAC的支援的文章承認了ABAC功能強大,但“在Kubernetes中的實現卻難以管理和理解”,並建議將RBAC作為首選方法。

AWS在最近的相關新聞中表示,他們已經提供了用來檢視服務上次訪問的資料的API,以便讓使用者自動執行許可權分析,而這個操作在之前需要通過AWS管理控制檯進行手動檢查。仍然需要專用IAM使用者而不是使用基於IAM角色和臨時安全憑證的身份聯合的場景也將從通過“我的安全憑證”頁面進行憑證自我管理的可用性改進中受益。

IAM文件中包含了使用者指南,包括IAM工作原理、策略評估邏輯以及AWS服務支援的IAM功能的專門章節,還包括有關IAM最佳實踐和AWS標記策略的指導。使用者可以通過身份和訪問管理論壇尋求支援。IAM是一項帳戶級AWS功能,無需額外費用。

檢視英文原文:https://www.infoq.com/news/2019/02/iam-tags-attribute-based-access

相關文章