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: Usuarios que utilizan los puntos de conexión
/configurations
o/configurations/{configurationName}
. - Azure HDInsight Tools for Visual Studio Code 1.1.1 o anterior.
- Azure Toolkit for IntelliJ 3.20.0 o anterior.
- Herramientas de Azure Data Lake y de Stream Analytics para Visual Studio versión 2.3.9000.1.
- Azure Toolkit for Eclipse versión 3.15.0 o anterior.
- SDK para .NET
- versiones 1.x o 2.x: Usuarios que utilizan los métodos
GetClusterConfigurations
,GetConnectivitySettings
,ConfigureHttpSettings
,EnableHttp
oDisableHttp
desde la clase ConfigurationsOperationsExtensions. - versiones 3.x y posteriores: Usuarios que utilizan los métodos
Get
,Update
,EnableHttp
oDisableHttp
desde la claseConfigurationsOperationsExtensions
.
- versiones 1.x o 2.x: Usuarios que utilizan los métodos
- SDK para Python: Usuarios que utilizan los métodos
get
oupdate
desde la claseConfigurationsOperations
. - SDK para Java: Usuarios que utilizan los métodos
update
oget
desde la claseConfigurationsInner
. - SDK para Go: Usuarios que utilizan los métodos
Get
oUpdate
desde la estructuraConfigurationsClient
. - Az.HDInsight PowerShell versión 2.0.0. Consulte las secciones siguientes (o use los vínculos anteriores) para ver los pasos de migración para su escenario.
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:
- POST /configurations
- Utilice esta API para obtener todas las configuraciones, incluidos los secretos.
- POST /getGatewaySettings
- Utilice esta API para obtener la configuración de puerta de enlace.
- POST /updateGatewaySettings
- Utilice esta API para actualizar la configuración de la puerta de enlace (nombre de usuario o contraseña).
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
.
- Para recuperar todas las configuraciones, incluidos los parámetros confidenciales, utilice
ClusterOperationsExtensions.GetConnectivitySettings
ahora está en desuso y se ha reemplazado porClusterOperationsExtensions.GetGatewaySettings
.ClusterOperationsExtensions.ConfigureHttpSettings
ahora está en desuso y se ha reemplazado porClusterOperationsExtensions.UpdateGatewaySettings
.ConfigurationsOperationsExtensions.EnableHttp
yDisableHttp
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:
ConfigurationOperationsExtensions.Get
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
ConfigurationOperationsExtensions.List
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
.
- Para recuperar todas las configuraciones, incluidos los parámetros confidenciales, utilice
ConfigurationsOperationsExtensions.Update
ahora está en desuso y se ha reemplazado porClusterOperationsExtensions.UpdateGatewaySettings
.ConfigurationsOperationsExtensions.EnableHttp
yDisableHttp
ahora están en desuso. Ahora HTTP siempre está habilitado, por lo que estos métodos ya no son necesarios.
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:
ConfigurationsOperations.get
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
ConfigurationsOperations.list
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
ClusterOperations.get_gateway_settings
.
- Para recuperar todas las configuraciones, incluidos los parámetros confidenciales, utilice
ConfigurationsOperations.update
ahora está en desuso y se ha reemplazado porClusterOperations.update_gateway_settings
.
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:
ConfigurationsClient.get
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
ConfigurationsClient.list
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
ClustersClient.get_gateway_settings
.
- Para recuperar todas las configuraciones, incluidos los parámetros confidenciales, utilice
ConfigurationsClient.update
ahora está en desuso y se ha reemplazado porClustersClient.update_gateway_settings
.
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 cmdletSet-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.