Agente de identidad de Azure HDInsight (HIB)

En este artículo se describe cómo configurar y usar la característica Agente de identidad de Azure HDInsight. Se puede usar esta característica para obtener una autenticación OAuth moderna en Apache Ambari a la vez que se aplica la autenticación multifactor sin necesidad de hashes de contraseña heredados en Microsoft Entra Domain Services.

Información general

El Agente de identidad de HDInsight simplifica las configuraciones de autenticación complejas en los escenarios siguientes:

  • La organización se basa en la federación para autenticar a los usuarios para acceder a los recursos en la nube. Anteriormente, para usar clústeres de Enterprise Security Package de HDInsight, tenía que habilitar la sincronización de hash de contraseñas desde el entorno local a Microsoft Entra ID. Este requisito puede ser difícil o no deseable para algunas organizaciones.
  • Su organización desea exigir la autenticación multifactor para el acceso basado en web o en HTTP a Apache Ambari y a otros recursos de clúster.

El Agente de identidad de HDInsight proporciona la infraestructura de autenticación que permite la transición de protocolos de OAuth (moderno) a Kerberos (heredado) sin necesidad de sincronizar los hashes de contraseña con Microsoft Entra Domain Services. Esta infraestructura consta de componentes que se ejecutan en una máquina virtual (VM) con Windows Server con el nodo del Agente de identidad de HDInsight habilitado, junto con los nodos de puerta de enlace de clúster.

Utilice la siguiente tabla para determinar la mejor opción de autenticación en función de las necesidades de su organización.

Opciones de autenticación Configuración de HDInsight Factores que deben tenerse en cuenta
Totalmente OAuth Enterprise Security Package + Agente de identidad de HDInsight La opción más segura. (Se admite la autenticación multifactor). La sincronización de hashes de contraseña no es necesaria. No hay acceso de ssh/kinit/keytab para las cuentas locales, que no tienen un hash de contraseña en Microsoft Entra Domain Services. Las cuentas solo en la nube pueden seguir usando ssh/kinit/keytab. Acceso basado en web a Ambari a través de OAuth. Requiere la actualización de aplicaciones heredadas (por ejemplo, JDBC/ODBC) para admitir OAuth.
OAuth + autenticación básica Enterprise Security Package + Agente de identidad de HDInsight Acceso basado en web a Ambari a través de OAuth. Las aplicaciones heredadas siguen usando la autenticación básica. La autenticación multifactor debe estar deshabilitada para el acceso de autenticación básica. La sincronización de hashes de contraseña no es necesaria. No hay acceso de ssh/kinit/keytab para las cuentas locales, que no tienen un hash de contraseña en Microsoft Entra Domain Services. Las cuentas solo en la nube pueden seguir usando ssh/kinit.
Totalmente autenticación básica Enterprise Security Package Es más similar a las configuraciones locales. Se necesita la sincronización de hash de contraseña para Microsoft Entra Domain Services. Las cuentas locales pueden usar ssh/kinit o usar keytab. La autenticación multifactor debe estar deshabilitada si el almacenamiento de seguridad es Azure Data Lake Storage Gen2.

En el diagrama siguiente se muestra el flujo moderno de autenticación basada en OAuth para todos los usuarios, incluidos los usuarios federados, una vez habilitado el Agente de identidad de HDInsight:

Diagram that shows authentication flow with HDInsight ID Broker.

En este diagrama, el cliente (es decir, un explorador o una aplicación) debe adquirir primero el token de OAuth. A continuación, presenta el token a la puerta de enlace en una solicitud HTTP. Si ya ha iniciado sesión en otros servicios de Azure, como Azure Portal, puede iniciar sesión en el clúster de HDInsight con una experiencia de inicio de sesión único.

Todavía puede haber muchas aplicaciones heredadas que solo admitan la autenticación básica (es decir, nombre de usuario y contraseña). Para estos escenarios, puede seguir usando la autenticación HTTP básica para conectarse a las puertas de enlace de clúster. En esta configuración, debe asegurarse de que la conectividad de red de los nodos de la puerta de enlace con el punto de conexión de Servicios de federación de Active Directory (AD FS) asegure una línea directa de visión desde los nodos de puerta de enlace.

En el diagrama siguiente se muestra el flujo de autenticación básica para los usuarios federados. En primer lugar, la puerta de enlace intenta completar la autenticación mediante el flujo de ROPC. En caso de que no haya ningún hash de contraseña sincronizado con Microsoft Entra ID, recurre a la detección del punto de conexión de AD FS y completa la autenticación mediante el acceso al punto de conexión de AD FS.

Diagram that shows architecture with basic authentication.

Habilitación del Agente de identidad de HDInsight

Para crear un clúster de Enterprise Security Package con el Agente de identidad de HDInsight habilitado,

  1. Inicie sesión en Azure Portal.
  2. Siga los pasos de creación básicos para un clúster de Enterprise Security Package. Para obtener más información, consulte Creación de un clúster de HDInsight con Enterprise Security Package.
  3. Seleccione Habilitar Agente de identidad de HDInsight.

La característica Agente de identidad de HDInsight agrega una VM adicional al clúster. Esta VM es el nodo del Agente de identidad de HDInsight e incluye componentes de servidor para admitir la autenticación. El nodo del Agente de identidad de HDInsight está unido al dominio de Microsoft Entra Domain Services.

Diagram that shows option to enable HDInsight ID Broker.

Utilización de plantillas del Administrador de recursos de Azure

Si agrega un nuevo rol denominado idbrokernode con los siguientes atributos al perfil de proceso de la plantilla, el clúster se crea con el nodo del Agente de identidad de HDInsight habilitado:

.
.
.
"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
        }
    ]
}
.
.
.

Para ver un ejemplo completo de una plantilla de ARM, consulte la plantilla publicada aquí.

Integración de herramientas

Las herramientas de HDInsight se actualizan para admitir OAuth de forma nativa. Use estas herramientas para el acceso moderno basado en OAuth a los clústeres. El complemento IntelliJ de HDInsight se puede usar para aplicaciones basadas en Java, como Scala. Las herramientas Spark y Hive para Visual Studio Code se pueden usar para trabajos de PySpark y Hive. Las herramientas admiten trabajos en lotes e interactivos.

Acceso SSH sin hash de contraseña en Microsoft Entra Domain Services

Opciones de SSH Factores que deben tenerse en cuenta
Cuenta de VM local (por ejemplo, sshuser) Proporcionó esta cuenta en el momento de creación del clúster. No hay ninguna autenticación Kerberos para esta cuenta.
Cuenta solo en la nube (por ejemplo, alice@contoso.onmicrosoft.com) El hash de contraseña está disponible en Microsoft Entra Domain Services. La autenticación Kerberos es posible a través de SSH Kerberos.
Cuenta local (por ejemplo, alice@contoso.com) La autenticación Kerberos de SSH solo es posible si un hash de contraseña está disponible en Microsoft Entra Domain Services. De lo contrario, este usuario no puede usar SSH en el clúster.

Para acceder mediante SSH a una VM unida a un dominio o para ejecutar el comando kinit, debe proporcionar una contraseña. La autenticación Kerberos de SSH requiere que el hash esté disponible en Microsoft Entra Domain Services. Si desea usar SSH solo para escenarios administrativos, puede crear una cuenta solo en la nube y usarla para acceder mediante SSH al clúster. Otros usuarios locales aún pueden usar las herramientas de Ambari o HDInsight, bien o la autenticación básica HTTP, sin tener el hash de contraseña disponible en Microsoft Entra Domain Services.

Si su organización no sincroniza los hashes de contraseña con Microsoft Entra Domain Services como procedimiento recomendado, cree un usuario de solo nube en Microsoft Entra ID. A continuación, asígnelo como administrador de clústeres al crear el clúster y úselo para fines de administración. Puede usarlo para obtener acceso raíz a las VM a través de SSH.

Para solucionar problemas de autenticación, consulte esta guía.

Clientes que usan OAuth para conectarse a una puerta de enlace de HDInsight con el Agente de identidad de HDInsight

En la configuración del Agente de identidad de HDInsight, las aplicaciones personalizadas y los clientes que se conecten a la puerta de enlace se pueden actualizar para adquirir el token de OAuth que necesiten en primer lugar. Para obtener más información, consulte Cómo autenticar aplicaciones .NET con servicios de Azure. Los valores clave necesarios para autorizar el acceso a una puerta de enlace de HDInsight son:

  • URI del recurso de OAuth: https://hib.azurehdinsight.net
  • AppId: 7865c1d2-f040-46cc-875f-831a1ef6a28a
  • Permiso: (nombre: Cluster.ReadWrite; id.: 8f89faa0-ffef-4007-974d-4989b39ad77d)

Después de adquirir el token de OAuth, úselo en el encabezado de autorización de la solicitud HTTP para la puerta de enlace del clúster (por ejemplo, https://<>-int.azurehdinsight.net). Un comando cURL de ejemplo para la Livy API podría ser similar al siguiente ejemplo:

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>"

Para utilizar Beeline y Livy, también puede seguir los códigos de ejemplo proporcionados aquí a fin de configurar el cliente para que use OAuth y se conecte al clúster.

Preguntas más frecuentes

¿Qué aplicación crea Microsoft Entra ID?

Para cada clúster, se registrará una aplicación de terceros en Microsoft Entra ID con el URI del clúster como identifierUri (por ejemplo: https://clustername.azurehdinsight.net).

En Microsoft Entra ID, se requiere consentimiento para todas las aplicaciones de terceros a fin de que estas puedan autenticar a los usuarios o acceder a los datos.

La API de Microsoft Graph le permite automatizar el consentimiento, consulte la documentación de la API. La secuencia para automatizar el consentimiento es la siguiente:

  • Registre una aplicación y conceda permisos Application.ReadWrite.All a la aplicación para acceder a Microsoft Graph.
  • Una vez creado un clúster, consulte la aplicación de clúster basada en el URI del identificador.
  • Registre el consentimiento para la aplicación.

Cuando se elimine el clúster, HDInsight eliminará la aplicación y no será necesario borrar ningún consentimiento.

Pasos siguientes