Freigeben über


Authentifizierung bei Cosmos DB in Microsoft Fabric über Azure-Hostdienste.

Cosmos DB in Microsoft Fabric basiert ausschließlich auf der Microsoft Entra ID-Authentifizierung und integrierten Datenebenenrollen zum Verwalten von Authentifizierung und Autorisierung. In diesem Leitfaden verwenden Sie Die Microsoft Entra-ID und Ihr angemeldetes Konto, um eine Verbindung mit einem Cosmos DB-Artefakt in Microsoft Fabric herzustellen.

Von Bedeutung

Die Schritte ähneln dem Prozess, der für die Authentifizierung verwendet wird, wenn Sie einen Dienstprinzipal, eine Gruppe oder einen anderen Typ von Microsoft Entra ID-Identität verwenden. Um einem Dienstprinzipal die Möglichkeit zu gewähren, eine Verbindung mit Microsoft Fabric und Ihrer Cosmos DB-Datenbank herzustellen, aktivieren Sie die Einstellung "Dienstprinzipale können Fabric-APIs im Fabric-Mandanten verwenden. Weitere Informationen finden Sie unter Microsoft Fabric-Mandanteneinstellungen. Diese Einstellung ist für neue Kunden standardmäßig aktiviert.

Voraussetzungen

  • Eine Identität mit der Leseberechtigung für die Datenbank in Fabric

  • Azure-Befehlszeilenschnittstelle (Azure CLI)

  • Python 3.12 oder höher
  • Node.js 22 oder höher
  • .NET SDK 9.0 oder höher

Abrufen des Cosmos-DB-Endpunkts

Rufen Sie zuerst den Endpunkt für die Cosmos DB-Datenbank in Fabric ab. Dieser Endpunkt ist erforderlich, um eine Verbindung mit dem Azure SDK herzustellen.

  1. Öffnen Sie das Fabric-Portal (https://app.fabric.microsoft.com).

  2. Navigieren Sie zu Ihrer vorhandenen Cosmos DB-Datenbank.

  3. Wählen Sie die Einstellungsoption in der Menüleiste für die Datenbank aus.

    Screenshot der Menüleistenoption

  4. Navigieren Sie im Dialogfeld "Einstellungen" zum Abschnitt "Verbindung" . Kopieren Sie dann den Wert des Feldes "Endpunkt für die Cosmos DB NoSQL-Datenbank". Sie verwenden diesen Wert in einem späteren Schritt[s].

    Screenshot des Abschnitts

Authentifizieren bei Azure CLI

Authentifizieren Sie sich jetzt bei der Azure CLI. Das Azure SDK kann verschiedene Authentifizierungsmechanismen verwenden, um Ihre Identität zu überprüfen, aber die Azure CLI ist die universellste und reibungsloseste Option in verschiedenen Entwicklersprachen.

  1. Öffnen Sie in Ihrer lokalen Entwicklungsumgebung ein Terminal.

  2. Authentifizieren bei Azure CLI mithilfe von az login.

    az login
    
  3. Führen Sie die interaktiven Schritte aus, um die mehrstufige Authentifizierung (MFA) durchzuführen und Ihr Abonnement auszuwählen.

  4. Überprüfen Sie, ob Ihr Konto erfolgreich angemeldet ist, indem Sie Ihre Identität abfragen.

    az ad signed-in-user show
    
  5. Sehen Sie sich die Ausgabe des vorherigen Befehls an. Das id Feld enthält die Prinzipal-ID (Objekt) der aktuell angemeldeten Identität.

    {
      "@odata.context": "<https://graph.microsoft.com/v1.0/$metadata#users/$entity>",
      "businessPhones": [],
      "displayName": "Kai Carter",
      "givenName": "Kai",
      "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
      "jobTitle": "Senior Sales Representative",
      "mail": "<kai@adventure-works.com>",
      "mobilePhone": null,
      "officeLocation": "Redmond",
      "preferredLanguage": null,
      "surname": "Carter",
      "userPrincipalName": "<kai@adventure-works.com>"
    }
    

    Hinweis

    In Microsoft Entra ID-Begriffen wird diese Identität als Ihre menschliche Identität bezeichnet. Es ist eine Art von Identität, die eine Verbindung mit Datenbanken unter vielen verschiedenen Typen herstellen kann, einschließlich, aber nicht beschränkt auf:

    • Verwaltete Identitäten (System oder vom Benutzer zugewiesen)
    • Workload-Identitäten
    • Anwendungsidentitäten
    • Geräteidentitäten

    Während sich diese Schritte auf die Verwendung Ihrer menschlichen Identität zum Herstellen einer Verbindung mit der Datenbank in Fabric konzentrieren, sind die Schritte ähnlich, wenn Sie eine Verbindung mit einem anderen Identitätstyp herstellen. Weitere Informationen zu Identitäten finden Sie unter Identitätsgrundlagen.

Verbinden mit Azure SDK

Verwenden Sie schließlich das Azure SDK, um mithilfe des Endpunkts und Ihrer Identität eine Verbindung mit der Cosmos DB-Datenbank in Fabric herzustellen. Das Azure SDK wird mit einer einheitlichen Identitätsbibliothek ausgeliefert, die die Authentifizierung in Ihrem Auftrag automatisch verarbeitet. In diesem Schritt wird der DefaultAzureCredential() Typ verwendet, der den richtigen Identitätstyp basierend auf Ihrer Umgebung automatisch findet.

Hinweis

Azure-Anmeldeinformationsobjekte werden in Microsoft Fabric-Notizbüchern nicht unterstützt. Sie können DefaultAzureCredential nicht zur Authentifizierung an Cosmos DB in Fabric verwenden. Sie müssen ein benutzerdefiniertes Anmeldeinformationsobjekt in Ihren Notizbüchern erstellen, um sich zu authentifizieren. Weitere Informationen finden Sie unter Authentifizieren bei Cosmos DB in Microsoft Fabric über Fabric Notebooks.

from azure.cosmos.aio import CosmosClient
from azure.identity import DefaultAzureCredential

endpoint = "<cosmos-db-fabric-endpoint>"

credential = DefaultAzureCredential()

async with CosmosClient(endpoint, credential=credential) as client:
    container = client.get_database_client("<database-name>").get_container_client("<container-name>")

    nosql = "SELECT TOP 10 VALUE item.id FROM items AS item"

    results = container.query_items(
        query=nosql
    )

    items = []
    async for item in results:
        items.append(item)

    for item in items:
        print(item)

Hinweis

In diesem Beispiel werden die Pakete azure-identity und azure-cosmos von PyPI verwendet. Beachten Sie die Verwendung von azure.cosmos.aio für die asynchrone Unterstützung.

import { Container, CosmosClient, CosmosClientOptions } from '@azure/cosmos'
import { TokenCredential, DefaultAzureCredential } from '@azure/identity'

const endpoint: string = '<cosmos-db-fabric-endpoint>';

const credential: TokenCredential = new DefaultAzureCredential();

const options: CosmosClientOptions = {
    endpoint: endpoint,
    aadCredentials: credential
};

const client: CosmosClient = new CosmosClient(options);

const container: Container = client.database('<database-name>').container('<container-name>');

const nosql = 'SELECT TOP 10 VALUE item.id FROM items AS item';

const querySpec = {
    query: nosql
};

const response = await container.items.query(querySpec).fetchAll();
for (const item of response.resources) {
    console.log(item);
}

Hinweis

In diesem Beispiel werden die Pakete @azure/identity und @azure/cosmos von npm verwendet.

using Azure.Identity;
using Microsoft.Azure.Cosmos;

string endpoint = "<cosmos-db-fabric-endpoint>";
DefaultAzureCredential credential = new();
using CosmosClient client = new(endpoint, credential);

Container container = client
    .GetDatabase("<database-name>")
    .GetContainer("<container-name>");

string sql = "SELECT TOP 10 VALUE item.id FROM items AS item";

QueryDefinition query = new(sql);

FeedIterator<string> iterator = container.GetItemQueryIterator<string>(query);

while (iterator.HasMoreResults)
{
    FeedResponse<string> response = await iterator.ReadNextAsync();
    foreach (var item in response)
    {
        Console.WriteLine(item);
    }
}

Hinweis

In diesem Beispiel werden die Pakete Azure.Identity und Microsoft.Azure.Cosmos von NuGet verwendet.