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 PostgreSQL adalah layanan database relasional berdasarkan mesin database Postgres sumber terbuka. Ini adalah database yang dikelola sepenuhnya sebagai layanan yang dapat menangani beban kerja misi-kritis dengan performa yang dapat diprediksi, keamanan, ketersediaan tinggi, dan skalabilitas dinamis.
Dari versi 4.5.0, Spring Cloud Azure mendukung berbagai jenis kredensial untuk autentikasi ke Server Fleksibel Azure Database for PostgreSQL.
Versi PostgreSQL yang didukung
Untuk versi yang didukung, lihat Versi utama PostgreSQL yang Didukung di Azure Database for PostgreSQL - Server Fleksibel.
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 PostgreSQL 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 PostgreSQL. Panah menunjukkan jalur komunikasi.
Konfigurasi
Spring Cloud Azure for PostgreSQL mendukung dua tingkat opsi konfigurasi berikut:
Opsi konfigurasi autentikasi global
credentialdanprofiledengan awalanspring.cloud.azure.Opsi konfigurasi umum Spring Cloud Azure for PostgreSQL.
Tabel berikut ini memperlihatkan opsi konfigurasi umum Spring Cloud Azure for PostgreSQL:
| 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 dari file sertifikat. |
spring.datasource.azure.credential.client-certificate-path |
Jalur ke file sertifikat PEM yang digunakan saat melakukan autentikasi service principal 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 yang digunakan saat melakukan autentikasi service principal 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, ID klien akan digunakan sebagai ID klien identitas terkelola yang ditetapkan pengguna. Nilai defaultnya adalah false. |
spring.datasource.azure.credential.password |
Kata sandi yang digunakan saat melakukan autentikasi nama pengguna/kata sandi dengan Azure. |
spring.datasource.azure.credential.username |
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. |
spring.datasource.azure.profile.environment.active-directory-endpoint |
Endpoint Microsoft Entra yang akan dihubungkan ke. |
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-postgresql</artifactId>
</dependency>
Nota
Koneksi tanpa kata sandi telah didukung sejak versi 4.5.0.
Jangan lupa untuk menambahkan BOM spring-cloud-azure-dependencies bersama 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 PostgreSQL.
Menyambungkan ke Azure PostgreSQL secara lokal tanpa kata sandi
Untuk membuat pengguna dan memberikan izin, lihat bagian Membuat pengguna non-admin PostgreSQL dan memberikan izin bagian Menggunakan Spring Data JDBC dengan Azure Database for PostgreSQL.
Konfigurasikan properti berikut dalam file application.yml Anda:
spring: datasource: url: jdbc:postgresql://${AZ_DATABASE_SERVER_NAME}.postgres.database.azure.com:5432/${AZ_DATABASE_NAME}?sslmode=require username: ${AZ_POSTGRESQL_AD_NON_ADMIN_USERNAME} azure: passwordless-enabled: true
Hubungkan ke Azure PostgreSQL menggunakan service principal
Tetapkan peran kepada prinsipal layanan:
Buat skrip SQL yang disebut create_ad_user_sp.sql untuk membuat pengguna non-admin. Tambahkan konten berikut dan simpan secara lokal:
Penting
Pastikan
<service-principal-name>sudah ada di tenant Microsoft Entra Anda, atau Anda tidak akan dapat membuat pengguna non-administrator.cat << EOF > create_ad_user_sp.sql select * from pgaadauth_create_principal('<service-principal-name>', false, false); EOFGunakan perintah berikut untuk menjalankan skrip SQL untuk membuat pengguna non-admin Microsoft Entra:
psql "host=$AZ_DATABASE_SERVER_NAME.postgres.database.azure.com user=$CURRENT_USERNAME@$AZ_DATABASE_SERVER_NAME dbname=postgres port=5432 password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken) sslmode=require" < 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:postgresql://${AZ_DATABASE_SERVER_NAME}.postgres.database.azure.com:5432/${AZ_DATABASE_NAME}?sslmode=require username: ${AZ_POSTGRESQL_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 PostgreSQL dengan Identitas Terkelola di Azure Spring Apps
Untuk mengaktifkan identitas terkelola, lihat Tetapkan identitas terkelola menggunakan portal Microsoft Azure bagian Memigrasikan aplikasi untuk menggunakan koneksi tanpa kata sandi dengan Azure Database for PostgreSQL.
Untuk memberikan izin, lihat bagian Tetapkan peran ke identitas terkelolaMemigrasikan aplikasi untuk menggunakan koneksi tanpa kata sandi dengan Azure Database for PostgreSQL.
Konfigurasikan properti berikut dalam file application.yml Anda:
spring: cloud: azure: credential: managed-identity-enabled: true client-id: ${AZURE_CLIENT_ID} datasource: url: jdbc:postgresql://${AZ_DATABASE_SERVER_NAME}.postgres.database.azure.com:5432/${AZ_DATABASE_NAME}?sslmode=require username: ${AZ_POSTGRESQL_AD_MI_USERNAME} azure: passwordless-enabled: true
Nota
Untuk informasi selengkapnya, lihat Tutorial : Menyebarkan aplikasi Spring ke Azure Spring Apps dengan koneksi tanpa kata sandi ke database Azure
Contoh
Lihat repositori azure-spring-boot-samples di GitHub.