Partilhar via


Autenticar-se no Cosmos DB no Microsoft Fabric a partir dos serviços de hospedagem Azure

O Cosmos DB no Microsoft Fabric baseia-se exclusivamente na autenticação do Microsoft Entra ID e nas funções integradas do plano de dados para controlar a autenticação e a autorização. Neste guia, utiliza o Microsoft Entra ID e a sua conta com sessão iniciada para se conectar a um artefato do Cosmos DB no Microsoft Fabric.

Importante

As etapas são semelhantes ao processo usado para autenticar se estiveres a usar um principal de serviço, grupo ou outro tipo de identidade do Microsoft Entra ID. Para conceder a uma entidade de serviço a capacidade de se conectar ao Microsoft Fabric e ao seu banco de dados do Cosmos DB, habilite a configuração "Entidades de serviço podem usar APIs do Fabric no tenant do Fabric. Para mais informações, consulte Configurações de inquilino do Microsoft Fabric. Esta definição está ativada por defeito para novos clientes.

Pré-requisitos

  • Uma identidade com a permissão Read para o banco de dados na Malha

  • Azure CLI (Interface de Linha de Comando da Azure)

  • Python 3.12 ou posterior
  • Node.js 22 ou posterior
  • .NET SDK 9.0 ou posterior

Recuperar endpoint do Cosmos DB

Primeiro, obtenha o ponto de extremidade para o banco de dados do Cosmos DB no Fabric. Este ponto final é requerido para se conectar usando o SDK do Azure.

  1. Abra o portal do Fabric (https://app.fabric.microsoft.com).

  2. Navegue até o banco de dados existente do Cosmos DB.

  3. Selecione a opção Configurações na barra de menus do banco de dados.

    Captura de tela da opção da barra de menus 'Configurações' para um banco de dados no portal Fabric.

  4. Na caixa de diálogo de configurações, navegue até a seção Conexão . Em seguida, copie o valor do campo Endpoint para o banco de dados NoSQL do Cosmos DB. Você usa esse valor em etapas posteriores.

    Captura de ecrã da secção 'Ligação' da caixa de diálogo 'Configurações' de um banco de dados no portal Fabric.

Autenticar na CLI do Azure

Agora, autentique-se na CLI do Azure. O SDK do Azure pode usar vários mecanismos de autenticação diferentes para verificar sua identidade, mas a CLI do Azure é a opção mais universal e sem atrito em vários idiomas de desenvolvedor.

  1. No seu ambiente de desenvolvimento local, abra um terminal.

  2. Autentique-se na CLI do Azure usando az login.

    az login
    
  3. Siga as etapas interativas para executar a autenticação multifator (MFA) e selecione sua assinatura.

  4. Verifique se a sua conta iniciou sessão com êxito verificando a sua identidade.

    az ad signed-in-user show
    
  5. Observe a saída do comando anterior. O id campo contém o ID principal (objeto) da identidade conectada no momento.

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

    Observação

    Em termos de ID do Microsoft Entra, essa identidade é referida como sua identidade humana. É um tipo de identidade que pode se conectar a bancos de dados entre muitos tipos diferentes, incluindo, mas não limitado a:

    • Identidades gerenciadas (atribuídas pelo sistema ou pelo usuário)
    • Identidades de tarefas de trabalho
    • Identidades de aplicativos
    • Identidades de dispositivos

    Embora essas etapas se concentrem em usar sua identidade humana para se conectar ao banco de dados no Fabric, as etapas serão semelhantes se você estiver se conectando usando um tipo de identidade diferente. Para obter mais informações sobre identidades, consulte Fundamentos de identidade.

Conectar-se usando o SDK do Azure

Por fim, use o SDK do Azure para se conectar ao banco de dados do Cosmos DB na Malha usando o endpoint e a sua identidade. O SDK do Azure é fornecido com uma biblioteca de identidade unificada que lida automaticamente com a autenticação em seu nome. Esta etapa usa o DefaultAzureCredential() tipo, que localiza automaticamente o tipo de identidade correto com base no seu ambiente.

Observação

Os objetos credenciais Azure não são suportados em notebooks Microsoft Fabric. Não podes usar DefaultAzureCredential para autenticar no Cosmos DB no Fabric. Deve criar um objeto de credencial personalizado nos seus cadernos para autenticar. Para mais informações, consulte Autenticar para o Cosmos DB no Microsoft Fabric a partir dos 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)

Observação

Este exemplo usa os azure-identity pacotes e azure-cosmos do PyPI. Note o uso de azure.cosmos.aio para suporte assíncrono.

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

Observação

Este exemplo usa os pacotes @azure/identity e @azure/cosmos do 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);
    }
}

Observação

Este exemplo usa os Azure.Identity pacotes e Microsoft.Azure.Cosmos do NuGet.