Tutorial: Verbinden einer Funktions-App in Azure SQL mit verwalteter Identität und SQL-Bindungen

Azure Functions macht eine verwaltete Identität verfügbar. Hierbei handelt es sich um eine vorgefertigte Lösung zum Schutz des Zugriffs auf Azure SQL-Datenbank und andere Azure-Dienste. Verwaltete Identitäten erhöhen die Sicherheit der App, indem Geheimnisse (wie Anmeldeinformationen in Verbindungszeichenfolgen) aus der App entfernt werden. In diesem Tutorial fügen Sie einer Azure Function, von der Azure SQL-Bindungen verwendet werden, eine verwaltete Identität hinzu. Ein Azure Functions-Beispielprojekt mit SQL-Bindungen ist im ToDo-Back-End-Beispiel verfügbar.

Wenn Sie mit diesem Tutorial fertig sind, wird von der Azure Function eine Verbindung mit Azure SQL-Datenbank hergestellt, ohne dass Benutzername und Kennwort erforderlich sind.

Übersicht über die Schritte, die Sie ausführen:

Gewähren des Datenbankzugriffs für Microsoft Entra-Benutzer

Aktivieren Sie zunächst die Microsoft Entra-Authentifizierung für SQL-Datenbank, indem Sie einen Microsoft Entra-Benutzer als Administrator-Administrator des Servers zuweisen. Dieser Benutzer unterscheidet sich von dem Microsoft-Konto, das Sie bei der Registrierung für Ihr Azure-Abonnement verwendet haben. Es muss sich um eine*n Benutzer*in handeln, den bzw. die Sie in Microsoft Entra ID erstellt, importiert, synchronisiert oder eingeladen haben. Weitere Informationen zu zulässigen Microsoft Entra-Benutzer finden Sie unter Microsoft Entra-Features und -Einschränkungen in SQL-Datenbank.

Die Aktivierung der Microsoft Entra-Authentifizierung kann über das Azure-Portal, PowerShell oder die Azure CLI erfolgen. Anleitungen für die Azure CLI sind unten aufgeführt. Informationen zur Vorgehensweise per Azure-Portal und PowerShell finden Sie in der Azure SQL-Dokumentation zur Microsoft Entra-Authentifizierung.

  1. Wenn Ihr Microsoft Entra-Mandant noch keine Benutzer enthält, erstellen Sie diese, indem Sie die Schritte unter Hinzufügen oder Löschen von Benutzern mit Microsoft Entra ID ausführen.

  2. Ermitteln Sie die Objekt-ID des Microsoft Entra-Benutzers bzw. der Microsoft Entra-Benutzerin mithilfe von az ad user list, und ersetzen Sie den Platzhalter <user-principal-name>. Das Ergebnis wird in einer Variablen gespeichert.

    Für Azure CLI 2.37.0 und neuer:

    azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].id --output tsv)
    

    Für ältere Versionen der Azure-Befehlszeilenschnittstelle:

    azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].objectId --output tsv)
    

    Tipp

    Um die Liste aller Benutzerprinzipalnamen in Microsoft Entra ID anzuzeigen, führen Sie az ad user list --query [].userPrincipalName aus.

  3. Fügen Sie diesen Microsoft Entra-Benutzer mithilfe des Befehls az sql server ad-admin create in Cloud Shell als Active Directory-Administrator hinzu. Ersetzen Sie im folgenden Befehl <server-name> durch den Servernamen (ohne das Suffix .database.windows.net).

    az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id $azureaduser
    

Weitere Informationen zum Hinzufügen von Active Directory-Administratoren finden Sie unter Bereitstellen von Microsoft Entra-Administratoren für Ihren Server

Aktivieren einer vom System zugewiesenen verwalteten Identität in Azure Functions

In diesem Schritt wird der Azure Function eine vom System zugewiesene Identität hinzugefügt. In späteren Schritten erhält diese Identität Zugriff auf die SQL-Datenbank.

So aktivieren Sie die systemseitig zugewiesene verwaltete Identität im Azure-Portal

  1. Erstellen Sie wie gewohnt eine Azure Function im Portal. Navigieren Sie im Portal zu dieser App.
  2. Scrollen Sie im linken Navigationsbereich nach unten zur Gruppe „Einstellungen“.
  3. Wählen Sie Identität aus.
  4. Ändern Sie auf der Registerkarte Systemseitig zugewiesen den Status in Ein. Klicken Sie auf Speichern.

Screenshot der Funktions-App mit aktiviertem Status.

Weitere Informationen zum Aktivieren der vom System zugewiesenen verwalteten Identität über die Azure CLI oder über PowerShell finden Sie unter Verwenden von verwalteten Identitäten mit Azure Functions.

Tipp

Wechseln Sie für die benutzerseitig zugewiesene verwaltete Identität zur Registerkarte „Benutzerseitig zugewiesen“. Klicken Sie auf „Hinzufügen“, und wählen Sie eine verwaltete Identität aus. Weitere Informationen zum Erstellen einer benutzerseitig zugewiesenen verwalteten Identität finden Sie unter Benutzerseitig zugewiesene verwaltete Identitäten verwalten.

Gewähren von SQL-Datenbank-Zugriff für die verwaltete Identität

In diesem Schritt wird mit einem Microsoft Entra-Benutzerkonto eine Verbindung mit der SQL-Datenbank hergestellt und der verwalteten Identität Zugriff auf die Datenbank gewährt.

  1. Öffnen Sie Ihr bevorzugtes SQL-Tool, und melden Sie sich mit einem Microsoft Entra-Benutzerkonto an (z. B. mit dem Microsoft Entra-Benutzer, der als Administrator zugewiesen wurde). Dies kann in Cloud Shell mit dem SQLCMD-Befehl erreicht werden.

    sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30
    
  2. Führen Sie an der SQL-Eingabeaufforderung für die gewünschte Datenbank die folgenden Befehle aus, um der Funktion die nötigen Berechtigungen zu erteilen. Ein auf ein Objekt angewendeter

    CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [<identity-name>];
    ALTER ROLE db_datawriter ADD MEMBER [<identity-name>];
    GO
    

    <identity-name> ist der Name der verwalteten Identität in Microsoft Entra ID. Bei einer systemseitig zugewiesenen Identität wird immer der Namen der Funktions-App verwendet.

Konfigurieren der SQL-Verbindungszeichenfolge der Azure Function

Im letzten Schritt wird die SQL-Verbindungszeichenfolge der Azure Function für die Verwendung der Microsoft Entra-Authentifizierung mit verwalteter Identität konfiguriert.

Der Name der Einstellung für die Verbindungszeichenfolge wird im Funktionscode als Bindungsattribut „ConnectionStringSetting“ identifiziert, wie in den Attributen und Anmerkungen der SQL-Eingabebindung ersichtlich.

In den Anwendungseinstellungen der Funktions-App muss die Einstellung der SQL-Verbindungszeichenfolge aktualisiert werden, damit sie folgendes Format aufweist:

Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; Database=testdb

testdb ist der Name der Datenbank, mit der eine Verbindung hergestellt wird, und demo.database.windows.net ist der Name des Servers, mit dem eine Verbindung hergestellt wird.

Tipp

Verwenden Sie Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; User Id=ClientIdOfManagedIdentity; Database=testdb für die benutzerseitig zugewiesene verwaltete Identität.

Nächste Schritte