Udostępnij za pośrednictwem


Ochrona zasobów usługi Azure Cosmos DB za pomocą blokad

DOTYCZY: NoSQL MongoDB Kasandra Gremlin Stół

Jako administrator może być konieczne zablokowanie konta, bazy danych lub kontenera usługi Azure Cosmos DB. Blokady uniemożliwiają innym użytkownikom w organizacji przypadkowe usunięcie lub zmodyfikowanie krytycznych zasobów. Możesz ustawić poziom blokady na CanNotDelete lub ReadOnly.

Poziom opis
CanNotDelete Autoryzowani użytkownicy nadal mogą odczytywać i modyfikować zasób, ale nie mogą usunąć zasobu.
ReadOnly Autoryzowani użytkownicy mogą odczytywać zasób, ale nie mogą usuwać ani aktualizować zasobu. Zastosowanie tej blokady jest podobne do ograniczenia wszystkich autoryzowanych użytkowników do uprawnień przyznanych przez rolę Czytelnik .

Wymagania wstępne

Jak są stosowane blokady

Po zastosowaniu blokady w zakresie nadrzędnym wszystkie zasoby w tym zakresie dziedziczą tę samą blokadę. Nawet dodane później zasoby dziedziczą blokadę z elementu nadrzędnego. Najbardziej restrykcyjna blokada w dziedziczeniu ma pierwszeństwo.

W przeciwieństwie do kontroli dostępu opartej na rolach platformy Azure, blokady zarządzania służą do stosowania ograniczeń dla wszystkich użytkowników i ról. Aby dowiedzieć się więcej na temat kontroli dostępu opartej na rolach dla usługi Azure Cosmos DB, zobacz Kontrola dostępu oparta na rolach na platformie Azure w usłudze Azure Cosmos DB.

Blokady usługi Resource Manager dotyczą tylko operacji wykonywanych na płaszczyźnie zarządzania, która składa się z operacji wysyłanych do witryny https://management.azure.com. Blokady nie ograniczają sposobu wykonywania własnych funkcji przez zasoby. Zmiany zasobów są ograniczone, ale operacje zasobów nie są ograniczone. Na przykład blokada ReadOnly w kontenerze usługi Azure Cosmos DB uniemożliwia usunięcie lub zmodyfikowanie kontenera. Nie uniemożliwia tworzenia, aktualizowania ani usuwania danych w kontenerze. Transakcje danych są dozwolone, ponieważ te operacje nie są wysyłane do witryny https://management.azure.com.

Zarządzanie blokadami

Blokady zasobów nie działają w przypadku zmian wprowadzonych przez użytkowników, którzy uzyskują dostęp do usługi Azure Cosmos DB przy użyciu kluczy konta, chyba że konto usługi Azure Cosmos DB jest najpierw zablokowane przez włączenie disableKeyBasedMetadataWriteAccess właściwości. Upewnij się, że ta właściwość nie przerywa istniejących aplikacji, które wprowadzają zmiany w zasobach przy użyciu dowolnego zestawu SDK, witryny Azure Portal ani narzędzi innych firm. Włączenie tej właściwości powoduje przerwanie aplikacji łączących się za pośrednictwem kluczy konta w celu zmodyfikowania zasobów. Te modyfikacje mogą obejmować zmianę przepływności, aktualizowanie zasad indeksu itp. Aby dowiedzieć się więcej i przejść przez listę kontrolną, aby upewnić się, że aplikacje nadal działają, zobacz zapobieganie zmianom z zestawów SDK usługi Azure Cosmos DB

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

Najpierw zaktualizuj konto, aby zapobiec zmianom za pośrednictwem kluczy konta.

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

Utwórz blokadę usuwania w zasobie konta usługi Azure Cosmos DB i wszystkich zasobach podrzędnych.

$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

Podczas stosowania blokady do zasobu usługi Azure Cosmos DB użyj Microsoft.Authorization/locks zasobu usługi 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'))]"
}

Przykłady

Zarządzanie blokadami zasobów dla usługi Azure Cosmos DB:

Następne kroki