Partager via


S’authentifier auprès de Cosmos DB dans Microsoft Fabric à partir des services hôtes Azure

Cosmos DB dans Microsoft Fabric s’appuie exclusivement sur l’authentification microsoft Entra ID et les rôles de plan de données intégrés pour gérer l’authentification et l’autorisation. Dans ce guide, vous utilisez l’ID Microsoft Entra et votre compte connecté pour vous connecter à un artefact Cosmos DB dans Microsoft Fabric.

Important

Les étapes sont similaires au processus utilisé pour s’authentifier si vous utilisez un principal de service, un groupe ou un autre type d’identité d’ID Microsoft Entra. Pour accorder à un principal de service la possibilité de se connecter à Microsoft Fabric et à votre base de données Cosmos DB, activez le paramètre « Les principaux de service peuvent utiliser le paramètre API Fabric dans le locataire Fabric. Pour plus d’informations, consultez les paramètres du client Microsoft Fabric. Ce paramètre est activé par défaut pour les nouveaux clients.

Conditions préalables

  • Identité avec la permission Lecture de la base de données de Fabric

  • Azure CLI (Interface de ligne de commande Azure)

  • Python 3.12 ou version ultérieure
  • Node.js 22 ou version ultérieure
  • Kit sdk .NET 9.0 ou version ultérieure

Récupérer le point de terminaison Cosmos DB

Tout d’abord, obtenez le point de terminaison de la base de données Cosmos DB dans Fabric. Ce point de terminaison est requis pour se connecter à l’aide du Kit de développement logiciel (SDK) Azure.

  1. Ouvrez le portail Fabric (https://app.fabric.microsoft.com).

  2. Accédez à votre base de données Cosmos DB existante.

  3. Sélectionnez l’option Paramètres dans la barre de menus de la base de données.

    Capture d’écran de l’option de barre de menus « Paramètres » pour une base de données dans le portail Fabric.

  4. Dans la boîte de dialogue paramètres, accédez à la section Connexion . Ensuite, copiez la valeur du champ point de terminaison pour la base de données NoSQL Cosmos DB. Vous utilisez cette valeur à l’étape ultérieure[s].

    Capture d’écran de la section « Connexion » de la boîte de dialogue « Paramètres » d’une base de données dans le portail Fabric.

S’authentifier auprès d’Azure CLI

À présent, authentifiez-vous auprès d’Azure CLI. Le Kit de développement logiciel (SDK) Azure peut utiliser différents mécanismes d’authentification pour vérifier votre identité, mais Azure CLI est l’option la plus universelle et sans friction entre différents langages de développement.

  1. Dans votre environnement de développement local, ouvrez un terminal.

  2. S’authentifier auprès d’Azure CLI à l’aide de az login.

    az login
    
  3. Suivez les étapes interactives pour effectuer l’authentification multifacteur (MFA) et sélectionnez votre abonnement.

  4. Vérifiez que votre compte est connecté correctement en interrogeant votre identité.

    az ad signed-in-user show
    
  5. Observez la sortie de la commande précédente. Le id champ contient l’ID principal (objet) de l’identité actuellement connectée.

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

    Remarque

    Dans les termes de Microsoft Entra ID, cette identité est appelée identité humaine. Il s’agit d’un type d’identité qui peut se connecter à des bases de données parmi de nombreux types différents, y compris, mais pas limité à :

    • Identités managées (système ou affectées par l’utilisateur)
    • Identités de charge de travail
    • Identités d’application
    • Identités d’appareil

    Bien que ces étapes se concentrent sur l’utilisation de votre identité humaine pour se connecter à la base de données dans Fabric, les étapes sont similaires si vous vous connectez à l’aide d’un autre type d’identité. Pour plus d’informations sur les identités, consultez les principes fondamentaux de l’identité.

Se connecter à l’aide de l'Azure SDK

Enfin, utilisez le Kit de développement logiciel (SDK) Azure pour vous connecter à la base de données Cosmos DB dans Fabric à l’aide du point de terminaison et de votre identité. Le Kit de développement logiciel (SDK) Azure est fourni avec une bibliothèque d’identité unifiée qui gère automatiquement l’authentification en votre nom. Cette étape utilise le DefaultAzureCredential() type, qui recherche automatiquement le type d’identité approprié en fonction de votre environnement.

Remarque

Les objets d'identification Azure ne sont pas supportés dans les notebooks Microsoft Fabric. Vous ne pouvez pas utiliser DefaultAzureCredential pour vous authentifier auprès de Cosmos DB dans Fabric. Vous devez créer un objet d'authentification personnalisé dans vos notebooks pour vous authentifier. Pour plus d’informations, consultez s’authentifier auprès de Cosmos DB dans Microsoft 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)

Remarque

Cet exemple utilise les paquets azure-identity et azure-cosmos de PyPI. Notez l’utilisation de azure.cosmos.aio pour la prise en charge asynchrone.

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

Remarque

Cet exemple utilise les packages @azure/identity et @azure/cosmos de 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);
    }
}

Remarque

Cet exemple utilise les packages Azure.Identity et Microsoft.Azure.Cosmos de NuGet.