Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Wymagania wstępne
Istniejąca zdolność sieci Fabric
- Jeśli nie masz pojemności Fabric, uruchom wersję próbną usługi Fabric.
Istniejąca baza danych Cosmos DB na platformie Fabric
- Jeśli jeszcze go nie masz, utwórz nową bazę danych Cosmos DB w usłudze Fabric.
Tożsamość z uprawnieniem Odczyt dla bazy danych w Fabric
- Aby uzyskać więcej informacji na temat uprawnień Fabric, zobacz kontrola dostępu.
Pobierz punkt końcowy usługi 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.
Otwórz portal Fabric (https://app.fabric.microsoft.com).
Przejdź do istniejącej bazy danych Cosmos DB.
Wybierz opcję Ustawienia na pasku menu bazy danych.
W oknie dialogowym ustawień przejdź do sekcji Połączenie . Następnie skopiuj wartość pola Punkt końcowy dla bazy danych NoSQL usługi Cosmos DB . Ta wartość jest używana w późniejszym kroku lub krokach.
Uwierzytelnianie z notesu
Notatniki Fabric nie mają możliwości utworzenia prawidłowego obiektu poświadczeń Azure używanego przez usługi Azure. Użytkownicy uwierzytelniają się przy użyciu narzędzi poświadczeń Fabric NotebookUtils , które wymagają zakresu uwierzytelniania dla usługi Cosmos DB i generują token w formacie ciągu. Wymaga to wykonania kodu niestandardowego w celu utworzenia prawidłowego obiektu poświadczeń platformy Azure.
Oto przykładowy notes, który pokazuje, jak to zrobić.
Komórka [1]:
#Install packages
%pip install azure-cosmos
Komórka [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}'
Zawartość komórki 3 tworzy obiekt FabricTokenCredential() i zawiera kod niezbędny do utworzenia prawidłowego obiektu poświadczeń dla zestawu SDK usługi Cosmos DB z ciągu tokenu wygenerowanego przez narzędzia poświadczeń Fabric NotebookUtils wymagane do uwierzytelnienia użytkownika.
Komórka [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)
Komórka [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)