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
- Di portal Azure, pilih instans Azure Database for PostgreSQL yang ingin Anda aktifkan untuk ID Microsoft Entra.
- Di bawah Pengaturan, pilih Admin Direktori Aktif:
- 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:
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:
- Hapus centang opsi sambungkan sekarang di pembuatan server.
- Masukkan detail server Anda di tab koneksi dan simpan.
- Dari menu browser, pilih sambungkan ke server Azure Database for PostgreSQL
- 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):
- Pertama pastikan bahwa pengguna
<user>@yourtenant.onmicrosoft.com
Microsoft Entra adalah pengguna yang valid di penyewa Microsoft Entra. - Masuk ke instans Azure Database for PostgreSQL Anda sebagai pengguna Admin Microsoft Entra.
- Buat peran
<user>@yourtenant.onmicrosoft.com
di Azure Database for PostgreSQL. - 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
- Tinjau konsep keseluruhan untuk autentikasi Microsoft Entra dengan Azure Database for PostgreSQL - Server Tunggal