使用 Azure 角色指派條件來授權 Azure Blob 儲存體的存取
屬性型存取控制 (ABAC) 是一種授權策略,會根據與安全性主體、資源、環境和要求本身相關聯的屬性來定義存取層級。 透過 ABAC,您可以使用這些屬性,根據以述詞表示的條件,授與安全性主體對資源的存取權。
Azure ABAC 是以 Azure 角色型存取控制 (Azure RBAC) 為建置基礎,將條件新增至 Azure 角色指派。 其可讓您根據主體、資源、要求和環境屬性來編寫角色指派條件。
重要
Azure 屬性型存取控制 (Azure ABAC) 已正式發行 (GA),可使用標準和進階儲存體帳戶效能層級中的 request
、resource
、environment
和 principal
屬性,控制 Azure Blob 儲存體、Azure Data Lake Storage Gen2 和 Azure 佇列的存取權。 容器中繼資料資源屬性和列出 Blob 包含要求屬性目前處於預覽狀態。 如需 Azure 儲存體 ABAC 的完整功能狀態資訊,請參閱 Azure 儲存體中條件功能的狀態。
請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。
Azure 儲存體中的條件概觀
您可以使用 Microsoft Entra ID (Microsoft Entra ID),以使用 Azure RBAC 來授權對 Azure 儲存體資源的要求。 Azure RBAC 可協助您管理資源的存取權,其方式是利用角色定義和角色指派,定義可存取資源的使用者,以及可以使用這些資源執行的作業。 Azure 儲存體會定義一組 Azure 內建角色,其中包含用來存取 Azure 儲存體資料的一般權限集。 您也可以使用選取的一組權限來定義自訂角色。 Azure 儲存體支援儲存體帳戶和 Blob 容器的角色指派。
Azure ABAC 會以 Azure RBAC 為建置基礎,在特定動作內容中新增新增角色指派條件。 角色指派條件是在儲存體資源上執行授權時的額外評估檢查。 此條件會以述詞表示,並使用與下列任一項相關聯的屬性:
- 要求授權的安全性主體
- 要求其存取權的資源
- 要求的參數
- 提出要求的環境
使用角色指派條件的優點如下:
- 啟用更精細的資源存取權 - 例如,如果只有在 blob 標記為 Project=Sierra 時,您才要在儲存體帳戶中授與使用者 blob 的讀取權,則可以使用這些標記作為屬性來設定讀取動作的條件。
- 減少建立和管理所需的角色指派數目 - 若要達成此目的,請對安全性群組使用通用角色指派,然後使用條件比對主體的屬性與要存取的特定資源 (例如 blob 或容器) 的屬性,以限制該群組中個別成員的存取。
- 以具有商業意義的屬性表達存取控制規則 - 例如,您可以使用代表專案名稱、商業應用程式、組織函數或分類層級的屬性來表達您的條件。
使用條件進行權衡,表示您在組織中使用屬性時需要有結構化的一致分類法。 屬性必須受到保護,以防止存取遭到盜用。 此外,也必須謹慎設計條件及檢查其效果。
Azure Blob 儲存體支援 Azure 儲存體中的角色指派條件。 您也可以搭配已啟用 階層命名空間 (HNS) 功能的帳戶使用條件(Data Lake Storage)。
支援的屬性和作業
您可以針對 DataActions 的角色指派設定條件,以達成這些目標。 您可以使用條件搭配自訂角色,或選取內建角色。 請注意,透過儲存體資源提供者的管理動作不支援條件。
您可以將條件加入內建角色或自訂角色。 您可以使用角色指派條件的內建角色包括:
只要自訂角色包含支援條件的動作,您就可以使用條件與該角色。
如果您是依據 blob 索引標記來使用條件,則應使用儲存體 blob 資料擁有者,因為此角色含有標記作業的權限。
注意
Data Lake Storage 儲存體帳戶不支援使用階層命名空間的 Blob 索引標籤。 您不應該在已啟用 HNS 的儲存體帳戶上使用索引標籤來編寫角色指派條件。
Azure 角色指派條件格式允許在條件中使用 @Principal
、@Resource
、@Request
或 @Environment
屬性。 @Principal
屬性是主體中的自訂安全性屬性,例如使用者、企業應用程式 (服務主體) 或受控識別。 @Resource
屬性會參照要存取的儲存體資源中的現有屬性,例如儲存體帳戶、容器或 blob。 @Request
屬性會參照儲存體作業要求所含的屬性或參數。 @Environment
屬性指網路環境或要求的日期和時間。
Azure RBAC 支援每個訂用帳戶的角色指派數目有限。 如果您需要建立數千個 Azure 角色指派,您可能會遇到這種限制。 管理數百或數千個角色指派是一件困難的工作。 在某些情況下,您可以使用條件來減少儲存體帳戶中的角色指派數目以便管理。 您可以使用適用於主體的條件和 Microsoft Entra 自訂安全性屬性,調整角色指派管理作業。
Azure 儲存體中條件功能的狀態
Azure 屬性型訪問控制 (Azure ABAC) 已正式推出 (GA),可用來控制request
resource
environment
principal
標準與進階記憶體帳戶效能層級中 Azure Blob 儲存體、Azure Data Lake Storage 和 Azure 佇列的存取。 容器中繼資料資源屬性和列出 Blob 包含要求屬性目前處於預覽狀態。
下表依記憶體資源類型和屬性類型顯示 ABAC 的目前狀態。 特定屬性的例外狀況也會顯示。
資源類型 | 屬性類型 | 屬性 | 可用性 |
---|---|---|---|
Blob Data Lake Storage 佇列 |
Request 資源 Environment 主體 |
除了此數據表中所指出的屬性以外的所有屬性 | GA |
Data Lake Storage | 資源 | 快照式 | 預覽 |
Blob Data Lake Storage |
資源 | 容器中繼資料 | 預覽 |
Blob | Request | 列出 Blob 包含 | 預覽 |
請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。
注意
Data Lake Storage 記憶體帳戶不支援某些記憶體功能,其使用階層命名空間 (HNS)。 若要深入了解,請參閱 Blob 儲存體功能支援。
針對儲存體帳戶啟用階層命名空間時,不支援下列 ABAC 屬性:
下一步
- Azure 角色指派條件的必要條件
- 教學課程:使用 Azure 入口網站新增角色指派條件,以限制對 blob 的存取
- Azure 儲存體中 Azure 角色指派條件的動作和屬性
- 範例 Azure 角色指派條件
- 對 Azure 角色指派條件進行疑難排解