Använda Azure Policy för att implementera styrning och kontroller för Azure Cosmos DB-resurser

GÄLLER FÖR: Nosql Mongodb Cassandra Gremlin Tabell

Azure Policy hjälper till att framtvinga standarder för organisationsstyrning, utvärdera resursefterlevnad och implementera automatiska åtgärder. Vanliga användningsfall är säkerhet, kostnadshantering och konfigurationskonsekvens.

Azure Policy innehåller inbyggda principdefinitioner. Du kan skapa anpassade principdefinitioner för scenarier som inte hanteras av de inbyggda principdefinitionerna. Mer information finns i dokumentationen om Azure Policy.

Viktigt

Azure Policy tillämpas på resursprovidernivå för Azure-tjänster. Azure Cosmos DB-SDK:er kan utföra de flesta hanteringsåtgärder på databas-, container- och dataflödesresurser som kringgår Azure Cosmos DB:s resursprovider och ignorerar därför alla principer som skapats med hjälp av Azure Policy. Information om hur du säkerställer att principer tillämpas finns i Förhindra ändringar från Azure Cosmos DB SDK:er

Tilldela en inbyggd principdefinition

Principdefinitioner beskriver resursefterlevnadsvillkor och den effekt som ska uppnås om ett villkor uppfylls. Principtilldelningar skapas från principdefinitioner. Du kan använda inbyggda eller anpassade principdefinitioner för dina Azure Cosmos DB-resurser. Principtilldelningar är begränsade till en Azure-hanteringsgrupp, en Azure-prenumeration eller en resursgrupp och de tillämpas på resurserna inom det valda omfånget. Du kan också exkludera specifika resurser från omfånget.

Du kan skapa principtilldelningar med mallen Azure Portal, Azure PowerShell, Azure CLI eller ARM.

Om du vill skapa en principtilldelning från en inbyggd principdefinition för Azure Cosmos DB använder du stegen i skapa en principtilldelning med Azure Portal artikeln.

I steget för att välja en principdefinition anger du Azure Cosmos DB i fältet Sök för att filtrera listan över tillgängliga inbyggda principdefinitioner. Välj en av de tillgängliga inbyggda principdefinitionerna och välj sedan Välj för att fortsätta skapa principtilldelningen.

Tips

Du kan också använda de inbyggda principdefinitionsnamnen som visas i fönstret Tillgängliga definitioner med Azure PowerShell-, Azure CLI- eller ARM-mallar för att skapa principtilldelningar.

Sök efter inbyggda principdefinitioner i Azure Cosmos DB

Skapa en anpassad principdefinition

För specifika scenarier som inte hanteras av inbyggda principer kan du skapa en anpassad principdefinition. Senare skapar du en principtilldelning från din anpassade principdefinition.

Egenskapstyper och egenskapsalias i principregler

Använd stegen för anpassad principdefinition för att identifiera resursegenskaper och egenskapsalias, som krävs för att skapa principregler.

Om du vill identifiera specifika egenskapsalias för Azure Cosmos DB använder du namnområdet Microsoft.DocumentDB med någon av metoderna som visas i artikeln om anpassade principdefinitionssteg.

Använd 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"

Använd 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

Dessa kommandon matar ut listan över egenskapsaliasnamn för Azure Cosmos DB-egenskapen. Följande är ett utdrag från utdata:

[
  "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",
  "..."
]

Du kan använda något av dessa egenskapsaliasnamn i de anpassade principdefinitionsreglerna.

Följande är ett exempel på en principdefinition som kontrollerar om ett Azure Cosmos DB-konto har konfigurerats för flera skrivplatser. Den anpassade principdefinitionen innehåller två regler: en för att söka efter den specifika typen av egenskapsalias och den andra för den specifika egenskapen av typen, i det här fallet fältet som lagrar inställningen för flera skrivplatser. Båda reglerna använder aliasnamnen.

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

Anpassade principdefinitioner kan användas för att skapa principtilldelningar precis som de inbyggda principdefinitionerna används.

Principefterlevnad

När principtilldelningarna har skapats utvärderar Azure Policy resurserna i tilldelningens omfång. Varje resurss efterlevnad av principen utvärderas. Den effekt som anges i principen tillämpas sedan på icke-kompatibla resurser.

Du kan granska kompatibilitetsresultaten och reparationsinformationen i Azure Portal eller via Azure CLI eller Azure Monitor-loggarna.

Följande skärmbild visar två exempel på principtilldelningar.

En tilldelning baseras på en inbyggd principdefinition som kontrollerar att Azure Cosmos DB-resurserna endast distribueras till de tillåtna Azure-regionerna. Resursefterlevnad visar resultatet av principutvärderingen (kompatibel eller inkompatibel) för resurser inom omfånget.

Den andra tilldelningen baseras på en anpassad principdefinition. Den här tilldelningen kontrollerar att Azure Cosmos DB-konton har konfigurerats för flera skrivplatser.

När principtilldelningarna har distribuerats visar instrumentpanelen för efterlevnad utvärderingsresultat. Observera att det kan ta upp till 30 minuter efter att en principtilldelning har distribuerats. Dessutom kan genomsökningar av principutvärdering startas på begäran omedelbart efter att principtilldelningar har skapats.

Skärmbilden visar följande resultat för kompatibilitetsutvärdering för Azure Cosmos DB-konton inom omfång:

  • Noll av två konton är kompatibla med en princip som Virtual Network (VNet)-filtrering måste konfigureras.
  • Noll av två konton är kompatibla med en princip som kräver att kontot konfigureras för flera skrivplatser
  • Noll av två konton är kompatibla med en princip som resurser har distribuerats till tillåtna Azure-regioner.

Kompatibilitetsresultat för Azure Policy tilldelningar i listan

Information om hur du åtgärdar icke-kompatibla resurser finns i hur du åtgärdar resurser med Azure Policy.

Nästa steg