Dela via


Skydda Azure Cosmos DB-resurser med lås

GÄLLER FÖR: NoSQL MongoDB Kassandra Gremlin Bord

Som administratör kan du behöva låsa ett Azure Cosmos DB-konto, en databas eller en container. Lås hindrar andra användare i din organisation från att oavsiktligt ta bort eller ändra kritiska resurser. Du kan ange låsnivån till CanNotDelete eller ReadOnly.

Nivå beskrivning
CanNotDelete Behöriga användare kan fortfarande läsa och ändra en resurs, men de kan inte ta bort resursen.
ReadOnly Behöriga användare kan läsa en resurs, men de kan inte ta bort eller uppdatera resursen. Att tillämpa det här låset liknar att begränsa alla behöriga användare till de behörigheter som beviljas av rollen Läsare .

Förutsättningar

Så här tillämpas lås

När du använder ett lås i ett överordnat omfång ärver alla resurser inom det omfånget samma lås. Även resurser som du lägger till senare ärver låset från det överordnade. Det mest restriktiva låset i arvet har företräde.

Till skillnad från rollbaserad åtkomstkontroll i Azure använder du hanteringslås för att tillämpa en begränsning för alla användare och roller. Mer information om rollbaserad åtkomstkontroll för Azure Cosmos DB finns i Rollbaserad åtkomstkontroll i Azure Cosmos DB.

Resource Manager-lås gäller endast för åtgärder som sker i hanteringsplanet, som består av åtgärder som skickas till https://management.azure.com. Låsen begränsar inte hur resurser utför sina egna funktioner. Resursändringar är begränsade, men resursåtgärder är inte begränsade. Ett ReadOnly-lås på en Azure Cosmos DB-container förhindrar till exempel att du tar bort eller ändrar containern. Det hindrar dig inte från att skapa, uppdatera eller ta bort data i containern. Datatransaktioner tillåts eftersom dessa åtgärder inte skickas till https://management.azure.com.

Hantera lås

Resurslås fungerar inte för ändringar som görs av användare som har åtkomst till Azure Cosmos DB med hjälp av kontonycklar, såvida inte Azure Cosmos DB-kontot först låses genom att egenskapen aktiveras disableKeyBasedMetadataWriteAccess . Se till att den här egenskapen inte bryter befintliga program som gör ändringar i resurser med hjälp av SDK, Azure-portalen eller verktyg från tredje part. Om du aktiverar den här egenskapen bryts program som ansluter via kontonycklar för att ändra resurser. Dessa ändringar kan omfatta ändring av dataflöde, uppdatering av indexprinciper osv. Mer information och att gå igenom en checklista för att säkerställa att dina program fortsätter att fungera finns i förhindra ändringar från Azure Cosmos DB SDK:er

$RESOURCE_GROUP_NAME = "<resource-group>"
$ACCOUNT_NAME = "<account-name>"
$LOCK_NAME = "$ACCOUNT_NAME-lock"

Uppdatera först kontot för att förhindra ändringar av allt som ansluter via kontonycklar.

$parameters = @{
    Name = $ACCOUNT_NAME
    ResourceGroupName = $RESOURCE_GROUP_NAME
    DisableKeyBasedMetadataWriteAccess = true
}
Update-AzCosmosDBAccount @parameters

Skapa ett borttagningslås på en Azure Cosmos DB-kontoresurs och alla underordnade resurser.

$parameters = @{
    ResourceGroupName = $RESOURCE_GROUP_NAME
    ResourceName = $ACCOUNT_NAME
    LockName = $LOCK_NAME
    ApiVersion = "2020-04-01"
    ResourceType = "Microsoft.DocumentDB/databaseAccounts"
    LockLevel = "CanNotDelete"
}
New-AzResourceLock @parameters

Template

När du tillämpar ett lås på en Azure Cosmos DB-resurs använder du Resurshanteraren Microsoft.Authorization/locks för Azure Resource Manager (ARM).

{
  "type": "Microsoft.Authorization/locks",
  "apiVersion": "2017-04-01",
  "name": "cosmoslock",
  "dependsOn": [
    "[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName'))]"
  ],
  "properties": {
    "level": "CanNotDelete",
    "notes": "Do not delete Azure Cosmos DB account."
  },
  "scope": "[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName'))]"
}

Exempel

Hantera resurslås för Azure Cosmos DB:

Nästa steg