Migración a acceso basado en rol detallado para configuraciones de clúster

Se van a realizar algunos cambios importantes para permitir un acceso más pormenorizado basado en rol para obtener información confidencial. Como parte de estos cambios, es posible que deba tomar alguna medida antes del 3 de septiembre de 2019 si usa alguna de las entidades o de los escenarios afectados.

¿Qué está cambiando?

Anteriormente, los usuarios de clústeres que poseían los roles de Azure de propietario, colaborador o lector podían obtener secretos a través de la API de HDInsight, ya que estaban disponibles para cualquier persona con el permiso */read. Los secretos se definen como valores que podrían utilizarse para obtener un acceso más elevado que el que debería permitir el rol de un usuario. Estos incluyen valores como las credenciales HTTP de la puerta de enlace del clúster, las claves de la cuenta de almacenamiento y las credenciales de la base de datos.

A partir del 3 de septiembre de 2019, el acceso a estos secretos requerirá el permiso Microsoft.HDInsight/clusters/configurations/action, lo que significa que el usuario no podrá acceder a él con el rol de lector. Los roles que tienen este permiso son Colaborador, Propietario y el nuevo rol de operador de clúster de HDInsight.

También estamos introduciendo el nuevo rol de operador de clústeres de HDInisght, que es capaz de recuperar secretos sin que se le concedan los permisos administrativos de colaborador o propietario. Resumiendo:

Role Anteriormente A partir de ahora
Lector - Acceso de lectura, incluidos secretos. - Acceso de lectura, excluidos secretos
Operador de clústeres de HDInsight
(Nuevo rol)
N/D - Acceso de lectura/escritura, incluidos secretos
Colaborador - Acceso de lectura/escritura, incluidos secretos.
- Creación y administración de todos los tipos de recursos de Azure.
- Ejecución de acciones de script.
Sin cambios
Propietario - Acceso de lectura/escritura, incluidos secretos.
- Acceso total a todos los recursos
- Delegación del acceso a otros usuarios.
- Ejecución de acciones de script.
Sin cambios

Para obtener información sobre cómo agregar la asignación del rol de operador de clústeres de HDInsight a un usuario para otorgarle acceso de lectura o escritura a los secretos del clúster, consulte la sección siguiente Adición de la asignación del rol de operador de clústeres de HDInsight a un usuario.

¿Estos cambios me afectan?

Afecta a las entidades y los escenarios siguientes:

API

Las API siguientes se cambian o están en desuso:

  • GET /configurations/{configurationName} (se quita la información confidencial)
    • Utilizada anteriormente para obtener tipos de configuración individuales (incluidos secretos).
    • A partir del 3 de septiembre de 2019, esta llamada API devolverá tipos de configuración individuales con secretos omitidos. Para obtener todas las configuraciones, como los secretos, use la nueva llamada POST /configurations. Para obtener solo la configuración de la puerta de enlace, use la nueva llamada POST /getGatewaySettings.
  • GET /configurations (en desuso)
    • Se utilizaba para obtener todas las configuraciones (incluidos los secretos).
    • A partir del 3 de septiembre de 2019, esta llamada API quedará en desuso y ya no se admitirá. Para obtener todas las configuraciones futuras, use la nueva llamada POST /configurations. Para obtener las configuraciones con los parámetros confidenciales omitidos, utilice la llamada GET /configurations/{configurationName}.
  • POST /configurations/{configurationName} (en desuso)
    • Anteriormente se usaba para actualizar las credenciales de puerta de enlace.
    • A partir del 3 de septiembre de 2019, esta llamada API quedará en desuso y ya no se admitirá. Use la nueva llamada POST /updateGatewaySettings en su lugar.

Se han agregado las API de reemplazo siguientes:

Azure HDInsight Tools for Visual Studio Code

Si usa la versión 1.1.1 o anterior, actualice a la versión más reciente de Azure HDInsight Tools for Visual Studio Code para evitar interrupciones.

Kit de herramientas de Azure para IntelliJ

Si usa la versión 3.20.0 o anterior, actualice a la versión más reciente del complemento Azure Toolkit for IntelliJ para evitar interrupciones.

Herramientas de Azure Data Lake y de Stream Analytics para Visual Studio

Actualice a la versión 2.3.9000.1 o posterior de Azure Data Lake y Stream Analytics Tools para Visual Studio para evitar interrupciones. Para obtener ayuda con la actualización, consulte la documentación Actualización de Data Lake Tools para Visual Studio.

Kit de herramientas de Azure para Eclipse

Si usa la versión 3.15.0 o anterior, actualice a la versión más reciente de Azure Toolkit for Eclipse para evitar interrupciones.

SDK para .NET

Versiones 1.x y 2.x

Actualice a la versión 2.1.0 del SDK de HDInsight para .NET. Es posible que sea necesario realizar modificaciones mínimas en el código si está utilizando un método afectado por estos cambios:

  • ClusterOperationsExtensions.GetClusterConfigurations ya no devuelve parámetros confidenciales como claves de almacenamiento (sitio principal) o credenciales de HTTP (puerta de enlace).

    • Para recuperar todas las configuraciones, incluidos los parámetros confidenciales, utilice ClusterOperationsExtensions.ListConfigurations a partir de ahora. Los usuarios con el rol "Lector" no pueden usar este método. Permite un control granular sobre el cual los usuarios pueden acceder a información confidencial para un clúster.
    • Para recuperar solo las credenciales de la puerta de enlace HTTP, utilice ClusterOperationsExtensions.GetGatewaySettings.
  • ClusterOperationsExtensions.GetConnectivitySettings ahora está en desuso y se ha reemplazado por ClusterOperationsExtensions.GetGatewaySettings.

  • ClusterOperationsExtensions.ConfigureHttpSettings ahora está en desuso y se ha reemplazado por ClusterOperationsExtensions.UpdateGatewaySettings.

  • ConfigurationsOperationsExtensions.EnableHttp y DisableHttp ahora están en desuso. Ahora HTTP siempre está habilitado, por lo que estos métodos ya no son necesarios.

Versiones 3.x y posteriores

Actualice a la versión 5.0.0 o posterior del SDK de HDInsight para .NET. Es posible que sea necesario realizar modificaciones mínimas en el código si está utilizando un método afectado por estos cambios:

SDK para Python

Actualice a la versión 1.0.0 o posterior del SDK de HDInsight para Python. Es posible que sea necesario realizar modificaciones mínimas en el código si está utilizando un método afectado por estos cambios:

SDK para Java

Actualice a la versión 1.0.0 o posterior del SDK de HDInsight para Java. Es posible que sea necesario realizar modificaciones mínimas en el código si está utilizando un método afectado por estos cambios:

  • ConfigurationsInner.get ya no devuelve parámetros confidenciales como claves de almacenamiento (sitio principal) o credenciales de HTTP (puerta de enlace).
  • ConfigurationsInner.update ahora está en desuso.

SDK para Go

Actualice a la versión 27.1.0 o posterior del SDK de HDInsight para Go. Es posible que sea necesario realizar modificaciones mínimas en el código si está utilizando un método afectado por estos cambios:

Az.HDInsight PowerShell

Actualice a Az PowerShell versión 2.0.0 o posterior para evitar interrupciones. Es posible que sea necesario realizar modificaciones mínimas en el código si está utilizando un método afectado por estos cambios.

  • Grant-AzHDInsightHttpServicesAccess ahora está en desuso y se ha reemplazado por el nuevo cmdlet Set-AzHDInsightGatewayCredential.
  • Se ha actualizado Get-AzHDInsightJobOutput para admitir el acceso granular basado en roles a la clave de almacenamiento.
    • No se ven afectados los usuarios con roles de operador, colaborador o propietario de clúster de HDInsight.
    • Los usuarios con el rol de lector deben especificar el parámetro DefaultStorageAccountKey explícitamente.
  • Revoke-AzHDInsightHttpServicesAccess ahora está en desuso. Ahora HTTP siempre está habilitado, por lo que este cmdlet ya no es necesario. Consulte la guía de migración de az.HDInsight para obtener más detalles.

Adición de la asignación del rol de operador de clústeres de HDInsight a un usuario

Un usuario con el rol Propietario puede asignar el rol Operador de clúster de HDInsight a los usuarios que deseen tener acceso de lectura o escritura a los valores de configuración del clúster de HDInsight (como las credenciales de la puerta de enlace del clúster y las claves de la cuenta de almacenamiento).

Uso de la CLI de Azure

La forma más sencilla de agregar esta asignación de roles es con el comando az role assignment create en la CLI de Azure.

Nota:

Este comando debe ejecutarlo un usuario con el rol Propietario, ya que solo ellos pueden otorgar estos permisos. --assignee es el nombre de la entidad de servicio o la dirección de correo electrónico del usuario a quien desea asignar el rol Operador de clúster de HDInsight. Si recibe un error de permisos insuficientes, consulte las preguntas más frecuentes.

Concesión del rol en el nivel del recurso (clúster)

az role assignment create --role "HDInsight Cluster Operator" --assignee <user@domain.com> --scope /subscriptions/<SubscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.HDInsight/clusters/<ClusterName>

Concesión del rol en el nivel del grupo de recursos

az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com -g <ResourceGroupName>

Concesión del rol en el nivel de suscripción

az role assignment create --role "HDInsight Cluster Operator" --assignee user@domain.com

Uso de Azure Portal

Como alternativa, puede usar Azure Portal para agregar la asignación del rol de operador de clústeres de HDInsight a un usuario. Consulte la documentación de Asignación de roles de Azure mediante Azure Portal.

Preguntas más frecuentes

¿Por qué veo una respuesta 403 (prohibido) tras actualizar mis solicitudes de API o la herramienta?

Las configuraciones de clúster están ahora detrás del control de acceso basado en rol detallado y requieren el permiso Microsoft.HDInsight/clusters/configurations/* para acceder a ellas. Para obtener este permiso, asigne el rol Operador de clúster de HDInsight, Colaborador o Propietario al usuario o entidad de servicio que intentan acceder a las configuraciones.

¿Por qué veo el mensaje "No tiene privilegios suficientes para completar la operación" al ejecutar el comando de la CLI de Azure para asignar el rol Operador de clúster de HDInsight a otro usuario o entidad de servicio?

Además de tener el rol Propietario, el usuario o la entidad de servicio que ejecuta el comando debe tener suficientes permisos de Microsoft Entra para buscar los identificadores de objeto del usuario asignado. Este mensaje indica que no tiene suficientes permisos de Microsoft Entra. Intente reemplazar el argumento -–assignee por –assignee-object-id y proporcione el identificador de objeto del usuario asignado como parámetro en lugar del nombre (o el identificador de la entidad de seguridad en el caso de una identidad administrada). Consulte la sección de parámetros opcionales de la documentación sobre el comando az role assignment create para más información.

Si sigue sin funcionar, póngase en contacto con el administrador de Microsoft Entra para adquirir los permisos correctos.

¿Qué ocurrirá si no se realiza ninguna acción?

A partir del 3 de septiembre de 2019, las llamadas GET /configurations y POST /configurations/gateway ya no devolverán ninguna información y la llamada a GET /configurations/{configurationName} ya no devolverá parámetros confidenciales, como las claves de la cuenta de almacenamiento o la contraseña del clúster. Lo mismo es cierto para los métodos de SDK y los cmdlets de PowerShell correspondientes.

Si usa una versión anterior de alguna de las herramientas de Visual Studio, VSCode, IntelliJ o Eclipse que se mencionaron, ya no funciona hasta que se actualiza.

Para más información, consulte la sección correspondiente de este documento para su escenario.