Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Application Insights теперь поддерживает проверку подлинности Microsoft Entra. Используя идентификатор Microsoft Entra, вы можете убедиться, что в ресурсах Application Insights выполняется только проверка подлинности телеметрии.
Использование различных систем проверки подлинности может быть обременительным и создавать риски, так как трудно управлять учетными данными в большом масштабе. Теперь вы можете отказаться от локальной проверки подлинности чтобы телеметрия, аутентифицированная только с помощью управляемых удостоверений и Microsoft Entra ID, использовалась в вашем ресурсе. Эта функция является шагом для повышения безопасности и надежности телеметрии, используемой для принятия критически важных операционных (оповещений и автомасштабирования) и бизнес-решений.
Предварительные условия
Для активации проверки подлинности при приеме с использованием Microsoft Entra необходимо выполнить следующие предварительные действия. Вам нужно:
- Будьте в общедоступном облаке.
- Ознакомьтесь со следующими сведениями:
- Для предоставления доступа встроенными ролями Azure требуется роль владельца к группе ресурсов.
- Изучите неподдерживаемые сценарии.
Неподдерживаемые сценарии
Следующие пакеты средств разработки программного обеспечения (ПАКЕТЫ SDK) и функции не поддерживаются для использования с проверкой подлинности Microsoft Entra.
-
Пакет SDK для Java 2.x Application Insights.
Проверка подлинности Microsoft Entra доступна только для агента Java Application Insights версии 3.2.0 и выше. - JavaScript веб-SDK ApplicationInsights.
- Python SDK OpenCensus для Application Insights с версиями Python 3.4 и 3.5.
- Автоматическое инструментирование для Python в службе приложений Azure
- «Application Insights Profiler» для .NET.
Настройка и включение проверки подлинности на основе идентификатора Microsoft Entra
Создайте учетную запись, используя управляемую учетную запись или учетную запись службы, если у вас еще нет учетной записи.
Рекомендуется использовать управляемое удостоверение:
Настройте управляемое удостоверение для службы Azure (Виртуальные машины или Служба приложений).
Не рекомендуется использовать субъект-службу:
Дополнительные сведения о создании приложения Microsoft Entra и субъекта-службы, который может получать доступ к ресурсам, см. в статье «Создание субъекта-службы».
Назначьте необходимую роль управления доступом на основе ролей (RBAC) удостоверению Azure, служебному принципалу или учетной записи пользователя Azure.
Выполните действия, описанные в разделе "Назначение ролей Azure", чтобы добавить роль издателя метрик мониторинга в ожидаемый идентификатор, субъект-службу или учетную запись пользователя Azure, задав целевой ресурс Application Insights в качестве области роли.
Примечание.
Несмотря на то что роль "издатель метрик мониторинга" содержит слово "метрики", она публикует все телеметрические данные в ресурс Application Insights.
Следуйте инструкциям по настройке в соответствии с приведенным ниже языком.
Примечание.
- Поддержка идентификатора Microsoft Entra в пакете SDK для .NET Application Insights включается начиная с версии 2.18-Beta3.
- Мы поддерживаем классы учетных данных, предоставляемые удостоверением Azure.
- Мы рекомендуем
DefaultAzureCredential
для локальной разработки. - Проверка подлинности в Visual Studio с помощью ожидаемой учетной записи пользователя Azure. Дополнительные сведения см. в разделе "Проверка подлинности с помощью Visual Studio".
- Рекомендуется
ManagedIdentityCredential
использовать управляемые удостоверения, назначенные системой и назначаемые пользователем.- Для объектов, назначаемых системой, используйте конструктор по умолчанию без параметров.
- Для назначаемого пользователем укажите идентификатор клиента конструктору.
Установите последний пакет Azure.Identity :
dotnet add package Azure.Identity
Укажите нужный класс учетных данных:
// 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();
Конфигурация переменной среды
Используйте переменную среды APPLICATIONINSIGHTS_AUTHENTICATION_STRING
, чтобы Application Insights мог проходить проверку подлинности в идентификатору Microsoft Entra ID и отправлять данные телеметрии при использовании автоинструментации служб приложений Azure App Services.
- Для назначаемой системой учетной записи:
Параметр приложения | Значение |
---|---|
Строка аутентификации ApplicationInsights | Authorization=AAD |
- Для назначаемого пользователем удостоверения:
Параметр приложения | Значение |
---|---|
Строка аутентификации ApplicationInsights | Authorization=AAD;ClientId={Client id of the User-Assigned Identity} |
Классический API
В следующем примере показано, как настроить TelemetryConfiguration
с помощью .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/"
});
Запрос Application Insights с использованием аутентификации Microsoft Entra
Вы можете отправить запрос, используя конечную точку Azure Monitor Application Insights https://api.applicationinsights.io
. Чтобы получить доступ к конечной точке, необходимо пройти проверку подлинности с помощью идентификатора Microsoft Entra.
Настройка проверки подлинности
Чтобы получить доступ к API, зарегистрируйте клиентское приложение с помощью идентификатора Microsoft Entra и запросите маркер.
Зарегистрируйте приложение в идентификаторе Microsoft Entra.
На странице обзора приложения выберите разрешения API.
Выберите Добавить разрешение.
На вкладке API, используемые моей организацией найдите Application Insights и выберите API Application Insights из списка.
Выберите Делегированные разрешения.
Установите флажок Data.Read.
Выберите Добавить разрешения.
Теперь, когда приложение зарегистрировано и имеет разрешения на использование API, предоставьте приложению доступ к ресурсу Application Insights.
На странице обзора вашего ресурса Application Insights выберите Управление доступом (IAM).
выберите Добавить назначение ролей.
Выберите роль читателя и выберите "Участники".
На вкладке "Члены" выберите "Выбрать участников".
Введите имя приложения в поле "Выбор ".
Выберите приложение и нажмите кнопку "Выбрать".
Выберите Проверить + назначить.
После завершения установки и разрешений Active Directory запросите маркер авторизации.
Примечание.
В этом примере мы применили роль читателя. Эта роль является одной из многих встроенных ролей и может включать больше разрешений, чем требуется. Можно создать более детализированные роли и разрешения.
Запрос токена авторизации
Прежде чем начать, убедитесь, что у вас есть все необходимые значения для успешного выполнения запроса. Для всех запросов требуется:
- Идентификатор клиента Microsoft Entra.
- Идентификатор приложения App Insights. Если вы используете ключи API, это тот же идентификатор приложения.
- Идентификатор клиента Microsoft Entra для приложения.
- Секрет клиента Microsoft Entra для приложения.
API Application Insights поддерживает проверку подлинности Microsoft Entra с тремя различными потоками OAuth2 идентификатора Microsoft.
- Учетные данные клиента
- Код авторизации
- Неявный
Поток учетных данных клиента
В потоке учетных данных клиента токен используется с эндпойнтом Application Insights. Один запрос выполняется для получения токена с использованием учетных данных, предоставленных вашему приложению на предыдущем шаге при регистрации приложения в Microsoft Entra ID.
Используйте конечную точку https://api.applicationinsights.io
.
URL-адрес токена клиентских учетных данных (HTTP-запрос 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>
Успешный запрос получает маркер доступа в ответе:
{
token_type": "Bearer",
"expires_in": "86399",
"ext_expires_in": "86399",
"access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax"
}
Используйте маркер в запросах к конечной точке 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"
}
Пример ответа:
"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"
]
]
}
]
}
Поток кода авторизации
Основной поддерживаемый поток OAuth2 — через коды авторизации. Для этого метода требуется два HTTP-запроса для получения маркера, с помощью которого необходимо вызвать API Azure Monitor Application Insights. Существует два URL-адреса с одной конечной точкой для каждого запроса. Их форматы описаны в следующих разделах.
URL-адрес кода авторизации (запрос 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
Когда запрос выполняется по авторизованному URL-адресу, client\_id
это идентификатор приложения из приложения Microsoft Entra, скопированный из меню свойств приложения. Это redirect\_uri
homepage/login
URL-адрес из того же приложения Microsoft Entra. При успешном выполнении запроса эта конечная точка перенаправляет вас на страницу входа, предоставленную при регистрации с кодом авторизации, добавленным к URL-адресу. См. следующий пример.
http://<app-client-id>/?code=AUTHORIZATION_CODE&session_state=STATE_GUID
На этом этапе вы получаете код авторизации, который теперь используется для запроса токена доступа.
URL-адрес токена кода авторизации (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>
Используются те же значения с некоторыми дополнениями. Код авторизации — это тот же код, который вы получили в предыдущем запросе после успешного перенаправления. Код сочетается с ключом, полученным из приложения Microsoft Entra. Если ключ не сохранен, его можно удалить и создать на вкладке "Ключи" в меню приложения Microsoft Entra. Ответ — это строка JSON, содержащая маркер со следующей схемой. Типы указаны для значений токенов.
Пример ответа:
{
"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"
}
Часть маркера доступа этого ответа представляет собой то, что вы представляете API Application Insights в заголовке Authorization: Bearer
. Вы также можете использовать маркер обновления в будущем, чтобы получить новый access token и refresh token, когда они становятся устаревшими. Формат и конечная точка для этого запроса:
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>
Пример ответа:
{
"token_type": "Bearer",
"expires_in": "3600",
"expires_on": "1460404526",
"resource": "https://api.applicationinsights.io",
"access_token": "eyJ0eXAiOiJKV1QiLCJ.....Ax",
"refresh_token": "eyJ0esdfiJKV1ljhgYF.....Az"
}
Неявный поток кода
API службы Application Insights поддерживает неявный поток OAuth2. Для этого потока требуется только один запрос, но не может быть получен маркер обновления.
URL-адрес авторизации неявного кода
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
Успешный запрос приводит к перенаправлению на ваш URI перенаправления с токеном в URL-адресе.
http://YOUR_REDIRECT_URI/#access_token=YOUR_ACCESS_TOKEN&token_type=Bearer&expires_in=3600&session_state=STATE_GUID
Этот access_token используется в качестве значения Authorization: Bearer
заголовка при его передаче в API Application Insights для авторизации запросов.
Отключение локальной проверки подлинности
После включения проверки подлинности Microsoft Entra можно отключить локальную проверку подлинности. Эта конфигурация позволяет получать данные телеметрии, прошедшие проверку подлинности исключительно идентификатором Microsoft Entra и влиять на доступ к данным (например, с помощью ключей API).
Вы можете отключить локальную проверку подлинности с помощью портала Azure, политики Azure или программно.
Портал Azure
В ресурсе Application Insights выберите "Свойства " в разделе "Настройка " в меню слева. Выберите "Включено" (щелкните, чтобы изменить), если включена локальная проверка подлинности.
Щелкните Отключено и примените изменения.
После отключения локальной проверки подлинности на ресурсе вы увидите соответствующие сведения на панели обзора .
Политика Azure
Политика Azure для DisableLocalAuth
запрещает пользователям создавать новый ресурс Application Insights, если это свойство не установлено на true
. Имя политики — Application Insights components should block non-Azure Active Directory based ingestion
.
Чтобы применить это определение политики к подписке, создайте назначение политики и назначьте эту политику.
В следующем примере показано определение шаблона политики:
{
"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')]"
}
}
}
}
Программное включение
DisableLocalAuth
Свойство используется для отключения локальной проверки подлинности в ресурсе Application Insights. Если для этого свойства задано true
значение, оно применяет проверку подлинности Microsoft Entra для всех доступа.
В следующем примере показан шаблон Azure Resource Manager, который можно использовать для создания ресурса Application Insights на основе рабочей области с 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')]"
}
}
]
}
Аудитория токена
При разработке пользовательского клиента для получения маркера доступа от Microsoft Entra ID для отправки телеметрии в Application Insights обратитесь к следующей таблице, чтобы определить соответствующую строку аудитории для вашей конкретной среды размещения.
Облачная версия Azure | Значение аудитории токена |
---|---|
Общедоступное облако Azure | https://monitor.azure.com |
Microsoft Azure, управляемый облаком 21Vianet | https://monitor.azure.cn |
Облако Azure для государственных организаций США | https://monitor.azure.us |
Если вы используете суверенные облака, вы также можете найти информацию об аудитории в строке подключения. Строка подключения следует этой структуре:
InstrumentationKey={profile.InstrumentationKey}; IngestionEndpoint={ingestionEndpoint}; LiveEndpoint={liveDiagnosticsEndpoint}; AADAudience={aadAudience}
Параметр аудитории AADAudience может отличаться в зависимости от конкретной среды.
Устранение неполадок
В этом разделе приведены различные сценарии устранения неполадок и действия, которые можно предпринять для устранения проблемы перед вызовом запроса в службу поддержки.
Ошибки HTTP при приеме
Служба приема возвращает конкретные ошибки независимо от языка SDK. Сетевой трафик можно собирать с помощью такого средства, как Fiddler. Необходимо отфильтровать трафик к конечной точке приема, указанной в строке подключения.
HTTP/1.1 400 Аутентификация не поддерживается
Эта ошибка показывает, что ресурс задан только для Microsoft Entra. Необходимо правильно настроить пакет SDK, так как он отправляется в неправильный API.
Примечание.
"v2/track" не поддерживает идентификатор Microsoft Entra. При правильной настройке пакета SDK данные телеметрии отправляются в v2.1/track
.
Затем необходимо проверить конфигурацию пакета SDK.
HTTP/1.1 401 Требуется авторизация
Эта ошибка указывает, что пакет SDK настроен правильно, но он не может получить действительный маркер. Эта ошибка может указывать на проблему с идентификатором Microsoft Entra.
Затем необходимо определить исключения в журналах пакета SDK или сетевые ошибки от Azure Identity.
HTTP/1.1 403 Запрещён
Эта ошибка означает, что пакет SDK использует учетные данные без разрешения для ресурса Или подписки Application Insights.
Сначала проверьте управление доступом к ресурсу Application Insights. Необходимо настроить пакет SDK с учетными данными, имеющими роль публикации метрик мониторинга.
Устранение неполадок, связанных с языком
Пакет SDK Application Insights для .NET генерирует журналы ошибок, используя источник событий. Дополнительные сведения о сборе журналов источников событий см. в статье "Устранение неполадок без данных" — сбор журналов с помощью PerfView.
Если SDK не удаётся получить токен, сообщение об исключении регистрируется как Failed to get AAD Token. Error message:
.