Připojení ke službě Azure Cosmos DB pomocí spravované identity (Azure AI Search)
Tento článek vysvětluje, jak nastavit připojení indexeru k databázi Azure Cosmos DB pomocí spravované identity místo zadání přihlašovacích údajů v připojovací řetězec.
Můžete použít spravovanou identitu přiřazenou systémem nebo spravovanou identitu přiřazenou uživatelem. Spravované identity jsou přihlášení Microsoft Entra a vyžadují přiřazení rolí Azure pro přístup k datům ve službě Azure Cosmos DB.
Požadavky
Vytvořte spravovanou identitu pro vyhledávací službu.
Azure Cosmos DB for NoSQL. Volitelně můžete vynutit přístup na základě role jako jedinou metodu ověřování pro datová připojení nastavením
disableLocalAuth
protrue
váš účet Cosmos DB.
Omezení
Podpora indexeru pro kolekce Gremlin a MongoDB ve službě Azure Cosmos DB je aktuálně ve verzi Preview. Omezení verze Preview vyžaduje, aby se služba Azure AI Search připojila pomocí klíčů. Stále můžete nastavit spravovanou identitu a přiřazení role, ale Azure AI Search použije přiřazení role jenom k získání klíčů pro připojení. Toto omezení znamená, že pokud se indexery připojují k Gremlin nebo MongoDB, nemůžete nakonfigurovat přístup založený na rolích.
Vytvoření přiřazení role ve službě Azure Cosmos DB
Přihlaste se k webu Azure Portal a vyhledejte svůj účet Cosmos DB for NoSQL.
Vyberte Řízení přístupu (IAM) .
Vyberte Přidat a pak vyberte Přiřazení role.
V seznamu rolí funkcí úloh vyberte Čtenář účtů služby Cosmos DB.
Vyberte Další.
Vyberte Spravovanou identitu a pak vyberte Členové.
Filtrování podle spravovaných identit přiřazených systémem nebo spravovaných identit přiřazených uživatelem Měla by se zobrazit spravovaná identita, kterou jste dříve vytvořili pro vyhledávací službu. Pokud ho nemáte, přečtěte si téma Konfigurace vyhledávání pro použití spravované identity. Pokud jste ho už nastavili, ale není k dispozici, dejte mu pár minut.
Vyberte identitu a uložte přiřazení role.
Další informace najdete v tématu Konfigurace řízení přístupu na základě role pomocí Microsoft Entra ID pro váš účet Azure Cosmos DB.
Určení spravované identity v připojovací řetězec
Jakmile budete mít přiřazení role, můžete nastavit připojení ke službě Azure Cosmos DB for NoSQL, které funguje v rámci této role.
Indexery používají objekt zdroje dat pro připojení k externímu zdroji dat. Tato část vysvětluje, jak určit spravovanou identitu přiřazenou systémem nebo spravovanou identitu přiřazenou uživatelem ve zdroji dat připojovací řetězec. Další připojovací řetězec příklady najdete v článku o spravované identitě.
Tip
Připojení ke zdroji dat ke službě CosmosDB můžete vytvořit na webu Azure Portal, zadat spravovanou identitu přiřazenou systémem nebo uživatelem a pak zobrazit definici JSON a podívat se, jak se připojovací řetězec formuluje.
Spravovaná identita přiřazená systémem
Rozhraní REST API, Azure Portal a podpora sady .NET SDK pomocí spravované identity přiřazené systémem.
Když se připojujete se spravovanou identitou přiřazenou systémem, jedinou změnou definice zdroje dat je formát vlastnosti "credentials". Zadejte název databáze a ID prostředku, které nemá žádný klíč účtu ani heslo. Id prostředku musí obsahovat ID předplatného služby Azure Cosmos DB, skupinu prostředků a název účtu služby Azure Cosmos DB.
- U kolekcí SQL připojovací řetězec nevyžaduje "ApiKind".
- U kolekcí SQL přidejte "IdentityAuthType=AccessToken", pokud se jako jediná metoda ověřování vynucuje přístup na základě role. Nevztahuje se na kolekce MongoDB a Gremlin.
- Pro kolekce MongoDB přidejte do připojovací řetězec "ApiKind=MongoDb" a použijte rozhraní REST API ve verzi Preview.
- V případě grafů Gremlin přidejte do připojovací řetězec "ApiKind=Gremlin" a použijte rozhraní REST API ve verzi Preview.
Tady je příklad vytvoření zdroje dat pro indexování dat z účtu Cosmos DB pomocí rozhraní REST API pro vytvoření zdroje dat a spravované identity připojovací řetězec. Formát spravované identity připojovací řetězec je stejný pro rozhraní REST API, sadu .NET SDK a web Azure Portal.
POST https://[service name].search.windows.net/datasources?api-version=2024-07-01
{
"name": "my-cosmosdb-ds",
"type": "cosmosdb",
"credentials": {
"connectionString": "ResourceId=/subscriptions/[subscription-id]/resourceGroups/[rg-name]/providers/Microsoft.DocumentDB/databaseAccounts/[cosmos-account-name];Database=[cosmos-database];ApiKind=SQL;IdentityAuthType=[AccessToken | AccountKey]"
},
"container": { "name": "[my-cosmos-collection]", "query": null },
"dataChangeDetectionPolicy": null
}
Spravovaná identita přiřazená uživatelem
Když se připojujete pomocí spravované identity přiřazené uživatelem, existují dvě změny definice zdroje dat:
Za prvé, formát vlastnosti "credentials" je název databáze a ResourceId, který nemá žádný klíč účtu nebo heslo. Id prostředku musí obsahovat ID předplatného služby Azure Cosmos DB, skupinu prostředků a název účtu služby Azure Cosmos DB.
- U kolekcí SQL připojovací řetězec nevyžaduje "ApiKind".
- U kolekcí SQL přidejte "IdentityAuthType=AccessToken", pokud se jako jediná metoda ověřování vynucuje přístup na základě role. Nevztahuje se na kolekce MongoDB a Gremlin.
- Pro kolekce MongoDB přidejte do připojovací řetězec "ApiKind=MongoDb".
- V případě grafů Gremlin přidejte do připojovací řetězec "ApiKind=Gremlin".
Za druhé přidáte vlastnost identity, která obsahuje kolekci spravovaných identit přiřazených uživatelem. Při vytváření zdroje dat by se měla poskytnout pouze jedna spravovaná identita přiřazená uživatelem. Nastavte ho na "userAssignedIdentities".
Tady je příklad vytvoření objektu zdroje dat indexeru pomocí rozhraní REST API.
POST https://[service name].search.windows.net/datasources?api-version=2024-07-01
{
"name": "[my-cosmosdb-ds]",
"type": "cosmosdb",
"credentials": {
"connectionString": "ResourceId=/subscriptions/[subscription-id]/resourceGroups/[rg-name]/providers/Microsoft.DocumentDB/databaseAccounts/[cosmos-account-name];Database=[cosmos-database];ApiKind=SQL;IdentityAuthType=[AccessToken | AccountKey]"
},
"container": {
"name": "[my-cosmos-collection]", "query": null
},
"identity" : {
"@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
"userAssignedIdentity": "/subscriptions/[subscription-id]/resourcegroups/[rg-name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[my-user-managed-identity-name]"
},
"dataChangeDetectionPolicy": null
}
Informace o připojení a oprávnění ke vzdálené službě se během provádění indexeru ověřují za běhu. Pokud je indexer úspěšný, syntaxe připojení a přiřazení rolí jsou platné. Další informace najdete v tématu Spuštění nebo resetování indexerů, dovedností nebo dokumentů.
Řešení problému
V případě služby Azure Cosmos DB for NoSQL zkontrolujte, jestli má účet omezený přístup k vybraným sítím. Případné problémy s bránou firewall můžete vyloučit tak, že připojení vyzkoušíte bez omezení.
Pokud jste nedávno obměněli klíče účtu Služby Azure Cosmos DB pro Gremlin nebo MongoDB, musíte počkat až 15 minut, než spravovaná identita připojovací řetězec fungovat.