Ověřování Microsoft Entra pro Application Insights
Application Insights teď podporuje ověřování Microsoft Entra. Pomocí ID Microsoft Entra můžete zajistit, aby se ve vašich prostředcích Application Insights ingestovala pouze ověřená telemetrie.
Používání různých ověřovacích systémů může být těžkopádné a rizikové, protože je obtížné spravovat přihlašovací údaje ve velkém měřítku. Teď se můžete rozhodnout odhlásit místní ověřování , abyste zajistili, že se ve vašem prostředku ingestují jenom telemetrie výhradně ověřená pomocí spravovaných identit a ID Microsoft Entra . Tato funkce je krokem k vylepšení zabezpečení a spolehlivosti telemetrie používané k provádění důležitých provozních (upozorňování a automatického škálování) a obchodních rozhodnutí.
Požadavky
K povolení příjmu dat ověřených microsoftem Entra jsou potřeba následující předběžné kroky. Budete muset:
- Buďte ve veřejném cloudu.
- Seznamte se s těmito informacemi:
- Udělení přístupu pomocí předdefinovaných rolí Azure vyžaduje, aby skupina prostředků měla roli Vlastník.
- Seznamte se s nepodporovanými scénáři.
Nepodporované scénáře
Následující sady SDK (Software Development Kit) a funkce nejsou podporovány pro použití s příjmem dat ověřeným Microsoft Entra:
- Application Insights Java 2.x SDK.
Ověřování Microsoft Entra je k dispozici pouze pro agenta Java Application Insights větší nebo rovnou 3.2.0. - ApplicationInsights JavaScript Web SDK.
- Sada Application Insights OpenCensus Python SDK s Pythonem verze 3.4 a 3.5
- Automatická příprava pro Python ve službě Aplikace Azure Service
- Application Insights Profiler pro .NET.
Konfigurace a povolení ověřování založeného na ID microsoftu Entra
Pokud ještě identitu nemáte, vytvořte ji pomocí spravované identity nebo instančního objektu.
Doporučujeme použít spravovanou identitu:
Nastavte spravovanou identitu pro vaši službu Azure (Virtual Machines nebo App Service).
Nedoporučujeme používat instanční objekt:
Další informace o tom, jak vytvořit aplikaci Microsoft Entra a instanční objekt, který má přístup k prostředkům, naleznete v tématu Vytvoření instančního objektu.
Přiřaďte požadovanou roli řízení přístupu na základě role (RBAC) k identitě Azure, instančnímu objektu nebo uživatelskému účtu Azure.
Postupujte podle kroků v části Přiřazení rolí Azure a přidejte roli Vydavatele metrik monitorování k očekávané identitě, instančnímu objektu nebo uživatelskému účtu Azure nastavením cílového prostředku Application Insights jako oboru role.
Poznámka:
I když role Vydavatel metrik monitorování říká "metriky", publikuje veškerou telemetrii do prostředku Application Insights.
Postupujte podle pokynů ke konfiguraci v souladu s následujícím jazykem.
Poznámka:
Podpora id Microsoft Entra v sadě Application Insights .NET SDK je součástí verze 2.18-Beta3.
Sada Application Insights .NET SDK podporuje třídy přihlašovacích údajů poskytované službou Azure Identity.
DefaultAzureCredential
Doporučujeme pro místní vývoj.- Ověřte se v sadě Visual Studio pomocí očekávaného uživatelského účtu Azure. Další informace najdete v tématu Ověřování prostřednictvím sady Visual Studio.
- Doporučujeme
ManagedIdentityCredential
pro spravované identity přiřazené systémem a přiřazené uživatelem.- Pro přiřazení systému použijte výchozí konstruktor bez parametrů.
- Pro uživatelem přiřazené zadejte ID klienta konstruktoru.
Následující příklad ukazuje, jak ručně vytvořit a nakonfigurovat TelemetryConfiguration
pomocí .NET:
TelemetryConfiguration.Active.ConnectionString = "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://xxxx.applicationinsights.azure.com/";
var credential = new DefaultAzureCredential();
TelemetryConfiguration.Active.SetAzureTokenCredential(credential);
Následující příklad ukazuje, jak nakonfigurovat TelemetryConfiguration
pomocí .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/"
});
Konfigurace proměnné prostředí
Pomocí proměnné prostředí můžete službě APPLICATIONINSIGHTS_AUTHENTICATION_STRING
Application Insights umožnit ověření pro ID Microsoft Entra a odesílání telemetrie při použití automatického vytváření služby Aplikace Azure Services.
- Pro identitu přiřazenou systémem:
Nastavení aplikace | Hodnota |
---|---|
APPLICATIONINSIGHTS_AUTHENTICATION_STRING | Authorization=AAD |
- Pro identitu přiřazenou uživatelem:
Nastavení aplikace | Hodnota |
---|---|
APPLICATIONINSIGHTS_AUTHENTICATION_STRING | Authorization=AAD;ClientId={Client id of the User-Assigned Identity} |
Dotazování Application Insights pomocí ověřování Microsoft Entra
Žádost o dotaz můžete odeslat pomocí koncového bodu https://api.applicationinsights.io
Application Insights služby Azure Monitor . Pokud chcete získat přístup ke koncovému bodu, musíte se ověřit prostřednictvím ID Microsoft Entra.
Nastavení ověřování
Pro přístup k rozhraní API zaregistrujete klientskou aplikaci s ID Microsoft Entra a požádáte o token.
Na stránce přehledu aplikace vyberte oprávnění rozhraní API.
Vyberte Přidat oprávnění.
Na rozhraních API používá moje organizace kartu, vyhledejte Application Insights a ze seznamu vyberte rozhraní APPLICATION Insights API.
Vyberte Delegovaná oprávnění.
Zaškrtněte políčko Data.Read .
Vyberte Přidat oprávnění.
Teď, když je vaše aplikace zaregistrovaná a má oprávnění k používání rozhraní API, udělte aplikaci přístup k prostředku Application Insights.
Na stránce přehledu prostředků Application Insights vyberte Řízení přístupu (IAM).
Vyberte Přidat přiřazení role.
Vyberte roli Čtenář a pak vyberte Členové.
Na kartě Členové zvolte Vybrat členy.
Do pole Vybrat zadejte název aplikace.
Vyberte aplikaci a zvolte Vybrat.
Vyberte Zkontrolovat + přiřadit.
Po dokončení nastavení a oprávnění služby Active Directory požádejte o autorizační token.
Poznámka:
V tomto příkladu jsme použili roli Čtenář. Tato role je jednou z mnoha předdefinovanýchrolích Můžete vytvořit podrobnější role a oprávnění.
Vyžádání autorizačního tokenu
Než začnete, ujistěte se, že máte všechny hodnoty potřebné k úspěšnému provedení požadavku. Všechny požadavky vyžadují:
- ID vašeho tenanta Microsoft Entra.
- ID vaší aplikace App Insights – Pokud aktuálně používáte klíče rozhraní API, je to stejné ID aplikace.
- ID klienta Microsoft Entra pro aplikaci.
- Tajný kód klienta Microsoft Entra pro aplikaci.
Rozhraní Application Insights API podporuje ověřování Microsoft Entra se třemi různými toky Microsoft Entra ID OAuth2 :
- Přihlašovací údaje klienta
- Autorizační kód
- Implicitní
Tok přihlašovacích údajů klienta
V toku přihlašovacích údajů klienta se token používá s koncovým bodem Application Insights. Při registraci aplikace v Microsoft Entra ID se provede jedna žádost o přijetí tokenu pomocí přihlašovacích údajů zadaných pro vaši aplikaci v předchozím kroku.
https://api.applicationinsights.io
Použijte koncový bod.
Adresa URL tokenu přihlašovacích údajů klienta (požadavek 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>
Úspěšný požadavek obdrží přístupový token v odpovědi:
{
token_type": "Bearer",
"expires_in": "86399",
"ext_expires_in": "86399",
"access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax"
}
Použijte token v požadavcích na koncový bod 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"
}
Příklad odpovědi:
"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",
"9fc6738d-7e26-44f0-b88e-6fae8ccb6b26",
"us-va-ash-azr_9fc6738d-7e26-44f0-b88e-6fae8ccb6b26",
null,
null,
"AutoGen_49c3aea0-4641-4675-93b5-55f7a62d22d3",
"PC",
null,
null,
"52.168.8.0",
"Boydton",
"Virginia",
"United States",
null,
"fabrikamfiberapp",
"RD00155D5053D1",
"cf58dcfd-0683-487c-bc84-048789bca8e5",
"fabrikamprod",
"5a2e4e0c-e136-4a15-9824-90ba859b0a89",
"web:2.5.0-33031",
"051ad4ef-0776-11e8-ac6e-e30599af6943",
"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",
"58b15be6-d1e6-4d89-9919-52f63b840913",
"emea-se-sto-edge_58b15be6-d1e6-4d89-9919-52f63b840913",
null,
null,
"AutoGen_49c3aea0-4641-4675-93b5-55f7a62d22d3",
"PC",
null,
null,
"51.141.32.0",
"Cardiff",
"Cardiff",
"United Kingdom",
null,
"fabrikamfiberapp",
"RD00155D5053D1",
"cf58dcfd-0683-487c-bc84-048789bca8e5",
"fabrikamprod",
"5a2e4e0c-e136-4a15-9824-90ba859b0a89",
"web:2.5.0-33031",
"051ad4f0-0776-11e8-ac6e-e30599af6943",
"request",
"1"
]
]
}
]
}
Tok autorizačního kódu
Hlavní podporovaný tok OAuth2 je prostřednictvím autorizačních kódů. Tato metoda vyžaduje dva požadavky HTTP k získání tokenu, pomocí kterého se má volat rozhraní API Application Insights služby Azure Monitor. Existují dvě adresy URL s jedním koncovým bodem na požadavek. Jejich formáty jsou popsány v následujících částech.
Adresa URL autorizačního kódu (požadavek 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
Když se na autorizovanou adresu URL vytvoří požadavek, client\_id
jedná se o ID aplikace z vaší aplikace Microsoft Entra zkopírované z nabídky vlastností aplikace. Jedná se redirect\_uri
o homepage/login
adresu URL ze stejné aplikace Microsoft Entra. Pokud je žádost úspěšná, tento koncový bod vás přesměruje na přihlašovací stránku, kterou jste zadali při registraci s autorizačním kódem připojeným k adrese URL. Prohlédněte si následující příklad:
http://<app-client-id>/?code=AUTHORIZATION_CODE&session_state=STATE_GUID
V tomto okamžiku získáte autorizační kód, který teď použijete k vyžádání přístupového tokenu.
Adresa URL tokenu autorizačního kódu (požadavek 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>
Všechny hodnoty jsou stejné jako předtím, s některými sčítáními. Autorizační kód je stejný kód, který jste obdrželi v předchozím požadavku po úspěšném přesměrování. Kód se zkombinuje s klíčem získaným z aplikace Microsoft Entra. Pokud jste klíč neuložili, můžete ho odstranit a vytvořit nový z karty kláves v nabídce aplikace Microsoft Entra. Odpověď je řetězec JSON, který obsahuje token s následujícím schématem. Pro hodnoty tokenu jsou uvedené typy.
Příklad odpovědi:
{
"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"
}
Část přístupového tokenu této odpovědi je to, co prezentujete v rozhraní API Application Insights v Authorization: Bearer
hlavičce. Obnovovací token můžete použít také v budoucnu k získání nového access_token a refresh_token, když vaše zařízení přestane být zastaralé. Pro tento požadavek platí, že formát a koncový bod jsou:
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>
Příklad odpovědi:
{
"token_type": "Bearer",
"expires_in": "3600",
"expires_on": "1460404526",
"resource": "https://api.applicationinsights.io",
"access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax",
"refresh_token": "eyJ0esdfiJKV1ljhgYF.....Az"
}
Implicitní tok kódu
Rozhraní Application Insights API podporuje implicitní tok OAuth2. Pro tento tok se vyžaduje jenom jeden požadavek, ale není možné získat žádný obnovovací token.
Implicitní adresa URL autorizace kódu
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
Úspěšný požadavek vytvoří přesměrování na identifikátor URI přesměrování s tokenem v adrese URL:
http://YOUR_REDIRECT_URI/#access_token=YOUR_ACCESS_TOKEN&token_type=Bearer&expires_in=3600&session_state=STATE_GUID
Tato access_token slouží jako Authorization: Bearer
hodnota hlavičky při předání do rozhraní API Application Insights k autorizaci požadavků.
Zakázání místního ověřování
Po povolení ověřování Microsoft Entra můžete zakázat místní ověřování. Tato konfigurace umožňuje ingestovat telemetrii ověřenou výhradně id Microsoft Entra a ovlivnit přístup k datům (například prostřednictvím klíčů rozhraní API).
Místní ověřování můžete zakázat pomocí webu Azure Portal nebo Azure Policy nebo prostřednictvím kódu programu.
portál Azure
V prostředku Application Insights vyberte v části Konfigurovat v nabídce na levé straně možnost Vlastnosti. Pokud je místní ověřování povolené, vyberte Možnost Povoleno (kliknutím můžete změnit ).
Vyberte Zakázáno a použijte změny.
Po zakázání místního ověřování prostředku se v podokně Přehled zobrazí odpovídající informace.
Azure Policy
Azure Policy pro DisableLocalAuth
odepření uživatelům možnost vytvořit nový prostředek Application Insights bez této vlastnosti nastavenou na true
. Název zásady je Application Insights components should block non-Azure Active Directory based ingestion
.
Pokud chcete tuto definici zásad použít pro vaše předplatné, vytvořte nové přiřazení zásady a přiřaďte ji.
Následující příklad ukazuje definici šablony zásad:
{
"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')]"
}
}
}
}
Programové povolení
Tato vlastnost DisableLocalAuth
slouží k zakázání místního ověřování prostředku Application Insights. Pokud je tato vlastnost nastavena na true
, vynucuje, že ověřování Microsoft Entra musí být použito pro veškerý přístup.
Následující příklad ukazuje šablonu Azure Resource Manageru, kterou můžete použít k vytvoření prostředku Application Insights založeného na pracovním prostoru se zakázaným LocalAuth
.
{
"$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')]"
}
}
]
}
Cílová skupina tokenů
Při vývoji vlastního klienta pro získání přístupového tokenu z ID Microsoft Entra pro odesílání telemetrie do Application Insights si projděte následující tabulku a určete odpovídající řetězec cílové skupiny pro vaše konkrétní hostitelské prostředí.
Verze cloudu Azure | Hodnota cílové skupiny tokenů |
---|---|
Veřejný cloud Azure | https://monitor.azure.com |
Microsoft Azure provozovaný cloudem 21Vianet | https://monitor.azure.cn |
Cloud Azure US Government | https://monitor.azure.us |
Pokud používáte suverénní cloudy, najdete informace o cílové skupině také v připojovací řetězec. Připojovací řetězec se řídí touto strukturou:
InstrumentationKey={profile. InstrumentationKey}; IngestionEndpoint={ingestionEndpoint}; LiveEndpoint={liveDiagnosticsEndpoint}; AADAudience={aadAudience}
Parametr cílové skupiny AADAudience se může lišit v závislosti na vašem konkrétním prostředí.
Řešení problému
Tato část obsahuje jedinečné scénáře řešení potíží a kroky, které můžete provést při řešení problému před vytvořením lístku podpory.
Chyby HTTP příjmu dat
Služba příjmu dat vrací konkrétní chyby bez ohledu na jazyk sady SDK. Síťový provoz je možné shromažďovat pomocí nástroje, jako je Fiddler. Přenosy do koncového bodu příjmu dat nastaveného v připojovací řetězec byste měli filtrovat.
Nepodporuje se ověřování HTTP/1.1 400
Tato chyba ukazuje, že je prostředek nastavený pouze pro Microsoft Entra. Sadu SDK je potřeba správně nakonfigurovat, protože se odesílá do nesprávného rozhraní API.
Poznámka:
"v2/track" nepodporuje ID Microsoft Entra. Když je sada SDK správně nakonfigurovaná, telemetrie se odešle na "v2.1/track".
Dále byste měli zkontrolovat konfiguraci sady SDK.
Vyžaduje se autorizace HTTP/1.1 401
Tato chyba značí, že sada SDK je správně nakonfigurovaná, ale nemůže získat platný token. Tato chyba může znamenat problém s ID Microsoft Entra.
Dále byste měli identifikovat výjimky v protokolech sady SDK nebo chybách sítě z identity Azure.
HTTP/1.1 403 Neautorizováno
Tato chyba znamená, že sada SDK používá přihlašovací údaje bez oprávnění k prostředku nebo předplatnému Application Insights.
Nejprve zkontrolujte řízení přístupu k prostředku Application Insights. Sadu SDK musíte nakonfigurovat pomocí přihlašovacích údajů, které mají roli vydavatele metrik monitorování.
Řešení potíží pro konkrétní jazyk
Zdroj událostí
Sada Application Insights .NET SDK generuje protokoly chyb pomocí zdroje událostí. Další informace o shromažďování protokolů zdroje událostí najdete v tématu Řešení potíží s žádnými daty – shromažďování protokolů pomocí nástroje PerfView.
Pokud se sadě SDK nepodaří získat token, zpráva o výjimce se zaprotokoluje jako Failed to get AAD Token. Error message:
.