Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure Database for MySQL adalah layanan database relasional yang didukung oleh edisi komunitas MySQL. Anda dapat menggunakan Server Tunggal atau Server Fleksibel untuk menghosting database MySQL di Azure. Ini adalah penawaran database-as-a-service yang dikelola sepenuhnya yang dapat menangani beban kerja misi penting dengan performa yang dapat diprediksi dan skalabilitas dinamis.
Dari versi 4.5.0, Spring Cloud Azure mendukung berbagai jenis kredensial untuk autentikasi ke server Fleksibel Azure Database for MySQL.
Versi MySQL yang didukung
Versi starter saat ini harus menggunakan Azure Database for MySQL Flexible Server versi 5.7 atau 8.0.
Fitur inti
Koneksi tanpa kata sandi
Koneksi tanpa kata sandi menggunakan autentikasi Microsoft Entra untuk menyambungkan ke layanan Azure tanpa menyimpan kredensial apa pun dalam aplikasi, file konfigurasinya, atau dalam variabel lingkungan. Autentikasi Microsoft Entra adalah mekanisme untuk menyambungkan ke Azure Database for MySQL menggunakan identitas yang ditentukan dalam ID Microsoft Entra. Dengan autentikasi Microsoft Entra, Anda dapat mengelola identitas pengguna database dan layanan Microsoft lainnya di lokasi pusat, yang menyederhanakan manajemen izin.
Cara kerjanya
Spring Cloud Azure pertama-tama akan membangun salah satu jenis kredensial berikut tergantung pada konfigurasi autentikasi aplikasi:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredentialDefaultAzureCredential
Jika tidak ada jenis kredensial ini yang ditemukan, kredensial DefaultAzureCredential akan diperoleh dari properti aplikasi, variabel lingkungan, identitas terkelola, atau IDE. Untuk informasi selengkapnya, lihat autentikasi Spring Cloud Azure.
Diagram tingkat tinggi berikut ini meringkas cara kerja autentikasi menggunakan autentikasi kredensial OAuth dengan Azure Database for MySQL. Panah menunjukkan jalur komunikasi.
Diagram
Konfigurasi
Spring Cloud Azure for MySQL mendukung dua tingkat opsi konfigurasi berikut:
Opsi konfigurasi autentikasi global
credentialdanprofiledengan awalanspring.cloud.azure.Opsi konfigurasi umum Spring Cloud Azure for MySQL.
Tabel berikut ini memperlihatkan opsi konfigurasi umum Spring Cloud Azure for MySQL:
| Nama | Deskripsi |
|---|---|
| spring.datasource.azure.passwordless-enabled | Apakah akan mengaktifkan koneksi tanpa kata sandi ke database Azure dengan menggunakan kredensial token Microsoft Entra OAuth2. |
| spring.datasource.azure.credential.client-certificate-password | Kata sandi file sertifikat. |
| spring.datasource.azure.credential.client-certificate-path | Jalur file sertifikat PEM yang akan digunakan saat melakukan autentikasi perwakilan layanan dengan Azure. |
| spring.datasource.azure.credential.client-id | ID klien untuk digunakan saat melakukan autentikasi perwakilan layanan dengan Azure. Ini adalah properti warisan. |
| spring.datasource.azure.credential.client-secret | Rahasia klien untuk digunakan saat melakukan autentikasi perwakilan layanan dengan Azure. Ini adalah properti warisan. |
| spring.datasource.azure.credential.managed-identity-enabled | Apakah akan mengaktifkan identitas terkelola untuk mengautentikasi dengan Azure. Jika true dan client-id diatur, akan menggunakan ID klien sebagai ID klien identitas terkelola yang ditetapkan pengguna. Nilai defaultnya adalah false. |
| musim semi.sumberdata.azure.kredensial.kata sandi | Kata sandi yang digunakan saat melakukan autentikasi nama pengguna/kata sandi dengan Azure. |
| musim semi.sumberdata.azure.kredensial.nama pengguna | Nama pengguna yang akan digunakan saat melakukan autentikasi nama pengguna/kata sandi dengan Azure. |
| spring.datasource.azure.profile.cloud-type | Nama cloud Azure untuk disambungkan. |
| musim semi.sumberdata.azure.profile.environment.active-directory-endpoint | Titik akhir Microsoft Entra untuk disambungkan. |
| spring.datasource.azure.profile.tenant-id | ID Penyewa untuk sumber daya Azure. Nilai yang diizinkan untuk tenant-id adalah: common, organizations, consumers, atau ID penyewa. |
Penyiapan dependensi
Tambahkan dependensi berikut ke proyek Anda. Ini akan secara otomatis menyertakan dependensi spring-boot-starter dalam proyek Anda secara transitif.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId>
</dependency>
Nota
Koneksi tanpa kata sandi telah didukung sejak versi 4.5.0.
Ingatlah untuk menambahkan spring-cloud-azure-dependencies BOM bersama dengan dependensi di atas. Untuk informasi selengkapnya, lihat bagian Memulai panduan pengembang Spring Cloud Azure.
Penggunaan dasar
Bagian berikut menunjukkan skenario penggunaan aplikasi Spring Boot klasik.
Penting
Koneksi tanpa kata sandi menggunakan autentikasi Microsoft Entra. Untuk menggunakan autentikasi Microsoft Entra, Anda harus mengatur pengguna admin Microsoft Entra terlebih dahulu. Hanya pengguna admin Microsoft Entra yang dapat membuat dan mengaktifkan pengguna untuk autentikasi berbasis ID Microsoft Entra. Untuk informasi selengkapnya, lihat Menggunakan Spring Data JDBC dengan Azure Database for MySQL.
Menyambungkan ke Azure MySQL secara lokal tanpa kata sandi
Untuk membuat pengguna dan memberikan izin, lihat bagian Membuat pengguna non-admin MySQL dan memberikan izin bagian Menggunakan Spring Data JDBC dengan Azure Database for MySQL.
Konfigurasikan properti berikut dalam file application.yml Anda:
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
Menyambungkan ke Azure MySQL menggunakan perwakilan layanan
Buat pengguna Microsoft Entra untuk perwakilan layanan dan berikan izin.
Pertama, gunakan perintah berikut untuk menyiapkan beberapa variabel lingkungan.
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)Kemudian, buat skrip SQL yang disebut create_ad_user_sp.sql untuk membuat pengguna non-admin. Tambahkan konten berikut dan simpan secara lokal:
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; EOFGunakan perintah berikut untuk menjalankan skrip SQL untuk membuat pengguna non-admin Microsoft Entra:
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.sqlSekarang gunakan perintah berikut untuk menghapus file skrip SQL sementara:
rm create_ad_user_sp.sql
Konfigurasikan properti berikut dalam file application.yml Anda:
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
Nota
Nilai yang diizinkan untuk tenant-id adalah: common, organizations, consumers, atau ID penyewa. Untuk informasi selengkapnya tentang nilai-nilai ini, lihat bagian Menggunakan titik akhir yang salah (akun pribadi dan organisasi)Kesalahan AADSTS50020 - Akun pengguna dari penyedia identitas tidak ada di penyewa. Untuk informasi tentang mengonversi aplikasi penyewa tunggal Anda, lihat Mengonversi aplikasi penyewa tunggal ke multipenyewa di ID Microsoft Entra.
Menyambungkan ke Azure MySQL dengan Identitas Terkelola di Azure Spring Apps
Untuk mengaktifkan identitas terkelola, lihat bagian Menetapkan identitas terkelola menggunakan portal Microsoft AzureMemigrasikan aplikasi untuk menggunakan koneksi tanpa kata sandi dengan Azure Database for MySQL.
Untuk memberikan izin, lihat bagian Tetapkan peran ke identitas terkelola Memigrasikan aplikasi untuk menggunakan koneksi tanpa kata sandi dengan Azure Database for MySQL.
Konfigurasikan properti berikut dalam file application.yml Anda:
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
Sampel
Lihat repositori azure-spring-boot-samples di GitHub.