Autentikasi Microsoft Entra untuk Application Insights
Application Insights sekarang mendukung autentikasi Microsoft Entra. Dengan menggunakan ID Microsoft Entra, Anda dapat memastikan bahwa hanya telemetri terautentikasi yang diserap dalam sumber daya Application Insights Anda.
Biasanya, menggunakan berbagai sistem autentikasi dapat menjadi rumit dan menimbulkan risiko karena sulit untuk mengelola kredensial dalam skala besar. Anda sekarang dapat memilih untuk menolak autentikasi lokal untuk memastikan hanya telemetri yang diautentikasi secara eksklusif dengan menggunakan identitas terkelola dan ID Microsoft Entra diserap di sumber daya Anda. Fitur ini adalah langkah untuk meningkatkan keamanan dan keandalan telemetri yang digunakan untuk membuat operasional penting (pemberitahuan dan penskalaan otomatis) dan keputusan bisnis.
Catatan
Dokumen ini mencakup penyerapan data ke dalam Application Insights menggunakan autentikasi berbasis ID Microsoft Entra. Untuk informasi tentang mengkueri data dalam Application Insights, lihat Query Application Insights menggunakan autentikasi Microsoft Entra.
Prasyarat
Langkah-langkah awal berikut diperlukan untuk mengaktifkan penyerapan terautentikasi Microsoft Entra. Anda perlu:
- Berada di cloud publik.
- Kenali:
- Memiliki peran Pemilik ke grup sumber daya untuk memberikan akses dengan menggunakan peran bawaan Azure.
- Pahami skenario yang tidak didukung.
Skenario yang tidak didukung
Kit Pengembangan Perangkat Lunak (SDK) dan fitur berikut tidak didukung untuk digunakan dengan penyerapan terautentikasi Microsoft Entra:
- Application Insights Java 2.x SDK.
Autentikasi Microsoft Entra hanya tersedia untuk Application Insights Java Agent yang lebih besar dari atau sama dengan 3.2.0. - ApplicationInsights JavaScript web SDK.
- Application Insights OpenCensus Python SDK dengan Python versi 3.4 dan 3.5.
- Autoinstrumentasi/pemantauan tanpa kode (untuk bahasa) secara default untuk Azure App Service, Azure Virtual Machines/Azure Virtual Machine Scale Sets, dan Azure Functions.
- Profiler.
Mengonfigurasi dan mengaktifkan autentikasi berbasis ID Microsoft Entra
Jika Anda belum memiliki identitas, buat identitas dengan menggunakan identitas terkelola atau perwakilan layanan.
Sebaiknya gunakan identitas terkelola:
Siapkan identitas terkelola untuk layanan Azure Anda (Virtual Machines atau App Service).
Kami tidak merekomendasikan penggunaan perwakilan layanan:
Untuk informasi selengkapnya tentang cara membuat aplikasi Microsoft Entra dan perwakilan layanan yang dapat mengakses sumber daya, lihat Membuat perwakilan layanan.
Tetapkan peran ke layanan Azure.
Ikuti langkah-langkah dalam Menetapkan peran Azure untuk menambahkan peran Penerbit Metrik Pemantauan dari sumber daya Application Insights target ke sumber daya Azure tempat telemetri dikirim.
Catatan
Meskipun peran Penerbit Metrik Pemantauan mengatakan "metrik," peran tersebut akan menerbitkan semua telemetri ke sumber daya Application Insights.
Ikuti panduan konfigurasi sesuai dengan bahasa berikut.
Catatan
Dukungan untuk MICROSOFT Entra ID di Application Insights .NET SDK disertakan dimulai dengan versi 2.18-Beta3.
Application Insights .NET SDK mendukung kelas kredensial yang disediakan oleh Azure Identity.
- Kami merekomendasikan
DefaultAzureCredential
untuk pengembangan lokal. - Kami merekomendasikan
ManagedIdentityCredential
untuk identitas terkelola yang ditetapkan sistem dan ditetapkan pengguna.- Untuk sistem yang ditetapkan, gunakan konstruktor default tanpa parameter.
- Untuk pengguna yang ditetapkan, berikan ID klien ke konstruktor.
Contoh berikut menunjukkan cara membuat dan mengonfigurasi TelemetryConfiguration
secara manual dengan menggunakan .NET:
TelemetryConfiguration.Active.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/";
var credential = new DefaultAzureCredential();
TelemetryConfiguration.Active.SetAzureTokenCredential(credential);
Contoh berikut menunjukkan cara mengonfigurasi TelemetryConfiguration
dengan menggunakan .NET Core:
services.Configure<TelemetryConfiguration>(config =>
{
var credential = new DefaultAzureCredential();
config.SetAzureTokenCredential(credential);
});
services.AddApplicationInsightsTelemetry(new ApplicationInsightsServiceOptions
{
ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/"
});
Nonaktifkan autentikasi lokal
Setelah autentikasi Microsoft Entra diaktifkan, Anda dapat memilih untuk menonaktifkan autentikasi lokal. Konfigurasi ini memungkinkan Anda untuk menyerap telemetri yang diautentikasi secara eksklusif oleh ID Microsoft Entra dan memengaruhi akses data (misalnya, melalui kunci API).
Anda dapat menonaktifkan autentikasi lokal dengan menggunakan portal Azure atau Azure Policy atau secara terprogram.
Portal Azure
Dari sumber daya Application Insights Anda, pilih Properti di bawah judul Konfigurasi di menu di sebelah kiri. Pilih Diaktifkan (klik untuk mengubah) jika autentikasi lokal diaktifkan.
Pilih Dinonaktifkan dan terapkan perubahan.
Setelah menonaktifkan autentikasi lokal pada sumber daya, Anda akan melihat informasi terkait di panel Gambaran Umum .
Kebijakan Azure
Azure Policy untuk DisableLocalAuth
menolak kemampuan pengguna untuk membuat sumber daya Application Insights baru tanpa properti ini diatur ke true
. Nama kebijakannya adalah Application Insights components should block non-AAD auth ingestion
.
Untuk menerapkan definisi kebijakan ini ke langganan Anda, buat tugas kebijakan baru dan tetapkan kebijakan.
Contoh berikut menunjukkan definisi templat kebijakan:
{
"properties": {
"displayName": "Application Insights components should block non-AAD auth ingestion",
"policyType": "BuiltIn",
"mode": "Indexed",
"description": "Improve Application Insights security by disabling log ingestion that are not AAD-based.",
"metadata": {
"version": "1.0.0",
"category": "Monitoring"
},
"parameters": {
"effect": {
"type": "String",
"metadata": {
"displayName": "Effect",
"description": "The effect determines what happens when the policy rule is evaluated to match"
},
"allowedValues": [
"audit",
"deny",
"disabled"
],
"defaultValue": "audit"
}
},
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Insights/components"
},
{
"field": "Microsoft.Insights/components/DisableLocalAuth",
"notEquals": "true"
}
]
},
"then": {
"effect": "[parameters('effect')]"
}
}
}
}
Pemberdayaan terprogram
Properti DisableLocalAuth
ini digunakan untuk menonaktifkan autentikasi lokal apa pun pada sumber daya Application Insights Anda. Ketika properti ini diatur ke true
, properti ini memberlakukan bahwa autentikasi Microsoft Entra harus digunakan untuk semua akses.
Contoh berikut menunjukkan templat Azure Resource Manager yang dapat Anda gunakan untuk membuat sumber daya Application Insights berbasis ruang kerja dengan LocalAuth
dinonaktifkan.
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"regionId": {
"type": "string"
},
"tagsArray": {
"type": "object"
},
"requestSource": {
"type": "string"
},
"workspaceResourceId": {
"type": "string"
},
"disableLocalAuth": {
"type": "bool"
}
},
"resources": [
{
"name": "[parameters('name')]",
"type": "microsoft.insights/components",
"location": "[parameters('regionId')]",
"tags": "[parameters('tagsArray')]",
"apiVersion": "2020-02-02-preview",
"dependsOn": [],
"properties": {
"Application_Type": "[parameters('type')]",
"Flow_Type": "Redfield",
"Request_Source": "[parameters('requestSource')]",
"WorkspaceResourceId": "[parameters('workspaceResourceId')]",
"DisableLocalAuth": "[parameters('disableLocalAuth')]"
}
}
]
}
Audiens token
Saat mengembangkan klien kustom untuk mendapatkan token akses dari ID Microsoft Entra untuk mengirimkan telemetri ke Application Insights, lihat tabel berikut untuk menentukan string audiens yang sesuai untuk lingkungan host tertentu Anda.
Versi cloud Azure | Nilai audiens token |
---|---|
Cloud publik Azure | https://monitor.azure.com |
Microsoft Azure dioperasikan oleh cloud 21Vianet | https://monitor.azure.cn |
Cloud Azure US Government | https://monitor.azure.us |
Jika Anda menggunakan sovereign cloud, Anda juga dapat menemukan informasi audiens di string koneksi. string koneksi mengikuti struktur ini:
InstrumentationKey={profile. InstrumentationKey}; IngestionEndpoint={ingestionEndpoint}; LiveEndpoint={liveDiagnosticsEndpoint}; AADAudience={aadAudience}
Parameter audiens, AADAudience, dapat bervariasi tergantung pada lingkungan spesifik Anda.
Pemecahan Masalah
Bagian ini menyediakan skenario pemecahan masalah dan langkah-langkah berbeda yang dapat Anda ambil untuk mengatasi masalah sebelum Anda menaikkan tiket dukungan.
Kesalahan HTTP konsumsi
Layanan penyerapan mengembalikan kesalahan tertentu, terlepas dari bahasa SDK. Lalu lintas jaringan dapat dikumpulkan dengan menggunakan alat seperti Fiddler. Anda harus memfilter lalu lintas ke titik akhir penyerapan yang diatur dalam string koneksi.
Autentikasi HTTP/1.1 400 tidak didukung
Kesalahan ini menunjukkan sumber daya diatur untuk Microsoft Entra-only. Anda perlu mengonfigurasi SDK dengan benar karena SDK dikirim ke API yang salah.
Catatan
"v2/track" tidak mendukung ID Microsoft Entra. Ketika SDK dikonfigurasi dengan benar, telemetri akan dikirim ke "v2.1/track".
Selanjutnya, Anda harus meninjau konfigurasi SDK.
Otorisasi HTTP/1.1 401 diperlukan
Kesalahan ini menunjukkan bahwa SDK dikonfigurasi dengan benar tetapi tidak dapat memperoleh token yang valid. Kesalahan ini mungkin menunjukkan masalah dengan ID Microsoft Entra.
Selanjutnya, Anda harus mengidentifikasi pengecualian dalam log SDK atau kesalahan jaringan dari Azure Identity.
HTTP/1.1 403 Tidak Sah
Kesalahan ini berarti SDK menggunakan kredensial tanpa izin untuk sumber daya atau langganan Application Insights.
Pertama, periksa kontrol akses sumber daya Application Insights. Anda harus mengonfigurasi SDK dengan kredensial yang memiliki peran Penerbit Metrik Pemantauan.
Pemecahan masalah khusus bahasa
Sumber peristiwa
Application Insights .NET SDK memancarkan log kesalahan dengan menggunakan sumber peristiwa. Untuk mempelajari selengkapnya tentang mengumpulkan log sumber peristiwa, lihat Pemecahan masalah tanpa data - mengumpulkan log dengan PerfView.
Jika SDK gagal mendapatkan token, pesan pengecualian dicatat sebagai Failed to get AAD Token. Error message:
.