Проверка подлинности Azure AD для Application Insights

Служба Application Insights теперь поддерживает проверку подлинности Azure Active Directory (Azure AD). С помощью Azure AD можно убедиться, что в ресурсы Application Insights будут приниматься только данные телеметрии, прошедшие проверку подлинности.

Использование различных систем проверки подлинности может быть обременительным и создавать риски, так как трудно управлять учетными данными в большом масштабе. Теперь вы можете отказаться от локальной проверки подлинности, чтобы гарантировать, что в ресурсе будут приниматься только данные телеметрии с помощью управляемых удостоверений и Azure AD. Эта функция является шагом к повышению безопасности и надежности данных телеметрии, используемых для принятия критически важных операционных (оповещенийи автомасштабирования) и бизнес-решений.

Примечание

Примечание. В этом документе рассматривается прием данных в Application Insights с помощью проверки подлинности Azure AD. Сведения о запросах данных в Application Insights см. в статье Запрос Application Insights с помощью аутентификация Azure AD.

Предварительные требования

Следующие предварительные требования позволяют Azure AD приема с проверкой подлинности. Для этого необходимо:

Неподдерживаемые сценарии

Следующие пакеты SDK и функции не поддерживаются для использования с Azure AD приемом, прошедшим проверку подлинности:

Настройка и включение проверки подлинности на основе Azure AD

  1. Если у вас еще нет удостоверения, создайте его с помощью управляемого удостоверения или субъекта-службы.

  2. Назначьте роль службе Azure.

    Выполните действия, описанные в разделе Назначение ролей Azure , чтобы добавить роль издателя метрик мониторинга из целевого ресурса Application Insights в ресурс Azure, из которого отправляется телеметрия.

    Примечание

    Хотя роль издатель метрик мониторинга говорит "метрики", она будет публиковать все данные телеметрии в ресурсе Application Insights.

  3. Следуйте указаниям по настройке в соответствии с приведенным ниже языком.

Примечание

Поддержка Azure AD в пакете SDK .NET для Application Insights включена начиная с версии 2.18-Beta3.

Пакет SDK .NET для Application Insights поддерживает классы учетных данных, предоставляемые удостоверением Azure.

  • Рекомендуется DefaultAzureCredential для локальной разработки.
  • Мы рекомендуем использовать ManagedIdentityCredential управляемые удостоверения, назначаемые системой и пользователем.
    • Для удостоверений, назначаемых системой, используйте конструктор по умолчанию без параметров.
    • Для назначаемых пользователем укажите идентификатор клиента конструктору.
  • Рекомендуется ClientSecretCredential для субъектов-служб.
    • Предоставьте конструктору идентификатор клиента, идентификатор клиента и секрет клиента.

В следующем примере показано, как вручную создать и настроить TelemetryConfiguration с помощью .NET:

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

В следующем примере показано, как настроить 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/"
});

Примечание

Поддержка приема ключей инструментирования будет завершена 31 марта 31, 2025 г. Функция продолжит работать, но не будет обновляться или поддерживаться. Перейдите на строки подключения, чтобы использовать новые возможности.

Примечание

Поддержка приема ключей инструментирования будет завершена 31 марта 31, 2025 г. Функция продолжит работать, но не будет обновляться или поддерживаться. Перейдите на строки подключения, чтобы использовать новые возможности.

Отключение локальной проверки подлинности

После включения проверки подлинности Azure AD можно отключить локальную проверку подлинности. Эта конфигурация позволяет принимать данные телеметрии, прошедшие проверку подлинности исключительно с помощью Azure AD и влияя на доступ к данным (например, с помощью ключей API).

Локальную проверку подлинности можно отключить с помощью портал Azure, Политика Azure или программно.

Портал Azure

  1. В ресурсе Application Insights выберите Свойства под заголовком Настройка в меню слева. Выберите Включено (щелкните, чтобы изменить), если включена локальная проверка подлинности.

    Снимок экрана: свойства в разделе Настройка и кнопка Включено (щелкните, чтобы изменить) локальную проверку подлинности.

  2. Щелкните Отключено и примените изменения.

    Снимок экрана: локальная проверка подлинности с кнопкой

  3. После отключения локальной проверки подлинности вы увидите соответствующие сведения в области Обзор .

    Снимок экрана, на котором показана вкладка

Политика Azure

Политика Azure для DisableLocalAuth запретит пользователям возможность создавать новый ресурс Application Insights без этого свойства , для этого свойства будет задано значение true. Имя политики — Application Insights components should block non-AAD auth ingestion.

Чтобы применить это определение политики к подписке, создайте назначение политики и назначьте эту политику.

В следующем примере показано определение шаблона политики:

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

Программное включение

Свойство DisableLocalAuth используется для отключения локальной проверки подлинности в ресурсе Application Insights. Если для этого свойства задано значение true, оно принудительно применяет Azure AD проверку подлинности для всего доступа.

В следующем примере показан шаблон 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')]"
            }
    }
 ]
}

Аудитория токена

При разработке пользовательского клиента для получения маркера доступа из Azure AD для отправки данных телеметрии в Application Insights см. таблицу ниже, чтобы определить соответствующую строку аудитории для конкретной среды узла.

Облачная версия Azure Значение аудитории маркера
Общедоступное облако Azure: https://monitor.azure.com
Облако Azure для Китая 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 Authentication not supported

Эта ошибка указывает, что ресурс настроен только для Azure AD. Пакет SDK настроен неправильно и отправляется в неправильный API.

Примечание

"версия 2/track" не поддерживает Azure AD. Если пакет SDK настроен правильно, данные телеметрии будут отправляться в v2.1/track.

Затем следует просмотреть конфигурацию пакета SDK.

HTTP/1.1 401 Authorization required

Эта ошибка означает, что пакет SDK настроен правильно, но ему не удается получить допустимый маркер. Эта ошибка может указывать на проблему с Azure AD.

Затем следует определить исключения в журналах пакета SDK или сетевые ошибки из удостоверений Azure.

HTTP/1.1 403 Unauthorized

Эта ошибка означает, что пакет SDK настроен с учетными данными, которым не было предоставлено разрешение на доступ к ресурсу или подписке Application Insights.

Далее следует проверить управление доступом к ресурсу Application Insights. Пакет SDK должен быть настроен с учетными данными, которым назначена роль издателя метрик мониторинга.

Устранение неполадок, связанных с конкретным языком

Источник событий

Пакет SDK application Insights для .NET создает журналы ошибок с помощью источника событий. Дополнительные сведения о сборе журналов источников событий см. в статье Устранение неполадок без данных — сбор журналов с помощью PerfView.

Если пакету SDK не удается получить маркер, сообщение об исключении регистрируется как Failed to get AAD Token. Error message: .

Дальнейшие действия