Compartir a través de


403 Error de autorización de acceso denegada cuando el bit persistente está habilitado en ADLS Gen2

Este artículo le ayuda a comprender el bit pegajoso 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 en 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 pegajoso que puede provocar errores de autorización. Para más información sobre el modo de control de permisos y el bit pegajoso, consulte Listas de control de acceso (ACL) en Azure Data Lake Storage Gen2.

El bit pegajoso 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 Azure Portal.

403 Error de autorización denegada de acceso

Considere el caso siguiente:

  • Una cuenta de almacenamiento de ADLS Gen2 tiene un contenedor denominado contenedor y una ruta de acceso de carpeta denominada carpeta o carpeta secundaria.
  • La ACL se usa 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 Execute (X) en el directorio raíz y la carpeta y con el permiso Write and Execute (WX) en la carpeta secundaria.
  • El bit pegajoso está habilitado en la carpeta secundaria.
  • Intente crear o cargar un archivo nuevo, 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 de acceso denegado 403.

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 pegajoso hace que no sea el propietario de esta ruta de acceso de carpeta.

Identificar si el bit pegajoso provoca un error de acceso denegado 403

Compruebe la configuración de ACL de la carpeta y las carpetas primarias y, a continuación, compárela con los escenarios comunes relacionados con los permisos de ACL. Si los permisos son suficientes, el error 403 puede deberse al bit pegajoso.

Comprobación de la configuración de bits pegajosa 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 permanentes mediante la CLI de Azure, siga estos pasos:

  1. Inicie sesión en 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.

  2. Seleccione Cloud Shell en el portal de Azure.

    Captura de pantalla del botón Cloud Shell en el portal de Azure.

  3. Use el siguiente comando para obtener la ACL y la configuración de bits pegajosa 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 pegajosa del directorio raíz, que es la ACL de nivel de contenedor y la configuración del bit pegajoso, use el siguiente comando:

    az storage fs access show -p / -f container --account-name account --auth-mode login
    

    Este es una salida de ejemplo:

    Captura de pantalla del ejemplo de salida del comando.

    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 cartas, consulte Usuarios e identidades.

    En el ejemplo anterior se indica que todos los permisos de usuario están habilitados y el bit pegajoso está habilitado. Para obtener más información sobre cómo leer esta notación de permisos, consulte Notación de los permisos tradicionales de Unix.

    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 pegajoso está habilitado. "t" es "x" con el bit pegajoso habilitado y "T" es "-" con el bit pegajoso habilitado.

    "rwxrwxrwt" puede explicarse por 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 pegajoso 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 pegajoso está habilitado.

    Según los formularios cortos para los permisos, el permiso de forma corta 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 pegajoso está habilitado, establézcalo como 1. Si el bit pegajoso está deshabilitado, establézcalo como 0.

    A continuación, encontrará algunos ejemplos:

    • rwxrwxrwt => 1777
    • rwxr-xr-T => 1754
    • rw-rwx--x => 0671

Deshabilitar o habilitar la configuración del bit pegajoso

Para deshabilitar o habilitar la configuración de bits permanentes, 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 Blob Storage en la cuenta de almacenamiento de ADLS Gen2 de destino. Hay muchas maneras posibles de modificar la configuración de bits pegajosa. Estos son los SDK admitidos:

SDK Versión admitida Más información
REST API 2019-12-12 y versiones posteriores de la API Path
Módulo Az de PowerShell 5.6.0 y versiones posteriores Uso de PowerShell para administrar listas de control de acceso en Azure Data Lake Storage Gen2
CLI de Azure 2.38.0 y versiones posteriores Uso de la CLI de Azure para administrar listas de control de acceso (ACL) en Azure Data Lake Storage Gen2
SDK de .NET 12.14.0 y versiones posteriores Uso de .NET para administrar listas de control de acceso (ACL) en Azure Data Lake Storage Gen2
SDK de Java 12.11.0 y versiones posteriores Uso de Java para administrar listas de control de acceso (ACL) en Azure Data Lake Storage Gen2
SDK de Python 12.8.0 y versiones posteriores Uso de Python para administrar listas de control de acceso (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 ACL en Azure Data Lake Storage Gen2
CLI de HDFS 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 pegajosa con la CLI de Azure.

  1. Inicie sesión en Azure Portal con su cuenta que tenga la asignación de roles Propietario de datos de Storage Blob en la cuenta de almacenamiento de ADLS Gen2 de destino.

  2. Seleccione Cloud Shell en el portal de Azure.

    Captura de pantalla del botón Cloud Shell en el portal de Azure.

  3. Para establecer la ACL y el valor de bit pegajoso del directorio contenedor/carpeta en los permisos "rwxrwxrwt" y para habilitar el bit pegajoso, 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 pegajosa, use el siguiente comando:

    az storage fs access set --permissions rwxrwxrwt -p / -f container --account-name account --auth-mode login
    

    El {permission notation} en el comando anterior puede aceptar 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
    

    Este es un ejemplo de salida:

    Captura de pantalla del ejemplo de salida del comando.

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.