Nastavení připojení indexeru k Azure SQL pomocí spravované identity
Tento článek vysvětluje, jak nastavit připojení indexeru ke službě Azure SQL Database 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 (Preview). Spravované identity jsou přihlášení Microsoft Entra a vyžadují přiřazení rolí Azure pro přístup k datům v Azure SQL.
Požadavky
Vytvořte spravovanou identitu pro vyhledávací službu.
Přiřaďte roli správce Azure v SQL. Identita použitá pro připojení indexeru potřebuje oprávnění ke čtení. Abyste mohli udělit oprávnění ke čtení databáze, musíte být správcem Microsoft Entra se serverem ve službě SQL Database nebo službě SQL Managed Instance.
Měli byste být obeznámeni s koncepty a konfigurací indexeru.
1. Přiřazení oprávnění ke čtení databáze
Postupujte podle následujících kroků a přiřaďte ke čtení databáze oprávnění spravované identity přiřazené uživatelem.
Připojte se k sadě Visual Studio.
Ověřte se pomocí účtu Microsoft Entra.
Spusťte následující příkazy:
Zahrňte závorky kolem názvu vyhledávací služby nebo názvu spravované identity přiřazené uživatelem.
CREATE USER [insert your search service name here or user-assigned managed identity name] FROM EXTERNAL PROVIDER; EXEC sp_addrolemember 'db_datareader', [insert your search service name here or user-assigned managed identity name];
Pokud později změníte identitu vyhledávací služby nebo identitu přiřazenou uživatelem po přiřazení oprávnění, musíte odebrat členství role a odebrat uživatele v databázi SQL a potom opakovat přiřazení oprávnění. Odebrání členství role a uživatele můžete provést spuštěním následujících příkazů:
sp_droprolemember 'db_datareader', [insert your search service name or user-assigned managed identity name];
DROP USER IF EXISTS [insert your search service name or user-assigned managed identity name];
2. Přidání přiřazení role
V této části udělíte službě Azure AI Search oprávnění ke čtení dat z SQL Serveru. Podrobný postup najdete v tématu Přiřazování rolí Azure s využitím webu Azure Portal.
Na webu Azure Portal přejděte na stránku Azure SQL Serveru.
Vyberte Řízení přístupu (IAM) .
Vyberte Přidat > přiřazení role.
Na kartě Role vyberte příslušnou roli čtenáře.
Na kartě Členové vyberte Spravovaná identita a pak vyberte Vybrat členy.
Vyberte své předplatné Azure.
Pokud používáte spravovanou identitu přiřazenou systémem, vyberte spravovanou identitu přiřazenou systémem, vyhledejte vyhledávací službu a pak ji vyberte.
Pokud používáte spravovanou identitu přiřazenou uživatelem, vyberte spravovanou identitu přiřazenou uživatelem, vyhledejte název spravované identity přiřazené uživatelem a pak ji vyberte.
Na kartě Zkontrolovat a přiřadit vyberte možnost Zkontrolovat a přiřadit a přiřaďte roli.
3. Vytvoření zdroje dat
Vytvořte zdroj dat a zadejte spravovanou identitu přiřazenou systémem nebo spravovanou identitu přiřazenou uživatelem (Preview).
Spravovaná identita přiřazená systémem
Rozhraní REST API, Azure Portal a sada .NET SDK podporují spravovanou identitu přiřazenou 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". Zadáte počáteční název katalogu nebo databáze a ID prostředku, které neobsahuje klíč účtu ani heslo. Id prostředku musí obsahovat ID předplatného služby Azure SQL Database, skupinu prostředků služby SQL Database a název databáze SQL.
Tady je příklad vytvoření zdroje dat pro indexování dat z účtu úložiště 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
Content-Type: application/json
api-key: [admin key]
{
"name" : "sql-datasource",
"type" : "azuresql",
"credentials" : {
"connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Sql/servers/[SQL Server name];Connection Timeout=30;"
},
"container" : {
"name" : "my-table"
}
}
Spravovaná identita přiřazená uživatelem (Preview)
Rozhraní REST API 2021-04-04-30-preview a novější verze Preview podporují připojení na základě spravované identity přiřazené uživatelem. Když se připojujete pomocí spravované identity přiřazené uživatelem, existují dvě změny definice zdroje dat:
Nejprve je formát vlastnosti "credentials" název počátečního katalogu nebo databáze a ID prostředku, který nemá žádný klíč účtu nebo heslo. Id prostředku musí obsahovat ID předplatného služby Azure SQL Database, skupinu prostředků služby SQL Database a název databáze SQL. Jedná se o stejný formát jako spravovaná identita přiřazená systémem.
Za druhé přidejte 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í nejnovější verze rozhraní API verze Preview pro vytvoření nebo aktualizaci zdroje dat:
POST https://[service name].search.windows.net/datasources?api-version=2024-05-01-preview
Content-Type: application/json
api-key: [admin key]
{
"name" : "sql-datasource",
"type" : "azuresql",
"credentials" : {
"connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Sql/servers/[SQL Server name];Connection Timeout=30;"
},
"container" : {
"name" : "my-table"
},
"identity" : {
"@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
"userAssignedIdentity" : "/subscriptions/[subscription ID]/resourcegroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]"
}
}
4. Vytvoření indexu
Index určuje pole v dokumentu, atributech a dalších konstruktorech, které tvarují vyhledávací prostředí.
Tady je volání rozhraní REST API pro vytvoření indexu s prohledávatelným booktitle
polem:
POST https://[service name].search.windows.net/indexes?api-version=2024-07-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "my-target-index",
"fields": [
{ "name": "id", "type": "Edm.String", "key": true, "searchable": false },
{ "name": "booktitle", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false }
]
}
5. Vytvoření indexeru
Indexer propojuje zdroj dat s cílovým indexem vyhledávání a poskytuje plán pro automatizaci aktualizace dat. Po vytvoření indexu a zdroje dat můžete indexer vytvořit. Pokud je indexer úspěšný, syntaxe připojení a přiřazení rolí jsou platné.
Tady je volání rozhraní REST API pro vytvoření indexeru Indexeru s definicí indexeru Azure SQL. Indexer se spustí při odeslání požadavku.
POST https://[service name].search.windows.net/indexers?api-version=2024-07-01
Content-Type: application/json
api-key: [admin key]
{
"name" : "sql-indexer",
"dataSourceName" : "sql-datasource",
"targetIndexName" : "my-target-index"
}
Pokud se při pokusu indexeru o připojení ke zdroji dat zobrazí chyba s informací, že klient nemá povolený přístup k serveru, podívejte se na běžné chyby indexeru.