Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.
Förutsättningar
En befintlig Fabric-kapacitet
- Om du inte har Fabric-kapacitet starta en testversion av Fabric.
En befintlig Cosmos DB-databas i Fabric
- Om du inte redan har en skapar du en ny Cosmos DB-databas i Fabric.
En identitet med behörighet att läsa för databasen i Fabric
- Mer information om Fabric-behörigheter hittas under åtkomstkontroller.
Hämta Cosmos DB-slutpunkt
Hämta först slutpunkten för Cosmos DB-databasen i Infrastrukturresurser. Den här slutpunkten krävs för att ansluta med hjälp av Azure SDK.
Öppna Fabric-portalen (https://app.fabric.microsoft.com).
Gå till din befintliga Cosmos DB-databas.
Välj alternativet Inställningar i menyraden för databasen.
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.
Autentisera från en anteckningsbok
Fabric-notebooks kan inte skapa ett giltigt Azure-autentiseringsuppgift som används av Azure-tjänster. Användare autentiserar med Fabric NotebookUtils autentiseringsverktyg som kräver autentiseringsomfånget för Cosmos DB och genererar en token i strängformat. Detta kräver viss anpassad kod för att skapa ett giltigt Azure-autentiseringsobjekt.
Här är ett notebook-exempel som visar hur du gör detta.
Cell [1]:
#Install packages
%pip install azure-cosmos
Cell [2]:
#Imports and config values
import logging
from azure.cosmos.aio import CosmosClient
from azure.cosmos.exceptions import CosmosHttpResponseError
COSMOS_ENDPOINT = 'https://my-cosmos-endpoint.cosmos.fabric.microsoft.com:443/'
COSMOS_DATABASE_NAME = '{your-cosmos-artifact-name}'
COSMOS_CONTAINER_NAME = '{your-container-name}'
Innehållet i Cell 3 skapar ett FabricTokenCredential()-objekt och innehåller den kod som krävs för att skapa ett giltigt autentiseringsobjekt för Cosmos DB SDK från tokensträngen som genereras av autentiseringsverktyget Fabric NotebookUtils som krävs för att autentisera en användare.
Cell [3]:
# Custom TokenCredential implementation for Fabric authentication in a notebook
%pip install azure-core
from azure.core.credentials import TokenCredential, AccessToken
import base64
import json
import notebookutils
from datetime import datetime, timezone
class FabricTokenCredential(TokenCredential):
def get_token(self, *scopes: str, claims: Optional[str] = None, tenant_id: Optional[str] = None,
enable_cae: bool = False, **kwargs: Any) -> AccessToken:
access_token = notebookutils.credentials.getToken("https://cosmos.azure.com/")
parts = access_token.split(".")
if len(parts) < 2:
raise ValueError("Invalid JWT format")
payload_b64 = parts[1]
# Fix padding
padding = (-len(payload_b64)) % 4
if padding:
payload_b64 += "=" * padding
payload_json = base64.urlsafe_b64decode(payload_b64.encode("utf-8")).decode("utf-8")
payload = json.loads(payload_json)
exp = payload.get("exp")
if exp is None:
raise ValueError("exp claim missing in token")
return AccessToken(token=access_token, expires_on=exp)
Cell [4]:
# Create a Cosmos client with the FabricTokenCredential() and run a query
async with CosmosClient(endpoint, credential=FabricTokenCredential()) as client:
container = client.get_database_client(COSMOS_DATABASE_NAME).get_container_client(COSMOS_CONTAINER_NAME)
query_text = "SELECT * FROM c"
results = container.query_items(query=query_text)
items = []
async for item in results:
items.append(item)
for item in items:
print(item)