在大部分情況下,角色指派會賦予 Azure 資源所需的權限。 不過,在某些情況下,您可能想要藉由新增角色指派條件來提供更細微的訪問控制。
在本教學課程中,您將瞭解如何:
- 在角色指派中加入條件
- 依據 Blob 索引標籤來限制 Blob 的存取權限
這很重要
Azure 屬性型存取控制 (Azure ABAC) 已正式發行 (GA),可使用標準和進階儲存體帳戶效能層級中的 request、resource、environment 和 principal 屬性,控制 Azure Blob 儲存體、Azure Data Lake Storage Gen2 和 Azure 佇列的存取權。 目前,階層命名空間的清單 Blob 包含要求屬性和快照集要求屬性都處於預覽。 如需 Azure 儲存體 ABAC 的完整功能狀態資訊,請參閱 Azure 儲存體中條件功能的狀態。
請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。
先決條件
如需新增或編輯角色指派條件的必要條件相關資訊,請參閱條件必要要件。
狀況
在這篇教學課程中,您將限制對具有特定標籤的 Blob 的存取。 例如,您會將條件新增至角色指派,讓 Chandra 只能讀取具有 標籤 Project=Cascade的檔案。

如果 Chandra 嘗試讀取不含標籤 Project=Cascade 的 Blob,則無法存取。

以下是在程式碼中條件的表示:
(
(
!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'}
AND NOT
SubOperationMatches{'Blob.List'})
)
OR
(
@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] StringEqualsIgnoreCase 'Cascade'
)
)
步驟 1:建立使用者
以訂用帳戶的擁有者身分登入 Azure 入口網站。
選取 Microsoft Entra ID。
建立使用者或尋找現有的使用者。 本教學課程使用 Chandra 作為範例。
步驟 2:設定記憶體
建立與 Blob 索引標籤功能相容的記憶體帳戶。 如需詳細資訊,請參閱使用 blob 索引標記管理和尋找 Azure Blob 資料。
在記憶體帳戶內建立新的容器,並將匿名存取層級設定為 [私人] (無匿名存取)。
在容器中,選取 上傳 以開啟「上傳 Blob」窗格。
尋找要上傳的文字檔。
選取 [ 進階 ] 展開窗格。
在 [Blob 索引標籤 ] 區段中,將下列 Blob 索引標籤新增至文字檔。
如果您沒有看到 [Blob 索引標記] 區段,且您剛剛才註冊了訂用帳戶,則可能需要等候幾分鐘的時間,變更才會傳播。 如需詳細資訊,請參閱 使用 Blob 索引標籤來管理及尋找 Azure Blob 記憶體上的數據。
備註
Blob 也支援儲存任意使用者定義的索引鍵/值中繼資料的能力。 雖然中繼資料類似於 Blob 索引標籤,但您必須搭配條件使用 Blob 索引標籤。
鑰匙 價值觀 隨附此逐步解說的專案 瀑布
選取 [ 上傳] 按鈕以上傳檔案。
上傳第二個文本檔。
將下列 Blob 索引標籤新增至第二個文字檔。
鑰匙 價值觀 隨附此逐步解說的專案 麵包師傅
步驟 3:指派儲存體 blob 資料角色
開啟資源群組。
選取 存取控制 (IAM)。
選取 [角色指派] 索引標籤,以檢視此範圍中的角色指派。
選取 新增>新增角色指派。 [新增角色指派] 頁面隨即開啟:
- 在 角色 索引標籤上,選取 儲存體 Blob 資料讀取者 角色。
- 在 [ 成員] 索引標籤上,選取您稍早建立的使用者。
(選擇性)在 描述 方塊中,輸入 讀取 標籤為 Project=Cascade 的 Blob 存取。
選取 下一步。
步驟 4:新增條件
- 在 [條件 (選用)] 索引標籤上,選取 新增條件。 [新增角色指派條件] 頁面隨即出現:
在 [新增動作] 區段中,選取 [新增動作]。
[選擇動作] 面板隨即出現。 此窗格顯示根據作為條件目標的角色指派,篩選出的資料動作清單。 核取 [讀取 Blob] 旁邊的方塊,然後選取 [選取]:
在 [建置運算式] 區段中,選取 [新增表達式]。
[運算式] 區段即會展開。
指定下列表示式設定:
設定 價值觀 屬性來源 資源 屬性 Blob 索引標籤 [索引鍵中的值] 鑰匙 隨附此逐步解說的專案 操作員 StringEqualsIgnoreCase 價值觀 瀑布
向上捲動至 [編輯器類型 ],然後選取 [ 程序代碼]。
條件會顯示為程序代碼。 您可以在此程式代碼編輯器中變更條件。 若要返回視覺效果編輯器,請選取 [視覺效果]。
選取 [儲存 ] 以新增條件,並返回 [新增角色指派] 頁面。
選取 下一步。
在 [ 檢閱 + 指派 ] 索引標籤上,選取 [ 檢閱 + 指派 ] 以指派條件的角色。
稍待片刻後,安全性主體會在選定的範圍被指派角色。
步驟 5:指派讀者角色
重複上述步驟,將 讀者 角色指派給您稍早在資源群組範圍建立的使用者。
備註
您通常不需要指派閱覽者角色。 不過,這樣做可讓您使用 Azure 入口網站來測試條件。
步驟 6:測試條件
在新的視窗中,登入 Azure 入口網站。
以您稍早建立的使用者身分登入。
開啟您建立的記憶體帳戶和容器。
請確定驗證方法已設定為 Microsoft Entra 用戶帳戶 ,而不是 Access 金鑰。
選取 Baker 文字檔。
您應該無法檢視或下載 blob,而且應該會顯示授權失敗訊息。
選取 Cascade 文字檔。
您應該可以檢視和下載 blob。
步驟 7:清理資源
拿掉您新增的角色指派。
刪除您建立的測試記憶體帳戶。
刪除您建立的使用者。
![顯示具有 Blob 索引標記區段的 [上傳 Blob] 窗格的螢幕擷取畫面。](media/storage-auth-abac-portal/container-upload-blob.png)

![[新增角色指派] 頁面的螢幕快照,顯示包含 [角色] 索引標籤的內容。](media/storage-auth-abac-portal/roles.png)
![[新增角色指派] 頁面與 [成員] 索引標籤的螢幕快照。](media/storage-auth-abac-portal/members.png)
![新條件的 [新增角色指派條件] 頁面的螢幕擷取畫面。](media/storage-auth-abac-portal/condition-add-new.png)
![已選取動作的 [選取動作] 窗格的螢幕擷取畫面。](media/storage-auth-abac-portal/condition-actions-select.png)



