Beheerde identiteiten gebruiken om verbinding te maken met Azure Cosmos DB vanaf een virtuele Azure-machine
In dit artikel hebben we een virtuele machine ingesteld voor het gebruik van beheerde identiteiten om verbinding te maken met Azure Cosmos DB. Azure Cosmos DB is een volledig beheerde NoSQL-database voor het ontwikkelen van moderne apps. Met beheerde identiteiten voor Azure-resources kunnen uw toepassingen worden geverifieerd bij toegang tot services die ondersteuning bieden voor Microsoft Entra-verificatie met behulp van een identiteit die wordt beheerd door Azure.
Vereisten
- Basiskennis van beheerde identiteiten. Als u meer wilt weten over beheerde identiteiten voor Azure-resources voordat u doorgaat, raadpleegt u het overzicht van beheerde identiteiten.
- U moet een Azure-account met een actief abonnement hebben. Gratis een account maken
- Mogelijk hebt u PowerShell of CLI nodig.
- Visual Studio Community Edition of een andere ontwikkelomgeving.
Een brongroep maken
Maak een resourcegroep met de naam mi-test. We gebruiken deze resourcegroep voor alle resources die in deze zelfstudie worden gebruikt.
- Een resourcegroep maken met behulp van Azure Portal
- Een resourcegroep maken met behulp van CLI
- Een resourcegroep maken met behulp van PowerShell
Een virtuele Azure-machine maken met een beheerde identiteit
Voor deze zelfstudie hebt u een virtuele Azure-machine (VM) nodig. Maak een virtuele machine met een ingeschakelde door het systeem toegewezen beheerde identiteit met de naam mi-vm-01. U kunt ook een door de gebruiker toegewezen beheerde identiteit maken met de naam mi-ua-01 in de resourcegroep die u eerder hebt gemaakt (mi-test). Als u een door de gebruiker toegewezen beheerde identiteit gebruikt, kunt u deze tijdens het maken aan een VM toewijzen.
Een VM met een door het systeem toegewezen beheerde identiteit maken
Als u een Azure-VM wilt maken met de door het systeem toegewezen beheerde identiteit, moet uw account beschikken over de roltoewijzing Inzender voor virtuele machines. Er zijn geen andere Microsoft Entra-roltoewijzingen vereist.
- Zoek vanuit Azure Portal naar virtuele machines.
- Kies Maken
- Geef op het tabblad Basisprincipes de vereiste gegevens op.
- Kies Volgende: Schijven >
- Ga door met het invullen van de informatie, ga op het tabblad Beheer naar de sectie Identiteit en schakel het selectievakje in naast Door het systeem toegewezen beheerde identiteit in
Raadpleeg de documentatie voor virtuele Azure-machines voor meer informatie:
Een virtuele machine maken met een door de gebruiker toegewezen beheerde identiteit
In de onderstaande stappen ziet u hoe u een virtuele machine maakt met een door de gebruiker toegewezen beheerde identiteit geconfigureerd.
Momenteel ondersteunt Azure Portal het toewijzen van een door de gebruiker toegewezen beheerde identiteit tijdens het maken van een virtuele machine niet. U moet een virtuele machine maken en vervolgens een door de gebruiker toegewezen beheerde identiteit eraan toewijzen.
Een Azure Cosmos DB-account maken
Nu we een VIRTUELE machine hebben met een door de gebruiker toegewezen beheerde identiteit of een door het systeem toegewezen beheerde identiteit, hebben we een Azure Cosmos DB-account nodig dat beschikbaar is waar u beheerdersrechten hebt. Als u een Azure Cosmos DB-account voor deze zelfstudie moet maken, bevat de quickstart van Azure Cosmos DB gedetailleerde stappen om dit te doen.
Notitie
Beheerde identiteiten kunnen worden gebruikt voor toegang tot elke Azure-resource die ondersteuning biedt voor Microsoft Entra-verificatie. In deze zelfstudie wordt ervan uitgegaan dat uw Azure Cosmos DB-account wordt geconfigureerd zoals hieronder wordt weergegeven.
Instelling | Weergegeven als | Beschrijving |
---|---|---|
Abonnement | Naam van het abonnement | Selecteer het Azure-abonnement dat u wilt gebruiken voor dit Azure Cosmos DB-account. |
Resourcegroep | Naam van de resourcegroep | Selecteer mi-test of selecteer Nieuwe maken en voer vervolgens een unieke naam in voor de nieuwe resourcegroep. |
Accountnaam | Een unieke naam | Voer een naam in om uw Azure Cosmos DB-account te identificeren. Gebruik een unieke naam omdat documents.azure.com is toegevoegd aan de naam die u hebt opgegeven om uw URI te maken. De naam mag alleen kleine letters, cijfers en het koppelteken (-) bevatten. De naam moet tussen de 3 en 44 tekens lang zijn. |
API | Het type account dat moet worden gemaakt | Selecteer Azure Cosmos DB for NoSQL om een documentdatabase te maken en query's uit te voeren met behulp van SQL-syntaxis. Meer informatie over de SQL-API. |
Locatie | De regio het dichtst bij uw gebruikers | Selecteer een geografische locatie waar u het Azure Cosmos DB-account wilt hosten. Gebruik de locatie die zich het dichtst bij uw gebruikers bevindt, zodat ze de snelst mogelijke toegang tot de gegevens hebben. |
Notitie
Als u aan het testen bent, kunt u korting voor de gratis laag van Azure Cosmos DB toepassen. Met de gratis laag van Azure Cosmos DB krijgt u de eerste 1000 RU/s en 25 GB opslagruimte gratis in een account. Meer informatie over de gratis laag. Het maakt voor deze zelfstudie geen verschil waarvoor u kiest.
Toegang verlenen
Op dit moment moeten zowel een virtuele machine zijn geconfigureerd met een beheerde identiteit als een Azure Cosmos DB-account. Voordat u verdergaat, moet u een aantal verschillende rollen aan de beheerde identiteit toekennen.
Verken eerst toegang tot het Azure Cosmos DB-beheervlak met behulp van Azure RBAC. Aan de beheerde identiteit moet de rol Inzender voor het DocumentDB-account zijn toegewezen om databases en containers te kunnen maken.
U moet de beheerde identiteit ook een rol van inzender verlenen met behulp van Azure Cosmos DB RBAC. Hieronder ziet u specifieke stappen.
Notitie
We gebruiken de rol van ingebouwde Cosmos DB-gegevensbijdrager. Als u toegang wilt verlenen, moet u de roldefinitie koppelen aan de identiteit. In dit geval is de beheerde identiteit gekoppeld aan de virtuele machine.
Op dit moment is er geen optie voor roltoewijzing beschikbaar in Azure Portal
Toegang tot gegevens
Het verkrijgen van toegang tot Azure Cosmos DB met behulp van beheerde identiteiten kan worden bereikt met behulp van de Azure.identity-bibliotheek om verificatie in uw toepassing in te schakelen. U kunt ManagedIdentityCredential rechtstreeks aanroepen of DefaultAzureCredential gebruiken.
De klasse ManagedIdentityCredential probeert de verificatie uit te voeren met behulp van een beheerde identiteit die is toegewezen aan de implementatieomgeving. De klasse DefaultAzureCredential doorloopt verschillende verificatieopties in een vaste volgorde. De tweede verificatieoptie die DefaultAzureCredential probeert, is Beheerde identiteiten.
In het onderstaande voorbeeld maakt u een database, een container en een item in de container, en leest u het zojuist gemaakte item terug met behulp van de door het systeem toegewezen beheerde identiteit van de virtuele machine. Als u een door de gebruiker toegewezen beheerde identiteit wilt gebruiken, moet u de door de gebruiker toegewezen beheerde identiteit opgeven door de client-id van de beheerde identiteit op te geven.
string userAssignedClientId = "<your managed identity client Id>";
var tokenCredential = new DefaultAzureCredential(new DefaultAzureCredentialOptions { ManagedIdentityClientId = userAssignedClientId });
Als u het onderstaande voorbeeld wilt gebruiken, hebt u de volgende NuGet-pakketten nodig:
- Azure.Identity
- Microsoft.Azure.Cosmos
- Microsoft.Azure.Management.CosmosDB
Naast de bovenstaande NuGet-pakketten moet u ook Voorlopige versie opnemen inschakelen en vervolgens Azure.ResourceManager.CosmosDB toevoegen.
using Azure.Identity;
using Azure.ResourceManager.CosmosDB;
using Azure.ResourceManager.CosmosDB.Models;
using Microsoft.Azure.Cosmos;
using System;
using System.Threading.Tasks;
namespace MITest
{
class Program
{
static async Task Main(string[] args)
{
// Replace the placeholders with your own values
var subscriptionId = "Your subscription ID";
var resourceGroupName = "You resource group";
var accountName = "Cosmos DB Account name";
var databaseName = "mi-test";
var containerName = "container01";
// Authenticate to Azure using Managed Identity (system-assigned or user-assigned)
var tokenCredential = new DefaultAzureCredential();
// Create the Cosmos DB management client using the subscription ID and token credential
var managementClient = new CosmosDBManagementClient(tokenCredential)
{
SubscriptionId = subscriptionId
};
// Create the Cosmos DB data client using the account URL and token credential
var dataClient = new CosmosClient($"https://{accountName}.documents.azure.com:443/", tokenCredential);
// Create a new database using the management client
var createDatabaseOperation = await managementClient.SqlResources.StartCreateUpdateSqlDatabaseAsync(
resourceGroupName,
accountName,
databaseName,
new SqlDatabaseCreateUpdateParameters(new SqlDatabaseResource(databaseName), new CreateUpdateOptions()));
await createDatabaseOperation.WaitForCompletionAsync();
// Create a new container using the management client
var createContainerOperation = await managementClient.SqlResources.StartCreateUpdateSqlContainerAsync(
resourceGroupName,
accountName,
databaseName,
containerName,
new SqlContainerCreateUpdateParameters(new SqlContainerResource(containerName), new CreateUpdateOptions()));
await createContainerOperation.WaitForCompletionAsync();
// Create a new item in the container using the data client
var partitionKey = "pkey";
var id = Guid.NewGuid().ToString();
await dataClient.GetContainer(databaseName, containerName)
.CreateItemAsync(new { id = id, _partitionKey = partitionKey }, new PartitionKey(partitionKey));
// Read back the item from the container using the data client
var pointReadResult = await dataClient.GetContainer(databaseName, containerName)
.ReadItemAsync<dynamic>(id, new PartitionKey(partitionKey));
// Run a query to get all items from the container using the data client
await dataClient.GetContainer(databaseName, containerName)
.GetItemQueryIterator<dynamic>("SELECT * FROM c")
.ReadNextAsync();
}
}
}
Taalspecifieke voorbeelden met ManagedIdentityCredential:
.NET
Initialiseer uw Azure Cosmos DB-client:
CosmosClient client = new CosmosClient("<account-endpoint>", new ManagedIdentityCredential());
Lees en schrijf vervolgens gegevens.
Java
Initialiseer uw Azure Cosmos DB-client:
CosmosAsyncClient Client = new CosmosClientBuilder().endpoint("<account-endpoint>") .credential(new ManagedIdentityCredential()) .build();
Lees en schrijf vervolgens gegevens zoals beschreven in deze voorbeelden
JavaScript
Initialiseer uw Azure Cosmos DB-client:
const client = new CosmosClient({ "<account-endpoint>", aadCredentials: new ManagedIdentityCredential() });
Lees en schrijf vervolgens gegevens zoals beschreven in deze voorbeelden
Stappen voor opschonen
Tip
Stappen in dit artikel kunnen enigszins variƫren op basis van de portal waaruit u begint.
Meld u aan bij het Azure-portaal.
Selecteer de resource die u wilt verwijderen.
Selecteer Verwijderen.
Bevestig de verwijdering als u daarom wordt gevraagd.
Volgende stappen
Meer informatie over beheerde identiteiten voor Azure-resources:
Meer informatie over Azure Cosmos DB: