Beveiligde toegang tot gegevens in Azure Cosmos DB

VAN TOEPASSING OP: NoSQL

Dit artikel bevat een overzicht van gegevenstoegangsbeheer in Azure Cosmos DB.

Azure Cosmos DB biedt drie manieren om de toegang tot uw gegevens te beheren.

Type toegangsbeheer Kenmerken
Primaire/secundaire sleutels Gedeeld geheim dat beheer of gegevensbewerking toestaat. Het wordt geleverd in zowel alleen-lezen- als alleen-lezenvarianten.
Op rollen gebaseerd toegangsbeheer (RBAC) Fijnmazige, op rollen gebaseerd machtigingsmodel met behulp van Microsoft Entra-identiteiten voor verificatie.
Resourcetokens Gedetailleerd machtigingsmodel op basis van systeemeigen Azure Cosmos DB-gebruikers en -machtigingen.

Primaire/secundaire sleutels

Primaire/secundaire sleutels bieden toegang tot alle beheerbronnen voor het databaseaccount. Elk account bestaat uit twee sleutels: een primaire sleutel en een secundaire sleutel. Het doel van dubbele sleutels is om u sleutels opnieuw te laten genereren of te rollen, zodat u continue toegang krijgt tot uw account en gegevens. Zie Overzicht van databasebeveiliging in Azure Cosmos DB voor meer informatie over primaire/secundaire sleutels.

Als u uw accountsleutels wilt zien, selecteert u sleutels in het linkermenu. Selecteer vervolgens het pictogram Beeld rechts van elke toets. Selecteer de knop Kopiëren om de geselecteerde sleutel te kopiëren. U kunt ze later verbergen door hetzelfde pictogram per toets te selecteren, waarmee het pictogram wordt bijgewerkt naar een knop Verbergen .

Screenshot of the View account key for Azure Cosmos DB.

Sleutelrotatie en regeneratie

Notitie

In de volgende sectie worden de stappen beschreven voor het roteren en opnieuw genereren van sleutels voor de API voor NoSQL. Als u een andere API gebruikt, raadpleegt u de API voor MongoDB, API voor Cassandra, API voor Gremlin of API voor tabelsecties .

Zie Uw Azure Cosmos DB-account bewaken voor belangrijke updates en het opnieuw genereren van sleutels om uw account te controleren op belangrijke updates en het opnieuw genereren van sleutels.

Het proces van sleutelrotatie en regeneratie is eenvoudig. Zorg er eerst voor dat uw toepassing consistent gebruikmaakt van de primaire sleutel of de secundaire sleutel voor toegang tot uw Azure Cosmos DB-account. Volg vervolgens de stappen in de volgende sectie.

  1. Ga naar uw Azure Cosmos DB-account in Azure Portal.

  2. Selecteer Sleutels in het linkermenu en selecteer vervolgens Secundaire sleutel opnieuw genereren in het beletselteken rechts van de secundaire sleutel.

    Screenshot that shows the Azure portal showing how to regenerate the secondary key.

  3. Controleer of de nieuwe secundaire sleutel consistent werkt voor uw Azure Cosmos DB-account. Het opnieuw genereren van sleutels kan van één minuut tot meerdere uren duren, afhankelijk van de grootte van het Azure Cosmos DB-account.

  4. Vervang uw primaire sleutel door de secundaire sleutel in uw toepassing.

  5. Ga terug naar Azure Portal en activeer de regeneratie van de primaire sleutel.

    Screenshot that shows the Azure portal showing how to regenerate the primary key.

Codevoorbeeld voor het gebruik van een primaire sleutel

In het volgende codevoorbeeld ziet u hoe u een Azure Cosmos DB-accounteindpunt en primaire sleutel gebruikt om een instantie van een CosmosClient:

// Read the Azure Cosmos DB endpointUrl and authorization keys from config.
// These values are available from the Azure portal on the Azure Cosmos DB account blade under "Keys".
// Keep these values in a safe and secure location. Together they provide Administrative access to your Azure Cosmos DB account.

private static readonly string endpointUrl = ConfigurationManager.AppSettings["EndPointUrl"];
private static readonly string authorizationKey = ConfigurationManager.AppSettings["AuthorizationKey"];

CosmosClient client = new CosmosClient(endpointUrl, authorizationKey);

Op rollen gebaseerd toegangsbeheer

Azure Cosmos DB maakt een ingebouwd RBAC-systeem beschikbaar waarmee u het volgende kunt doen:

  • Verifieer uw gegevensaanvragen met een Microsoft Entra-identiteit.
  • Autoriseren van uw gegevensaanvragen met een gedetailleerd machtigingsmodel op basis van rollen.

Azure Cosmos DB RBAC is de ideale toegangsbeheermethode in situaties waarin:

  • U wilt geen gedeeld geheim gebruiken, zoals de primaire sleutel, en u wilt liever vertrouwen op een verificatiemechanisme op basis van tokens.
  • U wilt Microsoft Entra-identiteiten gebruiken om uw aanvragen te verifiëren.
  • U hebt een gedetailleerd machtigingsmodel nodig om strikt te beperken welke databasebewerkingen uw identiteiten mogen uitvoeren.
  • U wilt uw beleid voor toegangsbeheer materialiseren als rollen die u aan meerdere identiteiten kunt toewijzen.

Zie Op rollen gebaseerd toegangsbeheer configureren voor uw Azure Cosmos DB-account voor meer informatie over Azure Cosmos DB RBAC.

Zie Op rollen gebaseerd toegangsbeheer configureren voor uw Azure Cosmos DB voor MongoDB voor informatie en voorbeeldcode voor het configureren van RBAC voor Azure Cosmos DB voor MongoDB.

Resourcetokens

Resourcetokens bieden toegang tot de toepassingsresources in een database. Resourcetokens:

  • Geef toegang tot specifieke containers, partitiesleutels, documenten en bijlagen.
  • Worden gemaakt wanneer een gebruiker machtigingen krijgt voor een specifieke resource.
  • Worden opnieuw gemaakt wanneer een machtigingsresource wordt uitgevoerd door een POST-, GET- of PUT-aanroep.
  • Gebruik een hash-resourcetoken dat specifiek is samengesteld voor de gebruiker, resource en machtiging.
  • Zijn tijdsgebonden met een aanpasbare geldigheidsperiode. De standaard geldige tijdsduur is één uur. De levensduur van tokens kan echter expliciet worden opgegeven, tot maximaal 24 uur.
  • Een veilig alternatief bieden voor het doorgeven van de primaire sleutel.
  • Hiermee kunnen clients resources lezen, schrijven en verwijderen in het Azure Cosmos DB-account op basis van de machtigingen die ze hebben gekregen.

U kunt een resourcetoken gebruiken (door Azure Cosmos DB-gebruikers en -machtigingen te maken) wanneer u toegang wilt verlenen tot resources in uw Azure Cosmos DB-account voor een client die niet kan worden vertrouwd met de primaire sleutel.

Azure Cosmos DB-resourcetokens bieden een veilig alternatief waarmee clients resources in uw Azure Cosmos DB-account kunnen lezen, schrijven en verwijderen op basis van de machtigingen die u hebt verleend, en zonder dat een primaire of alleen-lezen sleutel nodig is.

Hier volgt een typisch ontwerppatroon waarbij resourcetokens kunnen worden aangevraagd, gegenereerd en geleverd aan clients:

  1. Een service in de middellaag is ingesteld voor het leveren van een mobiele toepassing om gebruikersfoto's te delen.

  2. De service in de middellaag beschikt over de primaire sleutel van het Azure Cosmos DB-account.

  3. De foto-app wordt geïnstalleerd op mobiele apparaten van gebruikers.

  4. Bij aanmelding brengt de foto-app de identiteit van de gebruiker vast met de service in de middellaag. Dit mechanisme van identiteitsinrichting is uitsluitend aan de toepassing toe te schrijven.

  5. Nadat de identiteit tot stand is gebracht, vraagt de service in de middellaag machtigingen aan op basis van de identiteit.

  6. De service middenlaag verzendt een resourcetoken terug naar de telefoon-app.

  7. De telefoon-app kan het resourcetoken blijven gebruiken om rechtstreeks toegang te krijgen tot Azure Cosmos DB-resources met de machtigingen die zijn gedefinieerd door het resourcetoken en voor het interval dat is toegestaan door het resourcetoken.

  8. Wanneer het resourcetoken verloopt, ontvangen volgende aanvragen een 401 niet-geautoriseerde uitzondering. Op dit moment herstelt de telefoon-app de identiteit en vraagt een nieuw resourcetoken aan.

    Screenshot that shows an Azure Cosmos DB resource tokens workflow.

Het genereren en beheren van resources wordt verwerkt door de systeemeigen Azure Cosmos DB-clientbibliotheken. Als u ECHTER REST gebruikt, moet u de aanvraag-/verificatieheaders samenstellen. Zie Toegangsbeheer voor Azure Cosmos DB-resources of de broncode voor onze .NET SDK of Node.js SDK voor meer informatie over het maken van verificatieheaders voor REST.

Zie de ResourceTokenBroker-app voor een voorbeeld van een middelste service die wordt gebruikt voor het genereren of brokerresourcetokens.

Gebruikers

Azure Cosmos DB-gebruikers zijn gekoppeld aan een Azure Cosmos DB-database. Elke database kan nul of meer Azure Cosmos DB-gebruikers bevatten. In het volgende codevoorbeeld ziet u hoe u een Azure Cosmos DB-gebruiker maakt met behulp van de Azure Cosmos DB .NET SDK v3.

// Create a user.
Database database = client.GetDatabase("SalesDatabase");
User user = await database.CreateUserAsync("User 1");

Notitie

Elke Azure Cosmos DB-gebruiker heeft een ReadAsync() methode die u kunt gebruiken om de lijst met machtigingen op te halen die aan de gebruiker zijn gekoppeld.

Machtigingen

Een machtigingsresource is gekoppeld aan een gebruiker en toegewezen aan een specifieke resource. Elke gebruiker kan nul of meer machtigingen bevatten. Een machtigingsresource biedt toegang tot een beveiligingstoken dat de gebruiker nodig heeft bij het openen van een specifieke container of gegevens in een specifieke partitiesleutel. Er zijn twee beschikbare toegangsniveaus die kunnen worden geleverd door een machtigingsresource:

  • Alle: de gebruiker heeft volledige machtigingen voor de resource.
  • Lezen: De gebruiker kan alleen de inhoud van de resource lezen, maar kan geen schrijf-, update- of verwijderbewerkingen uitvoeren op de resource.

Notitie

Als u opgeslagen procedures wilt uitvoeren, moet de gebruiker de machtiging Alle hebben voor de container waarin de opgeslagen procedure wordt uitgevoerd.

Als u de diagnostische logboeken voor gegevensvlakaanvragen inschakelt, worden de volgende twee eigenschappen vastgelegd die overeenkomen met de machtiging:

  • resourceTokenPermissionId: Deze eigenschap geeft de machtigings-id van het resourcetoken aan die u hebt opgegeven.

  • resourceTokenPermissionMode: Deze eigenschap geeft de machtigingsmodus aan die u hebt ingesteld toen u het resourcetoken maakte. De machtigingsmodus kan waarden hebben zoals Alles of Lezen.

Codevoorbeeld voor het maken van machtigingen

In het volgende codevoorbeeld ziet u hoe u een machtigingsresource maakt, het resourcetoken van de machtigingsresource leest en de machtigingen koppelt aan de gebruiker die u zojuist hebt gemaakt.

// Create a permission on a container and specific partition key value
Container container = client.GetContainer("SalesDatabase", "OrdersContainer");
await user.CreatePermissionAsync(
    new PermissionProperties(
        id: "permissionUser1Orders", 
        permissionMode: PermissionMode.All, 
        container: container,
        resourcePartitionKey: new PartitionKey("012345")));

Codevoorbeeld voor leesmachtiging voor gebruiker

In het volgende codefragment ziet u hoe u de machtiging ophaalt die is gekoppeld aan de gebruiker die u hebt gemaakt en een nieuwe CosmosClient instantie maakt voor de gebruiker, met een bereik van één partitiesleutel.

// Read a permission, create user client session.
Permission permission = await user.GetPermission("permissionUser1Orders").ReadAsync();

CosmosClient client = new CosmosClient(accountEndpoint: "MyEndpoint", authKeyOrResourceToken: permission.Resource.Token);

Verschillen tussen RBAC en resourcetokens

Onderwerp RBAC Resourcetokens
Verificatie Met Microsoft Entra ID. Op basis van de systeemeigen Azure Cosmos DB-gebruikers.
Voor het integreren van resourcetokens met Microsoft Entra-id is extra werk vereist om Microsoft Entra-identiteiten en Azure Cosmos DB-gebruikers te overbruggingen.
Autorisatie Op rollen gebaseerd: Roldefinities wijzen toegestane acties toe en kunnen worden toegewezen aan meerdere identiteiten. Op basis van machtigingen: voor elke Azure Cosmos DB-gebruiker moet u machtigingen voor gegevenstoegang toewijzen.
Tokenbereik Een Microsoft Entra-token draagt de identiteit van de aanvrager. Deze identiteit wordt vergeleken met alle toegewezen roldefinities om autorisatie uit te voeren. Een resourcetoken heeft de machtiging die is verleend aan een specifieke Azure Cosmos DB-gebruiker op een specifieke Azure Cosmos DB-resource. Autorisatieaanvragen voor verschillende resources vereisen mogelijk verschillende tokens.
Token vernieuwen Het Microsoft Entra-token wordt automatisch vernieuwd door de Azure Cosmos DB SDK's wanneer het verloopt. Vernieuwen van resourcetoken wordt niet ondersteund. Wanneer een resourcetoken verloopt, moet er een nieuw token worden uitgegeven.

Gebruikers toevoegen en rollen toewijzen

Als u azure Cosmos DB-accountlezertoegang tot uw gebruikersaccount wilt toevoegen, moet u de eigenaar van een abonnement de volgende stappen uitvoeren in Azure Portal.

  1. Open Azure Portal en selecteer uw Azure Cosmos DB-account.

  2. Klik op Toegangsbeheer (IAM) .

  3. Klik op Toevoegen>Roltoewijzing toevoegen om het deelvenster Roltoewijzing toevoegen te openen.

  4. Wijs de volgende rol toe. Raadpleeg Azure-rollen toewijzen met de Azure Portal voor informatie over het toewijzen van rollen.

    Instelling Waarde
    - Rol Cosmos DB-accountlezer.
    Toegang toewijzen aan Gebruiker, groep of service-principal.
    Leden De gebruiker, groep of toepassing in uw directory waaraan u toegang wilt verlenen.

    Screenshot that shows the Add role assignment page in the Azure portal.

De entiteit kan nu Azure Cosmos DB-resources lezen.

Gebruikersgegevens verwijderen of exporteren

Als databaseservice kunt u met Azure Cosmos DB alle gegevens in uw database of containers zoeken, selecteren, wijzigen en verwijderen. Het is uw verantwoordelijkheid om de opgegeven API's te gebruiken en logica te definiëren die nodig is om eventuele persoonsgegevens te zoeken en te wissen.

Elke API met meerdere modellen (SQL, MongoDB, Gremlin, Cassandra of Table) biedt verschillende taal-SDK's die methoden bevatten voor het zoeken en verwijderen van gegevens op basis van aangepaste predicaten. U kunt ook de TTL-functie (Time to Live) inschakelen om gegevens automatisch na een opgegeven periode te verwijderen, zonder dat er meer kosten in rekening worden gebracht.

Notitie

Voor meer informatie over persoonsgegevens bekijken of verwijderen, raadpleegt u AVG-verzoeken van betrokkenen voor Azure. Zie de AVG-sectie van het Microsoft Trust Center en de AVG-sectie van de Service Trust Portal voor algemene informatie over de AVG.

Volgende stappen