Použití spravovaných identit pro připojení ke službě Azure Cosmos DB z virtuálního počítače Azure
V tomto článku jsme nastavili virtuální počítač tak, aby používal spravované identity pro připojení ke službě Azure Cosmos DB. Azure Cosmos DB je plně spravovaná databáze NoSQL pro moderní vývoj aplikací. Spravované identity pro prostředky Azure umožňují vašim aplikacím ověřovat se při přístupu ke službám, které podporují ověřování Microsoft Entra pomocí identity spravované v Azure.
Požadavky
- Základní znalost spravovaných identit Pokud chcete před pokračováním získat další informace o spravovaných identitách pro prostředky Azure, projděte si přehled spravovaných identit.
- Musíte mít účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Možná budete potřebovat PowerShell nebo rozhraní příkazového řádku.
- Visual Studio Community Edition nebo jiné vývojové prostředí podle vašeho výběru.
Vytvoření skupiny zdrojů
Vytvořte skupinu prostředků s názvem mi-test. Tuto skupinu prostředků používáme pro všechny prostředky použité v tomto kurzu.
- Vytvoření skupiny prostředků pomocí webu Azure Portal
- Vytvoření skupiny prostředků pomocí rozhraní příkazového řádku
- Vytvoření skupiny prostředků pomocí PowerShellu
Vytvoření virtuálního počítače Azure se spravovanou identitou
Pro účely tohoto kurzu potřebujete virtuální počítač Azure. Vytvořte virtuální počítač s spravovanou identitou přiřazenou systémem s názvem mi-vm-01. Můžete také vytvořit spravovanou identitu přiřazenou uživatelem s názvem mi-ua-01 ve skupině prostředků, kterou jsme vytvořili dříve (mi-test). Pokud používáte spravovanou identitu přiřazenou uživatelem, můžete ji přiřadit k virtuálnímu počítači během vytváření.
Vytvoření virtuálního počítače se spravovanou identitou přiřazenou systémem
Pokud chcete vytvořit virtuální počítač Azure s povolenou spravovanou identitou přiřazenou systémem, váš účet potřebuje přiřazení role Přispěvatel virtuálních počítačů. Nejsou vyžadována žádná další přiřazení rolí Microsoft Entra.
- Na webu Azure Portal vyhledejte virtuální počítače.
- Zvolte Vytvořit.
- Na kartě Základy zadejte požadované informace.
- Zvolte Další: Disky >
- Pokračujte v vyplňování informací podle potřeby a na kartě Správa vyhledejte část Identita a zaškrtněte políčko vedle spravované identity přiřazené systémem.
Další informace najdete v dokumentaci k virtuálním počítačům Azure:
Vytvoření virtuálního počítače se spravovanou identitou přiřazenou uživatelem
Následující postup ukazuje, jak vytvořit virtuální počítač s nakonfigurovanou spravovanou identitou přiřazenou uživatelem.
Azure Portal v současné době nepodporuje přiřazování spravované identity přiřazené uživatelem při vytváření virtuálního počítače. Měli byste vytvořit virtuální počítač a přiřadit mu spravovanou identitu přiřazenou uživatelem.
Vytvoření účtu služby Azure Cosmos DB
Teď, když máme virtuální počítač s spravovanou identitou přiřazenou uživatelem nebo spravovanou identitou přiřazenou systémem, potřebujeme účet služby Azure Cosmos DB, který je k dispozici, pokud máte práva správce. Pokud potřebujete vytvořit účet služby Azure Cosmos DB pro účely tohoto kurzu, rychlý start služby Azure Cosmos DB obsahuje podrobný postup.
Poznámka:
Spravované identity se dají použít pro přístup k libovolnému prostředku Azure, který podporuje ověřování Microsoft Entra. V tomto kurzu se předpokládá, že váš účet služby Azure Cosmos DB bude nakonfigurovaný, jak je znázorněno níže.
Nastavení | Hodnota | Popis |
---|---|---|
Předplatné | Název předplatného | Vyberte předplatné Azure, které chcete pro tento účet služby Azure Cosmos DB použít. |
Skupina prostředků | Název skupiny prostředků | Vyberte mi-test nebo vyberte Vytvořit nový a zadejte jedinečný název nové skupiny prostředků. |
Název účtu | Jedinečný název | Zadejte název pro identifikaci účtu služby Azure Cosmos DB. Vzhledem k tomu, že se váš identifikátor URI vytvoří připojením řetězce documents.azure.com k názvu, který zadáte, použijte jedinečný název. Tento název může obsahovat jenom malá písmena, číslice a znak spojovníku (-). Musí mít délku 3 až 44 znaků. |
rozhraní API | Typ účtu, který se má vytvořit | Výběrem služby Azure Cosmos DB for NoSQL vytvořte databázi dokumentů a dotazování pomocí syntaxe SQL. Další informace o rozhraní SQL API |
Umístění | Oblast nejbližší vašim uživatelům | Vyberte zeměpisné umístění, ve kterém chcete účet služby Azure Cosmos DB hostovat. Použijte umístění, které je vašim uživatelům nejbližší, abyste jim zajistili nejrychlejší přístup k datům. |
Poznámka:
Pokud testujete, můžete chtít uplatnit slevu na úroveň Free služby Azure Cosmos DB. S úrovní Free služby Azure Cosmos DB získáte prvních 1000 RU/s a 25 GB úložiště zdarma v účtu. Další informace o úrovni Free Mějte na paměti, že pro účely tohoto kurzu tato volba nijak nemění.
Udělit přístup
V tuto chvíli bychom měli mít virtuální počítač nakonfigurovaný se spravovanou identitou i účtem služby Azure Cosmos DB. Než budeme pokračovat, musíme spravované identitě udělit několik různých rolí.
Nejprve udělte přístup k rovině správy Azure Cosmos DB pomocí Azure RBAC. Spravovaná identita musí mít přiřazenou roli Přispěvatel účtů DocumentDB k vytváření databází a kontejnerů.
Potřebujete také udělit spravované identitě roli přispěvatele pomocí RBAC služby Azure Cosmos DB. Níže najdete konkrétní kroky.
Poznámka:
Použijeme roli přispěvatele dat integrované ve službě Cosmos DB. Pokud chcete udělit přístup, musíte přidružit definici role k identitě. V našem případě spravovaná identita přidružená k našemu virtuálnímu počítači.
V tuto chvíli není na webu Azure Portal k dispozici žádná možnost přiřazení role.
Přístup k datům
Získání přístupu ke službě Azure Cosmos DB pomocí spravovaných identit se dá dosáhnout pomocí knihovny Azure.identity k povolení ověřování ve vaší aplikaci. ManagedIdentityCredential můžete volat přímo nebo použít DefaultAzureCredential.
Třída ManagedIdentityCredential se pokouší ověřit pomocí spravované identity přiřazené k prostředí nasazení. DefaultAzureCredential třída prochází různými možnostmi ověřování v pořadí. Druhou možností ověřování, o kterou se pokusy DefaultAzureCredential pokusí, jsou spravované identity.
V následujícím příkladu vytvoříte databázi, kontejner, položku v kontejneru a znovu přečtete nově vytvořenou položku pomocí spravované identity přiřazené systémem virtuálního počítače. Pokud chcete použít spravovanou identitu přiřazenou uživatelem, musíte určit spravovanou identitu přiřazenou uživatelem zadáním ID klienta spravované identity.
string userAssignedClientId = "<your managed identity client Id>";
var tokenCredential = new DefaultAzureCredential(new DefaultAzureCredentialOptions { ManagedIdentityClientId = userAssignedClientId });
Pokud chcete použít následující ukázku, musíte mít následující balíčky NuGet:
- Azure.Identity
- Microsoft.Azure.Cosmos
- Microsoft.Azure.Management.CosmosDB
Kromě výše uvedených balíčků NuGet musíte také povolit předběžné verze Include a pak přidat Azure.ResourceManager.CosmosDB.
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();
}
}
}
Příklady specifické pro jazyk pomocí ManagedIdentityCredential:
.NET
Inicializace klienta Služby Azure Cosmos DB:
CosmosClient client = new CosmosClient("<account-endpoint>", new ManagedIdentityCredential());
Java
Inicializace klienta Služby Azure Cosmos DB:
CosmosAsyncClient Client = new CosmosClientBuilder().endpoint("<account-endpoint>") .credential(new ManagedIdentityCredential()) .build();
Pak načtěte a zapisujte data, jak je popsáno v těchto ukázkách.
JavaScript
Inicializace klienta Služby Azure Cosmos DB:
const client = new CosmosClient({ "<account-endpoint>", aadCredentials: new ManagedIdentityCredential() });
Pak načtěte a zapisujte data, jak je popsáno v těchto ukázkách.
Vyčištění kroků
Tip
Postup v tomto článku se může mírně lišit v závislosti na portálu, od který začínáte.
Přihlaste se k portálu Azure.
Vyberte prostředek, který chcete odstranit.
Vyberte Odstranit.
Po zobrazení výzvy potvrďte odstranění.
Další kroky
Další informace o spravovaných identitách pro prostředky Azure:
Další informace o službě Azure Cosmos DB: