Autentikasi Microsoft Azure AD untuk Application Insights

Application Insights sekarang mendukung autentikasi Azure Active Directory (Azure AD). Dengan menggunakan Microsoft Azure Active Directory, 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 menghindari autentikasi lokal guna memastikan hanya telemetri yang diautentikasi secara eksklusif menggunakan Identitas Terkelola dan Azure Active Directory yang diserap dalam sumber daya Anda. Fitur ini adalah langkah untuk meningkatkan keamanan dan keandalan telemetri yang digunakan untuk membuat operasional kritis (peringatan, skala otomatis dll.) dan keputusan bisnis.

Prasyarat

Berikut ini adalah prasyarat untuk mengaktifkan penyerapan terautentikasi Azure AD.

Mengonfigurasi dan mengaktifkan autentikasi berbasis Azure AD

  1. Buat identitas, jika Anda sudah tidak memilikinya, gunakan identitas terkelola atau perwakilan layanan:

    1. Menggunakan identitas terkelola (Disarankan):

      Menyiapkan identitas terkelola untuk Azure Service Anda (VM, App Service, dll.).

    2. Menggunakan perwakilan layanan (Tidak Disarankan):

      Untuk informasi selengkapnya tentang cara membuat aplikasi Microsoft Azure AD dan perwakilan layanan yang dapat mengakses sumber daya, lihat Membuat perwakilan layanan.

  2. Tetapkan peran ke Azure Service.

    Ikuti langkah-langkah dalam peran Assign Azure untuk menambahkan peran "Monitoring Metrics Publisher" dari target sumber daya Application Insights ke sumber daya Azure dari mana telemetri dikirim.

    Catatan

    Meskipun peran "Monitoring Metrics Publisher" mengatakan metrik, tersebut akan mempublikasikan semua telemetri ke sumber daya App Insights.

  3. Ikuti panduan konfigurasi per bahasa di bawah ini.

Catatan

Dukungan untuk Azure AD dalam Application Insights .NET SDK disertakan dimulai dengan versi 2.18-Beta3.

Application Insights .NET SDK mendukung kelas kredensial yang disediakan oleh Azure Identity.

  • DefaultAzureCredential disarankan untuk pengembangan lokal.
  • ManagedIdentityCredential disarankan untuk identitas terkelola yang ditetapkan sistem dan ditetapkan pengguna.
    • Untuk sistem yang ditetapkan, gunakan konstruktor default tanpa parameter.
    • Untuk pengguna yang ditetapkan, berikan clientId ke konstruktor.
  • ClientSecretCredential Direkomendasikan untuk perwakilan layanan.
    • Berikan tenantId, clientId, dan clientSecret ke konstruktor.

Di bawah ini adalah contoh membuat dan mengonfigurasi TelemetryConfiguration penggunaan .NET:

var config = new TelemetryConfiguration
{
    ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/"
}
var credential = new DefaultAzureCredential();
config.SetAzureTokenCredential(credential);

Di bawah ini adalah contoh konfigurasi TelemetryConfiguration 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/"
});

Catatan

Pada tanggal 31 Maret 2025, dukungan untuk penyerapan kunci instrumentasi akan berakhir. Penyerapan kunci instrumentasi akan berjalan terus, namun kami tidak akan lagi menyediakan pembaruan atau dukungan terhadap fitur tersebut. Transisi ke string koneksi untuk memanfaatkan kemampuan baru.

Non-fungsikan autentikasi lokal

Setelah autentikasi Azure AD diaktifkan, Anda dapat memilih untuk menonaktifkan autentikasi lokal. Ini akan memungkinkan Anda menyerap telemetri yang diautentikasi secara eksklusif oleh Azure AD dan memengaruhi akses data (misalnya, melalui Kunci API).

Anda dapat menonaktifkan autentikasi lokal dengan menggunakan portal Microsoft Azure, Azure Policy, atau terprogram.

Portal Azure

  1. Dari sumber daya Application Insights Anda, pilih Properti di bawah judul Konfigurasi di bilah menu sebelah kiri. Kemudian pilih Diaktifkan (klik untuk mengubah) jika autentikasi lokal diaktifkan.

    Cuplikan layar Properti di bawah *Konfigurasi* yang dipilih dan diaktifkan (pilih untuk mengubah) tombol autentikasi lokal.

  2. Pilih Dinonaktifkan dan terapkan perubahan.

    Cuplikan layar autentikasi lokal dengan tombol diaktifkan/dinonaktifkan disorot.

  3. Setelah sumber daya Anda menonaktifkan autentikasi lokal, Anda akan melihat info terkait di panel Gambaran Umum.

    Cuplikan layar tab gambaran umum yang dinonaktifkan (klik untuk mengubah) disorot.

Kebijakan Azure

Azure Policy untuk 'DisableLocalAuth' akan menolak pengguna untuk membuat sumber daya Application Insights baru tanpa pengaturan properti ini ke 'true'. Nama kebijakannya adalah 'Komponen Application Insights harus memblokir penyerapan autentikasi non-AAD'.

Untuk menerapkan definisi kebijakan ini ke langganan Anda, buat tugas kebijakan baru dan tetapkan kebijakan.

Di bawah ini adalah 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 digunakan untuk menonaktifkan autentikasi lokal apa pun pada sumber daya Application Insights Anda. Ketika diatur ke true, properti ini memberlakukan bahwa autentikasi Azure AD harus digunakan untuk semua akses.

Di bawah ini adalah contoh templat Azure Resource Manager yang dapat Anda gunakan untuk membuat sumber daya Application Insights berbasis ruang kerja dengan auth lokal 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')]"
            }
    }
 ]
}

Skenario yang tidak didukung

Fitur dan SDK berikut tidak didukung untuk digunakan dengan penyerapan terautentikasi Azure AD.

Pemecahan Masalah

Bagian ini menyediakan skenario pemecahan masalah yang berbeda dan langkah-langkah yang dapat diambil pengguna untuk menyelesaikan masalah apa pun sebelum mereka menaikkan tiket dukungan.

Kesalahan HTTP konsumsi

Layanan penggunaan akan mengembalikan kesalahan spesifik (kesalahan penggunaan HTTP), terlepas dari bahasa SDK. Lalu lintas jaringan dapat dikumpulkan menggunakan alat seperti Fiddler. Anda harus memfilter lalu lintas ke IngestionEndpoint yang diatur dalam String Koneksi.

Autentikasi HTTP/1.1 400 tidak didukung

Kesalahan ini menunjukkan bahwa sumber daya telah terkonfigurasi hanya untuk Azure AD. SDK belum dikonfigurasi dengan benar dan dikirim ke API yang salah.

Catatan

"v2/track" tidak mendukung Azure AD. Ketika SDK dikonfigurasi dengan benar, telemetri akan dikirim ke "v2.1/track".

Langkah selanjutnya adalah meninjau konfigurasi SDK.

Otorisasi HTTP/1.1 401 diperlukan

Pesan ini menunjukkan bahwa SDK telah dikonfigurasi dengan benar, tetapi tidak dapat memperoleh token yang valid. Kesalahan ini mungkin menunjukkan masalah terkait Azure Active Directory.

Langkah berikutnya harus mengidentifikasi pengecualian dalam log SDK atau kesalahan jaringan dari Azure Identity.

HTTP/1.1 403 Tidak Sah

Pesan ini menunjukkan bahwa SDK telah dikonfigurasi dengan info masuk yang tidak memiliki izin ke sumber daya Application Insights atau langganan.

Langkah selanjutnya seharusnya meninjau kontrol akses sumber daya Application Insights. SDK harus dikonfigurasi dengan info masuk yang telah diberikan peran "Monitoring Metrics Publisher".

Pemecahan masalah khusus bahasa

Sumber Kejadian

Aplikasi Insights .NET SDK memancarkan log kesalahan menggunakan sumber peristiwa. Untuk mempelajari selengkapnya tentang mengumpulkan kunjungan log sumber peristiwa, Log pemecahan masalah tidak mengumpulkan data dengan PerfView.

Jika SDK gagal mendapatkan token, pesan pengecualian dicatat sebagai: Failed to get AAD Token. Error message:

Langkah berikutnya