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.
diagram
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 file sertifikat. |
spring.datasource.azure.credential.client-certificate-path |
Jalur file sertifikat PEM yang akan digunakan saat melakukan autentikasi perwakilan layanan 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 untuk digunakan saat melakukan autentikasi perwakilan layanan 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, akan menggunakan ID klien 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 |
Titik akhir Microsoft Entra untuk disambungkan. |
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.
Ingatlah untuk menambahkan spring-cloud-azure-dependencies BOM bersama dengan 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
Menyambungkan ke Azure PostgreSQL menggunakan perwakilan layanan
Tetapkan peran ke perwakilan 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 penyewa Microsoft Entra Anda, atau Anda tidak akan dapat membuat pengguna non-admin.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
Sampel
Lihat repositori azure-spring-boot-samples di GitHub.