Bagikan melalui


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:

Diagram showing the authentication mechanism for `DefaultAzureCredential`.

  • 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:

  1. Pertama, identitas prinsipal keamanan diautentikasi, dan token OAuth 2.0 dikembalikan.
  2. 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 Contributorbawaan 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.