Menggunakan ID Microsoft Entra untuk autentikasi dengan MySQL

BERLAKU UNTUKAzure Database for MySQL - Server Tunggal

Penting

Server tunggal Azure Database for MySQL berada di jalur penghentian. Kami sangat menyarankan Agar Anda meningkatkan ke server fleksibel Azure Database for MySQL. Untuk informasi selengkapnya tentang migrasi ke server fleksibel Azure Database for MySQL, lihat Apa yang terjadi pada Server Tunggal Azure Database for MySQL?

Artikel ini akan memandikan Anda melalui langkah-langkah cara mengonfigurasi akses ID Microsoft Entra dengan Azure Database for MySQL, dan cara menyambungkan menggunakan token Microsoft Entra.

Penting

Autentikasi Microsoft Entra hanya tersedia untuk MySQL 5.7 dan yang lebih baru.

Mengatur pengguna Admin Microsoft Entra

Hanya pengguna Admin Microsoft Entra yang dapat membuat/mengaktifkan pengguna untuk autentikasi berbasis ID Microsoft Entra. Untuk membuat pengguna Admin Microsoft Entra, ikuti langkah-langkah berikut

  1. Di portal Azure, pilih instans Azure Database for MySQL yang ingin Anda aktifkan untuk ID Microsoft Entra.
  2. Di bawah Pengaturan, pilih Admin Direktori Aktif:

set Microsoft Entra administrator

  1. Pilih pengguna Microsoft Entra yang valid di penyewa pelanggan untuk menjadi administrator Microsoft Entra.

Penting

Saat mengatur administrator, pengguna baru ditambahkan ke server Azure Database for MySQL dengan izin administrator penuh.

Hanya satu admin Microsoft Entra yang dapat dibuat per server MySQL dan pilihan yang lain yang akan menimpa admin Microsoft Entra yang ada yang dikonfigurasi untuk server.

Setelah mengonfigurasi administrator, Anda sekarang dapat masuk:

Koneksi ke Azure Database for MySQL menggunakan ID Microsoft Entra

Diagram tingkat tinggi berikut ini meringkas alur kerja menggunakan autentikasi Microsoft Entra dengan Azure Database for MySQL:

authentication flow

Kami telah merancang integrasi Microsoft Entra untuk bekerja dengan alat MySQL umum seperti mysql CLI, yang tidak diketahui Microsoft Entra dan hanya mendukung menentukan nama pengguna dan kata sandi saat menyambungkan ke MySQL. Kami meneruskan token Microsoft Entra sebagai kata sandi seperti yang ditunjukkan pada gambar di atas.

Saat ini kami telah menguji klien berikut:

  • MySQLWorkbench
  • MySQL CLI

Kami juga telah menguji driver aplikasi yang paling umum, Anda dapat melihat detailnya di akhir halaman ini.

Ini adalah langkah-langkah yang perlu dilakukan pengguna/aplikasi untuk melakukan autentikasi dengan ID Microsoft Entra yang dijelaskan di bawah ini:

Prasyarat

Anda dapat mengikuti di Azure Cloud Shell, komputer virtual Azure, atau di komputer lokal Anda. Pastikan Anda telah memasang Azure CLI.

Langkah 1: Mengautentikasi dengan ID Microsoft Entra

Mulailah dengan mengautentikasi dengan MICROSOFT Entra ID menggunakan alat Azure CLI. Langkah ini tidak diperlukan di Azure Cloud Shell.

az login

Perintah akan meluncurkan jendela browser ke halaman autentikasi Microsoft Entra. Ini mengharuskan Anda untuk memberikan ID pengguna Microsoft Entra dan kata sandi Anda.

Langkah 2: Mengambil token akses Microsoft Entra

Panggil alat Azure CLI untuk memperoleh token akses untuk pengguna yang diautentikasi Microsoft Entra dari langkah 1 untuk mengakses Azure Database for MySQL.

Contoh (untuk Cloud Publik):

az account get-access-token --resource https://ossrdbms-aad.database.windows.net

Nilai sumber daya di atas harus ditentukan persis seperti yang ditunjukkan. Untuk cloud lain, nilai sumber daya dapat dicari menggunakan:

az cloud show

Untuk Azure CLI versi 2.0.71 dan versi yang lebih baru, perintah dapat ditentukan dalam versi yang lebih nyaman berikut untuk semua cloud:

az account get-access-token --resource-type oss-rdbms

Menggunakan PowerShell, Anda dapat menggunakan perintah berikut untuk mendapatkan token akses:

$accessToken = Get-AzAccessToken -ResourceUrl https://ossrdbms-aad.database.windows.net
$accessToken.Token | out-file C:\temp\MySQLAccessToken.txt

Setelah autentikasi berhasil, ID Microsoft Entra akan mengembalikan token akses:

{
  "accessToken": "TOKEN",
  "expiresOn": "...",
  "subscription": "...",
  "tenant": "...",
  "tokenType": "Bearer"
}

Token adalah untai Base 64 yang mengodekan semua informasi tentang pengguna yang diautentikasi, dan yang ditargetkan ke layanan Azure Database for MySQL.

Validitas token akses berkisar antara 5 menit hingga 60 menit. Sebaiknya dapatkan token akses sebelum memulai login ke Azure Database for MySQL. Anda dapat menggunakan perintah PowerShell berikut untuk melihat validitas token.

$accessToken.ExpiresOn.DateTime

Langkah 3: Gunakan token sebagai kata sandi untuk masuk dengan MySQL

Saat menghubungkan Anda perlu menggunakan token akses sebagai kata sandi pengguna MySQL. Saat menggunakan klien GUI seperti MySQLWorkbench, Anda dapat menggunakan metode yang dijelaskan di atas untuk mengambil token.

Menggunakan MySQL CLI

Saat menggunakan CLI, Anda dapat menggunakan tangan pendek ini untuk menyambungkan:

Contoh (Linux/macOS):

mysql -h mydb.mysql.database.azure.com \ 
  --user user@tenant.onmicrosoft.com@mydb \ 
  --enable-cleartext-plugin \ 
  --password=`az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken`

Menggunakan MySQL Workbench

  • Luncurkan MySQL Workbench dan Klik opsi Database, lalu klik "Sambungkan ke database"
  • Di bidang nama host, masukkan FQDN MySQL mis. mydb.mysql.database.azure.com
  • Di bidang nama pengguna, masukkan nama administrator MySQL Microsoft Entra dan tambahkan ini dengan nama server MySQL, bukan FQDN misalnya user@tenant.onmicrosoft.com@mydb
  • Di bidang kata sandi, klik "Simpan di Brankas" dan rekatkan token akses dari file mis. C:\temp\MySQLAccessToken.txt
  • Klik tab lanjutan dan pastikan Anda mencentang "Aktifkan Plugin Autentikasi Cleartext"
  • Klik OK untuk menyambungkan ke database

Pertimbangan penting saat menyambungkan:

  • user@tenant.onmicrosoft.com adalah nama pengguna atau grup Microsoft Entra yang anda coba sambungkan sebagai
  • Selalu tambahkan nama server setelah nama pengguna/grup Microsoft Entra (misalnya @mydb)
  • Pastikan untuk menggunakan cara yang tepat untuk mengeja nama pengguna atau grup Microsoft Entra
  • Nama pengguna dan grup Microsoft Entra peka huruf besar/kecil
  • Saat menyambungkan sebagai grup, gunakan hanya nama grup (mis. GroupName@mydb)
  • Jika nama mengandung spasi, gunakan \ sebelum setiap spasi untuk meng-escapenya

Perhatikan pengaturan “enable-cleartext-plugin” – Anda perlu menggunakan konfigurasi serupa dengan klien lain untuk memastikan token dikirim ke server tanpa di-hash.

Anda sekarang diautentikasi ke server MySQL Anda menggunakan autentikasi Microsoft Entra.

Membuat pengguna Microsoft Entra di Azure Database for MySQL

Untuk menambahkan pengguna Microsoft Entra ke database Azure Database for MySQL Anda, lakukan langkah-langkah berikut setelah menyambungkan (lihat bagian selanjutnya tentang cara menyambungkan):

  1. Pertama pastikan bahwa pengguna <user>@yourtenant.onmicrosoft.com Microsoft Entra adalah pengguna yang valid di penyewa Microsoft Entra.
  2. Masuk ke instans Azure Database for MySQL Anda sebagai pengguna Admin Microsoft Entra.
  3. Buat pengguna <user>@yourtenant.onmicrosoft.com di Azure Database for MySQL.

Contoh:

CREATE AADUSER 'user1@yourtenant.onmicrosoft.com';

Untuk nama pengguna yang melebihi 32 karakter, sebaiknya gunakan alias sebagai gantinya, untuk digunakan saat menyambungkan:

Contoh:

CREATE AADUSER 'userWithLongName@yourtenant.onmicrosoft.com' as 'userDefinedShortName'; 

Catatan

  1. MySQL mengabaikan spasi awal dan akhir, sehingga nama pengguna tidak boleh memiliki spasi awal atau akhir.
  2. Mengautentikasi pengguna melalui ID Microsoft Entra tidak memberi pengguna izin apa pun untuk mengakses objek dalam database Azure Database for MySQL. Anda harus memberi pengguna izin yang diperlukan secara manual.

Membuat grup Microsoft Entra di Azure Database for MySQL

Untuk mengaktifkan grup Microsoft Entra untuk akses ke database Anda, gunakan mekanisme yang sama seperti untuk pengguna, tetapi tentukan nama grup:

Contoh:

CREATE AADUSER 'Prod_DB_Readonly';

Saat masuk, anggota grup akan menggunakan token akses pribadi mereka, tetapi masuk dengan nama grup yang ditentukan sebagai nama pengguna.

Validasi Token

Autentikasi Microsoft Entra di Azure Database for MySQL memastikan bahwa pengguna ada di server MySQL, dan memeriksa validitas token dengan memvalidasi konten token. Langkah-langkah validasi token berikut dilakukan:

  • Token ditandatangani oleh ID Microsoft Entra dan belum dirusak
  • Token dikeluarkan oleh ID Microsoft Entra untuk penyewa yang terkait dengan server
  • Token belum kedaluwarsa
  • Token adalah untuk Azure Database for MySQL (dan bukan sumber daya Azure lainnya)

Kompatibilitas dengan driver aplikasi

Sebagian besar driver didukung, namun pastikan untuk menggunakan pengaturan untuk mengirim kata sandi dalam teks yang jelas, sehingga token dikirim tanpa modifikasi.

  • C/C++
    • libmysqlclient: Didukung
    • mysql-connector-c++: Didukung
  • Java
    • Konektor/J (mysql-connector-java): Didukung, harus menggunakan pengaturan useSSL
  • Python
    • Connector/Python: Didukung
  • Ruby
    • mysql2: Didukung
  • .BERSIH
    • mysql-connector-net: Didukung, perlu menambahkan plugin untuk mysql_clear_password
    • mysql-net/MySqlConnector: Didukung
  • Node.js
    • mysqljs: Tidak didukung (tidak mengirim token dalam cleartext tanpa patch)
    • node-mysql2: Didukung
  • Perl
    • DBD::mysql: Didukung
    • Net::MySQL: Tidak didukung
  • Pergi
    • go-sql-driver: Didukung, tambahkan ?tls=true&allowCleartextPasswords=true ke string koneksi

Langkah berikutnya