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

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

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

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

Ниже приведены предварительные требования для включения приема Azure AD с проверкой подлинности.

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

Следующие пакеты SDK и компоненты не поддерживаются, если выполняется прием данных с проверкой подлинности Azure AD.

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

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

    1. Управляемое удостоверение (рекомендуется):

      Настройте управляемое удостоверение для службы Azure (виртуальная машина, Службы приложений и т. д.).

    2. Субъект-служба (не рекомендуется):

      Сведения о создании субъект-службы см. в статье Практическое руководство. Создание приложения Azure AD и субъект-службы с доступом к ресурсам с помощью портала.

  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 рекомендуется для управляемых удостоверений, назначаемых системой и назначаемых пользователем.
    • Для удостоверений, назначаемых системой, используйте конструктор по умолчанию без параметров.
    • Для удостоверений, назначаемых пользователем, предоставьте конструктору clientId.
  • ClientSecretCredential рекомендуется для субъектов-служб.
    • Укажите значения tenantId, clientId и clientSecret конструктору.

Ниже приведен пример создания и настройки 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 г. Функция продолжит работать, но не будет обновляться или поддерживаться. Перейдите на строки подключения, чтобы использовать новые возможности.

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

После включения проверки подлинности 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 на основе рабочей области с отключенной локальной проверкой подлинности.

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

Устранение неполадок

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

Ошибки HTTP при приеме

Служба приема будет возвращать определенные ошибки независимо от языка пакета SDK. Сетевой трафик можно собирать с помощью такого средства, как Fiddler. Следует фильтровать трафик к конечной точке приема, заданной в строке подключения.

HTTP/1.1 400 Authentication not supported

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

Примечание

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

Далее необходимо проанализировать конфигурацию пакета SDK.

HTTP/1.1 401 Authorization required

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

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

HTTP/1.1 403 Unauthorized

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

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

Устранение неполадок для конкретного языка

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

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

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

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