Брокер удостоверений Azure HDInsight (HIB)

Эта статья содержит сведения о том, как настраивать и использовать возможность "Брокер удостоверений Azure HDInsight". Эту функцию можно использовать для получения современной проверки подлинности OAuth в Apache Ambari при наличии многофакторной проверки подлинности без использования устаревших хэшей паролей в доменных службах Microsoft Entra.

Обзор

Брокер удостоверений HDInsight упрощает сложные настройки проверки подлинности в следующих сценариях.

  • Для проверки подлинности пользователей с целью предоставления им доступа к облачным ресурсам ваша организация использует федерацию. Ранее для использования кластеров пакетов безопасности HDInsight Enterprise необходимо было включить синхронизацию хэша паролей из локальной среды с идентификатором Microsoft Entra. Для некоторых организаций это требование может быть затруднительным или нежелательным.
  • Ваша организация хочет принудительно применять многофакторную проверку подлинности для доступа к Apache Ambari и другим кластерным ресурсам через Интернет или по протоколу HTTP.

Брокер идентификаторов HDInsight предоставляет инфраструктуру проверки подлинности, которая обеспечивает переход протокола с OAuth (современный) на Kerberos (устаревшая версия) без необходимости синхронизации хэшей паролей с доменными службами Microsoft Entra. Эта инфраструктура состоит из компонентов, запущенных на виртуальной машине Windows Server с включенным узлом брокера удостоверений HDInsight, а также узлами шлюза кластера.

С помощью следующей таблицы определите оптимальный вариант проверки подлинности на основе требований вашей организации.

Варианты проверки подлинности Конфигурация HDInsight Факторы, которые следует учитывать
Полностью OAuth Корпоративный пакет безопасности + Брокер удостоверений HDInsight Самый безопасный вариант. (Поддерживается многофакторная проверка подлинности.) Синхронизация хэша не требуется. Нет доступа ssh/kinit/keytab для локальных учетных записей, которые не имеют хэша паролей в доменных службах Microsoft Entra. Учетные записи, предназначенные только для облака, могут по-прежнему использовать SSH/kinit/keytab. Веб-доступ к Ambari через OAuth. Требует обновления устаревших приложений (например, JDBC/ODBC) для поддержки OAuth.
OAuth + обычная проверка подлинности Корпоративный пакет безопасности + Брокер удостоверений HDInsight Веб-доступ к Ambari через OAuth. Устаревшие приложения продолжают использовать обычную проверку подлинности. Для доступа с использованием обычной проверки подлинности многофакторную проверку подлинности необходимо отключить. Синхронизация хэша не требуется. Нет доступа ssh/kinit/keytab для локальных учетных записей, которые не имеют хэша паролей в доменных службах Microsoft Entra. Учетные записи, предназначенные только для облака, могут по-прежнему использовать SSH/kinit/.
Полностью обычная проверка подлинности Пакет безопасности корпоративного уровня Больше всего похожа на локальные настройки. Требуется синхронизация хэша паролей с доменными службами Microsoft Entra. Локальные учетные записи могут использовать SSH/kinit или keytab. Необходимо отключить многофакторную проверку подлинности, если в качестве резервного хранилища используется Azure Data Lake Storage 2-го поколения.

На следующей схеме представлен поток современной проверки подлинности на основе OAuth для всех пользователей, включая федеративных пользователей, после включения брокера удостоверений HDInsight:

Diagram that shows authentication flow with HDInsight ID Broker.

На этой схеме клиент (то есть браузер или приложение) сначала должен получить токен OAuth. Затем он показывает маркер шлюзу в HTTP-запросе. Если вы уже вошли в другие службы Azure, например на портал Azure, войти в кластер HDInsight можно с помощью единого входа.

Многие устаревшие приложения по-прежнему поддерживают только обычную проверку подлинности (то есть имя пользователя и пароль). В этих сценариях для подключения к шлюзам кластера можно по-прежнему использовать обычную проверку подлинности HTTP. В этой настройке необходимо обеспечить сетевое подключение с узлов шлюза к конечной точке службы федерации Active Directory (AD FS) (AD FS), чтобы обеспечить прямую линию видимости с узлов шлюза.

На следующей схеме представлен поток обычной проверки подлинности для федеративных пользователей. Сначала шлюз пытается выполнить проверку подлинности с помощью потока ROPC. Если хэши паролей не синхронизированы с идентификатором Microsoft Entra, он возвращается к обнаружению конечной точки AD FS и завершает проверку подлинности путем доступа к конечной точке AD FS.

Diagram that shows architecture with basic authentication.

Включение брокера удостоверений HDInsight

Чтобы создать кластер пакета безопасности предприятия с включенным брокером идентификаторов HDInsight,

  1. Войдите на портал Azure.
  2. Выполните базовые действия по созданию кластера корпоративного пакета безопасности. Дополнительные сведения см. в статье Создание кластера HDInsight с корпоративным пакетом безопасности.
  3. Выберите Включить брокер удостоверений HDInsight.

Возможность "Брокер удостоверений HDInsight" добавляет в кластер одну дополнительную виртуальную машину. Эта виртуальная машина представляет собой узел брокера удостоверений HDInsight и включает серверные компоненты для поддержки проверки подлинности. Узел брокера идентификаторов HDInsight присоединен к домену доменных служб Microsoft Entra.

Diagram that shows option to enable HDInsight ID Broker.

Использование шаблонов Azure Resource Manager

Если добавить новую роль, вызванную idbrokernode следующими атрибутами в профиль вычислений шаблона, кластер создается с включенным узлом брокера идентификаторов HDInsight:

.
.
.
"computeProfile": {
    "roles": [
        {
            "autoscale": null,
            "name": "headnode",
           ....
        },
        {
            "autoscale": null,
            "name": "workernode",
            ....
        },
        {
            "autoscale": null,
            "name": "idbrokernode",
            "targetInstanceCount": 2,
            "hardwareProfile": {
                "vmSize": "Standard_A2_V2"
            },
            "virtualNetworkProfile": {
                "id": "string",
                "subnet": "string"
            },
            "scriptActions": [],
            "dataDisksGroups": null
        }
    ]
}
.
.
.

Полный пример шаблона ARM см . здесь.

Интеграция средств

Средства HDInsight обновлены с целью собственной поддержки OAuth. Используйте эти средства для доступа к кластерам на основе современной проверки подлинности OAuth. Подключаемый модуль HDInsight для IntelliJ можно использовать для приложений на основе Java, таких как Scala. Средства Spark и Hive для Visual Studio Code можно использовать для заданий PySpark и Hive. Эти средства поддерживают как пакетные, так и интерактивные задания.

SSH-доступ без хэша паролей в доменных службах Microsoft Entra

Параметры SSH Факторы, которые следует учитывать
Локальная учетная запись виртуальной машины (например, sshuser) Вы указали эту учетную запись при создании кластера. Для этой учетной записи проверка подлинности Kerberos отсутствует.
Учетная запись, предназначенная только для облака (например, alice@contoso.onmicrosoft.com) Хэш паролей доступен в доменных службах Microsoft Entra. Проверку подлинности Kerberos можно выполнить через Kerberos SSH.
Локальная учетная запись (например, alice@contoso.com) Проверка подлинности Kerberos SSH возможна только в том случае, если хэш паролей доступен в доменных службах Microsoft Entra. В противном случае этот пользователь не сможет получить доступ к кластеру по протоколу SSH.

Для получения доступа к виртуальной машине, присоединенной к домену, по протоколу SSH или выполнения команды kinit необходимо указать пароль. Для проверки подлинности Kerberos SSH требуется, чтобы хэш был доступен в доменных службах Microsoft Entra. Если вы хотите использовать SSH только для администрирования, можно создать одну учетную запись, предназначенную только для облака, и использовать ее для подключения к кластеру по протоколу SSH. Другие локальные пользователи по-прежнему могут использовать средства Ambari или HDInsight или обычную проверку подлинности HTTP без хэша паролей, доступных в доменных службах Microsoft Entra.

Если ваша организация не синхронизирует хэши паролей с доменными службами Microsoft Entra, рекомендуется создать одного облачного пользователя в идентификаторе Microsoft Entra ID. Затем при создании кластера назначьте его администратором кластера и используйте в целях администрирования. Его можно использовать для получения доступа с правами root к виртуальным машинам по протоколу SSH.

Сведения об устранении неполадок при проверке подлинности см. в этом руководстве.

Клиенты, использующие OAuth для подключения к шлюзу HDInsight с помощью брокера удостоверений HDInsight

При настройке брокера идентификаторов HDInsight пользовательские приложения и клиенты, подключающиеся к шлюзу, можно обновить, чтобы сначала получить необходимый маркер OAuth. Дополнительные сведения см. в статье "Проверка подлинности приложений .NET с помощью служб Azure". Ключевыми значениями, необходимыми для авторизации доступа к шлюзу HDInsight, являются:

  • URI ресурса OAuth: https://hib.azurehdinsight.net
  • AppId: 7865c1d2-f040-46cc-875f-831a1ef6a28a
  • Разрешение: (имя: Cluster.ReadWrite, идентификатор: 8f89faa0-ffef-4007-974d-4989b39ad77d)

После получения используйте токен OAuth в заголовке авторизации HTTP-запроса к шлюзу кластера (например, https://<clustername>-int.azurehdinsight.net). Пример команды cURL для API Apache Livy может выглядеть следующим образом:

curl -k -v -H "Authorization: Bearer Access_TOKEN" -H "Content-Type: application/json" -X POST -d '{ "file":"wasbs://mycontainer@mystorageaccount.blob.core.windows.net/data/SparkSimpleTest.jar", "className":"com.microsoft.spark.test.SimpleFile" }' "https://<clustername>-int.azurehdinsight.net/livy/batches" -H "X-Requested-By:<username@domain.com>"

Для использования Beeline и Livy можно также следовать приведенным здесь кодам примеров, чтобы настроить клиент для использования OAuth и подключения к кластеру.

Вопросы и ответы

Какое приложение создается HDInsight в идентификаторе Microsoft Entra?

Для каждого кластера стороннее приложение регистрируется в идентификаторе Microsoft Entra с URI кластера в качестве идентификатора (например https://clustername.azurehdinsight.net).

В идентификаторе Microsoft Entra согласие требуется для всех сторонних приложений, прежде чем он сможет пройти проверку подлинности пользователей или получить доступ к данным.

API Microsoft Graph позволяет автоматизировать согласие. См. документацию по API. Последовательность действий для автоматизации согласия:

  • зарегистрируйте приложение и предоставьте ему разрешения Application.ReadWrite.All для доступа к Microsoft Graph;
  • после создания кластера запросите приложение кластера на основе URI идентификатора;
  • зарегистрируйте согласие для приложения;

Когда кластер удаляется, HDInsight удаляет приложение, и нет необходимости очистить любое согласие.

Следующие шаги