Autentikasi Spring Cloud Azure
Artikel ini berlaku untuk: ✔️ Versi 4.14.0 ✔️ Versi 5.8.0
Artikel ini menjelaskan semua metode autentikasi Spring Cloud Azure.
DefaultAzureCredential
DefaultAzureCredential
sesuai untuk sebagian besar skenario di mana aplikasi dimaksudkan untuk dijalankan di Azure Cloud. Ini karena DefaultAzureCredential
menggabungkan kredensial yang umumnya digunakan untuk mengautentikasi saat disebarkan dengan kredensial yang digunakan untuk mengautentikasi di lingkungan pengembangan.
Catatan
DefaultAzureCredential
dimaksudkan untuk menyederhanakan memulai SDK dengan menangani skenario umum dengan perilaku default yang wajar. Jika Anda menginginkan lebih banyak kontrol atau skenario Anda tidak dilayani oleh pengaturan default, Anda harus menggunakan jenis kredensial lainnya.
DefaultAzureCredential
akan mencoba untuk mengautentikasi melalui mekanisme berikut dalam urutan:
- Lingkungan -
DefaultAzureCredential
membaca informasi akun yang ditentukan melalui variabel lingkungan dan menggunakannya untuk mengautentikasi. - Identitas Terkelola - Jika aplikasi diterapkan ke host Azure dengan Identitas Terkelola diaktifkan,
DefaultAzureCredential
akan mengautentikasi dengan akun tersebut. - IntelliJ - Jika Anda telah mengautentikasi melalui Azure Toolkit for IntelliJ,
DefaultAzureCredential
akan mengautentikasi dengan akun tersebut. - Visual Studio Code - Jika pengembang telah mengautentikasi melalui plugin Akun Azure Visual Studio Code,
DefaultAzureCredential
akan mengautentikasi dengan akun tersebut. - Azure CLI - Jika Anda telah mengautentikasi akun melalui perintah Azure CLI
az login
,DefaultAzureCredential
akan mengautentikasi dengan akun tersebut.
Tip
Pastikan perwakilan keamanan telah diberikan izin yang memadai untuk mengakses sumber daya Azure. Untuk informasi selengkapnya, lihat Mengotorisasi akses dengan MICROSOFT Entra ID.
Catatan
Karena Spring Cloud Azure AutoConfigure 4.1.0, ThreadPoolTaskExecutor
kacang bernama springCloudAzureCredentialTaskExecutor
akan secara otomatis didaftarkan secara default dan akan mengelola semua utas yang dibuat oleh Azure Identity. Nama setiap utas yang dikelola oleh kumpulan utas ini diawali dengan az-identity-
. Kacang ini ThreadPoolTaskExecutor
independen dari Executor
kacang 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 info masuk. 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 dalam aplikasi Anda karena lebih aman dan akan menghemat 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.
Tipe identitas terkelola
Ada dua jenis identitas terkelola:
- 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 terkait dengan siklus hidup instans layanan tersebut. Jadi, ketika 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 Microsoft Entra ID.
- 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.
Catatan
Saat menggunakan identitas terkelola yang ditetapkan pengguna, Anda dapat menentukan ID klien melalui spring.cloud.azure.credential.managed-identity-client-id
atau spring.cloud.azure.<azure-service>.credential.managed-identity-client-id
. Anda tidak memerlukan konfigurasi kredensial jika Anda menggunakan identitas terkelola yang ditetapkan sistem.
Tip
Pastikan perwakilan keamanan telah diberikan izin yang memadai untuk mengakses sumber daya Azure. Untuk informasi selengkapnya, lihat Mengotorisasi akses dengan MICROSOFT Entra ID.
Untuk informasi selengkapnya tentang identitas terkelola, lihat Apa itu identitas terkelola untuk sumber daya Azure?.
Jenis kredensial lainnya
Jika Anda menginginkan kontrol lainnya, atau skenario Anda tidak dilayani oleh DefaultAzureCredential
atau pengaturan default, Anda harus menggunakan jenis kredensial lainnya.
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 prinsipal 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.
Autentikasi dengan Microsoft Entra ID
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:
Properti | 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. |
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. |
managed-identity-enabled | Apakah akan mengaktifkan identitas terkelola. |
Tip
Untuk daftar semua properti konfigurasi Spring Cloud Azure, lihat Properti konfigurasi Spring Cloud Azure.
Aplikasi akan mencari di beberapa tempat untuk menemukan kredensial yang tersedia, dan akan menggunakan DefaultAzureCredential
jika tidak ada properti info masuk yang dikonfigurasi. Jika Anda ingin menggunakan kredensial tertentu, lihat contoh berikut untuk panduan.
Contoh berikut menunjukkan kepada Anda cara mengautentikasi menggunakan identitas terkelola yang ditetapkan sistem:
spring.cloud.azure:
credential:
managed-identity-enabled: true
Contoh berikut menunjukkan cara mengautentikasi menggunakan identitas terkelola yang ditetapkan pengguna:
spring.cloud.azure:
credential:
managed-identity-enabled: true
client-id: ${AZURE_CLIENT_ID}
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>
Catatan
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 (akun pribadi dan organisasi) yang salah dari 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.
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>
Catatan
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 (akun pribadi dan organisasi) yang salah dari 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.
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>
Catatan
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 (akun pribadi dan organisasi) yang salah dari 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.
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}
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 akan menggunakan perwakilan layanan, tetapi komponen lain akan 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>
Catatan
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 (akun pribadi dan organisasi) yang salah dari 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.
Mengotorisasi akses dengan ID Microsoft Entra
Langkah otorisasi mengharuskan satu atau beberapa peran Azure ditetapkan ke perwakilan keamanan. Peran yang ditugaskan kepada perwakilan keamanan menentukan izin yang akan dimiliki oleh perwakilan tersebut.
Tip
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:
Peran | Deskripsi |
---|---|
Pemilik Data App Configuration | Memungkinkan akses penuh ke data App Configuration. |
Pembaca Data App Configuration | Memungkinkan akses baca ke data App Configuration. |
Pemilik Data Azure Event Hubs | Memungkinkan akses penuh ke sumber daya Azure Event Hubs. |
Penerima Data Azure Event Hubs | Memungkinkan penerimaan akses ke sumber daya Azure Event Hubs. |
Azure Service Bus Data Sender | Memungkinkan untuk mengirim akses ke sumber daya Azure Event Hubs. |
Pemilik Data Azure Service Bus | Memungkinkan akses penuh ke sumber daya Azure Bus Layanan. |
Penerima Data Bus Layanan Azure | Memungkinkan akses penerimaan ke sumber daya Azure Bus Layanan. |
Azure Service Bus Data Sender | Memungkinkan pengiriman akses ke sumber daya Azure Bus Layanan. |
Pemilik Data Blob Penyimpanan | Memungkinkan akses penuh ke kontainer dan data blob Azure Storage, termasuk menetapkan kontrol akses POSIX. |
Pembaca Data Blob Penyimpanan. | Baca dan daftar kontainer dan blob Azure Storage. |
Kontributor Data Antrean Penyimpanan | Baca dan daftar antrean Azure Storage dan pesan antrean. |
Kontributor Redis Cache | Mengelola cache Redis. |
Catatan
Saat menggunakan Spring Cloud Azure Resource Manager untuk mendapatkan string koneksi untuk Event Hubs, Bus Layanan, dan Storage Queue, atau properti Cache for Redis, tetapkan peran Contributor
bawaan Azure . Azure Cache for Redis bersifat khusus, dan Anda juga dapat menetapkan Redis Cache Contributor
peran untuk mendapatkan properti Redis.
Catatan
Kebijakan akses Key Vault menentukan apakah prinsip keamanan tertentu, yaitu pengguna, aplikasi, atau grup pengguna, dapat melakukan operasi yang berbeda pada Vault Utama rahasia, kunci, dan sertifikat. Anda dapat menetapkan kebijakan akses 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 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.
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.
String koneksi
string Koneksi didukung oleh beberapa layanan Azure 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.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk