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.
Artikel ini menjelaskan metode autentikasi Spring Cloud Azure dan membantu Anda memilih jenis kredensial yang tepat untuk mengamankan akses ke sumber daya Azure.
Autentikasi dan otorisasi dengan ID Microsoft Entra
Dengan menggunakan Microsoft Entra ID, Anda dapat menggunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk memberikan izin kepada prinsip keamanan, yang dapat menjadi pengguna atau perwakilan layanan aplikasi. Saat prinsip keamanan (pengguna atau aplikasi) mencoba mengakses sumber daya Azure, seperti sumber daya Azure Event Hubs, permintaan harus diotorisasi. Dengan menggunakan Microsoft Entra ID, akses ke sumber daya adalah proses dua langkah:
- Pertama, autentikasi identitas perwakilan keamanan dan kembalikan token OAuth 2.0.
- Selanjutnya, teruskan token sebagai bagian dari permintaan ke layanan Azure untuk mengotorisasi akses ke sumber daya yang ditentukan.
Jenis kredensial
Spring Cloud Azure memungkinkan Anda mengonfigurasi berbagai jenis kredensial untuk autentikasi, termasuk DefaultAzureCredential, , WorkloadIdentityCredential, ManagedIdentityCredentialClientSecretCredential, AzureCliCredential, dan banyak lagi.
DefaultAzureCredential
DefaultAzureCredential sesuai untuk sebagian besar skenario di mana aplikasi dimaksudkan untuk berjalan di Azure Cloud, karena menggabungkan kredensial berikut:
- Kredensial yang umumnya digunakan untuk mengautentikasi saat disebarkan.
- Kredensial yang digunakan untuk mengautentikasi di lingkungan pengembangan.
Nota
DefaultAzureCredentialmenyederhanakan memulai Azure SDK dengan menangani skenario umum dengan perilaku default yang wajar. Jika Anda menginginkan kontrol lainnya atau pengaturan default tidak mendukung skenario Anda, gunakan jenis kredensial lainnya.
DefaultAzureCredential mencoba mengautentikasi melalui mekanisme berikut secara berurutan:
- Lingkungan -
DefaultAzureCredentialmencoba membaca informasi akun yang ditentukan melalui variabel lingkungan dan menggunakannya untuk mengautentikasi. - Identitas Terkelola - Jika aplikasi disebarkan ke host Azure dengan Identitas Terkelola diaktifkan,
DefaultAzureCredentialcoba autentikasi dengan menggunakan akun tersebut. - Identitas Beban Kerja - Jika aplikasi disebarkan ke komputer virtual (VM),
DefaultAzureCredentialcoba autentikasi dengan menggunakan akun tersebut. - Cache Token Bersama - Jika Anda mengautentikasi melalui Visual Studio,
DefaultAzureCredentialcoba autentikasi dengan menggunakan akun tersebut. - IntelliJ - Jika Anda mengautentikasi melalui Azure Toolkit untuk IntelliJ,
DefaultAzureCredentialcoba autentikasi dengan menggunakan akun tersebut. - Azure CLI - Jika Anda mengautentikasi akun melalui perintah Azure CLI
az login,DefaultAzureCredentialcoba autentikasi dengan menggunakan akun tersebut. - Azure PowerShell - Jika Anda mengautentikasi melalui Azure PowerShell,
DefaultAzureCredentialcoba autentikasi dengan menggunakan akun tersebut. - Azure Developer CLI - Jika Anda mengautentikasi melalui Azure Developer CLI,
DefaultAzureCredentialcoba autentikasi dengan menggunakan akun tersebut.
Ujung
Pastikan perwakilan keamanan memiliki izin yang memadai untuk mengakses sumber daya Azure. Untuk informasi selengkapnya, lihat Mengotorisasi akses dengan ID Microsoft Entra.
Nota
Karena Spring Cloud Azure AutoConfigure 4.1.0, Anda harus mendaftarkan kacang ThreadPoolTaskExecutor bernama springCloudAzureCredentialTaskExecutor untuk mengelola semua utas yang dibuat oleh Azure Identity. Nama setiap utas yang dikelola oleh kumpulan utas ini diawali dengan az-identity-. Kacang ThreadPoolTaskExecutor ini independen dari kacang Executor yang disediakan oleh Spring Boot.
Identitas terkelola
Tantangan umum adalah manajemen rahasia dan kredensial yang digunakan untuk mengamankan komunikasi antara komponen yang berbeda yang membentuk solusi. Identitas terkelola menghilangkan kebutuhan untuk mengelola kredensial. Identitas terkelola menyediakan identitas untuk digunakan aplikasi saat menyambungkan ke sumber daya yang mendukung autentikasi Microsoft Entra. Aplikasi dapat menggunakan identitas terkelola untuk mendapatkan token Microsoft Entra. Misalnya, aplikasi dapat menggunakan identitas terkelola untuk mengakses sumber daya seperti Azure Key Vault tempat Anda dapat menyimpan kredensial dengan cara yang aman atau untuk mengakses akun penyimpanan.
Gunakan identitas terkelola alih-alih menggunakan string koneksi atau kunci dalam aplikasi Anda karena lebih aman dan menyimpan masalah dalam mengelola rahasia dan kredensial. Dalam hal ini, DefaultAzureCredential lebih baik melayani skenario pengembangan secara lokal dengan menggunakan informasi akun yang disimpan secara lokal, lalu menyebarkan aplikasi ke Azure Cloud dan menggunakan identitas terkelola.
Jenis identitas terkelola
Ada dua jenis identitas terkelola:
- yang ditetapkan sistem - Beberapa layanan Azure memungkinkan Anda mengaktifkan identitas terkelola langsung pada instans layanan. Saat mengaktifkan identitas terkelola yang ditetapkan sistem, Anda membuat identitas di Microsoft Entra yang terikat dengan siklus hidup instans layanan tersebut. Jadi saat Anda menghapus sumber daya, Azure secara otomatis menghapus identitas untuk Anda. Secara desain, hanya sumber daya Azure yang dapat menggunakan identitas ini untuk meminta token dari ID Microsoft Entra.
- Ditetapkan pengguna - Anda juga dapat membuat identitas terkelola sebagai sumber daya Azure mandiri. Anda dapat membuat identitas terkelola yang ditetapkan pengguna dan menetapkannya ke satu atau beberapa instans layanan Azure. Dengan identitas terkelola yang ditetapkan pengguna, Anda mengelola identitas secara terpisah dari sumber daya yang menggunakannya.
Nota
Saat menggunakan identitas terkelola yang ditetapkan pengguna, tentukan ID klien melalui spring.cloud.azure.credential.client-id atau spring.cloud.azure.<azure-service>.credential.client-id. Anda tidak memerlukan konfigurasi kredensial jika Anda menggunakan identitas terkelola yang ditetapkan sistem.
Ujung
Untuk mengakses sumber daya Azure, pastikan prinsip keamanan memiliki izin yang memadai. Untuk informasi selengkapnya, lihat Mengotorisasi akses dengan ID Microsoft Entra.
Untuk informasi selengkapnya tentang identitas terkelola, lihat Apa itu identitas terkelola untuk sumber daya Azure?.
Jenis kredensial lainnya
Jika Anda menginginkan kontrol lebih dari apa yang disediakan oleh DefaultAzureCredential, atau pengaturan default tidak mendukung skenario Anda, gunakan jenis kredensial lainnya.
Mengautentikasi dengan ID Microsoft Entra
Untuk menyambungkan aplikasi ke sumber daya yang mendukung autentikasi Microsoft Entra, atur konfigurasi berikut dengan awalan spring.cloud.azure.credential atau spring.cloud.azure.<azure-service>.credential.
Tabel berikut ini mencantumkan properti autentikasi:
| Harta benda | Deskripsi |
|---|---|
client-id |
ID klien yang akan digunakan saat melakukan autentikasi perwakilan layanan dengan Azure. |
client-secret |
Rahasia klien untuk digunakan saat melakukan autentikasi perwakilan layanan dengan Azure. |
client-certificate-path |
Jalur file sertifikat PEM yang akan digunakan saat melakukan autentikasi perwakilan layanan dengan Azure. |
client-certificate-password |
Kata sandi file sertifikat. |
username |
Nama pengguna yang akan digunakan saat melakukan autentikasi nama pengguna/kata sandi dengan Azure. |
password |
Kata sandi yang digunakan saat melakukan autentikasi nama pengguna/kata sandi dengan Azure. |
managed-identity-enabled |
Apakah akan mengaktifkan identitas terkelola. |
token-credential-bean-name |
Nama kacang jenis TokenCredential untuk digunakan saat melakukan autentikasi dengan Azure. |
Ujung
Untuk daftar semua properti konfigurasi Spring Cloud Azure, lihat properti konfigurasi Spring Cloud Azure.
Aplikasi ini mencari di beberapa tempat untuk menemukan kredensial yang tersedia. Setiap pabrik pembuat klien Azure SDK mengadopsi kacang kustom jenis TokenCredential terlebih dahulu jika Anda menentukan properti token-credential-bean-name, dan kembali digunakan DefaultAzureCredential jika Anda tidak mengonfigurasi properti kredensial.
Mengautentikasi menggunakan kacang TokenCredential yang dikustomisasi
Contoh berikut menunjukkan cara menentukan biji kustom TokenCredential untuk melakukan autentikasi:
@Bean
TokenCredential myTokenCredential() {
// Your concrete TokenCredential instance
}
spring.cloud.azure:
credential:
token-credential-bean-name: myTokenCredential
Mengautentikasi menggunakan identitas terkelola yang ditetapkan sistem
Contoh berikut menunjukkan cara mengautentikasi dengan menggunakan identitas terkelola yang ditetapkan sistem:
spring.cloud.azure:
credential:
managed-identity-enabled: true
Mengautentikasi menggunakan identitas terkelola yang ditetapkan pengguna
Contoh berikut menunjukkan cara mengautentikasi dengan menggunakan identitas terkelola yang ditetapkan pengguna:
spring.cloud.azure:
credential:
managed-identity-enabled: true
client-id: ${AZURE_CLIENT_ID}
Mengautentikasi menggunakan perwakilan layanan dengan rahasia klien
Contoh berikut menunjukkan cara mengautentikasi dengan menggunakan perwakilan layanan dengan rahasia klien:
spring.cloud.azure:
credential:
client-id: ${AZURE_CLIENT_ID}
client-secret: ${AZURE_CLIENT_SECRET}
profile:
tenant-id: <tenant>
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) dari AADSTS50020 Kesalahan - 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.
Mengautentikasi menggunakan perwakilan layanan dengan sertifikat klien
Contoh berikut menunjukkan cara mengautentikasi dengan menggunakan perwakilan layanan dengan sertifikat PFX klien:
spring.cloud.azure:
credential:
client-id: ${AZURE_CLIENT_ID}
client-certificate-path: ${AZURE_CLIENT_CERTIFICATE_PATH}
client-certificate-password: ${AZURE_CLIENT_CERTIFICATE_PASSWORD}
profile:
tenant-id: <tenant>
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) dari AADSTS50020 Kesalahan - 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.
Contoh berikut menunjukkan cara mengautentikasi dengan menggunakan perwakilan layanan dengan sertifikat PEM klien:
spring.cloud.azure:
credential:
client-id: ${AZURE_CLIENT_ID}
client-certificate-path: ${AZURE_CLIENT_CERTIFICATE_PATH}
profile:
tenant-id: <tenant>
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) dari AADSTS50020 Kesalahan - 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.
Mengautentikasi dengan menggunakan kredensial pengguna
Contoh berikut menunjukkan cara mengautentikasi dengan menggunakan kredensial pengguna:
spring.cloud.azure:
credential:
client-id: ${AZURE_CLIENT_ID}
username: ${AZURE_USER_USERNAME}
password: ${AZURE_USER_PASSWORD}
Mengautentikasi layanan dengan menggunakan kredensial yang berbeda dari orang lain
Contoh berikut menunjukkan cara mengautentikasi dengan Key Vault dengan menggunakan perwakilan layanan yang berbeda. Contoh ini mengonfigurasi aplikasi dengan dua kredensial: satu identitas terkelola yang ditetapkan sistem dan satu perwakilan layanan. Klien Rahasia Key Vault menggunakan perwakilan layanan, tetapi komponen lain menggunakan identitas terkelola sebagai gantinya.
spring.cloud.azure:
credential:
managed-identity-enabled: true
keyvault.secret:
credential:
client-id: ${AZURE_CLIENT_ID}
client-secret: ${AZURE_CLIENT_SECRET}
profile:
tenant-id: <tenant>
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) dari AADSTS50020 Kesalahan - 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.
Mengotorisasi akses dengan ID Microsoft Entra
Langkah otorisasi mengharuskan penetapan satu atau beberapa peran Azure ke prinsip keamanan. Peran yang Anda tetapkan ke perwakilan keamanan menentukan izin yang dimiliki prinsipal.
Ujung
Untuk daftar semua peran bawaan Azure, lihat peran bawaan Azure.
Tabel berikut ini mencantumkan peran bawaan Azure untuk mengotorisasi akses ke layanan Azure yang didukung di Spring Cloud Azure:
Nota
Saat Anda menggunakan Spring Cloud Azure Resource Manager untuk mendapatkan string koneksi untuk Azure Event Hubs, Bus Layanan, dan Antrean Penyimpanan, atau properti Cache for Redis, tetapkan peran Contributorbawaan Azure . Azure Cache for Redis bersifat khusus, dan Anda juga dapat menetapkan peran Redis Cache Contributor untuk mendapatkan properti Redis.
Nota
Kebijakan akses Key Vault menentukan apakah prinsip keamanan tertentu, yaitu pengguna, aplikasi, atau grup pengguna, dapat melakukan operasi yang berbeda pada rahasia, kunci, dan sertifikat Key Vault. Anda dapat menetapkan kebijakan akses dengan menggunakan portal Azure, Azure CLI, atau Azure PowerShell. Untuk informasi selengkapnya, lihat Menetapkan kebijakan akses Key Vault.
Penting
Azure Cosmos DB mengekspos dua definisi peran bawaan: Cosmos DB Built-in Data Reader dan Cosmos DB Built-in Data Contributor. Namun, dukungan portal Microsoft Azure untuk manajemen peran belum tersedia. Untuk informasi selengkapnya tentang model izin, definisi peran, dan penetapan peran, lihat Mengonfigurasi kontrol akses berbasis peran dengan ID Microsoft Entra untuk akun Azure Cosmos DB Anda.
Mengautentikasi dengan menggunakan token SAS
Anda juga dapat mengonfigurasi layanan untuk autentikasi dengan menggunakan Tanda Tangan Akses Bersama (SAS).
spring.cloud.azure.<azure-service>.sas-token Gunakan properti untuk mengonfigurasi autentikasi ini. Misalnya, gunakan spring.cloud.azure.storage.blob.sas-token untuk mengautentikasi ke layanan Blob Penyimpanan.
Mengautentikasi dengan menggunakan string koneksi
Beberapa layanan Azure mendukung string koneksi untuk memberikan informasi koneksi dan kredensial. Untuk menyambungkan ke layanan Azure tersebut dengan menggunakan string koneksi, konfigurasikan spring.cloud.azure.<azure-service>.connection-string. Misalnya, konfigurasikan spring.cloud.azure.eventhubs.connection-string untuk menyambungkan ke layanan Azure Event Hubs.