Microsoft Fabric 中的 Cosmos DB 完全依賴 Microsoft Entra ID 認證及內建的資料平面角色來管理認證與授權。 在本指南中,你會使用 Microsoft Entra ID 和已登入的帳號,連接到 Microsoft Fabric 中的 Cosmos DB 元件。
這很重要
如果您使用的是 服務主體、群組或其他類型的 Microsoft Entra ID 身分識別,這些步驟類似於用來驗證的過程。 若要授予服務主體連線到 Microsoft Fabric 和 Cosmos DB 資料庫的能力,請啟用 Fabric 租使用者中的 「服務主體可以使用 Fabric API 設定」。 如需詳細資訊,請參閱 Microsoft Fabric 租用戶設定。 此設定預設為新客戶啟用。
先決條件
現有的網狀架構容量
- 如果您沒有 Fabric 容量, 請啟動 Fabric 試用版。
Fabric 中現有的 Cosmos DB 資料庫
具有 Fabric 中資料庫 讀取 許可權的身分識別
- 如需網狀架構許可權的詳細資訊,請參閱 訪問控制。
Azure CLI
- 如果您還沒有它, 請安裝 Azure CLI。
- Python 3.12 或更新版本
- Node.js 22 或更新版本
- .NET SDK 9.0 或更新版本
擷取 Cosmos DB 端點
首先,在 Fabric 中取得 Cosmos DB 資料庫的端點。 需要此端點才能使用 Azure SDK 進行連線。
開啟網狀架構入口網站 (https://app.fabric.microsoft.com)。
流覽至現有的 Cosmos DB 資料庫。
選取資料庫選單列中的 [ 設定 ] 選項。
在 [設定] 對話框中,流覽至 [ 連線] 區段。 然後,複製 [Cosmos DB NoSQL 資料庫端點 ] 字段的值。 您可以在後面的步驟中使用此值。
向 Azure CLI 進行驗證
現在,向 Azure CLI 進行驗證。 Azure SDK 可以使用各種不同的驗證機制來驗證您的身分識別,但 Azure CLI 是各種開發人員語言中最通用且無摩擦的選項。
在您的本機開發環境中,開啟終端機。
使用
az login向 Azure CLI 進行驗證。az login請遵循互動式步驟來執行多重要素驗證 (MFA),然後選取您的訂用帳戶。
藉由查詢您的身分識別,確認您的帳戶已成功登入。
az ad signed-in-user show觀察上一個命令的輸出。 欄位
id包含目前登入身分識別的主體(物件)標識碼。{ "@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>" }備註
在 Microsoft Entra ID 的術語中,此身份被稱為您的 用戶身份。 這是一種身分識別類型,可連線到許多不同類型的資料庫,包括但不限於:
- 受控識別 (系統或使用者指派)
- 工作負載身分識別
- 應用程式身分識別
- 裝置身分識別
雖然這些步驟著重於使用您的人類身分識別來連線到 Fabric 中的資料庫,但如果您使用不同的身分識別類型進行連線,步驟會很類似。 如需身分識別的詳細資訊,請參閱 身分識別基本概念。
使用 Azure SDK 進行連線
最後,使用 Azure SDK,使用端點和身分識別連線到 Fabric 中的 Cosmos DB 資料庫。 Azure SDK 隨附統一 身分識別 庫,可代表您自動處理驗身。 此步驟會使用 DefaultAzureCredential() 類型,根據您的環境自動尋找正確的身份類型。
備註
Microsoft Fabric 筆記本不支援 Azure 憑證物件。 你無法使用 DefaultAzureCredential 在 Fabric 驗證至 Cosmos DB。 你必須在筆記本中建立一個自訂的憑證物件來進行認證。 欲了解更多資訊,請參閱 從 Fabric 筆記本中對 Microsoft Fabric 的 Cosmos DB 進行認證。
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)
備註
此範例會使用 PyPI 中的 azure-identity 和 azure-cosmos 套件。 請注意使用azure.cosmos.aio以支援非同步處理。
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);
}
備註
此範例會使用來自 npm 的 @azure/identity 和 @azure/cosmos 套件。
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);
}
}
備註
此範例會使用 NuGet 中的 Azure.Identity 和 Microsoft.Azure.Cosmos 套件。