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.
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.
Prasyarat
Langkah-langkah awal berikut diperlukan untuk mengaktifkan penyerapan terautentikasi Microsoft Entra. Anda perlu:
- Berada di cloud publik.
- Biasakan diri dengan:
- Memberikan akses menggunakan peran bawaan Azure memerlukan peran Pemilik dalam grup sumber daya.
- 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. - Application Insights JavaScript SDK.
- Application Insights OpenCensus Python SDK (dihentikan) dengan Python versi 3.4 dan 3.5.
- Instrumentasi otomatis untuk Python di Azure App Service
- Application Insights Profiler pada .NET.
Mengonfigurasi dan mengaktifkan autentikasi berbasis ID Microsoft Entra
Buat identitas menggunakan identitas terkelola atau perwakilan layanan jika Anda belum memilikinya.
Sebaiknya gunakan identitas terkelola:
Siapkan identitas terkelola untuk layanan Azure Anda (Virtual Machines atau App Service).
Kami tidak merekomendasikan penggunaan entitas layanan:
Untuk informasi selengkapnya tentang cara membuat aplikasi Microsoft Entra dan perwakilan layanan yang dapat mengakses sumber daya, lihat Membuat perwakilan layanan.
Tetapkan peran kontrol akses berbasis peran (RBAC) yang diperlukan ke identitas Azure, prinsipal layanan, atau akun pengguna Azure.
Ikuti langkah-langkah dalam Menetapkan peran Azure untuk menambahkan peran Penerbit Metrik Pemantauan ke identitas yang diharapkan, perwakilan layanan, atau akun pengguna Azure dengan mengatur sumber daya Application Insights target sebagai cakupan peran.
Catatan
Meskipun peran Penerbit Metrik Pemantauan menyebutkan "metrik," peran ini sebenarnya 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.
- Kami mendukung kelas kredensial yang disediakan oleh Azure Identity.
- Kami merekomendasikan
DefaultAzureCredentialuntuk pengembangan lokal. - Autentikasi di Visual Studio dengan akun pengguna Azure yang sesuai. Untuk informasi selengkapnya, lihat Mengautentikasi melalui Visual Studio.
- Kami merekomendasikan
ManagedIdentityCredentialuntuk identitas terkelola yang diberikan oleh sistem dan pengguna.- Untuk sistem yang ditetapkan, gunakan konstruktor default tanpa parameter.
- Untuk pengguna yang ditetapkan, berikan ID klien ke konstruktor.
Instal paket Azure.Identity terbaru:
dotnet add package Azure.IdentityBerikan kelas kredensial yang diinginkan:
// Create a new ASP.NET Core web application builder. var builder = WebApplication.CreateBuilder(args); // Add the OpenTelemetry telemetry service to the application. // This service will collect and send telemetry data to Azure Monitor. builder.Services.AddOpenTelemetry().UseAzureMonitor(options => { // Set the Azure Monitor credential to the DefaultAzureCredential. // This credential will use the Azure identity of the current user or // the service principal that the application is running as to authenticate // to Azure Monitor. options.Credential = new DefaultAzureCredential(); }); // Build the ASP.NET Core web application. var app = builder.Build(); // Start the ASP.NET Core web application. app.Run();
Konfigurasi variabel lingkungan
Gunakan variabel lingkungan APPLICATIONINSIGHTS_AUTHENTICATION_STRING untuk memungkinkan Application Insights mengautentikasi ke Microsoft Entra ID dan mengirim telemetri saat menggunakan Azure App Autoinstrumentation Services dan Konfigurasi pemantauan untuk Azure Functions.
- Untuk identitas yang ditetapkan sistem:
| Pengaturan aplikasi | Nilai |
|---|---|
| APPLICATIONINSIGHTS_AUTHENTICATION_STRING | Authorization=AAD |
- Untuk identitas yang ditetapkan pengguna:
| Pengaturan aplikasi | Nilai |
|---|---|
| APPLICATIONINSIGHTS_AUTHENTICATION_STRING | Authorization=AAD;ClientId={Client id of the User-Assigned Identity} |
Mengkueri Application Insights menggunakan autentikasi Microsoft Entra
Anda dapat mengirimkan permintaan kueri dengan menggunakan endpoint Azure Monitor Application Insights https://api.applicationinsights.io. Untuk mengakses titik akhir, Anda harus mengautentikasi melalui ID Microsoft Entra.
Mengonfigurasikan autentikasi
Untuk mengakses API, Anda mendaftarkan aplikasi klien dengan ID Microsoft Entra dan meminta token.
Daftarkan aplikasi di ID Microsoft Entra.
Pada halaman gambaran umum aplikasi, pilih Izin API.
Pilih Tambahkan izin.
Pada tab API yang digunakan organisasi saya, cari Application Insights dan pilih Application Insights API dari daftar.
Pilih Izin yang didelegasikan.
Pilih kotak centang Data.Read .
Pilih Tambahkan izin.
Sekarang setelah aplikasi Anda terdaftar dan memiliki izin untuk menggunakan API, berikan aplikasi Anda akses ke sumber daya Application Insights Anda.
Dari halaman gambaran umum sumber daya Application Insights Anda, pilih Kontrol akses (IAM).
Pilih Tambahkan penetapan peran.
Pilih peran Pembaca lalu pilih Anggota.
Pada tab Anggota , pilih Pilih anggota.
Masukkan nama aplikasi Anda di kotak Pilih .
Pilih aplikasi Anda dan pilih Pilih.
Pilih Tinjau + tetapkan.
Setelah Anda menyelesaikan penyiapan dan izin Direktori Aktif, minta token otorisasi.
Catatan
Untuk contoh ini, kami menerapkan peran Pembaca. Peran ini adalah salah satu dari banyak peran bawaan dan mungkin menyertakan lebih banyak izin daripada yang Anda butuhkan. Peran dan izin yang lebih terperinci dapat dibuat.
Meminta token otorisasi
Sebelum memulai, pastikan Anda memiliki semua nilai yang diperlukan untuk membuat permintaan berhasil. Semua permintaan memerlukan:
- ID penyewa Microsoft Entra Anda.
- ID Aplikasi App Insights Anda - Jika saat ini Anda menggunakan Kunci API, id aplikasi tersebut adalah ID aplikasi yang sama.
- ID klien Microsoft Entra Anda untuk aplikasi.
- Rahasia klien Microsoft Entra untuk aplikasi.
API Application Insights mendukung autentikasi Microsoft Entra dengan tiga alur Microsoft Entra ID OAuth2 yang berbeda:
- Informasi masuk klien
- Kode otorisasi
- Implisit
Alur Info masuk Klien
Dalam alur kredensial klien, token digunakan pada endpoint Application Insights. Satu permintaan dibuat untuk menerima token dengan menggunakan kredensial yang disediakan untuk aplikasi Anda di langkah sebelumnya saat Anda mendaftarkan aplikasi di ID Microsoft Entra.
Gunakan titik akhir https://api.applicationinsights.io.
URL token kredensial klien (permintaan POST)
POST /<your-tenant-id>/oauth2/token
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_id=<app-client-id>
&resource=https://api.applicationinsights.io
&client_secret=<app-client-secret>
Permintaan yang berhasil menerima token akses dalam respons:
{
token_type": "Bearer",
"expires_in": "86399",
"ext_expires_in": "86399",
"access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax"
}
Gunakan token dalam permintaan ke titik akhir Application Insights:
POST /v1/apps/yous_app_id/query?timespan=P1D
Host: https://api.applicationinsights.io
Content-Type: application/json
Authorization: Bearer <your access token>
Body:
{
"query": "requests | take 10"
}
Contoh respons:
"tables": [
{
"name": "PrimaryResult",
"columns": [
{
"name": "timestamp",
"type": "datetime"
},
{
"name": "id",
"type": "string"
},
{
"name": "source",
"type": "string"
},
{
"name": "name",
"type": "string"
},
{
"name": "url",
"type": "string"
},
{
"name": "success",
"type": "string"
},
{
"name": "resultCode",
"type": "string"
},
{
"name": "duration",
"type": "real"
},
{
"name": "performanceBucket",
"type": "string"
},
{
"name": "customDimensions",
"type": "dynamic"
},
{
"name": "customMeasurements",
"type": "dynamic"
},
{
"name": "operation_Name",
"type": "string"
},
{
"name": "operation_Id",
"type": "string"
},
{
"name": "operation_ParentId",
"type": "string"
},
{
"name": "operation_SyntheticSource",
"type": "string"
},
{
"name": "session_Id",
"type": "string"
},
{
"name": "user_Id",
"type": "string"
},
{
"name": "user_AuthenticatedId",
"type": "string"
},
{
"name": "user_AccountId",
"type": "string"
},
{
"name": "application_Version",
"type": "string"
},
{
"name": "client_Type",
"type": "string"
},
{
"name": "client_Model",
"type": "string"
},
{
"name": "client_OS",
"type": "string"
},
{
"name": "client_IP",
"type": "string"
},
{
"name": "client_City",
"type": "string"
},
{
"name": "client_StateOrProvince",
"type": "string"
},
{
"name": "client_CountryOrRegion",
"type": "string"
},
{
"name": "client_Browser",
"type": "string"
},
{
"name": "cloud_RoleName",
"type": "string"
},
{
"name": "cloud_RoleInstance",
"type": "string"
},
{
"name": "appId",
"type": "string"
},
{
"name": "appName",
"type": "string"
},
{
"name": "iKey",
"type": "string"
},
{
"name": "sdkVersion",
"type": "string"
},
{
"name": "itemId",
"type": "string"
},
{
"name": "itemType",
"type": "string"
},
{
"name": "itemCount",
"type": "int"
}
],
"rows": [
[
"2018-02-01T17:33:09.788Z",
"|0qRud6jz3k0=.c32c2659_",
null,
"GET Reports/Index",
"http://fabrikamfiberapp.azurewebsites.net/Reports",
"True",
"200",
"3.3833",
"<250ms",
"{\"_MS.ProcessedByMetricExtractors\":\"(Name:'Requests', Ver:'1.0')\"}",
null,
"GET Reports/Index",
"0qRud6jz3k0=",
"0qRud6jz3k0=",
"Application Insights Availability Monitoring",
"aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"us-va-ash-azr_aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
null,
null,
"AutoGen_49c3aea0-4641-4675-93b5-55f7a62d22d3",
"PC",
null,
null,
"52.168.8.0",
"Boydton",
"Virginia",
"United States",
null,
"fabrikamfiberapp",
"RD00155D5053D1",
"bbbbbbbb-1111-2222-3333-cccccccccccc",
"fabrikamprod",
"cccccccc-2222-3333-4444-dddddddddddd",
"web:2.5.0-33031",
"dddddddd-3333-4444-5555-eeeeeeeeeeee",
"request",
"1"
],
[
"2018-02-01T17:33:15.786Z",
"|x/Ysh+M1TfU=.c32c265a_",
null,
"GET Home/Index",
"http://fabrikamfiberapp.azurewebsites.net/",
"True",
"200",
"716.2912",
"500ms-1sec",
"{\"_MS.ProcessedByMetricExtractors\":\"(Name:'Requests', Ver:'1.0')\"}",
null,
"GET Home/Index",
"x/Ysh+M1TfU=",
"x/Ysh+M1TfU=",
"Application Insights Availability Monitoring",
"eeeeeeee-4444-5555-6666-ffffffffffff",
"emea-se-sto-edge_eeeeeeee-4444-5555-6666-ffffffffffff",
null,
null,
"AutoGen_49c3aea0-4641-4675-93b5-55f7a62d22d3",
"PC",
null,
null,
"51.141.32.0",
"Cardiff",
"Cardiff",
"United Kingdom",
null,
"fabrikamfiberapp",
"RD00155D5053D1",
"bbbbbbbb-1111-2222-3333-cccccccccccc",
"fabrikamprod",
"cccccccc-2222-3333-4444-dddddddddddd",
"web:2.5.0-33031",
"ffffffff-5555-6666-7777-aaaaaaaaaaaa",
"request",
"1"
]
]
}
]
}
Alur kode otorisasi
Aliran OAuth2 utama yang didukung adalah melalui kode otorisasi. Metode ini memerlukan dua permintaan HTTP untuk memperoleh token untuk memanggil API Application Insights Azure Monitor. Ada dua URL, dengan satu titik akhir per permintaan. Formatnya dijelaskan di bagian berikut.
URL kode otorisasi (permintaan GET)
GET https://login.microsoftonline.com/YOUR_Azure AD_TENANT/oauth2/authorize?
client_id=<app-client-id>
&response_type=code
&redirect_uri=<app-redirect-uri>
&resource=https://api.applicationinsights.io
Saat permintaan dibuat ke URL resmi, client\_id adalah ID aplikasi dari aplikasi Microsoft Entra Anda, yang disalin dari menu properti aplikasi.
redirect\_uri adalah homepage/login URL dari aplikasi Microsoft Entra yang sama. Ketika permintaan berhasil, titik akhir ini mengarahkan Anda ke halaman masuk yang Anda berikan saat mendaftar dengan kode otorisasi yang ditambahkan ke URL. Lihat contoh berikut:
http://<app-client-id>/?code=AUTHORIZATION_CODE&session_state=STATE_GUID
Pada titik ini, Anda mendapatkan kode otorisasi, yang sekarang Anda gunakan untuk meminta token akses.
URL token kode otorisasi (request POST)
POST /YOUR_Azure AD_TENANT/oauth2/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&client_id=<app client id>
&code=<auth code fom GET request>
&redirect_uri=<app-client-id>
&resource=https://api.applicationinsights.io
&client_secret=<app-client-secret>
Semua nilai sama seperti sebelumnya, dengan beberapa tambahan. Kode otorisasi adalah kode yang sama dengan yang Anda terima dalam permintaan sebelumnya setelah pengalihan berhasil. Kode dikombinasikan dengan kunci yang diperoleh dari aplikasi Microsoft Entra. Jika Anda tidak menyimpan kunci, Anda dapat menghapusnya dan membuat kunci baru dari tab kunci menu aplikasi Microsoft Entra. Responsnya adalah string JSON yang berisi token dengan skema berikut. Jenis-jenis ini ditandai berdasarkan nilai token.
Contoh respons:
{
"access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax",
"expires_in": "3600",
"ext_expires_in": "1503641912",
"id_token": "not_needed_for_app_insights",
"not_before": "1503638012",
"refresh_token": "eyJ0esdfiJKV1ljhgYF.....Az",
"resource": "https://api.applicationinsights.io",
"scope": "Data.Read",
"token_type": "bearer"
}
Bagian token akses dari respons ini adalah apa yang Anda sajikan ke API Application Insights di Authorization: Bearer header. Anda juga dapat menggunakan token refresh di masa mendatang untuk memperoleh access_token baru dan refresh_token saat Token Anda kedaluarsa. Untuk permintaan ini, format dan titik akhir adalah:
POST /YOUR_AAD_TENANT/oauth2/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
client_id=<app-client-id>
&refresh_token=<refresh-token>
&grant_type=refresh_token
&resource=https://api.applicationinsights.io
&client_secret=<app-client-secret>
Contoh respons:
{
"token_type": "Bearer",
"expires_in": "3600",
"expires_on": "1460404526",
"resource": "https://api.applicationinsights.io",
"access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax",
"refresh_token": "eyJ0esdfiJKV1ljhgYF.....Az"
}
Alur kode implisit
API Application Insights mendukung alur implisit OAuth2. Untuk alur ini, hanya satu permintaan yang diperlukan, tetapi tidak ada token refresh yang dapat diperoleh.
URL otorisasi kode implisit
GET https://login.microsoftonline.com/YOUR_AAD_TENANT/oauth2/authorize?
client_id=<app-client-id>
&response_type=token
&redirect_uri=<app-redirect-uri>
&resource=https://api.applicationinsights.io
Permintaan yang berhasil menghasilkan pengalihan ke URI pengalihan Anda dengan token di URL:
http://YOUR_REDIRECT_URI/#access_token=YOUR_ACCESS_TOKEN&token_type=Bearer&expires_in=3600&session_state=STATE_GUID
Access_token ini berfungsi sebagai nilai header Authorization: Bearer saat diteruskan ke API Application Insights untuk mengesahkan permintaan.
Nonaktifkan autentikasi lokal
Setelah autentikasi Microsoft Entra diaktifkan, Anda dapat memilih untuk menonaktifkan autentikasi lokal. Konfigurasi ini memungkinkan Anda untuk mengumpulkan telemetri yang diautentikasi secara eksklusif oleh Microsoft Entra ID dan memengaruhi akses ke 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 Konfigurasikan 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 .
Azure Policy
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-Azure Active Directory based 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-Azure Active Directory based 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 untuk token |
|---|---|
| Cloud publik Azure | https://monitor.azure.com |
| Microsoft Azure dioperasikan oleh cloud 21Vianet | https://monitor.azure.cn |
| Azure Cloud Pemerintah AS | 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
Untuk panduan pemecahan masalah, lihat Memecahkan masalah autentikasi Microsoft Entra.