使用 Azure 原則來實作 Azure Cosmos DB 資源的治理和控制

適用於:NoSQL MongoDB Cassandra Gremlin Table

Azure 原則有助於強制執行組織治理標準、評估資源合規性,以及實作自動補救。 常見的使用案例包括安全性、成本管理和設定一致性。

Azure 原則提供內建原則定義。 您可以針對內建原則定義未解決的案例,建立自訂原則定義。 如需詳細資訊,請參閱 Azure 原則文件

重要

Azure 原則會在 Azure 服務的資源提供者層級強制執行。 Azure Cosmos DB SDK 可以對略過 Azure Cosmos DB 資源提供者的資料庫、容器和輸送量資源執行大部分的管理作業,進而忽略使用 Azure 原則建立的任何原則。 若要確保原則的強制執行,請參閱防止 Azure Cosmos DB SDK 的變更

指派內建原則定義

原則定義會描述資源合規性條件,以及符合條件時所要採取的效果。 原則指派會從原則定義來建立。 您可以將內建或自訂原則定義用於您的 Azure Cosmos DB 資源。 原則指派的範圍限於 Azure 管理群組、Azure 訂用帳戶或資源群組,並且會套用至所選範圍內的資源。 您可以選擇性從範圍中排除特定資源。

您可以使用 Azure 入口網站Azure PowerShellAzure CLIARM 範本來建立原則指派。

若要針對 Azure Cosmos DB 從內建原則定義建立原則指派,請使用使用 Azure 入口網站建立原則指派一文中的步驟。

在選取原則定義的步驟中,於 [搜尋] 欄位中輸入 Azure Cosmos DB,以篩選可用內建原則定義的清單。 選取其中一個可用內建原則定義,然後選擇 [選取] 以繼續建立原則指派。

提示

您也可以搭配 Azure PowerShell、Azure CLI 或 ARM 範本使用 [可用定義] 窗格中顯示的內建原則定義名稱,來建立原則指派。

Search for Azure Cosmos DB built-in policy definitions

建立自訂原則定義

針對內建原則未解決的特定案例,您可以建立自訂原則定義。 稍後您會從自訂原則定義建立原則指派

原則規則中的屬性類型和屬性別名

使用自訂原則定義步驟來識別建立原則規則所需的資源屬性和屬性別名。

若要識別 Azure Cosmos DB 特定屬性別名,請使用命名空間 Microsoft.DocumentDB,並搭配自訂原則定義步驟一文所示的其中一個方法。

使用 Azure CLI:

# Login first with az login if not using Cloud Shell

# Get Azure Policy aliases for namespace Microsoft.DocumentDB
az provider show --namespace Microsoft.DocumentDB --expand "resourceTypes/aliases" --query "resourceTypes[].aliases[].name"

使用 Azure PowerShell:

# Login first with Connect-AzAccount if not using Cloud Shell

# Use Get-AzPolicyAlias to list aliases for Microsoft.DocumentDB namespace
(Get-AzPolicyAlias -NamespaceMatch 'Microsoft.DocumentDB').Aliases

這些命令會針對 Azure Cosmos DB 屬性輸出屬性別名名稱的清單。 以下是輸出的摘錄:

[
  "Microsoft.DocumentDB/databaseAccounts/sku.name",
  "Microsoft.DocumentDB/databaseAccounts/virtualNetworkRules[*]",
  "Microsoft.DocumentDB/databaseAccounts/virtualNetworkRules[*].id",
  "Microsoft.DocumentDB/databaseAccounts/isVirtualNetworkFilterEnabled",
  "Microsoft.DocumentDB/databaseAccounts/consistencyPolicy.defaultConsistencyLevel",
  "Microsoft.DocumentDB/databaseAccounts/enableAutomaticFailover",
  "Microsoft.DocumentDB/databaseAccounts/Locations",
  "Microsoft.DocumentDB/databaseAccounts/Locations[*]",
  "Microsoft.DocumentDB/databaseAccounts/Locations[*].locationName",
  "..."
]

您可以使用自訂原則定義規則中的任何屬性別名名稱。

以下是範例原則定義,可檢查是否已針對多個寫入位置設定 Azure Cosmos DB 帳戶。 自訂原則定義包含兩個規則:一個用於檢查特定類型的屬性別名,而第二個規則用於類型的特定屬性,在此案例中是儲存多個寫入位置設定的欄位。 這兩個規則都會使用別名名稱。

"policyRule": {
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.DocumentDB/databaseAccounts"
      },
      {
        "field": "Microsoft.DocumentDB/databaseAccounts/enableMultipleWriteLocations",
        "notEquals": true
      }
    ]
  },
  "then": {
    "effect": "Audit"
  }
}

自訂原則定義可以用來建立原則指派,就像使用內建原則定義一樣。

原則相容性

建立原則指派之後,Azure 原則會評估指派範圍中的資源。 會評估每個資源對於原則的合規性。 原則中指定的效果接著會套用至不符合規範的資源。

您可以在 Azure 入口網站中,或透過 Azure CLIAzure 監視器記錄,來檢閱合規性結果和補救詳細資料。

下列螢幕擷取畫面顯示兩個範例原則指派。

其中一個指派是以內建原則定義為基礎,會檢查 Azure Cosmos DB 資源是否只部署到允許的 Azure 區域。 資源合規性會顯示範圍內資源的原則評估結果 (符合規範或不符合規範)。

另一個指派是以自訂原則定義為基礎。 此指派會檢查 Azure Cosmos DB 帳戶是否已針對多個寫入位置進行設定。

部署原則指派之後,合規性儀表板會顯示評估結果。 請注意,部署原則指派之後最多可能需要 30 分鐘的時間。 此外,您可以在建立原則指派之後,立即隨選啟動原則評估掃描

螢幕擷取畫面顯示範圍內 Azure Cosmos DB 帳戶的下列合規性評估結果:

  • 兩個帳戶為零符合必須設定虛擬網路 (VNet) 篩選的原則。
  • 兩個帳戶為零符合需要針對多個寫入位置設定帳戶的原則
  • 兩個帳戶為零符合原則,可將資源部署至允許的 Azure 區域。

Compliance results for Azure Policy assignments listed

若要補救不符合規範的資源,請參閱使用 Azure 原則補救資源

下一步