AWS 的 ABAC 是什麼? - AWS Identity and Access Management

AWS 的 ABAC 是什麼?

屬性類型存取控制 (ABAC) 是一種授權策略,可根據屬性來定義許可。在 AWS 中,這些屬性稱為標籤。您可以將標籤連接到 IAM 資源,包括 IAM 實體 (使用者或角色) 和 AWS 資源。您可以為您的 IAM 主體建立單一 ABAC 政策或是一組政策。這些 ABAC 政策可以設計成在主體的標籤與資源標籤相符時允許操作。ABAC 在成長快速的環境中相當有幫助,並能在政策管理變得繁瑣時提供協助。

例如,您可以使用 access-project 標籤鍵建立三個角色。將第一個角色的鍵值設為 Heart,第二個角色的鍵值設為 Sun,並將第三個角色的鍵值設為 Lightning。然後,您可以使用單一政策,在角色和資源針對 access-project 使用相同值標記時允許存取。如需示範如何在 AWS 中使用 ABAC 的詳細教學,請參閱 IAM 教學課程:根據標籤定義存取 AWS 資源的許可。若要瞭解支援 ABAC 的服務,請參閱 可搭配 IAM 運作的 AWS 服務


         ABAC 模型

比較 ABAC 與傳統 RBAC 模型

IAM 中使用的傳統授權模型稱為角色類型存取控制 (RBAC)。RBAC 會根據人員的任務角色 (在 AWS 外稱為角色) 來定義許可。在 AWS 中角色通常是指 IAM 角色,其為在 IAM 中您可以擔任的身分。IAM 確實包括在 RBAC 模型中將許可對齊到任務功能的用於任務角色的受管政策

在 IAM 中,您可以為不同的任務角色建立不同的政策,來實作 RBAC。然後,您可以將政策連接到身分 (IAM 使用者、使用者群組或 IAM 角色)。根據最佳實務,您應授與任務角色所需要的最低許可。這稱為授與最低權限。透過列出任務功能所能存取的特定資源,即可執行此作業。使用傳統 RBAC 模型的缺點是當員工新增新的資源時,您必須更新政策以允許存取這些新資源。

例如,假設您有三個員工正在進行的專案,分別名為 HeartSunLightning。您為每個專案建立 IAM 角色。您接著將政策連接到各 IAM 角色,定義允許擔任這些角色的人員所能存取的資源。若一名員工在您的公司內變更了職位,您便會將他們指派至不同的 IAM 角色。可將超過一個角色指派給人員或程式。但是,Sun 專案可能需要其他資源,例如新的 Amazon S3 儲存貯體。在這種情況下,您必須更新連接到 Sun 角色的政策,指定新的儲存貯體資源。否則,Sun 專案的成員便無法存取新的儲存貯體。


            RBAC 模型

與傳統 RBAC 模型相較,ABAC 提供了下列優點:

  • ABAC 許可隨創新擴展。管理員不再需要更新現有政策來允許存取新的資源。例如,假設您使用 access-project 標籤設計您的 ABAC 策略。開發人員以 access-project = Heart 標籤使用角色。當 Heart 專案的人員需要額外 Amazon EC2 資源時,開發人員便可以使用 access-project = Heart 標籤建立新的 Amazon EC2 執行個體。接著,Heart 專案的任何人員便可以開始和停止這些執行個體,因為他們的標籤值相符。

  • ABAC 需要的政策較少。由於您不需要為不同的任務功能建立不同政策,您建立的政策也會較少。這些政策較易於管理。

  • 使用 ABAC,團隊便可以快速地改變和成長。這是因為新資源會自動根據屬性授與許可。例如,若您的公司已使用 ABAC 支援 HeartSun,新增新的 Lightning 專案也相當容易。IAM 管理員可以使用 access-project = Lightning 標籤建立新的角色。不需要變更政策來支援新的專案。任何具備取得角色許可的人員都能建立和檢視以 access-project = Lightning 標記的執行個體。此外,團隊成員可能會從 Heart 專案移動至 Lightning 專案。IAM 管理員可以將使用者指派至不同的 IAM 角色。而不需要變更許可政策。

  • 使用 ABAC 可實現精密許可。在您建立政策時,最佳實務是授與最低權限。使用傳統 RBAC,您必須撰寫政策,只允許存取特定資源。但是,當您使用 ABAC 時,您可以允許在所有資源上進行所有動作,但只有在資源標籤與主體標籤相符時才能進行。

  • 搭配 ABAC 使用您企業目錄的員工屬性。您可以設定您的 SAML 類型或 web 身分提供者,將工作階段標籤傳遞至 AWS。當您的員工聯合進入 AWS 時,其屬性會套用到員工在 AWS 中所產生的主體。您接著可以使用 ABAC 來根據這些屬性允許或拒絕許可。

如需示範如何在 AWS 中使用 ABAC 的詳細教學,請參閱 IAM 教學課程:根據標籤定義存取 AWS 資源的許可