Freigeben über


Einrichten einer Indexerverbindung mit Azure SQL Managed Instance mithilfe einer verwalteten Identität

In diesem Artikel wird beschrieben, wie Sie eine Indexerverbindung von Azure KI Search Indexer mit einer SQL Managed Instance mithilfe einer verwalteten Identität einrichten, anstatt Anmeldeinformationen in der Verbindungszeichenfolge anzugeben.

Sie können eine systemseitig zugewiesene verwaltete Identität oder eine benutzerseitig zugewiesene verwaltete Identität (Vorschau) verwenden. Verwaltete Identitäten sind Microsoft Entra-Anmeldungen und erfordern Azure-Rollenzuweisungen für den Zugriff auf Daten in SQL Managed Instance.

Bevor Sie mehr über dieses Feature erfahren, sollten Sie wissen, was ein Indexer ist und wie Sie einen Indexer für Ihre Datenquelle einrichten. Weitere Informationen finden Sie unter den folgenden Links:

Voraussetzungen

Zuweisen von Berechtigungen zum Lesen der Datenbank

Führen Sie die folgenden Schritte aus, um dem Suchdienst oder der benutzerseitig zugewiesenen verwalteten Identität die Berechtigung zum Lesen der SQL-Datenbank zuzuweisen.

  1. Verbinden durch SQL Server Management Studio (SSMS) mithilfe einer der folgenden Methoden an Ihre SQL Managed Instance:

  2. Authentifizieren mit Ihrem Microsoft Entra-Konto.

    Screenshot des Dialogfelds „Mit Server verbinden“

  3. Suchen Sie im linken Bereich die SQL-Datenbank, die Sie als Datenquelle für die Indizierung verwenden, und klicken Sie mit der rechten Maustaste darauf. Wählen Sie Neue Abfrage aus.

    Screenshot der neuen SQL-Abfrage

  4. Kopieren Sie im T-SQL-Fenster die folgenden Befehle und fügen Sie die Klammern um den Suchdienstnamen ein. Wählen Sie "Ausführen" aus.

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

    Screenshot der Ausführung der SQL-Abfrage

Wenn Sie die Suchdienstidentität oder die vom Benutzer zugewiesene Identität zu einem späteren Zeitpunkt nach dem Zuweisen von Berechtigungen ändern, müssen Sie die Rollenmitgliedschaft entfernen und den Benutzer aus der SQL-Datenbank entfernen. Wiederholen Sie anschließend die Berechtigungszuweisung. Die Rollenmitgliedschaft und der Benutzer können durch Ausführen der folgenden Befehle entfernt werden:

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

Hinzufügen einer Rollenzuweisung

In diesem Schritt erteilen Sie Ihrem Azure AI Search-Dienst die Berechtigung zum Lesen von Daten aus Ihrer SQL Managed Instance.

  1. Navigieren Sie im Azure-Portal zu Ihrer SQL Managed Instance-Seite.

  2. Wählen Sie Zugriffssteuerung (IAM) aus.

  3. Wählen Sie Hinzufügen und dann Rollenzuweisung hinzufügen aus.

    Screenshot der Seite „Zugriffssteuerung“

  4. Wählen Sie die Leser-Rolle aus.

  5. Lassen Sie Zugriff zuweisen an bei Microsoft Entra-Benutzer, -Gruppe oder -Dienstprinzipal.

  6. Wenn Sie eine systemseitig zugewiesene verwaltete Identität verwenden, suchen Sie nach Ihrem Suchdienst, und wählen Sie ihn aus. Wenn Sie eine benutzerseitig zugewiesene verwaltete Identität verwenden, suchen Sie nach dem Namen der benutzerseitig zugewiesenen verwalteten Identität, und wählen Sie sie aus. Wählen Sie Speichern aus.

    Beispiel einer Azure SQL Managed Instance, die eine benutzerseitig zugewiesene verwaltete Identität verwendet:

    Screenshot der Memberrollenzuweisung

Die Datenquelle erstellen

Erstellen der Datenquelle und weisen Sie eine systemseitig zugewiesene verwaltete Identität zu.

Systemseitig zugewiesene verwaltete Identität

Die systemseitig zugewiesene verwaltete Identität wird von der REST-API, dem Azure-Portal und dem .NET SDK unterstützt.

Wenn Sie eine Verbindung mit einer systemseitig zugewiesenen verwalteten Identität herstellen, besteht die einzige Änderung an der Datenquellendefinition im Format der Eigenschaft „credentials“. Geben Sie den Namen für einen Anfangskatalog oder eine Anfangsdatenbank und eine ResourceId an, der kein Kontoschlüssel und kein Kennwort zugewiesen sind. Die ResourceId muss die Abonnement-ID von SQL Managed Instance, die Ressourcengruppe der SQL Managed Instance und den Namen der SQL-Datenbank enthalten.

Hier finden Sie ein Beispiel für das Erstellen einer Datenquelle zum Indizieren von Daten aus einem Speicherkonto mithilfe der REST-API zum Erstellen von Datenquellen und einer Verbindungszeichenfolge für verwaltete Identitäten. Das Format der Verbindungszeichenfolge für verwaltete Identitäten ist für die REST-API, das .NET SDK und das Azure-Portal identisch.

POST https://[service name].search.windows.net/datasources?api-version=2024-07-01
Content-Type: application/json
api-key: [admin key]

{
    "name" : "sql-mi-datasource",
    "type" : "azuresql",
    "credentials" : { 
        "connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourcegroups/[resource group name]/providers/Microsoft.Sql/managedInstances/[SQL Managed Instance name];Connection Timeout=100;"
    },
    "container" : { 
        "name" : "my-table" 
    }
} 

Erstellen des Index

Mit dem Index werden die Felder in einem Dokument, Attribute und andere Konstrukte für die Suchoberfläche angegeben.

Hier sehen Sie einen „Erstellen eines Index“-REST-API-Aufruf mit einem suchbaren booktitle-Feld:

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 }
    ]
}

Erstellen des Indexers

Ein Indexer verbindet eine Datenquelle mit einem Zielsuchindex und stellt einen Zeitplan zur Automatisierung der Datenaktualisierung bereit. Nach der Erstellung von Index und Datenquelle können Sie den Indexer erstellen.

Hier sehen Sie einen REST-API-Aufruf Indexer erstellen mit einer Azure SQL-Indexerdefinition. Der Indexer wird ausgeführt, wenn Sie die Anforderung übermitteln.

POST https://[service name].search.windows.net/indexers?api-version=2024-07-01
Content-Type: application/json
api-key: [admin key]

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

Problembehandlung

Wenn beim Versuch des Indexers, eine Verbindung mit der Datenquelle herzustellen, eine Fehlermeldung angezeigt wird, in der angegeben wird, dass der Zugriff des Clients auf den Server nicht zulässig ist, finden Sie entsprechende Informationen unter den häufigen Fehlern bei Indexern.

Ferner können Sie Firewallprobleme ausschließen, indem Sie versuchen, die Verbindung mit und ohne Einschränkungen herzustellen.

Siehe auch