Rollbaserad åtkomstkontroll i Azure Cosmos DB

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

Kommentar

Den här artikeln handlar om rollbaserad åtkomstkontroll för hanteringsplanåtgärder i Azure Cosmos DB. Om du använder dataplansåtgärder skyddas data med hjälp av primära nycklar, resurstoken eller Azure Cosmos DB RBAC.

Mer information om rollbaserad åtkomstkontroll som tillämpas på dataplansåtgärder i API:et för NoSQL finns i Artikeln om säker åtkomst till data och Azure Cosmos DB RBAC . Information om Azure Cosmos DB-API:et för MongoDB finns i Data Plane RBAC i API:et för MongoDB.

Azure Cosmos DB har inbyggd rollbaserad åtkomstkontroll i Azure (Azure RBAC) för vanliga hanteringsscenarier i Azure Cosmos DB. En person som har en profil i Microsoft Entra-ID kan tilldela dessa Azure-roller till användare, grupper, tjänstens huvudnamn eller hanterade identiteter för att bevilja eller neka åtkomst till resurser och åtgärder på Azure Cosmos DB-resurser. Rolltilldelningar begränsas endast till kontrollplansåtkomst, vilket omfattar åtkomst till Azure Cosmos DB-konton, databaser, containrar och erbjudanden (dataflöde).

Inbyggda roller

Följande är de inbyggda roller som stöds av Azure Cosmos DB:

Inbyggd roll Beskrivning
DocumentDB-kontodeltagare Kan hantera Azure Cosmos DB-konton.
Cosmos DB-kontoläsare Kan läsa Azure Cosmos DB-kontodata.
CosmosBackupOperator Kan skicka en återställningsbegäran i Azure-portalen för en periodisk säkerhetskopieringsaktiverad databas eller en container. Kan ändra säkerhetskopieringsintervallet och kvarhållningen i Azure-portalen. Det går inte att komma åt några data eller använda Datautforskaren.
CosmosRestoreOperator Kan utföra en återställningsåtgärd för ett Azure Cosmos DB-konto med kontinuerligt säkerhetskopieringsläge.
Cosmos DB-operator Kan etablera Azure Cosmos DB-konton, databaser och containrar. Det går inte att komma åt några data eller använda Datautforskaren.

Identitets- och åtkomsthantering (IAM)

Fönstret Åtkomstkontroll (IAM) i Azure-portalen används för att konfigurera rollbaserad åtkomstkontroll i Azure Cosmos DB-resurser. Rollerna tillämpas på användare, grupper, tjänstens huvudnamn och hanterade identiteter i Active Directory. Du kan använda inbyggda roller eller anpassade roller för individer och grupper. Följande skärmbild visar Active Directory-integrering (Azure RBAC) med åtkomstkontroll (IAM) i Azure-portalen:

Access control (IAM) in the Azure portal - demonstrating database security.

Anpassade roller

Utöver de inbyggda rollerna kan användarna också skapa anpassade roller i Azure och tillämpa dessa roller på tjänstens huvudnamn i alla prenumerationer i sin Active Directory-klientorganisation. Anpassade roller ger användarna ett sätt att skapa Azure-rolldefinitioner med en anpassad uppsättning resursprovideråtgärder. Information om vilka åtgärder som är tillgängliga för att skapa anpassade roller för Azure Cosmos DB finns i Azure Cosmos DB-resursprovideråtgärder

Dricks

Anpassade roller som behöver komma åt data som lagras i Azure Cosmos DB eller använda Datautforskaren i Azure-portalen måste ha Microsoft.DocumentDB/databaseAccounts/listKeys/* åtgärder.

Kommentar

Anpassade rolltilldelningar kanske inte alltid visas i Azure-portalen.

Varning

Kontonycklar roteras eller återkallas inte automatiskt efter rbac-ändringar i hanteringen. Dessa nycklar ger åtkomst till dataplansåtgärder. När du tar bort åtkomsten till nycklarna från en användare rekommenderar vi att du även roterar nycklarna. För RBAC-dataplanet avvisar Cosmos DB-serverdelen begäranden när rollerna/anspråken inte längre matchar. Om en användare behöver tillfällig åtkomst till dataplansåtgärder rekommenderar vi att du använder Azure Cosmos DB RBAC Data Plane.

Förhindra ändringar från Azure Cosmos DB SDK:er

Azure Cosmos DB-resursprovidern kan låsas för att förhindra ändringar av resurser från en klient som ansluter med hjälp av kontonycklarna (det vill:s program som ansluter via Azure Cosmos DB SDK). Den här funktionen kan vara önskvärd för användare som vill ha högre kontroll och styrning för produktionsmiljöer. Om du förhindrar ändringar från SDK kan du även använda funktioner som resurslås och diagnostikloggar för kontrollplansåtgärder. Klienter som ansluter från Azure Cosmos DB SDK hindras från att ändra någon egenskap för Azure Cosmos DB-konton, databaser, containrar och dataflöde. Åtgärderna för att läsa och skriva data till Själva Azure Cosmos DB-containrarna påverkas inte.

När den här funktionen är aktiverad kan ändringar av alla resurser endast göras från en användare med rätt Azure-roll och Microsoft Entra-autentiseringsuppgifter, inklusive hanterade tjänstidentiteter.

Varning

Aktivering av den här funktionen kan påverka ditt program. Se till att du förstår effekten innan du aktiverar den.

Kontrollera listan innan du aktiverar

Den här inställningen förhindrar ändringar av azure Cosmos DB-resurser från alla klienter som ansluter med kontonycklar, inklusive Azure Cosmos DB SDK, alla verktyg som ansluter via kontonycklar. Om du vill förhindra problem eller fel från program när du har aktiverat den här funktionen kontrollerar du om program utför någon av följande åtgärder innan du aktiverar den här funktionen, inklusive:

  • Skapa, ta bort underordnade resurser som databaser och containrar. Detta inkluderar resurser för andra API:er som Cassandra, MongoDB, Gremlin och tabellresurser.

  • Läsa eller uppdatera dataflöde på databas- eller containernivåresurser.

  • Ändra containeregenskaper som indexprincip, TTL och unika nycklar.

  • Ändra lagrade procedurer, utlösare eller användardefinierade funktioner.

Om dina program (eller användare via Azure-portalen) utför någon av dessa åtgärder måste de migreras för att köras via ARM-mallar, PowerShell, Azure CLI, REST eller Azure Management Library. Observera att Azure Management är tillgängligt på flera språk.

Ange via ARM-mall

Om du vill ange den här egenskapen med hjälp av en ARM-mall uppdaterar du din befintliga mall eller exporterar en ny mall för den aktuella distributionen och inkluderar "disableKeyBasedMetadataWriteAccess": true sedan egenskaperna för databaseAccounts resurserna. Nedan visas ett grundläggande exempel på en Azure Resource Manager-mall med den här egenskapsinställningen.

{
    {
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "name": "[variables('accountName')]",
      "apiVersion": "2020-04-01",
      "location": "[parameters('location')]",
      "kind": "GlobalDocumentDB",
      "properties": {
        "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
        "locations": "[variables('locations')]",
        "databaseAccountOfferType": "Standard",
        "disableKeyBasedMetadataWriteAccess": true
        }
    }
}

Viktigt!

Se till att du inkluderar de andra egenskaperna för ditt konto och underordnade resurser när du distribuerar om med den här egenskapen. Distribuera inte den här mallen som den är, annars återställs alla dina kontoegenskaper.

Ange via Azure CLI

Om du vill aktivera med Hjälp av Azure CLI använder du kommandot nedan:

az cosmosdb update  --name [CosmosDBAccountName] --resource-group [ResourceGroupName]  --disable-key-based-metadata-write-access true

Ange via PowerShell

Om du vill aktivera med Azure PowerShell använder du kommandot nedan:

Update-AzCosmosDBAccount -ResourceGroupName [ResourceGroupName] -Name [CosmosDBAccountName] -DisableKeyBasedMetadataWriteAccess true

Nästa steg