403 Error de autorización de acceso denegado cuando el bit sticky está habilitado en ADLS Gen2
Este artículo le ayuda a comprender el bit sticky y proporciona información sobre cómo comprobar esta configuración al configurarla en Azure Data Lake Storage (ADLS) Gen2 y obtener problemas.
¿Cuál es el bit pegajoso de ADLS Gen2?
A menudo, los usuarios de ADLS Gen2 necesitan administrar permisos para distintos usuarios y una manera de hacerlo es mediante una lista de control de acceso (ACL). ACL es un sistema de control de acceso similar a POSIX con una configuración específica denominada bit sticky que puede causar errores de autorización. Para obtener más información sobre el modo de control de permisos y el bit sticky, consulte Listas de control de acceso (ACL) en Azure Data Lake Storage Gen2.
El bit sticky es una característica avanzada que no es necesaria en la configuración de ACL de la cuenta de almacenamiento de ADLS Gen2. En su lugar, puede usar la característica de máscara para limitar los permisos máximos para los usuarios con nombre, los grupos con nombre y el grupo propietario. Esto funciona de forma similar al bit pegajoso y se configura fácilmente en el Azure Portal.
403 Error de autorización de acceso denegado
Imagine la siguiente situación:
- Una cuenta de almacenamiento de ADLS Gen2 tiene un contenedor denominado contenedor y una ruta de acceso de carpeta denominada carpeta/carpeta secundaria.
- Use ACL como método de autorización.
- En la configuración de ACL de la cuenta de almacenamiento de ADLS Gen2, se configura con el permiso Ejecutar (X) en el directorio raíz y la carpeta y con el permiso Escribir y ejecutar (WX) en la carpeta secundaria.
- El bit sticky está habilitado en la carpeta secundaria.
- Intenta crear o cargar un nuevo archivo, por ejemplo, test.txt, en la ruta de acceso de la carpeta de la cuenta de almacenamiento de ADLS Gen2 container/folder/child-folder/.
En este escenario, obtendrá un error de autorización 403 Acceso denegado.
Este error se produce por dos motivos:
- No tiene permisos suficientes para acceder a la ruta de acceso de la carpeta.
- Tiene permisos suficientes, pero habilitar el bit sticky hace que no sea el propietario de esta ruta de acceso de carpeta.
Identificar si el bit sticky provoca un error 403 Access Denied
Compruebe la configuración de ACL de la carpeta y las carpetas primarias y compárela con los escenarios comunes relacionados con los permisos de ACL. Si los permisos son suficientes, el error 403 puede deberse al bit sticky.
Comprobación de la configuración de bits persistentes mediante la CLI de Azure
Hay muchas maneras de comprobar esta configuración, como una llamada a la API REST, un comando de PowerShell y la CLI de Azure. Se recomienda la opción de la CLI de Azure porque no requiere que se instale ningún software adicional y el comando es fácil de entender.
Para comprobar la configuración de bits persistentes mediante la CLI de Azure, siga estos pasos:
Inicie sesión en el Azure Portal con su cuenta. Asegúrese de que esta cuenta tiene la asignación de roles Propietario de datos de Storage Blob en la cuenta de almacenamiento de ADLS Gen2.
Seleccione Cloud Shell en el portal de Azure.
Use el siguiente comando para obtener la ACL y la configuración de bits persistentes del directorio contenedor/carpeta :
az storage fs access show -p folder -f container --account-name account --auth-mode login
Para comprobar la ACL y la configuración de bits persistentes del directorio raíz, que es la ACL de nivel de contenedor y la configuración de bits sticky, use el siguiente comando:
az storage fs access show -p / -f container --account-name account --auth-mode login
Esta es una salida de ejemplo:
En el cuerpo JSON de la respuesta, céntrese en
permissions
. Normalmente contiene 9 o 10 bits con un símbolo "+" adicional. Para obtener más información sobre estas letras, consulte Usuarios e identidades.En el ejemplo anterior se indica que todos los permisos de usuario están habilitados y que el bit permanente está habilitado. Para obtener más información sobre cómo leer esta notación de permisos, vea Notación de permisos de Unix tradicionales.
La novena letra tiene cuatro valores posibles: "-", "x", "t" y "T". Si el valor de esta letra es "t" o "T", significa que el bit sticky está habilitado. "t" es "x" con el bit sticky habilitado y "T" es "-" con el bit sticky habilitado.
"rwxrwxrwt" se puede explicar mediante lo siguiente:
- Los permisos r,w y x están habilitados para el propietario.
- Los permisos r,w y x están habilitados para el grupo Propietario.
- Los permisos r,w y x están habilitados para otros usuarios y el bit sticky está habilitado.
Para entenderlo mejor, este es otro ejemplo de "rwxr-xr-T":
- Los permisos r,w y x están habilitados para el propietario.
- Los permisos r y x están habilitados para el grupo Propietario.
- Solo el permiso r está habilitado para otros usuarios y el bit persistente está habilitado.
Según los formularios cortos para permisos, el permiso de formulario corto se calcula para cada grupo de tres letras ("r" como 4, "w" como 2 y "x" como 1). Por lo tanto, "rw-rwx--x" será igual a 4+2+0, 4+2+1, 0+0+1, 671. En función de esta regla de cálculo, solo tiene que agregar la cuarta letra al principio. Si el bit sticky está habilitado, establézcalo como 1. Si el bit sticky está deshabilitado, establézcalo como 0.
Estos son algunos ejemplos:
- rwxrwxrwt => 1777
- rwxr-xr-T => 1754
- rw-rwx--x => 0671
Deshabilitar o habilitar la configuración de bits persistentes
Para deshabilitar o habilitar la configuración de bits persistentes, establezca permisos en los valores esperados.
La cuenta de Azure que se usa para modificar esta configuración debe tener el rol Propietario de datos de Storage Blob en la cuenta de almacenamiento de ADLS Gen2 de destino. Hay muchas maneras posibles de modificar la configuración de bits persistentes. Estos son los SDK admitidos:
SDK | Versión compatible | Más información |
---|---|---|
API de REST | 2019-12-12 y versiones posteriores de la API | Ruta de acceso |
Módulo az de PowerShell | 5.6.0 y versiones posteriores | Uso de PowerShell para administrar las ACL en Azure Data Lake Storage Gen2 |
Azure CLI | 2.38.0 y versiones posteriores | Uso de la CLI de Azure para administrar las ACL en Azure Data Lake Storage Gen2 |
SDK de .NET | 12.14.0 y versiones posteriores | Uso de .NET para administrar las ACL en Azure Data Lake Storage Gen2 |
Java SDK | 12.11.0 y versiones posteriores | Uso de Java para administrar acl en Azure Data Lake Storage Gen2 |
SDK de Python | 12.8.0 y versiones posteriores | Uso de Python para administrar las ACL en Azure Data Lake Storage Gen2 |
SDK de JavaScript | 12.11.0-beta.1 y versiones posteriores | Uso del SDK de JavaScript en Node.js para administrar las ACL en Azure Data Lake Storage Gen2 |
HDFS CLI | 3.3.3 y versiones posteriores | Uso de la CLI de HDFS con Data Lake Storage Gen2 y Apache Hadoop 3.3.3: Guía de permisos de HDFS |
Este es un ejemplo de deshabilitación o habilitación de la configuración de bits persistentes con la CLI de Azure.
Inicie sesión en la Azure Portal con la cuenta que tiene la asignación de roles Propietario de datos de Storage Blob en la cuenta de almacenamiento de ADLS Gen2 de destino.
Seleccione Cloud Shell en el portal de Azure.
Para establecer la ACL y la configuración de bits persistentes del directorio contenedor/carpeta en los permisos "rwxrwxrwt" y habilitar el bit sticky, use el siguiente comando:
az storage fs access set --permissions rwxrwxrwt -p folder -f container --account-name account --auth-mode login
Para modificar la configuración del directorio raíz, que es la ACL de nivel de contenedor y la configuración de bits sticky, use el siguiente comando:
az storage fs access set --permissions rwxrwxrwt -p / -f container --account-name account --auth-mode login
en
{permission notation}
el comando anterior puede aceptar las notaciones de formato largo y corto. Esto significa que el siguiente comando también está calificado:az storage fs access set --permissions 1776 -p folder -f container --account-name account --auth-mode login
Esta es una salida de ejemplo:
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de