教學課程:使用 Azure 入口網站新增角色指派條件,以限制對 Blob 的存取

在大部分情況下,角色指派會授與您存取 Azure 資源所需的權限。 不過,在某些情況下,您可能會想要新增角色指派條件,以提供更精細的存取控制。

在本教學課程中,您會了解如何:

  • 將條件新增至角色指派
  • 依據 Blob 索引標記來限制對 Blob 的存取

重要

Azure 屬性型訪問控制 (Azure ABAC) 已正式推出,可用來控制對 Azure Blob 儲存體、Azure Data Lake 儲存體 Gen2 和 Azure 佇列的存取,以及使用request標準與進階記憶體帳戶效能層級中的、 resourceenvironmentprincipal 屬性。 容器元數據資源屬性和清單 Blob 包含要求屬性目前處於預覽狀態。 如需 Azure 儲存體 ABAC 的完整功能狀態資訊,請參閱 Azure 儲存體中條件功能的狀態

請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

必要條件

如需新增或編輯角色指派條件的必要條件相關資訊,請參閱條件必要要件

Condition

在本教學課程中,您可限制存取具有特定標記的 Blob。 例如,在角色指派中新增條件,讓 Chandra 只能讀取具有標記 Project=Cascade 的檔案。

具有條件的角色指派圖表。

如果 Chandra 嘗試讀取沒有 Project=Cascade 標記的 Blob,則不允許存取。

顯示具有 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:建立使用者

  1. 以訂用帳戶的擁有者身分登入 Azure 入口網站。

  2. 選取 [Microsoft Entra ID]

  3. 建立使用者或尋找現有的使用者。 本教學課程使用 Chandra 作為範例。

步驟 2:設定儲存體

  1. 建立與 blob 索引標記功能相容的儲存體帳戶。 如需詳細資訊,請參閱使用 blob 索引標記管理和尋找 Azure Blob 資料

  2. 在儲存體帳戶內建立新的容器,並將匿名存取層級設定為 [私人 (沒有匿名存取)]

  3. 在容器中,選取 [上傳] 以開啟 [上傳 Blob] 窗格。

  4. 尋找要上傳的文字檔。

  5. 選取 [進階] 以展開窗格。

  6. 在 [BlOb 索引標記] 區段中,將下列 blob 索引標記新增至文字檔。

    如果您沒有看到 [Blob 索引標記] 區段,且您剛剛才註冊了訂用帳戶,則可能需要等候幾分鐘的時間,變更才會傳播。 如需詳細資訊,請參閱使用 blob 索引標記來管理和尋找 Azure Blob 儲存體上的資料

    注意

    Blob 也支援儲存任意使用者定義的索引鍵/值中繼資料的能力。 雖然中繼資料類似於 Blob 索引標籤,但您必須搭配條件使用 Blob 索引標籤。

    機碼
    Project Cascade

顯示 [上傳 Blob] 窗格與部落格索引卷標區段的螢幕快照。

  1. 選取 [上傳] 按鈕以上傳檔案。

  2. 上傳第二個文字檔。

  3. 將下列 Blob 索引標記新增至第二個文字檔。

    機碼
    Project Baker

步驟 3:指派儲存體 blob 資料角色

  1. 開啟資源群組。

  2. 選取 [存取控制 (IAM)]。

  3. 選取 [角色指派] 索引標籤,以檢視此範圍中的角色指派。

  4. 選取 [新增>][新增角色指派]。 開啟 [新增角色指派] 頁面:

[新增 > 角色指派] 功能表的螢幕快照。

  1. 在 [角色] 索引標籤上,選取 [儲存體 Blob 資料讀取器] 角色。

[新增角色指派] 頁面的螢幕快照,其中 [角色] 索引標籤。

  1. 在 [成員] 索引標籤上,選取您稍早建立的使用者。

[新增角色指派] 頁面與 [成員] 索引標籤的螢幕快照。

  1. (選用) 在 [描述] 方塊中,輸入具有 Project=Cascade 標記的 blob 讀取存取權

  2. 選取 [下一步]。

步驟 4:新增條件

  1. 在 [條件 (選用)] 索引標籤中,選取 [新增條件]。 出現 [新增角色指派條件] 頁面:

新條件的 [新增角色指派條件] 頁面螢幕快照。

  1. 在 [新增動作] 區段中,選取 [新增動作]

    即會出現 [選取動作] 窗格。 此窗格顯示根據作為條件目標的角色指派,篩選出的資料動作清單。 核取 [讀取 Blob] 旁邊的方塊,然後選取 [選取]

[選取動作] 窗格的螢幕快照,其中已選取動作。

  1. 在 [建立運算式] 區段中,選取 [新增運算式]

    [運算式] 區段即會展開。

  2. 指定下列運算式設定:

    設定
    屬性來源 資源
    屬性 Blob 索引標籤 [索引鍵中的值]
    機碼 Project
    運算子 StringEqualsIgnoreCase
    Cascade

Blob 索引標籤的 [建置運算式] 區段螢幕快照。

  1. 向上捲動至 [編輯器類型],然後選取 [程式碼]

    此條件會顯示為程式碼。 您可以在這個程式碼編輯器中變更條件。 若要回到視覺化編輯器,請選取 [視覺效果]

程式代碼編輯器中顯示的條件螢幕快照。

  1. 選取 [儲存] 以新增條件,然後返回 [新增角色指派] 頁面。

  2. 選取 [下一步]。

  3. 在 [檢閱 + 指派] 索引標籤上,選取 [檢閱 + 指派] 以指派具有某種條件的角色。

    在幾分鐘之後,即會在所選範圍中指派安全性主體的角色。

指派角色之後的角色指派清單螢幕快照。

步驟 5:指派讀者角色

  • 重複上述步驟,將讀者角色指派給您稍早在資源群組範圍中建立的使用者。

    注意

    您通常不需要指派「讀者」角色。 不過,這麼做是為了讓您可以使用 Azure 入口網站來測試條件。

步驟 6:測試條件

  1. 在新的視窗中,登入 Azure 入口網站

  2. 以您稍早建立的使用者登入。

  3. 開啟您建立的儲存體帳戶和容器。

  4. 確定驗證方法設為 [Microsoft Entra 使用者帳戶],而不是 [存取金鑰]

具有測試檔案的記憶體容器螢幕快照。

  1. 選取 Baker 文字檔。

    您應該無法檢視或下載 blob,而且應該會顯示授權失敗訊息。

  2. 選取 Cascade 文字檔。

    您應該可以檢視和下載 blob。

步驟 7:清理資源

  1. 移除您所新增的角色指派。

  2. 刪除您所建立的測試儲存體帳戶。

  3. 刪除您建立的使用者。

下一步