Uwierzytelnianie w usłudze Microsoft Entra dla usługi Application Insights

Aplikacja Szczegółowe informacje obsługuje teraz uwierzytelnianie firmy Microsoft Entra. Korzystając z identyfikatora Entra firmy Microsoft, możesz upewnić się, że tylko uwierzytelnione dane telemetryczne są pozyskiwane w zasobach usługi Application Szczegółowe informacje.

Korzystanie z różnych systemów uwierzytelniania może być uciążliwe i ryzykowne, ponieważ trudno jest zarządzać poświadczeniami na dużą skalę. Teraz możesz zrezygnować z uwierzytelniania lokalnego, aby zapewnić, że tylko dane telemetryczne są uwierzytelniane wyłącznie przy użyciu tożsamości zarządzanych , a identyfikator Entra firmy Microsoft jest pozyskiwany w zasobie. Ta funkcja to krok w celu zwiększenia bezpieczeństwa i niezawodności telemetrii używanej do podejmowania krytycznych decyzji operacyjnych (alertów i skalowania automatycznego) oraz decyzji biznesowych.

Uwaga

W tym dokumencie opisano pozyskiwanie danych do aplikacji Szczegółowe informacje przy użyciu uwierzytelniania opartego na identyfikatorze Entra firmy Microsoft. Aby uzyskać informacje na temat wykonywania zapytań dotyczących danych w usłudze Application Szczegółowe informacje, zobacz Query Application Szczegółowe informacje using Microsoft Entra authentication (Wykonywanie zapytań o aplikację Szczegółowe informacje przy użyciu uwierzytelniania firmy Microsoft Entra).

Wymagania wstępne

Aby włączyć pozyskiwanie uwierzytelnione przez firmę Microsoft, wymagane są następujące wstępne kroki. Należy wykonać:

Nieobsługiwane scenariusze

Następujące zestawy SDK (Software Development Kit) i funkcje nie są obsługiwane do użycia z uwierzytelnionym pozyskiwaniem danych przez firmę Microsoft Entra:

Konfigurowanie i włączanie uwierzytelniania opartego na identyfikatorze Entra firmy Microsoft

  1. Jeśli nie masz jeszcze tożsamości, utwórz je przy użyciu tożsamości zarządzanej lub jednostki usługi.

    • Zalecamy używanie tożsamości zarządzanej:

      Skonfiguruj tożsamość zarządzaną dla usługi platformy Azure (maszyny wirtualne lub usługa App Service).

    • Nie zalecamy używania jednostki usługi:

      Aby uzyskać więcej informacji na temat tworzenia aplikacji entra firmy Microsoft i jednostki usługi, która może uzyskiwać dostęp do zasobów, zobacz Tworzenie jednostki usługi.

  2. Przypisz rolę do usługi platformy Azure.

    Wykonaj kroki opisane w artykule Przypisywanie ról platformy Azure, aby dodać rolę Wydawca metryk monitorowania z docelowego zasobu aplikacji Szczegółowe informacje do zasobu platformy Azure, z którego jest wysyłana telemetria.

    Uwaga

    Mimo że rola Wydawca metryk monitorowania mówi "metryki", opublikuje wszystkie dane telemetryczne w zasobie Application Szczegółowe informacje.

  3. Postępuj zgodnie ze wskazówkami dotyczącymi konfiguracji zgodnie z następującym językiem.

Uwaga

Obsługa identyfikatora Entra firmy Microsoft w zestawie SDK platformy .NET Szczegółowe informacje aplikacji jest dołączana od wersji 2.18-Beta3.

Zestaw SDK platformy .NET aplikacji Szczegółowe informacje obsługuje klasy poświadczeń udostępniane przez usługę Azure Identity.

  • Zalecamy DefaultAzureCredential tworzenie aplikacji lokalnych.
  • Zalecamy ManagedIdentityCredential używanie tożsamości zarządzanych przypisanych przez system i przypisanych przez użytkownika.
    • W przypadku przypisanego przez system użyj konstruktora domyślnego bez parametrów.
    • W przypadku przypisanego przez użytkownika podaj identyfikator klienta konstruktorowi.

W poniższym przykładzie pokazano, jak ręcznie utworzyć i skonfigurować TelemetryConfiguration przy użyciu platformy .NET:

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

W poniższym przykładzie pokazano, jak skonfigurować TelemetryConfiguration przy użyciu platformy .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/"
});

Wyłączanie uwierzytelniania lokalnego

Po włączeniu uwierzytelniania entra firmy Microsoft możesz wyłączyć uwierzytelnianie lokalne. Ta konfiguracja umożliwia pozyskiwanie danych telemetrycznych uwierzytelnionych wyłącznie przez identyfikator Entra firmy Microsoft i wpływa na dostęp do danych (na przykład za pośrednictwem kluczy interfejsu API).

Uwierzytelnianie lokalne można wyłączyć przy użyciu witryny Azure Portal lub usługi Azure Policy albo programowo.

Azure Portal

  1. W zasobie Application Szczegółowe informacje wybierz pozycję Właściwości w obszarze pozycji Konfiguruj w menu po lewej stronie. Wybierz pozycję Włączone (kliknij, aby zmienić), jeśli jest włączone uwierzytelnianie lokalne.

    Zrzut ekranu przedstawiający pozycję Właściwości w sekcji Konfigurowanie i włączony (wybierz, aby zmienić) przycisk uwierzytelniania lokalnego.

  2. Wybierz pozycję Wyłączone i zastosuj zmiany.

    Zrzut ekranu przedstawiający uwierzytelnianie lokalne z przyciskiem Włączone/Wyłączone.

  3. Po wyłączeniu uwierzytelniania lokalnego w zasobie zobaczysz odpowiednie informacje w okienku Przegląd .

    Zrzut ekranu przedstawiający kartę Przegląd z przyciskiem Wyłączone (wybierz, aby zmienić) lokalne uwierzytelnianie.

Azure Policy

Usługa Azure Policy DisableLocalAuth uniemożliwia użytkownikom tworzenie nowego zasobu usługi Application Szczegółowe informacje bez tej właściwości ustawionej na truewartość . Nazwa zasad to Application Insights components should block non-AAD auth ingestion.

Aby zastosować tę definicję zasad do subskrypcji, utwórz nowe przypisanie zasad i przypisz zasady.

W poniższym przykładzie przedstawiono definicję szablonu zasad:

{
    "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')]"
            }
        }
    }
}

Włączanie programowe

DisableLocalAuth Właściwość służy do wyłączania uwierzytelniania lokalnego w zasobie aplikacji Szczegółowe informacje. Gdy ta właściwość jest ustawiona na truewartość , wymusza, że uwierzytelnianie Entra firmy Microsoft musi być używane dla całego dostępu.

W poniższym przykładzie przedstawiono szablon usługi Azure Resource Manager, którego można użyć do utworzenia zasobu aplikacji opartej na obszarze roboczym Szczegółowe informacje z wyłączonymLocalAuth.

{
    "$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')]"
            }
    }
 ]
}

Odbiorcy tokenów

Podczas tworzenia niestandardowego klienta w celu uzyskania tokenu dostępu z witryny Microsoft Entra ID do przesyłania danych telemetrycznych do aplikacji Szczegółowe informacje zapoznaj się z poniższą tabelą, aby określić odpowiedni ciąg odbiorców dla danego środowiska hosta.

Wersja chmury platformy Azure Wartość odbiorców tokenu
Chmura publiczna platformy Azure https://monitor.azure.com
Platforma Microsoft Azure obsługiwana przez chmurę 21Vianet https://monitor.azure.cn
Chmura platformy Azure dla instytucji rządowych USA https://monitor.azure.us

Jeśli używasz suwerennych chmur, możesz również znaleźć informacje o odbiorcach w parametry połączenia. Parametry połączenia jest zgodna z tą strukturą:

InstrumentationKey={profile. InstrumentationKey}; IngestionEndpoint={ingestionEndpoint}; LiveEndpoint={liveDiagnosticsEndpoint}; AADAudience={aadAudience}

Parametr odbiorców, AADAudience, może się różnić w zależności od konkretnego środowiska.

Rozwiązywanie problemów

Ta sekcja zawiera różne scenariusze rozwiązywania problemów i kroki, które można wykonać, aby rozwiązać problem przed zgłoszeniem biletu pomocy technicznej.

Błędy HTTP pozyskiwania

Usługa pozyskiwania zwraca określone błędy niezależnie od języka zestawu SDK. Ruch sieciowy można zbierać przy użyciu narzędzia takiego jak Fiddler. Ruch należy filtrować do punktu końcowego pozyskiwania ustawionego w parametry połączenia.

Uwierzytelnianie HTTP/1.1 400 nie jest obsługiwane

Ten błąd pokazuje, że zasób jest ustawiony tylko dla firmy Microsoft Entra-only. Należy poprawnie skonfigurować zestaw SDK, ponieważ wysyła go do nieprawidłowego interfejsu API.

Uwaga

Element "v2/track" nie obsługuje identyfikatora Entra firmy Microsoft. Po poprawnym skonfigurowaniu zestawu SDK dane telemetryczne będą wysyłane do "v2.1/track".

Następnie należy przejrzeć konfigurację zestawu SDK.

Wymagana autoryzacja HTTP/1.1 401

Ten błąd wskazuje, że zestaw SDK jest poprawnie skonfigurowany, ale nie może uzyskać prawidłowego tokenu. Ten błąd może wskazywać na problem z identyfikatorem Entra firmy Microsoft.

Następnie należy zidentyfikować wyjątki w dziennikach zestawu SDK lub błędach sieci z usługi Azure Identity.

HTTP/1.1 403 Brak autoryzacji

Ten błąd oznacza, że zestaw SDK używa poświadczeń bez uprawnień dla zasobu lub subskrypcji aplikacji Szczegółowe informacje.

Najpierw sprawdź kontrolę dostępu zasobu Szczegółowe informacje aplikacji. Należy skonfigurować zestaw SDK z poświadczeniami, które mają rolę Wydawca metryk monitorowania.

Rozwiązywanie problemów specyficznych dla języka

Źródło zdarzeń

Zestaw SDK platformy .NET aplikacji Szczegółowe informacje emituje dzienniki błędów przy użyciu źródła zdarzeń. Aby dowiedzieć się więcej na temat zbierania dzienników źródła zdarzeń, zobacz Rozwiązywanie problemów z brakiem danych — zbieranie dzienników za pomocą programu PerfView.

Jeśli zestaw SDK nie otrzyma tokenu, komunikat o wyjątku zostanie zarejestrowany jako Failed to get AAD Token. Error message:.

Następne kroki