教學課程:使用 Azure 藍圖資源鎖定保護新資源

重要

在 2026 年 7 月 11 日,藍圖 (預覽) 將會淘汰。 將現有的藍圖定義和指派移轉至範本規格部署堆疊。 藍圖成品會轉換成用來定義部署堆疊的 ARM JSON 範本或 Bicep 檔案。 若要了解如何將成品撰寫為 ARM 資源,請參閱:

透過 Azure 藍圖的資源鎖定,您可以防止新部署的資源遭人竄改,即使是具有「擁有者」角色的帳戶也無法修改資源。 您可以在 Azure Resource Manager 範本 (ARM 範本) 成品所建立資源的藍圖定義中新增此保護措施。 藍圖資源鎖定會在藍圖指派期間設定。

在本教學課程中,您將完成下列步驟:

  • 建立藍圖定義
  • 將藍圖定義標記為已發佈
  • 將藍圖定義指派給現有的訂閱 (設定資源鎖定)
  • 檢查新資源群組
  • 取消指派藍圖來移除鎖定

必要條件

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

建立藍圖定義

首先,建立藍圖定義。

  1. 在左側窗格中選取 [所有服務]。 搜尋並選取 [藍圖]

  2. 在左側的 [快速入門] 頁面上,選取 [建立藍圖] 下方的 [建立]

  3. 在頁面頂端尋找 [空白藍圖] 藍圖範例。 選取 [從空白藍圖開始]

  4. 在 [基本資料] 索引標籤中輸入這些資訊:

    • 藍圖名稱:為您的藍本範例複本提供名稱。 在此教學課程中,我們使用的名稱是 locked-storageaccount
    • 藍圖描述:加入藍圖定義的描述。 請使用「在已部署的資源上測試藍圖資源鎖定」。
    • 定義位置:選取省略符號按鈕 (...),然後選取要儲存您藍圖定義的管理群組或訂用帳戶。
  5. 選取頁面頂端的 [成品],或選取頁面底部的 [下一步:成品]

  6. 新增訂用帳戶層級的資源群組:

    1. 選取 [訂用帳戶] 下方的 [新增成品] 資料列。
    2. 在 [成品類型] 下選取 [資源群組]
    3. 將 [成品顯示名稱] 設定為 RGtoLock
    4. 將 [資源群組名稱] 和 [位置] 方塊留白,但是請務必勾選每個屬性的核取方塊,將其設定為動態參數
    5. 選取 [新增] 以將成品新增至藍圖。
  7. 在資源群組下新增範本:

    1. 選取 [RGtoLock] 項目下方的 [新增成品] 資料列。

    2. 在 [成品類型] 下選取 [Azure Resource Manager 範本],並將 [成品顯示名稱] 設為 [儲存體帳戶],將 [描述] 保留為空白。

    3. 在 [範本] 索引標籤中,將以下的 ARM 範本貼到編輯器方塊。 貼到範本之後,請選取 [新增],以將成品新增至藍圖。

      注意

      此步驟會定義要由藍圖資源鎖定所鎖定的部署資源,但藍圖資源鎖定不包含在內。 藍圖資源鎖定會設為藍圖指派的參數。

    {
        "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
            "storageAccountType": {
                "type": "string",
                "defaultValue": "Standard_LRS",
                "allowedValues": [
                    "Standard_LRS",
                    "Standard_GRS",
                    "Standard_ZRS",
                    "Premium_LRS"
                ],
                "metadata": {
                    "description": "Storage Account type"
                }
            }
        },
        "variables": {
            "storageAccountName": "[concat('store', uniquestring(resourceGroup().id))]"
        },
        "resources": [{
            "type": "Microsoft.Storage/storageAccounts",
            "name": "[variables('storageAccountName')]",
            "location": "[resourceGroup().location]",
            "apiVersion": "2018-07-01",
            "sku": {
                "name": "[parameters('storageAccountType')]"
            },
            "kind": "StorageV2",
            "properties": {}
        }],
        "outputs": {
            "storageAccountName": {
                "type": "string",
                "value": "[variables('storageAccountName')]"
            }
        }
    }
    
  8. 選取頁面底部的 [儲存草稿]

此步驟會在選取的管理群組或訂用帳戶中建立藍圖定義。

出現成功儲存藍圖定義的入口網站通知後,請移至下一個步驟。

發佈藍圖定義

藍圖定義現在已建立您的環境中。 該藍圖會以草稿模式建立,而且必須先發佈,才能進行指派和部署。

  1. 在左側窗格中選取 [所有服務]。 搜尋並選取 [藍圖]

  2. 選取左側的 [藍圖定義] 頁面。 使用篩選來尋找 locked-storageaccount 藍圖定義,然後將其選取。

  3. 選取頁面頂端的 [發佈藍圖]。 在右側的新窗格中,輸入 1.0 作為 [版本]。 此屬性方便您稍後進行變更。 輸入變更附註,例如為鎖定藍圖部署資源發佈的第一版。 然後選取頁面底部的 [發佈]

此步驟可讓您將藍圖指派給訂用帳戶。 發佈藍圖定義之後,您仍然可以進行變更。 如果您進行變更,您需要以新的版本值來發佈定義,如此才能追蹤相同藍圖定義的各版本差異。

出現成功發佈藍圖定義的入口網站通知後,請移至下一個步驟。

指派藍圖定義

發佈藍圖定義之後,您可以將定義指派至其所在管理群組中的訂用帳戶。 在此步驟中,您將提供參數,以建立每個專屬的藍圖定義部署。

  1. 在左側窗格中選取 [所有服務]。 搜尋並選取 [藍圖]

  2. 選取左側的 [藍圖定義] 頁面。 使用篩選來尋找 locked-storageaccount 藍圖定義,然後將其選取。

  3. 選取藍圖定義頁面頂端的 [指派藍圖]

  4. 提供用於指派藍圖的參數值:

    • 基本概念

      • 訂用帳戶:在儲存您藍圖定義的管理群組中,選取一個或多個訂用帳戶。 如果您選取多個訂用帳戶,輸入的參數就會用來為每個訂用帳戶建立指派。
      • 指派名稱:名稱會根據藍圖定義名稱預先填入。 我們想要用此指派來表示鎖定新資源群組,因此將指派名稱變更為 assignment-locked-storageaccount-TestingBPLocks
      • 位置:選取要在其中建立受控識別的區域。 Azure 藍圖會使用此受控識別,在指派的藍圖中部署所有成品。 若要深入了解,請參閱適用於 Azure 資源的受控識別。 在本教學課程中,我們選取 [美國東部 2]
      • 藍圖定義版本:選取藍圖定義的已發佈版本:1.0
    • 鎖定指派

      選取 [唯讀] 藍圖鎖定模式。 如需詳細資訊,請參閱藍圖資源鎖定

      注意

      此步驟會在新部署資源上設定藍圖資源鎖定。

    • 受控識別

      使用預設選項:系統指派。 如需詳細資訊,請參閱受控識別

    • 成品參數

      本節中定義的參數會套用至其定義所屬的成品。 這些參數是動態參數,因為定義於藍圖指派期間。 針對 [值] 資料行中顯示的內容,為每個成品設定參數值。

      成品名稱 成品類型 參數名稱 Description
      RGtoLock 資源群組 資源群組 名稱 TestingBPLocks 定義要套用藍圖鎖定的新資源群組名稱。
      RGtoLock 資源群組 資源群組 Location 美國西部 2 定義要套用藍圖鎖定的新資源群組位置。
      StorageAccount Resource Manager 範本 storageAccountType (StorageAccount) Standard_GRS 儲存體 SKU。 預設值是 Standard_LRS
  5. 輸入所有參數後,選取頁面底部的 [指派]

此步驟會部署已定義的資源,並設定所選的 [鎖定指派]。 套用藍圖鎖定可能需要 30 分鐘的時間。

出現成功指派藍圖定義的入口網站通知後,請移至下一個步驟。

檢查指派所部署的資源

指派會建立 TestingBPLocks 資源群組,並且由 ARM 範本成品部署儲存體帳戶。 指派詳細資料頁面會顯示新的資源群組和選取的鎖定狀態。

  1. 在左側窗格中選取 [所有服務]。 搜尋並選取 [藍圖]

  2. 選取左側的 [指派的藍圖] 頁面。 使用篩選來尋找 assignment-locked-storageaccount-TestingBPLocks 藍圖指派,然後將其選取。

    在這個頁面中,我們可以看到指派已成功建立,以及資源已以新的藍圖鎖定狀態來部署。 如果更新指派,則 [指派作業] 下拉式清單會顯示每個定義版本的部署詳細資料。 您可以選取要開啟 [屬性] 頁面的資源群組。

  3. 選取 [TestingBPLocks] 資源群組。

  4. 選取左側的 [存取控制 (IAM)] 頁面。 然後選取 [角色指派] 索引標籤。

    我們會在此看到 assignment-locked-storageaccount-TestingBPLocks 藍圖指派具有「擁有者」角色。 之所以有此角色,是因為這是用來部署和鎖定資源群組的角色。

  5. 選取 [拒絕指派] 索引標籤。

    藍圖指派已在部署的資源群組上建立拒絕指派,進而強制執行「唯讀」鎖定模式。 針對在 [角色指派] 索引標籤上具有適當權限的人員,拒絕指派可阻止他們採取特定動作。 拒絕指派會影響「所有主體」

    如需從拒絕指派中排除主體的相關資訊,請參閱藍圖資源鎖定

  6. 選取 [拒絕指派],然後選取左側的 [拒絕的權限] 頁面。

    拒絕指派會阻止所有使用 * 和 [動作] 設定的作業,但允許透過 NotActions 排除 /read 來允許讀取存取。

  7. 在 Azure 入口網站的階層連結中,選取 [TestingBPLocks - 存取控制 (IAM)]。 然後選取左側的 [概觀] 頁面,然後選取 [刪除資源群組] 按鈕。 輸入 TestingBPLocks 名稱以確認刪除,然後選取窗格底部的 [刪除]

    無法刪除 TestingBPLocks 資源群組的入口網站通知會隨即出現。 該錯誤表示,雖然您的帳戶有權刪除資源群組,但藍圖指派拒絕了您的存取。 別忘了,我們已在藍圖指派期間選取「唯讀」藍圖鎖定模式。 藍圖鎖定會阻止具有權限的帳戶 (甚至是「擁有者」權限) 刪除資源。 如需詳細資訊,請參閱藍圖資源鎖定

這些步驟說明部署資源現在已受到藍圖鎖定的保護,可防止意外的刪除動作,甚至是具有權限的帳戶也無法刪除資源。

取消指派藍圖

最後一個步驟是要移除藍圖定義的指派。 移除指派並不會移除相關聯的成品。

  1. 在左側窗格中選取 [所有服務]。 搜尋並選取 [藍圖]

  2. 選取左側的 [指派的藍圖] 頁面。 使用篩選來尋找 assignment-locked-storageaccount-TestingBPLocks 藍圖指派,然後將其選取。

  3. 選取頁面頂端的 [取消指派藍圖]。 閱讀確認對話方塊中的警告,然後選取 [確定]

    移除藍圖指派後,藍圖鎖定也會一併移除。 具有適當權限的帳戶可再次刪除資源。

  4. 從 Azure 功能表選取 [資源群組],然後選取 [TestingBPLocks]

  5. 選取左側的 [存取控制 (IAM)] 頁面,然後選取 [角色指派] 索引標籤。

資源群組的安全性會顯示藍圖指派不再具有「擁有者」存取權。

出現成功移除藍圖指派的入口網站通知後,請移至下一個步驟。

清除資源

完成本教學課程後,請刪除下列資源:

  • TestingBPLocks 資源群組
  • locked-storageaccount 藍圖定義

下一步

在本教學課程中,您已了解如何使用 Azure 藍圖來保護已部署的新資源。 若要深入了解 Azure 藍圖,請繼續閱讀藍圖生命週期文章。