Bagikan melalui


Menggunakan ID Microsoft Entra untuk autentikasi dengan Azure Database for PostgreSQL

Dalam artikel ini, Anda mengonfigurasi akses ID Microsoft Entra untuk autentikasi dengan Azure Database for PostgreSQL. Anda juga mempelajari cara menggunakan token Microsoft Entra dengan instans server fleksibel Azure Database for PostgreSQL.

Anda dapat mengonfigurasi autentikasi Microsoft Entra untuk instans server fleksibel Azure Database for PostgreSQL baik selama provisi server ataupun setelahnya. Hanya pengguna administrator Microsoft Entra yang dapat membuat atau mengaktifkan pengguna untuk autentikasi berbasis ID Microsoft Entra. Jangan gunakan administrator Microsoft Entra untuk operasi database reguler karena peran tersebut telah meningkatkan izin pengguna (misalnya, CREATEB).

Anda dapat memiliki beberapa pengguna admin Microsoft Entra dengan Azure Database for PostgreSQL. Pengguna admin Microsoft Entra dapat menjadi pengguna, grup, atau perwakilan layanan.

Prasyarat

Mengonfigurasi persyaratan jaringan

MICROSOFT Entra ID adalah aplikasi multipenyewa. Ini membutuhkan konektivitas keluar untuk operasi seperti menambahkan grup admin Microsoft Entra.

Persyaratan jaringan bervariasi menurut topologi:

  • Akses publik (alamat IP yang diizinkan): Tidak diperlukan aturan keluar tambahan.
  • Akses privat (integrasi jaringan virtual):
    • Tambahkan aturan NSG keluar yang hanya mengizinkan lalu lintas ke tag layanan AzureActiveDirectory.
    • Jika Anda menggunakan tabel rute, tambahkan rute dengan tujuan AzureActiveDirectory dan lompatan berikutnya Internet.
    • Jika Anda menggunakan proksi, izinkan hanya lalu lintas HTTPS ke AzureActiveDirectory tag layanan.
  • DNS Kustom:
    • Pastikan nama host ini dapat diakses secara publik: login.microsoftonline.com (autentikasi) dan graph.microsoft.com (Microsoft Graph API).
    • Jika resolusi gagal, penugasan admin dan operasi akuisisi token gagal.

Untuk mengatur admin Microsoft Entra selama provisi server, ikuti langkah-langkah berikut:

  1. Di portal Microsoft Azure, selama provisi server, pilih Autentikasi PostgreSQL dan Microsoft Entra atau autentikasi Microsoft Entra hanya sebagai metode autentikasi.
  2. Pada tab Atur admin , pilih pengguna, grup, perwakilan layanan, atau identitas terkelola Microsoft Entra yang valid di penyewa pelanggan untuk menjadi administrator Microsoft Entra.

Anda dapat secara opsional menambahkan akun admin PostgreSQL lokal jika Anda lebih suka menggunakan metode autentikasi PostgreSQL dan Microsoft Entra .

Nota

Anda hanya dapat menambahkan satu admin Microsoft Entra selama provisi server. Anda dapat menambahkan beberapa pengguna admin Microsoft Entra setelah server dibuat.

Untuk mengatur administrator Microsoft Entra setelah pembuatan server, ikuti langkah-langkah berikut:

  1. Di portal Microsoft Azure, pilih instans server fleksibel Azure Database for PostgreSQL yang ingin Anda aktifkan untuk ID Microsoft Entra.
  2. Di bawah Keamanan, pilih Autentikasi. Kemudian pilih autentikasi PostgreSQL dan Microsoft Entra atau autentikasi Microsoft Entra hanya sebagai metode autentikasi, berdasarkan kebutuhan Anda.
  3. Pilih Tambahkan Admin Microsoft Entra. Kemudian pilih pengguna, grup, perwakilan layanan, atau identitas terkelola Microsoft Entra yang valid di penyewa pelanggan untuk menjadi administrator Microsoft Entra.
  4. Pilih Simpan.

Penting

Saat mengatur administrator, pengguna baru ditambahkan ke instans server fleksibel Azure Database for PostgreSQL Anda dengan izin administrator penuh.

Menyambungkan ke Azure Database for PostgreSQL dengan menggunakan ID Microsoft Entra

Integrasi Microsoft Entra berfungsi dengan alat PostgreSQL standar seperti psql, yang tidak diketahui dan dukungan Microsoft Entra hanya menentukan nama pengguna dan kata sandi saat Anda terhubung ke PostgreSQL.

Kami menguji klien berikut:

  • baris perintah psql: Gunakan PGPASSWORD variabel untuk meneruskan token.
  • Azure Data Studio: Gunakan ekstensi PostgreSQL.
  • Klien berbasis libpq lainnya: Contohnya termasuk kerangka kerja aplikasi umum dan pemeta hubungan objek (ORM).
  • PgAdmin: Hapus Sambungkan sekarang di pembuatan server.

Mengautentikasi dengan ID Microsoft Entra

Gunakan prosedur berikut untuk mengautentikasi dengan MICROSOFT Entra ID sebagai pengguna instans server fleksibel Azure Database for PostgreSQL.

Anda dapat mengikuti dengan menggunakan:

  • Azure Cloud Shell
  • Mesin virtual Azure
  • Komputer lokal Anda

Masuk ke Azure

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

az login

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

Mengambil token akses Microsoft Entra

Gunakan Azure CLI untuk mendapatkan token akses bagi pengguna yang diautentikasi Microsoft Entra untuk mengakses Azure Database for PostgreSQL. Berikut adalah contoh cloud publik:

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

Nilai sumber daya sebelumnya harus ditentukan seperti yang ditunjukkan. Untuk cloud lain, Anda dapat mencari nilai sumber daya dengan menggunakan perintah berikut:

az cloud show

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

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

Setelah autentikasi berhasil, ID Microsoft Entra mengembalikan token akses:

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

Token adalah string Base64. Ini mengodekan semua informasi tentang pengguna yang diautentikasi dan ditargetkan ke layanan Azure Database for PostgreSQL.

Gunakan token sebagai kata sandi untuk masuk dengan psql klien

Saat menyambungkan, gunakan token akses sebagai kata sandi pengguna PostgreSQL.

Saat Anda menggunakan klien baris perintah psql, Anda perlu meneruskan token akses melalui PGPASSWORD variabel lingkungan. Token akses lebih panjang dari panjang kata sandi yang dapat diterima psql secara langsung.

Berikut adalah contoh Windows:

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

Berikut adalah contoh Linux atau macOS:

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

Anda juga dapat menggabungkan langkah 2 dan langkah 3 bersama-sama dengan menggunakan penggantian perintah. Anda dapat memasukkan pengambilan token ke dalam variabel dan meneruskannya langsung sebagai nilai untuk PGPASSWORD variabel lingkungan:

export PGPASSWORD=$(az account get-access-token --resource-type oss-rdbms --query "[accessToken]" -o tsv)

Sekarang sambungkan ke Azure Database for PostgreSQL:

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

Menggunakan token sebagai kata sandi untuk masuk dengan PgAdmin

Untuk menyambungkan dengan menggunakan token Microsoft Entra dengan PgAdmin, ikuti langkah-langkah berikut:

  1. Buka PgAdmin dan pilih Daftarkan>Server.
  2. Pada tab Umum, masukkan nama koneksi dan hapus centang dari Sambungkan sekarang.
  3. Pada tab Koneksi , masukkan detail host. Atur Nama Pengguna ke Microsoft Entra UPN Anda (misalnya, user@tenant.onmicrosoft.com). Simpan.
  4. Di pohon, pilih server dan pilih Sambungkan Server.
  5. Saat diminta, tempelkan token akses sebagai kata sandi.

Berikut adalah beberapa pertimbangan penting saat Anda menyambungkan:

  • user@tenant.onmicrosoft.com adalah userPrincipalName dari pengguna Microsoft Entra.

  • Pastikan untuk menggunakan cara yang tepat untuk dieja pengguna Azure. Nama pengguna dan grup Microsoft Entra peka huruf besar/kecil.

  • Jika nama berisi spasi, gunakan garis miring terbelakang (\) sebelum setiap spasi untuk melepaskannya. Anda dapat menggunakan Azure CLI untuk mendapatkan pengguna yang masuk dan mengatur nilai untuk PGUSER variabel lingkungan:

    export PGUSER=$(az ad signed-in-user show --query "[userPrincipalName]" -o tsv | sed 's/ /\\ /g')
    
  • Validitas token akses adalah 5 menit hingga 60 menit. Anda harus mendapatkan token akses sebelum memulai masuk ke Azure Database for PostgreSQL.

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

Mengautentikasi dengan ID Microsoft Entra sebagai anggota grup

Bagian ini memperlihatkan cara menyambungkan dengan menggunakan grup Microsoft Entra. Anda harus menjadi anggota grup dan grup harus dibuat (dipetakan) dalam database.

Membuat entitas utama grup

Buat prinsipal grup (peran) dalam database (ganti nama tampilan sesuai kebutuhan):

select * from  pgaadauth_create_principal('Prod DB Readonly', false, false).

Jika sinkronisasi grup dinonaktifkan, anggota dapat masuk dengan menggunakan token akses mereka dan menentukan nama grup sebagai nama pengguna.

Jika sinkronisasi grup diaktifkan (melalui parameter server pgaadauth.enable_group_sync diatur ke "AKTIF"), anggota harus masuk dengan kredensial ID Entra individual mereka, tetapi masih dapat masuk dengan nama grup sebagai nama pengguna.

  • Login grup tetap tersedia karena alasan kompatibilitas tetapi dapat dinonaktifkan dengan: ALTER ROLE "ROLE_NAME" NOLOGIN;

  • Peran grup tidak boleh dihapus untuk mempertahankan sinkronisasi.

  • Grup disinkronkan otomatis setiap 30 menit.

  • Sinkronisasi manual dapat dipicu dengan: SELECT * FROM pgaadauth_sync_roles_for_group_members(); (pgaadauth.enable_group_sync param harus "AKTIF").

  • Perubahan pada metadata grup seperti nama grup tidak disinkronkan

  • Perubahan keanggotaan grup disinkronkan

    Nota

    Identitas terkelola dan prinsipal layanan didukung sebagai anggota grup.

Masuk ke Azure

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

az login

Mengambil token akses Microsoft Entra

Gunakan Azure CLI untuk mendapatkan token akses bagi pengguna yang diautentikasi Microsoft Entra untuk mengakses Azure Database for PostgreSQL. Berikut adalah contoh cloud publik:

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

Anda harus menentukan nilai sumber daya awal persis seperti yang ditunjukkan. Untuk cloud lain, Anda dapat mencari nilai sumber daya dengan menggunakan perintah berikut:

az cloud show

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

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

Setelah autentikasi berhasil, ID Microsoft Entra mengembalikan token akses:

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

Gunakan token sebagai kata sandi untuk masuk dengan psql atau PgAdmin

Pertimbangan ini sangat penting saat Anda terhubung sebagai anggota grup:

  • Nama grup harus sama persis dengan nama tampilan grup Microsoft Entra (peka huruf besar/kecil).
  • Gunakan hanya nama grup, bukan alias anggota.
  • Loloskan spasi jika diperlukan (misalnya, Prod\ DB\ Readonly).
  • Validitas token adalah 5–60 menit. Memperolehnya tepat sebelum menyambungkan; jangan menyimpan token dalam skrip.

Petunjuk / Saran

Jika autentikasi gagal, verifikasi bahwa peran database ada (misalnya, dengan \du) dan konfirmasi pengaturan pgaadauth.enable_group_sync.

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