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.

Předpoklady

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.

  1. Připojení do sady Visual Studio

    Connect to Visual Studio

  2. Ověření pomocí účtu Microsoft Entra

    Authenticate

  3. 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];
    

    New query

    Execute query

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.

  1. Na webu Azure Portal přejděte na stránku Azure SQL Serveru.

  2. Vyberte Řízení přístupu (IAM) .

  3. Vyberte Přidat > přiřazení role.

    Screenshot that shows Access control (IAM) page with Add role assignment menu open.

  4. Na kartě Role vyberte příslušnou roli čtenáře.

  5. Na kartě Členové vyberte Spravovaná identita a pak vyberte Vybrat členy.

  6. Vyberte své předplatné Azure.

  7. 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.

  8. 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.

  9. 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=2020-06-30
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 verze 2021-04-30-preview podporuje připojení založená na spravované identitě 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ř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 pro vytvoření nebo aktualizaci zdroje dat ve verzi Preview:

POST https://[service name].search.windows.net/datasources?api-version=2021-04-30-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=2020-06-30
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=2020-06-30
Content-Type: application/json
api-key: [admin key]

{
    "name" : "sql-indexer",
    "dataSourceName" : "sql-datasource",
    "targetIndexName" : "my-target-index"

Řešení problému

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.

Můžete také vyloučit případné problémy s bránou firewall tím, že vyzkoušíte připojení a bez omezení.

Viz také