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ć:
- Bądź w chmurze publicznej.
- Zapoznaj się z:
- Tożsamość zarządzana.
- Jednostka usługi.
- Przypisywanie ról platformy Azure.
- Aby udzielić dostępu za pomocą wbudowanych ról platformy Azure, należy mieć rolę Właściciela do grupy zasobów.
- Poznaj nieobsługiwane scenariusze.
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:
- Aplikacja Szczegółowe informacje java 2.x SDK.
Uwierzytelnianie Microsoft Entra jest dostępne tylko dla aplikacji Szczegółowe informacje agenta Java większego lub równego 3.2.0. - Aplikacja Szczegółowe informacje internetowy zestaw SDK języka JavaScript.
- Application Szczegółowe informacje OpenCensus Python SDK z językiem Python w wersji 3.4 i 3.5.
- Domyślnie automatyczne rejestrowanie/monitorowanie bez kodu (w przypadku języków) dla usługi aplikacja systemu Azure Service, Azure Virtual Machines/Azure Virtual Machine Scale Sets i Azure Functions.
- Profiler.
Konfigurowanie i włączanie uwierzytelniania opartego na identyfikatorze Entra firmy Microsoft
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.
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.
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
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.
Wybierz pozycję Wyłączone i zastosuj zmiany.
Po wyłączeniu uwierzytelniania lokalnego w zasobie zobaczysz odpowiednie informacje w okienku Przegląd .
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 true
wartość . 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 true
wartość , 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:
.