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 semua metode autentikasi Spring Cloud Azure.
Autentikasi dan otorisasi dengan ID Microsoft Entra
Dengan MICROSOFT Entra ID, Anda dapat menggunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk memberikan izin kepada prinsip keamanan, yang mungkin merupakan pengguna atau perwakilan layanan aplikasi. Saat prinsip keamanan (pengguna atau aplikasi) mencoba mengakses sumber daya Azure, misalnya sumber daya Azure Event Hubs, permintaan harus diotorisasi. Dengan ID Microsoft Entra, akses ke sumber daya adalah proses dua langkah:
- Pertama, identitas prinsip keamanan diautentikasi, dan token OAuth 2.0 dikembalikan.
- Selanjutnya, token diteruskan 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, ManagedIdentityCredential, ClientSecretCredential, AzureCliCredential, dan sebagainya.
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
DefaultAzureCredential dimaksudkan untuk menyederhanakan memulai Azure SDK dengan menangani skenario umum dengan perilaku default yang wajar. Jika Anda menginginkan lebih banyak kontrol atau pengaturan default tidak mendukung skenario Anda, Anda harus menggunakan 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,
DefaultAzureCredentialmencoba mengautentikasi dengan akun tersebut. - Identitas Beban Kerja - Jika aplikasi disebarkan ke komputer virtual (VM),
DefaultAzureCredentialmencoba mengautentikasi dengan akun tersebut. - Cache Token Bersama - Jika Anda mengautentikasi melalui Visual Studio,
DefaultAzureCredentialmencoba mengautentikasi dengan akun tersebut. - IntelliJ - Jika Anda mengautentikasi melalui Azure Toolkit untuk IntelliJ,
DefaultAzureCredentialmencoba mengautentikasi dengan akun tersebut. - Azure CLI - Jika Anda mengautentikasi akun melalui perintah azure CLI
az login,DefaultAzureCredentialmencoba mengautentikasi dengan akun tersebut. - Azure PowerShell - Jika Anda mengautentikasi melalui Azure PowerShell,
DefaultAzureCredentialmencoba mengautentikasi dengan akun tersebut. - Azure Developer CLI - Jika Anda mengautentikasi melalui Azure Developer CLI,
DefaultAzureCredentialmencoba mengautentikasi dengan 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.
Kami mendorong penggunaan identitas terkelola alih-alih menggunakan string koneksi atau kunci di aplikasi Anda karena lebih aman dan menyimpan masalah dalam mengelola rahasia dan kredensial. Dalam hal ini, DefaultAzureCredential dapat melayani skenario pengembangan secara lokal dengan lebih baik 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 Anda mengaktifkan identitas terkelola yang ditetapkan sistem, identitas dibuat di Microsoft Entra yang terikat dengan siklus hidup instans layanan tersebut. Jadi, saat sumber daya dihapus, 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.
- yang 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, identitas dikelola secara terpisah dari sumber daya yang menggunakannya.
Nota
Saat menggunakan identitas terkelola yang ditetapkan pengguna, Anda dapat menentukan 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 lebih banyak kontrol daripada apa yang disediakan oleh DefaultAzureCredential, atau pengaturan default tidak mendukung skenario Anda, Anda harus menggunakan jenis kredensial lainnya.
Mengautentikasi dengan ID Microsoft Entra
Untuk menyambungkan aplikasi ke sumber daya yang mendukung autentikasi Microsoft Entra, Anda dapat mengatur konfigurasi berikut dengan awalan spring.cloud.azure.credential atau spring.cloud.azure.<azure-service>.credential
Tabel berikut ini mencantumkan properti autentikasi:
| Harta benda | Deskripsi |
|---|---|
| id klien | ID klien yang akan digunakan saat melakukan autentikasi perwakilan layanan dengan Azure. |
| rahasia klien | Rahasia klien untuk digunakan saat melakukan autentikasi perwakilan layanan dengan Azure. |
| jalur-sertifikat-klien | Jalur file sertifikat PEM yang akan digunakan saat melakukan autentikasi perwakilan layanan dengan Azure. |
| kata sandi sertifikat-klien | Kata sandi file sertifikat. |
| nama pengguna | Nama pengguna yang akan digunakan saat melakukan autentikasi nama pengguna/kata sandi dengan Azure. |
| kata sandi | Kata sandi yang digunakan saat melakukan autentikasi nama pengguna/kata sandi dengan Azure. |
| identitas terkelola diaktifkan | 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 penyusun klien Azure SDK mengadopsi kacang kustom jenis TokenCredential terlebih dahulu jika properti token-credential-bean-name ditentukan, dan kembali menggunakan DefaultAzureCredential jika tidak ada properti info masuk yang dikonfigurasi.
Mengautentikasi menggunakan kacang TokenCredential yang dikustomisasi
Contoh berikut menunjukkan kepada Anda cara menentukan kacang TokenCredential kustom 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 kepada Anda cara mengautentikasi 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 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 kepada Anda cara mengautentikasi 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 kepada Anda cara mengautentikasi 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 kepada Anda cara mengautentikasi 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 menggunakan kredensial pengguna
Contoh berikut menunjukkan kepada Anda cara mengautentikasi menggunakan kredensial pengguna:
spring.cloud.azure:
credential:
client-id: ${AZURE_CLIENT_ID}
username: ${AZURE_USER_USERNAME}
password: ${AZURE_USER_PASSWORD}
Mengautentikasi layanan menggunakan kredensial yang berbeda dari yang lain
Contoh berikut menunjukkan kepada Anda cara mengautentikasi dengan Key Vault 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 satu atau beberapa peran Azure ditetapkan ke prinsip keamanan. Peran yang ditetapkan ke prinsip 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 menggunakan Spring Cloud Azure Resource Manager untuk mendapatkan string koneksi untuk Event Hubs, Service Bus, dan Storage Queue, atau properti Cache for Redis, tetapkan peran bawaan Azure Contributor. 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 menggunakan portal Microsoft 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 menggunakan token SAS
Anda juga dapat mengonfigurasi layanan untuk autentikasi dengan Tanda Tangan Akses Bersama (SAS).
spring.cloud.azure.<azure-service>.sas-token adalah properti untuk dikonfigurasi. Misalnya, gunakan spring.cloud.azure.storage.blob.sas-token untuk mengautentikasi ke layanan Blob Penyimpanan.
Mengautentikasi menggunakan string koneksi
Beberapa layanan Azure mendukung string koneksi untuk memberikan informasi koneksi dan kredensial. Untuk menyambungkan ke layanan Azure tersebut menggunakan string koneksi, cukup konfigurasikan spring.cloud.azure.<azure-service>.connection-string. Misalnya, konfigurasikan spring.cloud.azure.eventhubs.connection-string untuk menyambungkan ke layanan Azure Event Hubs.