Samouczek: nawiązywanie połączenia z bazami danych platformy Azure z usługi App Service bez wpisów tajnych przy użyciu tożsamości zarządzanej
Artykuł
Usługa App Service oferuje wysoce skalowalną i samonaprawialną usługę hostingu w Internecie na platformie Azure. Zapewnia również tożsamość zarządzaną dla aplikacji, która jest rozwiązaniem kluczowym dla zabezpieczania dostępu do baz danych platformy Azure, w tym:
Tożsamości zarządzane w usłudze App Service zwiększają bezpieczeństwo aplikacji przez wyeliminowanie wpisów tajnych z aplikacji, takich jak poświadczenia w parametrach połączenia. W tym samouczku pokazano, jak nawiązać połączenie z wyżej wymienionymi bazami danych z usługi App Service przy użyciu tożsamości zarządzanych.
Czego nauczysz się:
Skonfiguruj użytkownika firmy Microsoft Entra jako administratora dla bazy danych platformy Azure.
Połącz się z bazą danych jako użytkownik microsoft Entra.
Skonfiguruj tożsamość zarządzaną przypisaną przez system lub przypisaną przez użytkownika dla aplikacji usługi App Service.
Udziel dostępu do bazy danych tożsamości zarządzanej.
Połącz się z bazą danych platformy Azure z poziomu kodu (.NET Framework 4.8, .NET 6, Node.js, Python, Java) przy użyciu tożsamości zarządzanej.
Połącz się z bazą danych platformy Azure ze środowiska deweloperskiego przy użyciu użytkownika Firmy Microsoft Entra.
Utwórz aplikację w usłudze App Service na podstawie platformy .NET, Node.js, python lub Java.
Utwórz serwer bazy danych za pomocą usługi Azure SQL Database, usługi Azure Database for MySQL lub usługi Azure Database for PostgreSQL.
Należy zapoznać się ze standardowym wzorcem łączności (z nazwą użytkownika i hasłem) i mieć możliwość pomyślnego nawiązania połączenia z poziomu wybranej bazy danych z poziomu aplikacji usługi App Service.
Przygotowanie środowiska do interfejsu wiersza polecenia platformy Azure.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
1. Instalowanie rozszerzenia bez hasła łącznika usługi
Zainstaluj najnowsze rozszerzenie bez hasła łącznika usługi dla interfejsu wiersza polecenia platformy Azure:
az extension add --name serviceconnector-passwordless --upgrade
Uwaga
Sprawdź rozszerzenie "serviceconnector-passwordless" w wersji "2.0.2" lub nowszej, uruchamiając polecenie az version. Aby uaktualnić wersję rozszerzenia, może być konieczne uaktualnienie interfejsu wiersza polecenia platformy Azure.
2. Tworzenie połączenia bez hasła
Następnie utwórz połączenie bez hasła z łącznikiem usługi.
Napiwek
Witryna Azure Portal może pomóc w redagowania poniższych poleceń. W witrynie Azure Portal przejdź do zasobu usługi aplikacja systemu Azure, wybierz pozycję Łącznik usługi z menu po lewej stronie i wybierz pozycję Utwórz. Wypełnij formularz wszystkimi wymaganymi parametrami. Platforma Azure automatycznie generuje polecenie tworzenia połączenia, które można skopiować do użycia w interfejsie wiersza polecenia lub wykonać w usłudze Azure Cloud Shell.
W przypadku usługi Azure Database for MySQL — serwer elastyczny należy najpierw ręcznie skonfigurować uwierzytelnianie firmy Microsoft Entra, które wymaga oddzielnej tożsamości zarządzanej przypisanej przez użytkownika i określonych uprawnień programu Microsoft Graph. Nie można zautomatyzować tego kroku.
Udzielanie uprawnień do wstępnie utworzonych tabel
Następnie, jeśli utworzono tabele i sekwencje na serwerze elastycznym PostgreSQL przed użyciem łącznika usługi, musisz nawiązać połączenie jako właściciel i udzielić uprawnień do <aad-username> utworzenia przez łącznik usługi. Nazwa użytkownika z parametry połączenia lub konfiguracji ustawionej przez łącznik usługi powinna wyglądać następująco: aad_<connection name>. Jeśli używasz witryny Azure Portal, wybierz przycisk rozwijania obok Service Type kolumny i pobierz wartość. Jeśli używasz interfejsu wiersza polecenia platformy Azure, sprawdź configurations dane wyjściowe polecenia interfejsu wiersza polecenia.
Następnie wykonaj zapytanie, aby udzielić uprawnienia
az extension add --name rdbms-connect
az postgres flexible-server execute -n <postgres-name> -u <owner-username> -p "<owner-password>" -d <database-name> --querytext "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO \"<aad-username>\";GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO \"<aad username>\";"
Element <owner-username> i <owner-password> jest właścicielem istniejącej tabeli, która może udzielić uprawnień innym osobom. <aad-username> to użytkownik utworzony przez łącznik usługi. Zastąp je rzeczywistą wartością.
Zweryfikuj wynik za pomocą polecenia :
az postgres flexible-server execute -n <postgres-name> -u <owner-username> -p "<owner-password>" -d <database-name> --querytext "SELECT distinct(table_name) FROM information_schema.table_privileges WHERE grantee='<aad-username>' AND table_schema='public';" --output table
To polecenie łącznika usługi wykonuje następujące zadania w tle:
Włącz tożsamość zarządzaną przypisaną przez system lub przypisz tożsamość użytkownika dla aplikacji <server-name> hostowanej przez usługę aplikacja systemu Azure.
Ustaw administratora firmy Microsoft Entra na bieżącego zalogowanego użytkownika.
Dodaj użytkownika bazy danych dla przypisanej przez system tożsamości zarządzanej lub tożsamości zarządzanej przypisanej przez użytkownika. Przyznaj temu użytkownikowi wszystkie uprawnienia bazy danych <database-name> . Nazwę użytkownika można znaleźć w parametry połączenia w poprzednich danych wyjściowych polecenia.
Ustaw konfiguracje o nazwie AZURE_MYSQL_CONNECTIONSTRING, AZURE_POSTGRESQL_CONNECTIONSTRINGlub AZURE_SQL_CONNECTIONSTRING na zasób platformy Azure na podstawie typu bazy danych.
W przypadku usługi App Service konfiguracje są ustawiane w bloku Ustawienia aplikacji.
Jeśli wystąpi jakikolwiek problem podczas tworzenia połączenia, zapoznaj się z tematem Rozwiązywanie problemów , aby uzyskać pomoc.
Pobierz parametry połączenia usługi Azure SQL Database ze zmiennej środowiskowej dodanej przez łącznik usługi.
using Microsoft.Data.SqlClient;
// AZURE_SQL_CONNECTIONSTRING should be one of the following:
// For system-assigned managed identity:"Server=tcp:<server-name>.database.windows.net;Database=<database-name>;Authentication=Active Directory Default;TrustServerCertificate=True"
// For user-assigned managed identity: "Server=tcp:<server-name>.database.windows.net;Database=<database-name>;Authentication=Active Directory Default;User Id=<client-id-of-user-assigned-identity>;TrustServerCertificate=True"
string connectionString =
Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
using var connection = new SqlConnection(connectionString);
connection.Open();
Aby uzyskać więcej informacji, zobacz Używanie uwierzytelniania tożsamości zarządzanej usługi Active Directory.
Pobierz konfiguracje połączeń usługi Azure SQL Database ze zmiennej środowiskowej dodanej przez łącznik usługi. Usuń komentarz ze fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
import os;
import pyodbc
server = os.getenv('AZURE_SQL_SERVER')
port = os.getenv('AZURE_SQL_PORT')
database = os.getenv('AZURE_SQL_DATABASE')
authentication = os.getenv('AZURE_SQL_AUTHENTICATION') # The value should be 'ActiveDirectoryMsi'
# Uncomment the following lines according to the authentication type.
# For system-assigned managed identity.
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server={server},{port};Database={database};Authentication={authentication};Encrypt=yes;'
# For user-assigned managed identity.
# client_id = os.getenv('AZURE_SQL_USER')
# connString = f'Driver={{ODBC Driver 18 for SQL Server}};Server={server},{port};Database={database};UID={client_id};Authentication={authentication};Encrypt=yes;'
conn = pyodbc.connect(connString)
Pobierz konfiguracje połączeń usługi Azure SQL Database ze zmiennych środowiskowych dodanych przez łącznik usługi. Usuń komentarz ze fragmentu kodu dla typu uwierzytelniania, którego chcesz użyć.
Łączność z usługą Azure Database for MySQL w kodzie jest zgodna ze wzorcem DefaultAzureCredential dla wszystkich stosów języków. DefaultAzureCredential jest wystarczająco elastyczny, aby dostosować się zarówno do środowiska deweloperskiego, jak i środowiska platformy Azure. Po uruchomieniu lokalnie może pobrać zalogowanego użytkownika platformy Azure ze wybranego środowiska (Visual Studio, Visual Studio Code, interfejs wiersza polecenia platformy Azure lub programu Azure PowerShell). Podczas uruchamiania na platformie Azure pobiera tożsamość zarządzaną. W związku z tym można mieć łączność z bazą danych zarówno w czasie programowania, jak i w środowisku produkcyjnym. Wzorzec jest następujący:
Utwórz wystąpienie elementu DefaultAzureCredential z biblioteki klienta tożsamości platformy Azure. Jeśli używasz tożsamości przypisanej przez użytkownika, określ identyfikator klienta tożsamości.
Uzyskaj token dostępu dla usługi Azure Database for MySQL: https://ossrdbms-aad.database.windows.net/.default.
W przypadku platformy .NET uzyskaj token dostępu dla tożsamości zarządzanej przy użyciu biblioteki klienta, takiej jak Azure.Identity. Następnie użyj tokenu dostępu jako hasła, aby nawiązać połączenie z bazą danych. Korzystając z poniższego kodu, upewnij się, że usuń komentarz z części fragmentu kodu odpowiadającego typowi uwierzytelniania, którego chcesz użyć.
using Azure.Core;
using Azure.Identity;
using MySqlConnector;
// Uncomment the following lines according to the authentication type.
// For system-assigned managed identity.
// var credential = new DefaultAzureCredential();
// For user-assigned managed identity.
// var credential = new DefaultAzureCredential(
// new DefaultAzureCredentialOptions
// {
// ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_MYSQL_CLIENTID");
// });
var tokenRequestContext = new TokenRequestContext(
new[] { "https://ossrdbms-aad.database.windows.net/.default" });
AccessToken accessToken = await credential.GetTokenAsync(tokenRequestContext);
// Open a connection to the MySQL server using the access token.
string connectionString =
$"{Environment.GetEnvironmentVariable("AZURE_MYSQL_CONNECTIONSTRING")};Password={accessToken.Token}";
using var connection = new MySqlConnection(connectionString);
Console.WriteLine("Opening connection using access token...");
await connection.OpenAsync();
// do something
Uwierzytelnianie przy użyciu tokenu azure-identity dostępu z biblioteki. Pobierz informacje o połączeniu ze zmiennej środowiskowej dodanej przez łącznik usługi. Korzystając z poniższego kodu, upewnij się, że usuń komentarz z części fragmentu kodu odpowiadającego typowi uwierzytelniania, którego chcesz użyć.
from azure.identity import ManagedIdentityCredential, ClientSecretCredential
import mysql.connector
import os
# Uncomment the following lines according to the authentication type.
# For system-assigned managed identity.
# cred = ManagedIdentityCredential()
# For user-assigned managed identity.
# managed_identity_client_id = os.getenv('AZURE_MYSQL_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# acquire token
accessToken = cred.get_token('https://ossrdbms-aad.database.windows.net/.default')
# open connect to Azure MySQL with the access token.
host = os.getenv('AZURE_MYSQL_HOST')
database = os.getenv('AZURE_MYSQL_NAME')
user = os.getenv('AZURE_MYSQL_USER')
password = accessToken.token
cnx = mysql.connector.connect(user=user,
password=password,
host=host,
database=database)
cnx.close()
Uzyskaj token dostępu przy użyciu polecenia @azure/identity i informacje o bazie danych Azure MySQL ze zmiennych środowiskowych dodanych przez łącznik usługi. Korzystając z poniższego kodu, upewnij się, że usuń komentarz z części fragmentu kodu odpowiadającego typowi uwierzytelniania, którego chcesz użyć.
import { DefaultAzureCredential,ClientSecretCredential } from "@azure/identity";
const mysql = require('mysql2');
// Uncomment the following lines according to the authentication type.
// for system-assigned managed identity
// const credential = new DefaultAzureCredential();
// for user-assigned managed identity
// const clientId = process.env.AZURE_MYSQL_CLIENTID;
// const credential = new DefaultAzureCredential({
// managedIdentityClientId: clientId
// });
// acquire token
var accessToken = await credential.getToken('https://ossrdbms-aad.database.windows.net/.default');
const connection = mysql.createConnection({
host: process.env.AZURE_MYSQL_HOST,
user: process.env.AZURE_MYSQL_USER,
password: accessToken.token,
database: process.env.AZURE_MYSQL_DATABASE,
port: process.env.AZURE_MYSQL_PORT,
ssl: process.env.AZURE_MYSQL_SSL
});
connection.connect((err) => {
if (err) {
console.error('Error connecting to MySQL database: ' + err.stack);
return;
}
console.log('Connected to MySQL database');
});
Łączność z usługą Azure Database for PostgreSQL w kodzie jest zgodna ze wzorcem DefaultAzureCredential dla wszystkich stosów języków. DefaultAzureCredential jest wystarczająco elastyczny, aby dostosować się zarówno do środowiska deweloperskiego, jak i środowiska platformy Azure. Po uruchomieniu lokalnie może pobrać zalogowanego użytkownika platformy Azure ze wybranego środowiska (Visual Studio, Visual Studio Code, interfejs wiersza polecenia platformy Azure lub programu Azure PowerShell). Podczas uruchamiania na platformie Azure pobiera tożsamość zarządzaną. W związku z tym można mieć łączność z bazą danych zarówno w czasie programowania, jak i w środowisku produkcyjnym. Wzorzec jest następujący:
Utwórz wystąpienie elementu DefaultAzureCredential z biblioteki klienta tożsamości platformy Azure. Jeśli używasz tożsamości przypisanej przez użytkownika, określ identyfikator klienta tożsamości.
Uzyskaj token dostępu dla usługi Azure Database for PostgreSQL: https://ossrdbms-aad.database.windows.net/.default.
W przypadku platformy .NET uzyskaj token dostępu dla tożsamości zarządzanej przy użyciu biblioteki klienta, takiej jak Azure.Identity. Następnie użyj tokenu dostępu jako hasła, aby nawiązać połączenie z bazą danych. Korzystając z poniższego kodu, upewnij się, że usuń komentarz z części fragmentu kodu odpowiadającego typowi uwierzytelniania, którego chcesz użyć.
using Azure.Identity;
using Azure.Core;
using Npgsql;
// Uncomment the following lines according to the authentication type.
// For system-assigned identity.
// var sqlServerTokenProvider = new DefaultAzureCredential();
// For user-assigned identity.
// var sqlServerTokenProvider = new DefaultAzureCredential(
// new DefaultAzureCredentialOptions
// {
// ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CLIENTID");
// }
// );
// Acquire the access token.
AccessToken accessToken = await sqlServerTokenProvider.GetTokenAsync(
new TokenRequestContext(scopes: new string[]
{
"https://ossrdbms-aad.database.windows.net/.default"
}));
// Combine the token with the connection string from the environment variables provided by Service Connector.
string connectionString =
$"{Environment.GetEnvironmentVariable("AZURE_POSTGRESQL_CONNECTIONSTRING")};Password={accessToken.Token}";
// Establish the connection.
using (var connection = new NpgsqlConnection(connectionString))
{
Console.WriteLine("Opening connection using access token...");
connection.Open();
}
Uwierzytelnij się przy użyciu tokenu dostępu z azure-identity biblioteki i użyj tokenu jako hasła. Pobierz informacje o połączeniu ze zmiennych środowiskowych dodanych przez łącznik usługi. Korzystając z poniższego kodu, upewnij się, że usuń komentarz z części fragmentu kodu odpowiadającego typowi uwierzytelniania, którego chcesz użyć.
from azure.identity import DefaultAzureCredential
import psycopg2
# Uncomment the following lines according to the authentication type.
# For system-assigned identity.
# cred = DefaultAzureCredential()
# For user-assigned identity.
# managed_identity_client_id = os.getenv('AZURE_POSTGRESQL_CLIENTID')
# cred = ManagedIdentityCredential(client_id=managed_identity_client_id)
# Acquire the access token
accessToken = cred.get_token('https://ossrdbms-aad.database.windows.net/.default')
# Combine the token with the connection string from the environment variables added by Service Connector to establish the connection.
conn_string = os.getenv('AZURE_POSTGRESQL_CONNECTIONSTRING')
conn = psycopg2.connect(conn_string + ' password=' + accessToken.token)
Aby uzyskać więcej informacji, zobacz następujące zasoby:
W kodzie uzyskaj token dostępu za pośrednictwem i @azure/identity informacje o połączeniu postgreSQL ze zmiennych środowiskowych dodanych przez usługę Service Connector. Połącz je, aby nawiązać połączenie. Korzystając z poniższego kodu, upewnij się, że usuń komentarz z części fragmentu kodu odpowiadającego typowi uwierzytelniania, którego chcesz użyć.
import { DefaultAzureCredential, ClientSecretCredential } from "@azure/identity";
const { Client } = require('pg');
// Uncomment the following lines according to the authentication type.
// For system-assigned identity.
// const credential = new DefaultAzureCredential();
// For user-assigned identity.
// const clientId = process.env.AZURE_POSTGRESQL_CLIENTID;
// const credential = new DefaultAzureCredential({
// managedIdentityClientId: clientId
// });
// Acquire the access token.
var accessToken = await credential.getToken('https://ossrdbms-aad.database.windows.net/.default');
// Use the token and the connection information from the environment variables added by Service Connector to establish the connection.
(async () => {
const client = new Client({
host: process.env.AZURE_POSTGRESQL_HOST,
user: process.env.AZURE_POSTGRESQL_USER,
password: accesstoken.token,
database: process.env.AZURE_POSTGRESQL_DATABASE,
port: Number(process.env.AZURE_POSTGRESQL_PORT) ,
ssl: process.env.AZURE_POSTGRESQL_SSL
});
await client.connect();
await client.end();
})();
Ten przykładowy kod używa DefaultAzureCredential metody w celu uzyskania tokenu możliwego do użycia dla bazy danych platformy Azure z identyfikatora Entra firmy Microsoft, a następnie dodaje go do połączenia z bazą danych. Chociaż można dostosować DefaultAzureCredentialelement , jest już domyślnie wszechstronny. Pobiera token z zalogowanego użytkownika Microsoft Entra lub tożsamości zarządzanej, w zależności od tego, czy jest uruchamiany lokalnie w środowisku deweloperów, czy w usłudze App Service.
Bez żadnych dalszych zmian kod jest gotowy do uruchomienia na platformie Azure. Aby debugować kod lokalnie, jednak środowisko programistyczne wymaga zalogowanego użytkownika firmy Microsoft Entra. W tym kroku skonfigurujesz wybrane środowisko, logując się przy użyciu użytkownika firmy Microsoft Entra.
Program Visual Studio dla systemu Windows jest zintegrowany z uwierzytelnianiem firmy Microsoft Entra. Aby włączyć programowanie i debugowanie w programie Visual Studio, dodaj użytkownika microsoft Entra w programie Visual Studio, wybierając pozycję Ustawienia konta plików>z menu, a następnie wybierz pozycję Zaloguj się lub Dodaj.
Aby ustawić użytkownika microsoft Entra na potrzeby uwierzytelniania usługi platformy Azure, wybierz pozycję Narzędzia>Opcje z menu, a następnie wybierz pozycję Wybór konta uwierzytelniania>usługi platformy Azure. Wybierz dodanego użytkownika Microsoft Entra i wybierz przycisk OK.
Visual Studio dla komputerów Mac nie jest zintegrowana z uwierzytelnianiem firmy Microsoft Entra. Jednak biblioteka klienta tożsamości platformy Azure, której będziesz używać później, może również pobierać tokeny z interfejsu wiersza polecenia platformy Azure. Aby włączyć programowanie i debugowanie w programie Visual Studio, zainstaluj interfejs wiersza polecenia platformy Azure na komputerze lokalnym.
Zaloguj się do interfejsu wiersza polecenia platformy Azure przy użyciu następującego polecenia przy użyciu użytkownika firmy Microsoft Entra:
az login --allow-no-subscriptions
Program Visual Studio Code jest zintegrowany z uwierzytelnianiem firmy Microsoft entra za pośrednictwem rozszerzenia platformy Azure. Zainstaluj rozszerzenie Azure Tools w programie Visual Studio Code.
W programie Visual Studio Code na pasku działań wybierz logo platformy Azure .
W Eksploratorze usługi App Service wybierz pozycję Zaloguj się do platformy Azure... i postępuj zgodnie z instrukcjami.
Biblioteka klienta tożsamości platformy Azure, której będziesz używać później, może używać tokenów z poziomu interfejsu wiersza polecenia platformy Azure. Aby włączyć programowanie oparte na wierszu polecenia, zainstaluj interfejs wiersza polecenia platformy Azure na komputerze lokalnym.
Zaloguj się do platformy Azure przy użyciu następującego polecenia przy użyciu użytkownika microsoft Entra:
az login --allow-no-subscriptions
Biblioteka klienta tożsamości platformy Azure, której będziesz używać później, może używać tokenów z poziomu programu Azure PowerShell. Aby włączyć programowanie oparte na wierszu polecenia, zainstaluj program Azure PowerShell na komputerze lokalnym.
Zaloguj się do interfejsu wiersza polecenia platformy Azure przy użyciu następującego polecenia cmdlet przy użyciu użytkownika firmy Microsoft Entra:
Teraz możesz przystąpić do tworzenia i debugowania aplikacji przy użyciu usługi SQL Database jako zaplecza przy użyciu uwierzytelniania firmy Microsoft Entra.
5. Testowanie i publikowanie
Uruchom kod w środowisku deweloperskim. Kod używa zalogowanego użytkownika Microsoft Entra w środowisku, aby nawiązać połączenie z bazą danych zaplecza. Użytkownik może uzyskać dostęp do bazy danych, ponieważ jest skonfigurowany jako administrator firmy Microsoft Entra dla bazy danych.
Opublikuj kod na platformie Azure przy użyciu preferowanej metody publikowania. W usłudze App Service kod używa tożsamości zarządzanej aplikacji do nawiązywania połączenia z bazą danych zaplecza.
Otrzymuję błąd Login failed for user '<token-identified principal>'.
Tożsamość zarządzana, dla której próbujesz zażądać tokenu, nie ma autoryzacji dostępu do bazy danych platformy Azure.
Wprowadzono zmiany w uwierzytelnianiu usługi App Service lub skojarzonej rejestracji aplikacji. Dlaczego nadal otrzymuję stary token?
Usługi zaplecza tożsamości zarządzanych również utrzymują pamięć podręczną tokenów, która aktualizuje token dla zasobu docelowego tylko wtedy, gdy wygaśnie. Jeśli po próbie uzyskania tokenu z aplikacją zmodyfikujesz konfigurację, nie otrzymasz nowego tokenu ze zaktualizowanymi uprawnieniami do momentu wygaśnięcia buforowanego tokenu. Najlepszym sposobem obejścia tego jest przetestowanie zmian za pomocą nowego okna InPrivate (Edge)/private (Safari)/Incognito (Chrome). W ten sposób na pewno zaczniesz od nowej sesji uwierzytelnionej.
Jak mogę dodać tożsamość zarządzaną do grupy firmy Microsoft Entra?
Jeśli chcesz, możesz dodać tożsamość do grupy Microsoft Entra, a następnie udzielić dostępu do grupy Microsoft Entra zamiast tożsamości. Na przykład następujące polecenia dodają tożsamość zarządzaną z poprzedniego kroku do nowej grupy o nazwie myAzureSQLDBAccessGroup:
groupid=$(az ad group create --display-name myAzureSQLDBAccessGroup --mail-nickname myAzureSQLDBAccessGroup --query objectId --output tsv)
msiobjectid=$(az webapp identity show --resource-group <group-name> --name <app-name> --query principalId --output tsv)
az ad group member add --group $groupid --member-id $msiobjectid
az ad group member list -g $groupid
Aby udzielić uprawnień bazy danych dla grupy entra firmy Microsoft, zobacz dokumentację odpowiedniego typu bazy danych.
Otrzymuję błąd SSL connection is required. Please specify SSL options and retry.
Nawiązywanie połączenia z bazą danych platformy Azure wymaga dodatkowych ustawień i wykracza poza zakres tego samouczka. Aby uzyskać więcej informacji, zobacz jeden z następujących linków:
Utworzono aplikację przy użyciu szablonu Aplikacja internetowa i baza danych, a teraz nie mogę skonfigurować połączenia tożsamości zarządzanej za pomocą poleceń łącznika usługi.
Łącznik usługi wymaga dostępu sieciowego do bazy danych w celu udzielenia dostępu do tożsamości aplikacji. Podczas tworzenia bezpiecznej domyślnie architektury aplikacji i bazy danych w witrynie Azure Portal przy użyciu szablonu Web App + Database architektura blokuje dostęp sieciowy do bazy danych i zezwala tylko na połączenia z sieci wirtualnej. Dotyczy to również usługi Azure Cloud Shell. Można jednak wdrożyć usługę Cloud Shell w sieci wirtualnej, a następnie uruchomić polecenie Łącznik usługi w tej usłudze Cloud Shell.
Następne kroki
Które czynności umiesz wykonać:
Skonfiguruj użytkownika firmy Microsoft Entra jako administratora dla bazy danych platformy Azure.
Połącz się z bazą danych jako użytkownik microsoft Entra.
Skonfiguruj tożsamość zarządzaną przypisaną przez system lub przypisaną przez użytkownika dla aplikacji usługi App Service.
Udziel dostępu do bazy danych tożsamości zarządzanej.
Połącz się z bazą danych platformy Azure z poziomu kodu (.NET Framework 4.8, .NET 6, Node.js, Python, Java) przy użyciu tożsamości zarządzanej.
Połącz się z bazą danych platformy Azure ze środowiska deweloperskiego przy użyciu użytkownika Firmy Microsoft Entra.