Autenticera till Cosmos DB i Microsoft Fabric från Azure-tjänster

Cosmos DB i Microsoft Fabric förlitar sig uteslutande på Microsoft Entra ID-autentisering och inbyggda dataplansroller för att hantera autentisering och auktorisering. I den här guiden använder du Microsoft Entra-ID och ditt inloggade konto för att ansluta till en Cosmos DB-artefakt i Microsoft Fabric.

Viktigt!

Stegen liknar den process som används för att autentisera om du använder tjänstens huvudnamn, grupp eller annan typ av Microsoft Entra-ID-identitet. Om du vill ge ett huvudnamn för tjänsten möjlighet att ansluta till Microsoft Fabric och Cosmos DB-databasen, aktiverar du inställningen "Tjänstens huvudnamn kan använda Fabric-API:er i Fabric-klientorganisationen. Mer information finns i Klientinställningar för Microsoft Fabric. Den här inställningen är aktiverad som standard för nya kunder.

Förutsättningar

  • En identitet med läsbehörighet för databasen i Fabric

  • Azure CLI (kommandoradsgränssnittet för Azure)

  • Python 3.12 eller senare
  • Node.js 22 eller senare
  • .NET SDK 9.0 eller senare

Hämta Cosmos DB-slutpunkt

Hämta först slutpunkten för Cosmos DB-databasen i Fabric. Den här slutpunkten krävs för att ansluta med hjälp av Azure SDK.

  1. Öppna Fabric-portalen (https://app.fabric.microsoft.com).

  2. Gå till din befintliga Cosmos DB-databas.

  3. Välj alternativet Inställningar i menyraden för databasen.

    Skärmbild av menyradsalternativet Inställningar för en databas i Infrastrukturportalen.

  4. I dialogrutan Inställningar navigerar du till avsnittet Anslutning . Kopiera sedan värdet för fältet Slutpunkt för Cosmos DB NoSQL-databas . Du använder det här värdet i senare steg.

    Skärmbild av avsnittet

Autentisera till Azure CLI

Autentisera dig nu till Azure CLI. Azure SDK kan använda olika autentiseringsmekanismer för att verifiera din identitet, men Azure CLI är det mest universella och friktionsfria alternativet på olika utvecklarspråk.

  1. Öppna en terminal i din lokala utvecklingsmiljö.

  2. Autentisera till Azure CLI med .az login

    az login
    
  3. Följ de interaktiva stegen för att utföra multifaktorautentisering (MFA) och välj din prenumeration.

  4. Kontrollera att ditt konto är inloggat genom att verifiera din identitet.

    az ad signed-in-user show
    
  5. Observera utdata från föregående kommando. Fältet id innehåller huvud-ID:t (objekt) för den för närvarande inloggade identiteten.

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

    Anmärkning

    I Microsoft Entra-ID-termer kallas den här identiteten för din mänskliga identitet. Det är en typ av identitet som kan ansluta till databaser bland många olika typer, inklusive, men inte begränsat till:

    • Hanterade identiteter (system eller användartilldelade)
    • Belastningsidentiteter
    • Programidentiteter
    • Enhetsidentiteter

    Dessa steg fokuserar på att använda din mänskliga identitet för att ansluta till databasen i Fabric, men stegen är likartade om du ansluter med en annan identitetstyp. Mer information om identiteter finns i grunderna för identiteter.

Ansluta med Azure SDK

Slutligen använder du Azure SDK för att ansluta till Cosmos DB-databasen i Fabric med hjälp av slutpunkten och din identitet. Azure SDK levereras med ett enhetligt identitetsbibliotek som automatiskt hanterar autentisering åt dig. Det här steget använder typen DefaultAzureCredential() , som automatiskt hittar rätt identitetstyp baserat på din miljö.

Anmärkning

Azure-autentiseringsobjekt stöds inte i Microsoft Fabric-notebook-filer. Du kan inte använda DefaultAzureCredential för att autentisera mot Cosmos DB i Fabric. Du måste skapa ett anpassat autentiseringsobjekt i dina notebook-filer för att autentisera. För mer information, se Autentisera till Cosmos DB i Microsoft Fabric från 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)

Anmärkning

I det här exemplet används paketen azure-identity och azure-cosmos från PyPI. Observera användningen av azure.cosmos.aio för asynkront stöd.

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

Anmärkning

I det här exemplet används paketen @azure/identity och @azure/cosmos från 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);
    }
}

Anmärkning

I det här exemplet används paketen Azure.Identity och Microsoft.Azure.Cosmos från NuGet.