共用方式為


教學課程:使用 Azure 原則管理標籤治理

標籤是將 Azure 資源組織成分類的重要部分。 當您依照標籤管理的最佳做法操作時,標籤可作為使用 Azure 原則來套用商務原則或使用成本管理來追蹤成本的基礎。 無論您使用標籤的方式或原因為何,能夠在 Azure 資源上快速新增、變更和移除這些標籤,都是十分重要的。 若要查看您的 Azure 資源是否支援標記,請參閱標記支援

Azure 原則 的修改效果是設計來協助治理標籤,而不論您處於何種資源控管階段。 Modify 協助時機:

  • 您不熟悉雲端,且沒有標籤控管。
  • 已經有數千個沒有標籤治理的資源。
  • 已經有您需要變更的現有分類法。

在本教學課程中,您會完成下列工作:

  • 識別您的商務需求
  • 將每項需求對應至原則定義
  • 將標籤原則分組成一個計畫

必要條件

若要完成此教學課程,您需要 Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

識別需求

就像任何良好的治理控制實作一樣,這些需求應來自於您的商務需求,並且在建立技術控制之前受到充分了解。 在此案例教學課程中,我們的商務需求如下:

  • 所有資源的兩個必要標籤: CostCenterEnv
  • CostCenter 必須存在於所有容器和個別資源上。
    • 資源繼承自其位於的容器,但可能會個別覆寫。
  • Env 必須存在於所有容器和個別資源上。
    • 資源會依容器命名配置來判斷環境,而且可能不會覆寫。
    • 容器中的所有資源都是相同環境的一部分。

設定 CostCenter 標籤

就 Azure 原則所管理的 Azure 環境而言,CostCenter 標籤需求會產生如下結果:

  • 拒絕遺漏 CostCenter 標籤的資源群組。
  • 修改資源,以在遺失時從父資源群組新增 CostCenter 標籤。

拒絕遺漏 CostCenter 標籤的資源群組

因為資源群組的 CostCenter 無法由資源群組的名稱來決定,所以它必須具有在要求上定義的標籤,才能建立資源群組。 具有拒絕效果的下列原則規則可防止建立或更新沒有 CostCenter 標籤的資源群組:

"if": {
  "allOf": [
    {
      "field": "type",
      "equals": "Microsoft.Resources/subscriptions/resourceGroups"
    },
    {
      "field": "tags['CostCenter']",
      "exists": false
    }
  ]
},
"then": {
  "effect": "deny"
}

注意

當此原則規則以資源群組為目標時, mode 原則定義上的 必須是 AllIndexed而不是 。

在遺漏 CostCenter 標記時,修改資源以繼承該標籤

第二個 CostCenter 需求是要讓任何資源在標籤遺漏時從父資源群組繼承標籤。 如果已在資源上定義該標籤,即使該標籤與父資源群組不同,也必須保持原狀。 下列原則規則使用 modify

"policyRule": {
  "if": {
    "field": "tags['CostCenter']",
    "exists": "false"
  },
  "then": {
    "effect": "modify",
    "details": {
      "roleDefinitionIds": [
        "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
      ],
      "operations": [
        {
          "operation": "add",
          "field": "tags['CostCenter']",
          "value": "[resourcegroup().tags['CostCenter']]"
        }
      ]
    }
  }
}

此原則規則會add使用 作業,而不是 addOrReplace ,因為我們不想在補救現有資源時變更標籤值。 它也會使用 [resourcegroup()] 範本函式來取得父資源群組中的標籤值。

注意

當此原則規則以支援標籤的資源為目標時,原則定義上的模式必須是「已編製索引」。 這種設定也可確保此原則會略過資源群組。

設定 Env 標籤

就由 Azure 原則 所管理的 Azure 環境而言,Env標記需求會呼叫下列結果:

  • Env根據資源群組的命名配置修改資源群組上的標記
  • Env 資源群組中所有資源的標記修改為與父資源群組相同的

根據名稱修改資源群組 Env 標籤

您的 Azure 環境中每個環境都需要修改原則。 modify每個原則的原則看起來類似下列原則定義:

"policyRule": {
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.Resources/subscriptions/resourceGroups"
      },
      {
        "field": "name",
        "like": "prd-*"
      },
      {
        "field": "tags['Env']",
        "notEquals": "Production"
      }
    ]
  },
  "then": {
    "effect": "modify",
    "details": {
      "roleDefinitionIds": [
        "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
      ],
      "operations": [
        {
          "operation": "addOrReplace",
          "field": "tags['Env']",
          "value": "Production"
        }
      ]
    }
  }
}

注意

當此原則規則以資源群組為目標時, mode 原則定義上的 必須是 AllIndexed而不是 。

符合此原則的資源群組,僅限於將範例命名配置用於 prd- 之生產資源的群組。 您可以使用數 match 個條件來達成更複雜的命名配置,而不是此範例中的單一 like

修改資源以繼承 Env 標籤

商務需求會要求所有資源具有 Env 其父資源群組所執行的標記。 無法覆寫此標記,因此請 addOrReplace 搭配 修改 效果使用 作業。 範例 modify 原則看起來像下列規則:

"policyRule": {
  "if": {
    "anyOf": [
      {
        "field": "tags['Env']",
        "notEquals": "[resourcegroup().tags['Env']]"
      },
      {
        "field": "tags['Env']",
        "exists": false
      }
    ]
  },
  "then": {
    "effect": "modify",
    "details": {
      "roleDefinitionIds": [
        "/providers/microsoft.authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
      ],
      "operations": [
        {
          "operation": "addOrReplace",
          "field": "tags['Env']",
          "value": "[resourcegroup().tags['Env']]"
        }
      ]
    }
  }
}

注意

當此原則規則以支援標籤的資源為目標時, mode 原則定義上的 必須是 Indexed。 這種設定也可確保此原則會略過資源群組。

此原則規則會尋找標籤沒有其父資源群組值 Env 或遺漏 Env 標籤的任何資源。 比對資源已 Env 將其標籤設定為父資源群組值,即使標籤已存在於資源上,但具有不同的值也一樣。

指派方案並補救資源

建立標籤標原則之後,將它們加入單一標記治理計劃,並將其指派給管理群組或訂用帳戶。 方案與包含的原則接著會評估現有資源的合規性,並改變新資源或更新資源的要求,以符合 if 原則規則中的屬性。 不過,原則並不會自動以定義的標籤變更來更新不符合規範的現有資源。

如同 deployIfNotExists 原則,原則會 modify 使用補救工作來改變現有的不符合規範的資源。 請遵循操作說明補救資源的指示,以識別不符合規範modify的資源,並將標籤更正到您定義的分類法。

清除資源

如果您已完成本教學課程中的資源使用,請使用下列步驟來刪除您所建立的任何指派或定義:

  1. 選取 Azure 原則頁面左側 [製作] 下的 [定義] (如果您嘗試刪除指派,則選取 [指派])。

  2. 搜尋您要移除的新計畫或原則定義 (或指派)。

  3. 以滑鼠右鍵按鍵單擊數據列,或選取定義或指派結尾的省略號,然後選取 [刪除定義] 或 [刪除指派]。

檢閱

在本教學課程中,您已了解下列下列工作:

  • 識別您的商務需求
  • 將每項需求對應至原則定義
  • 將標籤原則分組成一個方案

下一步

若要深入了解原則定義的結構,請閱讀這篇文章: