

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 存取控制的類型
<a name="access-control-types"></a>

您可以使用兩種廣泛定義的模型來實作存取控制：角色型存取控制 (RBAC) 和屬性型存取控制 (ABAC)。每個模型都有優點和缺點，本節會簡要討論這些優點和缺點。您應該使用的模型取決於您的特定使用案例。本指南中討論的架構支援兩種模型。

## RBAC
<a name="rbac"></a>

角色型存取控制 (RBAC) 會根據通常符合商業邏輯的角色來決定對資源的存取。許可會視需要與角色建立關聯。例如，*行銷*角色會授權使用者在受限的系統中執行*行銷活動*。這是相對簡單的存取控制模型，因為它與易於識別的商業邏輯保持一致。 

RBAC 模型在下列情況下效果較差： 
+ 您有唯一的使用者，其責任包含多個角色。 
+ 您有複雜的商業邏輯，讓角色難以定義。 
+ 擴展到大型需要持續管理和映射許可到新的和現有的角色。 
+ 授權是以動態參數為基礎。

## ABAC
<a name="abac"></a>

屬性型存取控制 (ABAC) 會根據屬性決定對資源的存取。屬性可以與使用者、資源、環境，甚至是應用程式狀態建立關聯。您的政策或規則參考屬性 和 可以使用基本布林邏輯來判斷是否允許使用者執行 動作。以下是許可的基本範例： 

*在付款系統中，財務部門的所有使用者都可以`/payments`在營業時間內在 API 端點處理付款。*

財務部門的成員是使用者屬性，可決定對 的存取`/payments`。也有與 `/payments` API 端點相關聯的資源屬性，僅允許在上班時間存取。在 ABAC 中，使用者是否可以處理付款是由政策決定，政策將財務部門成員資格納入為使用者屬性，並將時間納入為 的資源屬性`/payments`。

ABAC 模型在允許動態、內容和精細的授權決策方面非常靈活。不過，一開始很難實作 ABAC 模型。定義規則和政策，以及列舉所有相關存取向量的屬性，需要大量預先投資才能實作。

## RBAC-ABAC 混合方法
<a name="hybrid"></a>

結合 RBAC 和 ABAC 可以提供這兩種模型的一些優點。RBAC 與商業邏輯非常一致，比 ABAC 更易於實作。若要在進行授權決策時提供額外的精細層級，您可以將 ABAC 與 RBAC 結合。此混合方法結合使用者的角色 （及其指派的許可） 和其他屬性來做出存取決策，藉此決定存取。使用這兩種模型可讓您輕鬆管理和指派許可，同時允許與授權決策相關的更高彈性和精細性。

## 存取控制模型比較
<a name="comparison"></a>

下表比較了先前討論的三種存取控制模型。此比較旨在提供資訊和高階。在特定情況下使用存取模型不一定與此表格中的比較相關。


|  |  |  |  | 
| --- |--- |--- |--- |
| **因素** | **RBAC** | **ABAC** | **混合** | 
| **彈性** | 中  | 高 | 高 | 
| **簡單** | 高 | 低 | 中 | 
| **精細程度** | 低 | 高 | 中 | 
| **動態決策和規則** | 否 | 是 | 是 | 
| **了解內容** | 否 | 是 | 有些 | 
| **實作工作** | 低 | 高 | 中 | 