Autorización de usuarios para Apache Ambari Views

Clústeres de HDInsight habilitados para Enterprise Security Package (ESP) proporcionar funcionalidades de nivel empresarial, incluida la autenticación basada en Microsoft Entra ID. Puede sincronizar nuevos usuarios agregar a grupos de Microsoft Entra que se han proporcionado acceso al clúster, lo que permite a esos usuarios específicos realizar determinadas acciones. El trabajo con usuarios, grupos y permisos en Apache Ambari es compatible tanto con clústeres de HDInsight ESP como con clústeres de HDInsight estándar.

Los usuarios de Active Directory pueden iniciar sesión en los nodos del clúster con sus credenciales de dominio. También pueden usar sus credenciales de dominio para autenticar las interacciones del clúster con otros puntos de conexión aprobados como Hue, Ambari Views, ODBC, JDBC, PowerShell y las API REST.

Advertencia

No cambie la contraseña del guardián Ambari (hdinsightwatchdog) en el clúster de HDInsight basado en Linux. El cambio de la contraseña impide usar acciones de script o realizar operaciones de escalado con el clúster.

Si no lo ha hecho aún, siga estas instrucciones para aprovisionar un nuevo clúster ESP.

Acceso a la página de administración de Ambari

Para llegar a la página de administración de Ambari en la interfaz de usuario web de Ambari, vaya a https://CLUSTERNAME.azurehdinsight.net. Escriba el nombre de usuario y la contraseña del administrador del clúster que definió cuando creó el clúster. A continuación, en el panel de Ambari, seleccione Manage Ambari (Administrar Ambari) en el menú admin (Administrador):

Apache Ambari dashboard manage.

Agregar usuarios

Adición de usuarios a través del portal

  1. En la página de administración, seleccione Usuarios.

    Apache Ambari management page users.

  2. Seleccione + Crear usuario local.

  3. Proporcione un nombre de usuario y una contraseña. Seleccione Guardar.

Adición de usuarios a través de PowerShell

Edite las variables siguientes, reemplazando CLUSTERNAME, NEWUSER y PASSWORD por los valores adecuados.

# Set-ExecutionPolicy Unrestricted

# Begin user input; update values
$clusterName="CLUSTERNAME"
$user="NEWUSER"
$userpass='PASSWORD'
# End user input

$adminCredentials = Get-Credential -UserName "admin" -Message "Enter admin password"

$clusterName = $clusterName.ToLower()
$createUserUrl="https://$($clusterName).azurehdinsight.net/api/v1/users"

$createUserBody=@{
    "Users/user_name" = "$user"
    "Users/password" = "$userpass"
    "Users/active" = "$true"
    "Users/admin" = "$false"
} | ConvertTo-Json

# Create user
$statusCode =
Invoke-WebRequest `
    -Uri $createUserUrl `
    -Credential $adminCredentials `
    -Method POST `
    -Headers @{"X-Requested-By" = "ambari"} `
    -Body $createUserBody | Select-Object -Expand StatusCode

if ($statusCode -eq 201) {
    Write-Output "User is created: $user"
}
else
{
    Write-Output 'User is not created'
    Exit
}

$grantPrivilegeUrl="https://$($clusterName).azurehdinsight.net/api/v1/clusters/$($clusterName)/privileges"

$grantPrivilegeBody=@{
    "PrivilegeInfo" = @{
        "permission_name" = "CLUSTER.USER"
        "principal_name" = "$user"
        "principal_type" = "USER"
    }
} | ConvertTo-Json

# Grant privileges
$statusCode =
Invoke-WebRequest `
    -Uri $grantPrivilegeUrl `
    -Credential $adminCredentials `
    -Method POST `
    -Headers @{"X-Requested-By" = "ambari"} `
    -Body $grantPrivilegeBody | Select-Object -Expand StatusCode

if ($statusCode -eq 201) {
    Write-Output 'Privilege is granted'
}
else
{
    Write-Output 'Privilege is not granted'
    Exit
}

Write-Host "Pausing for 100 seconds"
Start-Sleep -s 100

$userCredentials = "$($user):$($userpass)"
$encodedUserCredentials = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($userCredentials))
$zookeeperUrlHeaders = @{ Authorization = "Basic $encodedUserCredentials" }
$getZookeeperurl="https://$($clusterName).azurehdinsight.net/api/v1/clusters/$($clusterName)/services/ZOOKEEPER/components/ZOOKEEPER_SERVER"

# Perform query with new user
$zookeeperHosts =
Invoke-WebRequest `
    -Uri $getZookeeperurl `
    -Method Get `
    -Headers $zookeeperUrlHeaders

Write-Output $zookeeperHosts

Adición de usuarios a través de cURL

Edite las variables siguientes, reemplazando CLUSTERNAME, ADMINPASSWORD, NEWUSER y USERPASSWORD por los valores adecuados. El script está diseñado para ejecutarse con Bash. Se necesitan ligeras modificaciones para un símbolo del sistema de Windows.

export CLUSTER_NAME="CLUSTERNAME"
export ADMIN_PASSWORD='ADMINPASSWORD'
export USER="NEWUSER"
export USER_PASSWORD='USERPASSWORD'

# create user
curl -k -u admin:$ADMIN_PASSWORD -H "X-Requested-By: ambari" -X POST \
-d "{\"Users/user_name\":\"$USER\",\"Users/password\":\"$USER_PASSWORD\",\"Users/active\":\"true\",\"Users/admin\":\"false\"}" \
https://$CLUSTER_NAME.azurehdinsight.net/api/v1/users

echo "user created: $USER"

# grant permissions
curl -k -u admin:$ADMIN_PASSWORD -H "X-Requested-By: ambari" -X POST \
-d '[{"PrivilegeInfo":{"permission_name":"CLUSTER.USER","principal_name":"'$USER'","principal_type":"USER"}}]' \
https://$CLUSTER_NAME.azurehdinsight.net/api/v1/clusters/$CLUSTER_NAME/privileges

echo "Privilege is granted"

echo "Pausing for 100 seconds"
sleep 10s

# perform query using new user account
curl -k -u $USER:$USER_PASSWORD -H "X-Requested-By: ambari" \
-X GET "https://$CLUSTER_NAME.azurehdinsight.net/api/v1/clusters/$CLUSTER_NAME/services/ZOOKEEPER/components/ZOOKEEPER_SERVER"

Concesión de permisos para vistas de Apache Hive

Ambari incluye instancias de vista para Apache Hive y Apache TEZ, entre otros. Para conceder acceso a una o varias instancias de vistas de Hive, vaya a la página de administración de Ambari.

  1. En la página de administración, seleccione el vínculo Views (Vistas) que está debajo del título del menú Views (Vistas) de la izquierda.

    Apache Ambari views view links.

  2. En la página de vistas, expanda la fila HIVE. Hay una vista de Hive personalizada que se crea cuando se agrega el servicio Hive al clúster. También puede crear más instancias de la vista de Hive según sea necesario. Seleccione una vista de Hive:

    HDInsight Views - Apache Hive view.

  3. Desplácese hacia la parte inferior de la página de la vista. En la sección Permissions (Permisos), tiene dos opciones para conceder permisos a los usuarios del dominio para la vista:

Conceder permiso a estos usuariosGrant permission to these users.

Conceder permiso a estos gruposGrant permission to these groups.

  1. Para agregar un usuario, seleccione el botón Add User (Agregar usuario).

    • Empiece a escribir el nombre de usuario y se mostrará una lista desplegable de nombres definidos anteriormente.

      Apache Ambari user auto completes.

    • Seleccione el nombre de usuario o termine de escribirlo. Para agregar este nombre de usuario como un usuario nuevo, seleccione el botón New (Nuevo).

    • Para guardar los cambios, seleccione la casilla azul.

      Apache Ambari grant user permissions.

  2. Para agregar un grupo, seleccione el botón Add Group (Agregar grupo).

    • Comience a escribir el nombre del grupo. El proceso para seleccionar un nombre de grupo existente o para agregar un grupo nuevo es el mismo que el que se aplica para agregar usuarios.

    • Para guardar los cambios, seleccione la casilla azul.

      Apache Ambari grant permissions.

Agregar los usuarios directamente a una vista es útil cuando desea asignar permisos a un usuario para que use esa vista, pero no desea que sea miembro de un grupo que tiene permisos adicionales. Para reducir la cantidad de trabajo administrativo, puede ser más fácil asignar permisos a grupos.

Concesión de permisos para vistas de Apache TEZ

Las instancias de vista de Apache TEZ permiten a los usuarios supervisar y depurar todos los trabajos de Tez, enviados por consultas de Apache Hive y scripts de Apache Pig. Hay una instancia de vista de Tez predeterminada que se crea cuando se aprovisiona el clúster.

Para asignar usuarios y grupos a una instancia de vista de Tez, expanda la fila TEZ en la página de vistas, como se describió anteriormente.

HDInsight Views - Apache Tez view.

Para agregar usuarios o grupos, repita los pasos 3 a 5 de la sección anterior.

Asignación de usuarios a roles

Hay cinco roles de seguridad para usuarios y grupos, que se enumeran como permisos de acceso en orden decreciente:

  • Administrador de clústeres
  • Operador de clústeres
  • Administrador de servicios
  • Operador de servicio
  • Usuario del clúster

Para administrar roles, vaya a la página de administración de Ambari y después seleccione el vínculo Roles en el grupo de menús Clusters (Clústeres) de la izquierda.

Apache Ambari roles menu links.

Para ver la lista de permisos concedidos a cada rol, haga clic en el signo de interrogación azul junto al encabezado de tabla Roles de la página Roles.

Apache Ambari roles menu link permissions.

En esta página, hay dos vistas diferentes que puede usar para administrar roles para los usuarios y grupos: Block (Bloque) y List (Lista).

Vista de bloque

La vista Block (Bloque) muestra cada rol en su propia fila y ofrece las opciones Assign roles to these users (Asignar roles a estos usuarios) y Assign roles to these groups (Asignar roles a estos grupos) descritas anteriormente.

Apache Ambari roles block view.

Vista de lista

La vista List (Lista) proporciona funcionalidades de edición rápidas en dos categorías: Users (Usuarios) y Groups (Grupos).

  • La categoría Users (Usuarios) de la vista List (Lista) muestra una lista de todos los usuarios, que le permite seleccionar un rol para cada usuario en la lista desplegable.

    Apache Ambari roles list view - users.

  • La categoría Groups (Grupos) de la vista List (Lista) muestra todos los grupos y los roles asignados a cada grupo. En nuestro ejemplo, la lista de grupos se sincroniza entre los grupos de Microsoft Entra especificados en el grupo de usuarios de Access propiedad de la configuración de dominio del clúster. Consulte Creación de un clúster de HDInsight con ESP habilitado.

    Apache Ambari roles list view - groups.

    En la imagen anterior, se asigna al grupo "hiveusers" el rol Cluster User (Usuario del clúster). Se trata de un rol de solo lectura que permite a los usuarios de ese grupo ver, pero no cambiar, las configuraciones del servicio y las métricas del clúster.

Inicio de sesión en Ambari como un usuario de solo lectura

Hemos asignado los permisos de usuario de dominio "hiveuser1" de Microsoft Entra a las vistas de Hive y Tez. Al iniciar la interfaz de usuario web de Ambari y escribir las credenciales de dominio de este usuario (nombre de usuario de Microsoft Entra en formato de correo electrónico y contraseña), el usuario se redirige a la página Vistas de Ambari. Desde aquí, el usuario puede seleccionar cualquier vista accesible. El usuario no puede visitar cualquier otra parte del sitio, incluidas las páginas de panel, servicios, hosts, alertas o administrador.

Apache Ambari user with views only.

Inicio de sesión en Ambari como un usuario del clúster

Hemos asignado nuestro usuario de dominio de Microsoft Entra "hiveuser2" al rol de usuario de clúster. Este rol puede acceder al panel y a todos los elementos de menú. Un usuario del clúster tiene menos opciones permitidas que un administrador. Por ejemplo, hiveuser2 puede ver las configuraciones de cada uno de los servicios, pero no puede modificarlas.

Apache Ambari dashboard display.

Pasos siguientes