Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
MySQL için Azure Veritabanı, MySQL topluluk sürümü tarafından desteklenen ilişkisel bir veritabanı hizmetidir. MySQL veritabanını Azure'da barındırmak için Tek Sunucu veya Esnek Sunucu kullanabilirsiniz. Görev açısından kritik iş yüklerini tahmin edilebilir performans ve dinamik ölçeklenebilirlikle işleyebilen, tam olarak yönetilen bir hizmet olarak veritabanı teklifidir.
4.5.0sürümünden Spring Cloud Azure, MySQL için Azure Veritabanı Esnek sunucusunda kimlik doğrulaması için çeşitli kimlik bilgileri türlerini destekler.
Desteklenen MySQL sürümü
Başlatıcının geçerli sürümü, 5.7 veya 8.0MySQL için Azure Veritabanı Esnek Sunucu sürümünü kullanmalıdır.
Temel özellikler
Parolasız bağlantı
Parolasız bağlantı, uygulamada, yapılandırma dosyalarında veya ortam değişkenlerinde hiçbir kimlik bilgisi depolamadan Azure hizmetlerine bağlanmak için Microsoft Entra kimlik doğrulamasını kullanır. Microsoft Entra kimlik doğrulaması, Microsoft Entra Id'de tanımlanan kimlikleri kullanarak MySQL için Azure Veritabanı'na bağlanmaya yönelik bir mekanizmadır. Microsoft Entra kimlik doğrulaması ile veritabanı kullanıcı kimliklerini ve diğer Microsoft hizmetlerini merkezi bir konumda yönetebilirsiniz ve bu da izin yönetimini basitleştirir.
Nasıl çalışır?
Spring Cloud Azure, uygulama kimlik doğrulaması yapılandırmasına bağlı olarak ilk olarak aşağıdaki kimlik bilgileri türlerinden birini oluşturur:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredentialDefaultAzureCredential
Bu tür kimlik bilgilerinin hiçbiri bulunmazsa, DefaultAzureCredential kimlik bilgileri uygulama özelliklerinden, ortam değişkenlerinden, yönetilen kimliklerden veya IDE'den alınır. Daha fazla bilgi için bkz. Spring Cloud Azure kimlik doğrulaması
Aşağıdaki üst düzey diyagramda, MySQL için Azure Veritabanı ile OAuth kimlik bilgisi kimlik doğrulaması kullanılarak kimlik doğrulamasının nasıl çalıştığı özetlanmaktadır. Oklar iletişim yollarını gösterir.
MySQL için Microsoft Entra kimlik doğrulamasını gösteren
Konfigürasyon
MySQL için Spring Cloud Azure aşağıdaki iki yapılandırma seçeneğini destekler:
credentialön ekleriyleprofilevespring.cloud.azuregenel kimlik doğrulama yapılandırma seçenekleri.MySQL için Spring Cloud Azure yaygın yapılandırma seçenekleri.
Aşağıdaki tabloda, MySQL için Spring Cloud Azure ortak yapılandırma seçenekleri gösterilmektedir:
| Ad | Açıklama |
|---|---|
| spring.datasource.azure.passwordless-enabled | OAuth2 Microsoft Entra belirteci kimlik bilgilerini kullanarak Azure veritabanlarına parolasız bağlantıların etkinleştirilip etkinleştirilmeyileceği. |
| spring.datasource.azure.credential.client-certificate-password | Sertifika dosyasının parolası. |
| spring.datasource.azure.credential.client-certificate-path | Azure ile hizmet sorumlusu kimlik doğrulaması gerçekleştirirken kullanılacak PEM sertifika dosyasının yolu. |
| spring.datasource.azure.credential.client-id | Azure ile hizmet sorumlusu kimlik doğrulaması gerçekleştirirken kullanılacak istemci kimliği. Bu eski bir özelliktir. |
| spring.datasource.azure.credential.client-secret | Azure ile hizmet sorumlusu kimlik doğrulaması gerçekleştirirken kullanılacak istemci gizli dizisi. Bu eski bir özelliktir. |
| spring.datasource.azure.credential.managed-identity etkin | Yönetilen kimliğin Azure ile kimlik doğrulaması yapmasının etkinleştirilip etkinleştirilmeyileceği.
true ve client-id ayarlanırsa, kullanıcı tarafından atanan yönetilen kimlik istemci kimliği olarak istemci kimliğini kullanır. Varsayılan değer false. |
| spring.datasource.azure.credential.password | Azure ile kullanıcı adı/parola kimlik doğrulaması gerçekleştirirken kullanılacak parola. |
| spring.datasource.azure.credential.username | Azure ile kullanıcı adı/parola kimlik doğrulaması gerçekleştirirken kullanılacak kullanıcı adı. |
| spring.datasource.azure.profile.cloud-type | Bağlanacak Azure bulutunun adı. |
| spring.datasource.azure.profile.environment.active-directory-endpoint | Bağlanacak Microsoft Entra uç noktası. |
| spring.datasource.azure.profile.tenant-id | Azure kaynakları için kiracı kimliği.
tenant-id için izin verilen değerler şunlardır: common, organizations, consumersveya kiracı kimliği. |
Bağımlılık kurulumu
Projenize aşağıdaki bağımlılığı ekleyin. Bu, projenizdeki spring-boot-starter bağımlılığını geçişli olarak otomatik olarak içerir.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId>
</dependency>
Not
4.5.0sürümünden bu yana parolasız bağlantılar desteklenmektedir.
Ürün reçetesi spring-cloud-azure-dependencies yukarıdaki bağımlılıkla birlikte eklemeyi unutmayın. Daha fazla bilgi için Spring Cloud Azure geliştirici kılavuzuBaşlarken bölümüne bakın.
Temel kullanım
Aşağıdaki bölümlerde klasik Spring Boot uygulaması kullanım senaryoları gösterilmektedir.
Önemli
Parolasız bağlantı Microsoft Entra kimlik doğrulamasını kullanır. Microsoft Entra kimlik doğrulamasını kullanmak için önce Microsoft Entra yönetici kullanıcısını ayarlamanız gerekir. Yalnızca bir Microsoft Entra yönetici kullanıcısı, Microsoft Entra Id tabanlı kimlik doğrulaması için kullanıcı oluşturabilir ve etkinleştirebilir. Daha fazla bilgi için bkz. Spring Data JDBC'yi MySQL için Azure Veritabanı ile kullanma.
Azure MySQL'e parola olmadan yerel olarak bağlanma
Kullanıcı oluşturmak ve izin vermek için,
MySQL için Azure Veritabanı ile Spring Data JDBC kullanma MySQL yönetici olmayan kullanıcı oluşturma ve izin vermebölümüne bakın. application.yml dosyanızda aşağıdaki özellikleri yapılandırın:
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
Hizmet sorumlusu kullanarak Azure MySQL'e bağlanma
Hizmet sorumlusu için bir Microsoft Entra kullanıcısı oluşturun ve izin verin.
İlk olarak, bazı ortam değişkenlerini ayarlamak için aşağıdaki komutları kullanın.
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)Ardından, yönetici olmayan kullanıcı oluşturmak için create_ad_user_sp.sql adlı bir SQL betiği oluşturun. Aşağıdaki içeriği ekleyin ve yerel olarak kaydedin:
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; EOFMicrosoft Entra yönetici olmayan kullanıcıyı oluşturmak üzere SQL betiğini çalıştırmak için aşağıdaki komutu kullanın:
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.sqlŞimdi geçici SQL betik dosyasını kaldırmak için aşağıdaki komutu kullanın:
rm create_ad_user_sp.sql
application.yml dosyanızda aşağıdaki özellikleri yapılandırın:
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
Not
tenant-id için izin verilen değerler şunlardır: common, organizations, consumersveya kiracı kimliği. Bu değerler hakkında daha fazla bilgi için, Hata AADSTS50020 - Kimlik sağlayıcısından kullanıcı hesabı kiracımevcut değil bölümünün Yanlış uç nokta (kişisel ve kuruluş hesapları) kullanıldı bölümüne bakın. Tek kiracılı uygulamanızı dönüştürme hakkında bilgi için bkz. Tek kiracılı uygulamayı Microsoft Entra IDüzerinde çok kiracılıya dönüştürme.
Azure Spring Apps'te Yönetilen Kimlik ile Azure MySQL'e bağlanma
Yönetilen kimliği etkinleştirmek için, MySQL için Azure Veritabanıile parolasız bağlantılar kullanmak üzere uygulama geçirme
Azure portalını kullanarak yönetilen kimliği atama bölümüne bakın. İzinler vermek için, MySQL için Azure Veritabanıile parolasız bağlantılar kullanmak üzere uygulama geçirme
yönetilen kimliğe rol atama bölümüne bakın. application.yml dosyanızda aşağıdaki özellikleri yapılandırın:
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
Örnekleri
GitHub'daki azure-spring-boot-samples deposuna bakın.