Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule wyjaśniono, jak używać obsługi rozwiązania Spring Cloud Azure MySQL w celu łączenia aplikacji Spring Boot z Azure Database for MySQL z elastycznymi opcjami uwierzytelniania, w tym uwierzytelnianiem bez hasła Microsoft Entra.
Z wersji 4.5.0platforma Spring Cloud azure obsługuje różne typy poświadczeń na potrzeby uwierzytelniania na serwerze elastycznym usługi Azure Database for MySQL.
Obsługiwana wersja programu MySQL
Bieżąca wersja startera powinna używać usługi Azure Database for MySQL — wersja serwera elastycznego 5.7 lub 8.0.
Podstawowe funkcje
Połączenie bez hasła
Połączenie bez hasła używa uwierzytelniania Entra firmy Microsoft do nawiązywania połączenia z usługami platformy Azure bez przechowywania poświadczeń w aplikacji, jej plikach konfiguracji lub zmiennych środowiskowych. Uwierzytelnianie entra firmy Microsoft to mechanizm nawiązywania połączenia z usługą Azure Database for MySQL przy użyciu tożsamości zdefiniowanych w identyfikatorze Entra firmy Microsoft. Korzystając z uwierzytelniania Microsoft Entra, można zarządzać tożsamościami użytkowników bazy danych i innymi usługi firmy Microsoft w centralnej lokalizacji, co upraszcza zarządzanie uprawnieniami.
Jak to działa
Usługa Spring Cloud Azure najpierw tworzy jeden z następujących typów poświadczeń, w zależności od konfiguracji uwierzytelniania aplikacji:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredentialDefaultAzureCredential
Jeśli aplikacja nie znajdzie żadnego z tych typów poświadczeń, pobiera DefaultAzureCredential poświadczenia z właściwości aplikacji, zmiennych środowiskowych, tożsamości zarządzanych lub środowiska IDE. Aby uzyskać więcej informacji, zobacz Spring Cloud Azure authentication.
Poniższy diagram wysokiego poziomu podsumowuje sposób działania uwierzytelniania przy użyciu uwierzytelniania OAuth z Azure Database for MySQL. Strzałki wskazują ścieżki komunikacyjne.
Konfiguracja
Platforma Spring Cloud Azure for MySQL obsługuje następujące dwa poziomy opcji konfiguracji:
Globalne opcje konfiguracji uwierzytelniania
credentialiprofilez prefiksamispring.cloud.azure.Spring Cloud Azure for MySQL — typowe opcje konfiguracji.
W poniższej tabeli przedstawiono typowe opcje konfiguracji platformy Spring Cloud azure for MySQL:
| Nazwa | Opis |
|---|---|
spring.datasource.azure.passwordless-enabled |
Czy włączyć połączenia bez hasła z bazami danych platformy Azure przy użyciu poświadczeń tokenu OAuth2 Firmy Microsoft Entra. |
spring.datasource.azure.credential.client-certificate-password |
Hasło pliku certyfikatu. |
spring.datasource.azure.credential.client-certificate-path |
Ścieżka pliku certyfikatu PEM do użycia podczas przeprowadzania uwierzytelniania jednostki usługi na platformie Azure. |
spring.datasource.azure.credential.client-id |
Identyfikator klienta do użycia podczas przeprowadzania uwierzytelniania jednostki usługi za pomocą platformy Azure. Jest to starsza właściwość. |
spring.datasource.azure.credential.client-secret |
Klucz tajny klienta używany podczas przeprowadzania uwierzytelniania jednostki usługi za pomocą platformy Azure. Jest to starsza właściwość. |
spring.datasource.azure.credential.managed-identity-enabled |
Czy włączyć tożsamość zarządzaną do uwierzytelniania za pomocą platformy Azure. Jeśli true i client-id jest ustawiona, użyje identyfikatora klienta jako identyfikatora klienta tożsamości zarządzanej przypisanej przez użytkownika. Wartość domyślna to false. |
spring.datasource.azure.credential.password |
Hasło do użycia podczas przeprowadzania uwierzytelniania nazwy użytkownika/hasła na platformie Azure. |
spring.datasource.azure.credential.username |
Nazwa użytkownika do użycia podczas przeprowadzania uwierzytelniania nazwy użytkownika/hasła na platformie Azure. |
spring.datasource.azure.profile.cloud-type |
Nazwa chmury platformy Azure do nawiązania połączenia. |
spring.datasource.azure.profile.environment.active-directory-endpoint |
Punkt końcowy firmy Microsoft Entra do nawiązania połączenia. |
spring.datasource.azure.profile.tenant-id |
Identyfikator dzierżawy dla zasobów platformy Azure. Dozwolone wartości dla tenant-id to: common, organizations, consumerslub identyfikator dzierżawy. |
Konfiguracja zależności
Dodaj następującą zależność do projektu. Ta zależność automatycznie uwzględnia spring-boot-starter zależność w projekcie.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId>
</dependency>
Nuta
Połączenia bez hasła są obsługiwane począwszy od wersji 4.5.0.
Pamiętaj, aby dodać model BOM spring-cloud-azure-dependencies wraz z poprzednią zależnością. Aby uzyskać więcej informacji, zobacz sekcję Wprowadzenie w przewodniku deweloperów platformy Azure Spring Cloud.
Podstawowe użycie
W poniższych sekcjach przedstawiono klasyczne scenariusze użycia aplikacji Spring Boot.
Ważny
Połączenie bez hasła korzysta z uwierzytelniania firmy Microsoft Entra. Aby użyć uwierzytelniania Microsoft Entra, najpierw ustaw użytkownika administratora Microsoft Entra. Tylko użytkownik administracyjny firmy Microsoft Entra może tworzyć i włączać użytkowników na potrzeby uwierzytelniania opartego na identyfikatorze Entra firmy Microsoft. Aby uzyskać więcej informacji, zobacz
Nawiązywanie połączenia z usługą Azure MySQL lokalnie bez hasła
Aby utworzyć użytkowników i przyznać uprawnienia, zobacz sekcję
Create a MySQL non-admin user (Tworzenie użytkownika niebędącego administratorem programu MySQL) i udzielanie uprawnień Use Spring Data JDBC with Azure Database for MySQL (Używanie narzędzia Spring Data JDBC z usługą Azure Database for MySQL).Skonfiguruj następujące właściwości w pliku application.yml:
spring: datasource: url: jdbc:mysql://${AZURE_MYSQL_SERVER_NAME}.mysql.database.azure.com:3306/${AZURE_MYSQL_DATABASE_NAME} username: ${AZURE_MYSQL_AD_NON_ADMIN_USERNAME} azure: passwordless-enabled: true
Nawiązywanie połączenia z usługą Azure MySQL przy użyciu jednostki usługi
Utwórz użytkownika Microsoft Entra dla jednostki usługi i przyznaj uprawnienie.
Użyj następujących poleceń, aby skonfigurować zmienne środowiskowe.
export AZURE_MYSQL_AZURE_AD_SP_USERID=$(az ad sp list \ --display-name <service_principal-name> \ --query '[0].appId' --output tsv) export AZURE_MYSQL_AZURE_AD_SP_USERNAME=<YOUR_MYSQL_AZURE_AD_USERNAME> export AZURE_MYSQL_SERVER_NAME=<YOUR_MYSQL_SERVER_NAME> export AZURE_MYSQL_DATABASE_NAME=<YOUR_MYSQL_DATABASE_NAME> export CURRENT_USERNAME=$(az ad signed-in-user show \ --query userPrincipalName \ --output tsv)Utwórz skrypt SQL o nazwie create_ad_user_sp.sql na potrzeby tworzenia użytkownika niebędącego administratorem. Dodaj następującą zawartość i zapisz ją lokalnie:
cat << EOF > create_ad_user_sp.sql SET aad_auth_validate_oids_in_tenant = OFF; CREATE AADUSER '$AZURE_MYSQL_AZURE_AD_SP_USERNAME' IDENTIFIED BY '$AZURE_MYSQL_AZURE_AD_SP_USERID'; GRANT ALL PRIVILEGES ON $AZURE_MYSQL_DATABASE_NAME.* TO '$AZURE_MYSQL_AZURE_AD_SP_USERNAME'@'%'; FLUSH privileges; EOFUżyj następującego polecenia, aby uruchomić skrypt SQL, aby utworzyć użytkownika innego niż administrator firmy Microsoft:
mysql -h $AZURE_MYSQL_SERVER_NAME.mysql.database.azure.com --user $CURRENT_USERNAME --enable-cleartext-plugin --password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken) < create_ad_user_sp.sqlUżyj następującego polecenia, aby usunąć tymczasowy plik skryptu SQL:
rm create_ad_user_sp.sql
Skonfiguruj następujące właściwości w pliku application.yml:
spring: cloud: azure: credential: client-id: ${AZURE_CLIENT_ID} client-secret: ${AZURE_CLIENT_SECRET} profile: tenant-id: <tenant> datasource: url: jdbc:mysql://${AZURE_MYSQL_SERVER_NAME}.mysql.database.azure.com:3306/${AZURE_MYSQL_DATABASE_NAME} username: ${AZURE_MYSQL_AD_SP_USERNAME} azure: passwordless-enabled: true
Nuta
Dozwolone wartości to tenant-id : common, organizations, consumerslub identyfikator dzierżawy. Aby uzyskać więcej informacji na temat tych wartości, zobacz sekcję Użyto nieprawidłowego punktu końcowego (kont osobistych i organizacji) sekcji Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje wdzierżawy. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Convert single-tenant app to multitenant on Microsoft Entra ID.
Nawiązywanie połączenia z usługą Azure MySQL przy użyciu tożsamości zarządzanej w usłudze Azure Spring Apps
Aby włączyć tożsamość zarządzaną, zobacz sekcję
Assign the managed identity using the Azure Portal (Przypisywanie tożsamości zarządzanej przy użyciu witryny Azure Portal )Migrate an application to use passwordless connections with Azure Database for MySQL (Migrowanie aplikacji w celu używania połączeń bez hasła z usługą Azure Database for MySQL).Aby udzielić uprawnień, zobacz sekcję
Assign roles to the managed identity (Przypisywanie ról do tożsamości zarządzanej)Migrate an application to use passwordless connections with Azure Database for MySQL (Migrowanie aplikacji w celu używania połączeń bez hasła z usługą Azure Database for MySQL).Skonfiguruj następujące właściwości w pliku application.yml:
spring: datasource: url: jdbc:mysql://${AZURE_MYSQL_SERVER_NAME}.mysql.database.azure.com:3306/${AZURE_MYSQL_DATABASE_NAME} username: ${AZURE_MYSQL_AD_MI_USERNAME} azure: passwordless-enabled: true
Próbki
Zobacz repozytorium w witrynie azure-spring-boot-samples GitHub.