Udostępnij przez


Uwierzytelnij się do usługi Cosmos DB w usłudze Microsoft Fabric z usług hostowanych w platformie Azure.

Usługa Cosmos DB w Microsoft Fabric korzysta wyłącznie z uwierzytelniania za pomocą Microsoft Entra ID i wbudowanych ról poziomu danych do zarządzania uwierzytelnianiem i autoryzacją. W tym przewodniku użyjesz Microsoft Entra ID i zalogowanego konta, aby połączyć się z artefaktem Cosmos DB w Microsoft Fabric.

Ważne

Kroki są podobne do procesu używanego do uwierzytelniania, jeśli używasz jednostki usługi, grupy lub innego typu Microsoft Entra ID. Aby przyznać jednostce usługi możliwość nawiązywania połączenia z usługą Microsoft Fabric i bazą danych usługi Cosmos DB, włącz ustawienie "Jednostki usług mogą używać interfejsów API Fabric w dzierżawie Fabric. Aby uzyskać więcej informacji, zobacz Ustawienia dzierżawy usługi Microsoft Fabric. To ustawienie jest domyślnie włączone dla nowych klientów.

Wymagania wstępne

  • Środowisko Python w wersji 3.12 lub nowszej
  • Node.js 22 lub nowsze
  • Pakiet SDK .NET 9.0 lub nowszy

Uzyskaj punkt końcowy Cosmos DB

Najpierw uzyskaj punkt końcowy dla bazy danych Cosmos DB w Fabric. Ten punkt końcowy jest wymagany do nawiązania połączenia przy użyciu zestawu Azure SDK.

  1. Otwórz portal Fabric (https://app.fabric.microsoft.com).

  2. Przejdź do istniejącej bazy danych Cosmos DB.

  3. Wybierz opcję Ustawienia na pasku menu bazy danych.

    Zrzut ekranu przedstawiający opcję paska menu 'Ustawienia' dla bazy danych w portalu Fabric.

  4. W oknie dialogowym ustawień przejdź do sekcji Połączenie . Następnie skopiuj wartość pola Adres końcowy dla bazy danych NoSQL Cosmos DB. Ta wartość jest używana w późniejszych krokach.

    Zrzut ekranu przedstawiający sekcję

Zaloguj się do Azure CLI

Teraz uwierzytelnij się w interfejsie wiersza polecenia platformy Azure. Zestaw Azure SDK może używać różnych mechanizmów uwierzytelniania do weryfikowania tożsamości, ale interfejs wiersza polecenia platformy Azure jest najbardziej uniwersalną i bezproblemową opcją w różnych językach deweloperskich.

  1. W lokalnym środowisku projektowym otwórz terminal.

  2. Uwierzytelnij się w Azure CLI przy użyciu az login.

    az login
    
  3. Wykonaj interaktywne kroki, aby wykonać uwierzytelnianie wieloskładnikowe (MFA) i wybierz subskrypcję.

  4. Sprawdź, czy twoje konto zostało pomyślnie zarejestrowane, wykonując zapytanie dotyczące tożsamości.

    az ad signed-in-user show
    
  5. Zwróć uwagę na dane wyjściowe poprzedniego polecenia. Pole id zawiera ID głównego podmiotu (obiektu) aktualnie zalogowanego użytkownika.

    {
      "@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>"
    }
    

    Uwaga / Notatka

    W terminologii Microsoft Entra ID ta tożsamość jest określana jako tożsamość ludzka. Jest to typ tożsamości, który może łączyć się z bazami danych wśród wielu różnych typów, w tym, ale nie tylko:

    • Zarządzane tożsamości (przypisane przez system lub użytkownika)
    • Tożsamości obciążeń
    • Tożsamości aplikacji
    • Tożsamości urządzeń

    Te kroki koncentrują się na korzystaniu z tożsamości ludzkiej w celu nawiązania połączenia z bazą danych w usłudze Fabric, ale kroki są podobne w przypadku nawiązywania połączenia przy użyciu innego typu tożsamości. Aby uzyskać więcej informacji na temat tożsamości, zobacz Podstawy tożsamości.

Nawiązywanie połączenia przy użyciu zestawu Azure SDK

Na koniec użyj Azure SDK, aby połączyć się z bazą danych Cosmos DB w Fabric, korzystając z punktu końcowego i swojej tożsamości. Zestaw Azure SDK jest dostarczany z ujednoliconą biblioteką tożsamości , która automatycznie obsługuje uwierzytelnianie w Twoim imieniu. Ten krok wykorzystuje typ DefaultAzureCredential(), który automatycznie znajduje odpowiedni typ tożsamości w zależności od środowiska.

Uwaga / Notatka

Obiekty poświadczeń platformy Azure nie są obsługiwane w notesach usługi Microsoft Fabric. Nie można użyć DefaultAzureCredential do uwierzytelniania w usłudze Cosmos DB w Fabric. Aby uwierzytelnić się, musisz utworzyć niestandardowy obiekt poświadczeń w notesach. Aby uzyskać więcej informacji, zobacz Autentykacja w Cosmos DB w Microsoft Fabric za pomocą notebooków Fabric.

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)

Uwaga / Notatka

W tym przykładzie użyto pakietów azure-identity i azure-cosmos z PyPI. Zwróć uwagę na użycie azure.cosmos.aio dla obsługi asynchronicznej.

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);
}

Uwaga / Notatka

W tym przykładzie użyto pakietów @azure/identity i @azure/cosmos z npm.

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);
    }
}

Uwaga / Notatka

W tym przykładzie użyto pakietu Azure.Identity i pakietu Microsoft.Azure.Cosmos z NuGet.