Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Cosmos DB ve službě Microsoft Fabric využívá výhradně ověřování Microsoft Entra ID a předdefinované role roviny dat ke správě ověřování a autorizace. V této příručce použijete Id Microsoft Entra a váš přihlášený účet pro připojení k artefaktu Cosmos DB v Microsoft Fabric.
Požadavky
Existující kapacita Fabric
- Pokud kapacitu Fabric nemáte, spusťte zkušební verzi Fabric.
Existující databáze Cosmos DB v systému Fabric
- Pokud ji ještě nemáte, vytvořte novou databázi Cosmos DB ve Fabric.
Identita s oprávněním ke čtení pro databázi ve Fabric.
- Další informace o oprávněních v systému Fabric viz Řízení přístupu.
Načtení koncového bodu Cosmos DB
Nejprve získejte koncový bod pro databázi Cosmos DB ve službě Fabric. Tento koncový bod se vyžaduje pro připojení pomocí sady Azure SDK.
Otevřete portál Fabric (https://app.fabric.microsoft.com).
Přejděte do existující databáze Cosmos DB.
V řádku nabídek databáze vyberte možnost Nastavení .
V dialogovém okně nastavení přejděte do části Připojení . Pak zkopírujte hodnotu pole koncového bodu pro databázi NoSQL služby Cosmos DB. Tuto hodnotu použijete v pozdějších krocích.
Ověření z notebooku
Poznámkové bloky Fabric nemají způsob, jak vytvořit platný objekt oprávnění Azure používaný službami Azure. Uživatelé se ověřují pomocí nástrojů přihlašovacích údajů Fabric NotebookUtils , které vyžadují obor ověřování pro Službu Cosmos DB a vytvoří token ve formátu řetězce. K vytvoření platného objektu přihlašovacích údajů Azure vyžaduje nějaký vlastní kód.
Tady je ukázka poznámkového bloku, která ukazuje, jak to udělat.
Buňka [1]:
#Install packages
%pip install azure-cosmos
Buňka [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}'
Obsah buňky 3 vytvoří objekt FabricTokenCredential() a obsahuje kód potřebný k vytvoření platného objektu přihlašovacích údajů pro sadu SDK služby Cosmos DB z řetězce tokenu vygenerovaného nástroji přihlašovacích údajů Fabric NotebookUtils , které jsou nutné k ověření uživatele.
Buňka [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)
Buňka [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)