Menggunakan ID Microsoft Entra untuk autentikasi dengan PostgreSQL

BERLAKU UNTUK: Azure Database for PostgreSQL - Server Tunggal

Penting

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

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

Mengatur pengguna Admin Microsoft Entra

Hanya pengguna administrator Microsoft Entra yang dapat membuat/mengaktifkan pengguna untuk autentikasi berbasis ID Microsoft Entra. Sebaiknya jangan gunakan administrator Microsoft Entra untuk operasi database reguler, karena telah meningkatkan izin pengguna (misalnya CREATEDB).

Untuk mengatur administrator Microsoft Entra (Anda bisa menggunakan pengguna atau grup), ikuti langkah-langkah berikut

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

mengatur administrator Microsoft Entra

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

Penting

Saat mengatur admin, pengguna baru ditambahkan ke server Azure Database for PostgreSQL dengan izin admin penuh. Pengguna Admin Microsoft Entra di Azure Database for PostgreSQL akan memiliki peran azure_ad_admin. Hanya satu admin Microsoft Entra yang dapat dibuat per server PostgreSQL dan pilihan yang lain yang akan menimpa admin Microsoft Entra yang ada yang dikonfigurasi untuk server. Anda dapat menentukan grup Microsoft Entra alih-alih pengguna individual untuk memiliki beberapa administrator.

Hanya satu admin Microsoft Entra yang dapat dibuat per server PostgreSQL dan pilihan yang lain yang akan menimpa admin Microsoft Entra yang ada yang dikonfigurasi untuk server. Anda dapat menentukan grup Microsoft Entra alih-alih pengguna individual untuk memiliki beberapa administrator. Perhatikan bahwa Anda kemudian akan masuk dengan nama grup untuk tujuan administrasi.

Koneksi ke Azure Database for PostgreSQL menggunakan ID Microsoft Entra

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

alur autentikasi

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

Saat ini kami telah menguji klien berikut:

  • Baris perintah psql (gunakan variabel PGPASSWORD untuk meneruskan token, lihat langkah 3 untuk informasi selengkapnya)
  • Azure Data Studio (menggunakan ekstensi PostgreSQL)
  • Klien berbasis libpq lainnya (misalnya kerangka kerja aplikasi umum dan ORM)
  • PgAdmin (hapus centang sambungkan sekarang di pembuatan server. Lihat langkah 4 untuk informasi lebih lanjut)

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.

Mengautentikasi dengan ID Microsoft Entra sebagai satu pengguna

Langkah 1: Masuk ke langganan Azure pengguna

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 PostgreSQL.

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

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

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

Token adalah untai (karakter) Base 64 yang mengodekan semua informasi tentang pengguna yang diautentikasi dan yang ditargetkan ke layanan Azure Database for PostgreSQL.

Langkah 3: Gunakan token sebagai kata sandi untuk masuk dengan psql klien

Saat menyambungkan Anda perlu menggunakan token akses sebagai kata sandi pengguna PostgreSQL.

Saat menggunakan klien baris perintah psql, token akses perlu diteruskan melalui variabel lingkungan PGPASSWORD, karena token akses melebihi panjang kata sandi yang dapat diterima secara langsung psql:

Contoh Windows:

set PGPASSWORD=<copy/pasted TOKEN value from step 2>
$env:PGPASSWORD='<copy/pasted TOKEN value from step 2>'

Contoh Linux/macOS:

export PGPASSWORD=<copy/pasted TOKEN value from step 2>

Sekarang Anda dapat memulai koneksi dengan Azure Database for PostgreSQL seperti biasanya:

psql "host=mydb.postgres... user=user@tenant.onmicrosoft.com@mydb dbname=postgres sslmode=require"

Langkah 4: Gunakan token sebagai kata sandi untuk masuk dengan PgAdmin

Untuk menyambungkan menggunakan token Microsoft Entra dengan pgAdmin, Anda harus mengikuti langkah-langkah berikutnya:

  1. Hapus centang opsi sambungkan sekarang di pembuatan server.
  2. Masukkan detail server Anda di tab koneksi dan simpan.
  3. Dari menu browser, pilih sambungkan ke server Azure Database for PostgreSQL
  4. Masukkan kata sandi token AD saat diminta.

Pertimbangan penting saat menyambungkan:

  • user@tenant.onmicrosoft.com adalah nama pengguna Microsoft Entra
  • Pastikan untuk menggunakan cara yang tepat dieja pengguna Azure - karena nama pengguna dan grup Microsoft Entra peka huruf besar/kecil.
  • Jika nama berisi spasi, gunakan \ sebelum setiap spasi untuk memisahkannya.
  • Validitas token akses berkisar antara 5 menit hingga 60 menit. Kami menyarankan agar Anda mendapatkan token akses sebelum memulai login ke Azure Database for PostgreSQL.

Anda sekarang diautentikasi ke server Azure Database for PostgreSQL menggunakan autentikasi Microsoft Entra.

Mengautentikasi dengan ID Microsoft Entra sebagai anggota grup

Langkah 1: Membuat grup Microsoft Entra di Azure Database for PostgreSQL

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

Contoh:

CREATE USER <new_user> IN ROLE azure_ad_user;

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

Langkah 2: Masuk ke langganan Azure pengguna

Autentikasi dengan MICROSOFT Entra ID menggunakan alat Azure CLI. Langkah ini tidak diperlukan di Azure Cloud Shell. Pengguna harus menjadi anggota grup Microsoft Entra.

az login

Langkah 3: Mengambil token akses Microsoft Entra

Panggil alat Azure CLI untuk memperoleh token akses untuk pengguna terautentikasi Microsoft Entra dari langkah 2 untuk mengakses Azure Database for PostgreSQL.

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

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

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

Langkah 4: Gunakan token sebagai kata sandi untuk masuk dengan psql atau PgAdmin (lihat langkah-langkah di atas untuk koneksi pengguna)

Pertimbangan penting saat terhubung sebagai anggota grup:

  • groupname@mydb adalah nama 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 grup Microsoft Entra.
  • Nama pengguna dan grup Microsoft Entra peka huruf besar/kecil
  • Saat menyambungkan sebagai grup, gunakan hanya nama grup (mis. NamaGrup@mydb) dan bukan alias anggota grup.
  • Jika nama mengandung spasi, gunakan \ sebelum setiap spasi untuk memisahkannya.
  • Validitas token akses berkisar antara 5 menit hingga 60 menit. Kami menyarankan agar Anda mendapatkan token akses sebelum memulai login ke Azure Database for PostgreSQL.

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

Membuat pengguna Microsoft Entra di Azure Database for PostgreSQL

Untuk menambahkan pengguna Microsoft Entra ke database Azure Database for PostgreSQL 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 PostgreSQL Anda sebagai pengguna Admin Microsoft Entra.
  3. Buat peran <user>@yourtenant.onmicrosoft.com di Azure Database for PostgreSQL.
  4. Jadikan <user>@yourtenant.onmicrosoft.com anggota peran azure_ad_user. Ini hanya boleh diberikan kepada pengguna Microsoft Entra.

Contoh:

CREATE USER "user1@yourtenant.onmicrosoft.com" IN ROLE azure_ad_user;

Catatan

Mengautentikasi pengguna melalui ID Microsoft Entra tidak memberi pengguna izin apa pun untuk mengakses objek dalam database Azure Database for PostgreSQL. Anda harus memberi pengguna izin yang diperlukan secara manual.

Validasi Token

Autentikasi Microsoft Entra di Azure Database for PostgreSQL memastikan bahwa pengguna ada di server PostgreSQL, 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 untuk Azure Database for PostgreSQL (dan bukan sumber daya Azure lainnya)

Memigrasikan pengguna PostgreSQL yang ada ke autentikasi berbasis ID Microsoft Entra

Anda dapat mengaktifkan autentikasi Microsoft Entra untuk pengguna yang sudah ada. Ada dua kasus yang perlu dipertimbangkan:

Kasus 1: Nama pengguna PostgreSQL cocok dengan Nama Prinsipal pengguna Microsoft Entra

Dalam kasus yang tidak mungkin bahwa pengguna yang ada sudah cocok dengan nama pengguna Microsoft Entra, Anda dapat memberikan azure_ad_user peran kepada mereka untuk mengaktifkannya untuk autentikasi Microsoft Entra:

GRANT azure_ad_user TO "existinguser@yourtenant.onmicrosoft.com";

Mereka sekarang akan dapat masuk dengan kredensial Microsoft Entra alih-alih menggunakan kata sandi pengguna PostgreSQL yang dikonfigurasi sebelumnya.

Kasus 2: Nama pengguna PostgreSQL berbeda dari Nama Prinsipal pengguna Microsoft Entra

Jika pengguna PostgreSQL tidak ada di ID Microsoft Entra atau memiliki nama pengguna yang berbeda, Anda dapat menggunakan grup Microsoft Entra untuk mengautentikasi sebagai pengguna PostgreSQL ini. Anda dapat memigrasikan pengguna Azure Database for PostgreSQL yang ada ke MICROSOFT Entra ID dengan membuat grup Microsoft Entra dengan nama yang cocok dengan pengguna PostgreSQL, lalu memberikan peran azure_ad_user kepada pengguna PostgreSQL yang ada:

GRANT azure_ad_user TO <new_user>;

Ini mengasumsikan Anda telah membuat grup "DBReadUser" di ID Microsoft Entra Anda. Pengguna yang termasuk dalam grup tersebut sekarang akan dapat masuk ke database sebagai pengguna ini.

Langkah berikutnya