Uso de la CLI de Azure para administrar listas de control de acceso (ACL) en Azure Data Lake Storage

Este artículo te muestra cómo usar la CLI de Azure para obtener, configurar y actualizar las listas de control de acceso (ACLs) de directorios y archivos.

Los nuevos elementos hijos heredan automáticamente las ACL. Pero también puedes añadir, actualizar y eliminar ACLs de forma recursiva en los elementos secundarios existentes sin tener que realizar estos cambios de forma individual para cada elemento secundario.

Referencia | Ejemplos | Enviar comentarios

Prerrequisitos

Asegúrese de que tiene instalada la versión correcta de la CLI de Azure.

  1. Abre Azure Cloud Shell, o si instalaste la CLI de Azure localmente, abre una aplicación de consola de comandos como PowerShell de Windows.

  2. Verifique que la versión de la CLI de Azure que ha instalado sea 2.14.0 o posterior usando el siguiente comando.

     az --version
    

    Si tu versión de CLI de Azure es inferior a 2.14.0, instala una versión posterior. Para más información, consulte Instalación de la CLI de Azure.

Conexión con la cuenta

  1. Si usa la CLI de Azure localmente, ejecute el comando de inicio de sesión.

    az login
    

    Si la CLI puede abrir tu navegador predeterminado, lo abre y carga una página de inicio de sesión en Azure.

    En caso contrario, abra una página del explorador en https://aka.ms/devicelogin y escriba el código de autorización que se muestra en el terminal. Inicie sesión con las credenciales de su cuenta en el explorador.

    Para obtener más información sobre los distintos métodos de autenticación, consulte Autorizar el acceso a datos de blobs o de colas con la CLI de Azure.

  2. Si tu identidad está asociada a más de una suscripción y no se te pide que selecciones la suscripción, configura tu suscripción activa a la suscripción de la cuenta de almacenamiento en la que quieres operar. En este ejemplo, reemplace el valor de marcador de posición <subscription-id> por el identificador de la suscripción.

    az account set --subscription <subscription-id>
    

Obtención de listas de control de acceso

Obtenga la ACL de un directorio mediante el comando az storage fs access show.

En este ejemplo se obtiene la ACL de un directorio y luego se imprime la ACL en la consola.

az storage fs access show -p my-directory -f my-container --account-name mystorageaccount --auth-mode login

Obtenga los permisos de acceso de un archivo mediante el comando az storage fs access show.

En este ejemplo se obtiene la ACL de un archivo y luego se imprime la ACL en la consola.

az storage fs access show -p my-directory/upload.txt -f my-container --account-name mystorageaccount --auth-mode login

En la siguiente imagen se muestra la salida después de obtener la ACL de un directorio.

Captura de pantalla de la salida de la consola mostrando la ACL de un directorio en Azure Data Lake Storage.

En este ejemplo, el usuario propietario tiene permisos de lectura, escritura y ejecución. El grupo propietario tiene permisos de solo lectura y ejecución. Para más información sobre las listas de control de acceso, vea Control de acceso en Azure Data Lake Storage.

Establecimiento de listas de control de acceso

Cuando establece una ACL, debe reemplazar toda la ACL, incluidas todas sus entradas. Si quiere cambiar el nivel de permiso de una entidad de seguridad o agregar una nueva entidad de seguridad a la ACL sin que esto afecte a otras entradas existentes, debe actualizar la ACL en su lugar. Para actualizar una ACL en lugar de reemplazarla, consulte la sección Actualización de ACL de este artículo.

Si elige establecer la lista de control de acceso, debe agregar una entrada para el usuario propietario, otra para el grupo propietario y una tercera para los demás usuarios. Para más información sobre el usuario propietario, el grupo propietario y el resto de usuarios, consulte Usuarios e identidades.

Esta sección le muestra cómo:

  • Establecimiento de una ACL
  • Establecimiento de listas de control de acceso de forma recursiva

Establecimiento de una ACL

Use el comando az storage fs access set para establecer la ACL de un directorio.

En este ejemplo se establece la ACL en un directorio del usuario propietario, el grupo propietario o de otros usuarios, y luego se imprime la ACL en la consola.

az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory -f my-container --account-name mystorageaccount --auth-mode login

En este ejemplo, se establece la ACL predeterminada en un directorio del usuario propietario, el grupo propietario o de otros usuarios y, luego, se imprime la ACL en la consola.

az storage fs access set --acl "default:user::rw-,group::rw-,other::-wx" -p my-directory -f my-container --account-name mystorageaccount --auth-mode login

Usa el comando az storage fs access set para establecer la ACL de un archivo.

En este ejemplo se establece la ACL en un archivo del usuario propietario, el grupo propietario o de otros usuarios, y luego se imprime la ACL en la consola.

az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory/upload.txt -f my-container --account-name mystorageaccount --auth-mode login

Nota:

Para establecer la ACL para un grupo o usuario específico, utiliza sus respectivos IDs de objeto. Por ejemplo, para establecer la ACL de un grupo, use group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Para establecer la ACL de un usuario, usa user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

En la siguiente imagen se muestra la salida después de establecer la ACL de un archivo.

Captura de pantalla de la salida de la consola mostrando la ACL de un archivo después de haberlo configurado en Azure Data Lake Storage.

En este ejemplo, el usuario propietario y el grupo propietario tienen permisos de solo lectura y escritura. Los demás usuarios tienen permisos de escritura y ejecución. Para más información sobre las listas de control de acceso, vea Control de acceso en Azure Data Lake Storage.

Establecimiento de listas de control de acceso de forma recursiva

Establezca listas de control de acceso de forma recursiva mediante el comando az storage fs access set-recursive.

En este ejemplo se establece la ACL de un directorio denominado my-parent-directory. Estas entradas otorgan permisos de lectura, escritura y ejecución al usuario propietario, otorgan al grupo propietario solo permisos de lectura y ejecución, y no permiten acceso a todos los demás. La última entrada de ACL de este ejemplo proporciona a un usuario específico con el identificador de objeto "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" permisos de lectura y ejecución.

az storage fs access set-recursive --acl "user::rwx,group::r-x,other::---,user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

Nota:

Para establecer una entrada ACL predeterminada , añade el prefijo default: a cada entrada. Por ejemplo, default:user::rwx o default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

Actualizar las ACL

Cuando actualiza una ACL, modifica la ACL en lugar de reemplazarla. Por ejemplo, puede agregar una nueva entidad de seguridad a la ACL sin que esto afecte a otras entidades de seguridad que se enumeran en la ACL. Para reemplazar la ACL en lugar de actualizarla, consulte la sección Establecimiento de listas de control de acceso de este artículo.

Para actualizar una ACL, cree un nuevo objeto ACL con la entrada de la ACL que quiera actualizar y, a continuación, use ese objeto en la operación para actualizar la ACL. No obtener la ACL existente, solo proporcionar entradas de ACL para actualizar.

Esta sección le muestra cómo:

  • Actualización de una ACL
  • Actualización de listas de control de acceso de forma recursiva

Actualización de una ACL

Actualice la lista de control de acceso de un archivo mediante el comando az storage fs access update-recursive. CLI de Azure solo proporciona el update-recursive comando para actualizaciones. Cuando apuntas a un solo archivo, el comando actualiza solo la ACL de ese archivo.

En este ejemplo se actualiza una entrada de ACL con permiso de escritura.

az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/myfile.txt -f my-container --account-name mystorageaccount --auth-mode login

Para actualizar la ACL de un grupo o usuario específico, use sus respectivos identificadores de objeto. Por ejemplo, group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx o user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Nota:

CLI de Azure no admite actualizar la ACL de un único directorio sin actualizar la ACL de los elementos secundarios. Para actualizar la ACL de un directorio sin modificar las ACL de todos los elementos secundarios de dicho directorio, use cualquiera de las demás herramientas y SDK admitidos. Consulte Establecimiento de las ACL.

Actualización de listas de control de acceso de forma recursiva

Actualice listas de control de acceso de forma recursiva mediante el comando az storage fs access update-recursive.

En este ejemplo se actualiza una entrada de ACL con permiso de escritura.

az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

Nota:

Para actualizar una entrada ACL por defecto , añade el prefijo default: a cada entrada. Por ejemplo, default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

Eliminación de las entradas de ACL de forma recursiva

Puede quitar una o varias entradas de ACL de forma recursiva. Para eliminar una entrada de ACL, crea un nuevo objeto ACL para la entrada de ACL que quieres eliminar, y luego usa ese objeto en la operación de eliminar ACL. No compres el ACL existente, solo proporciona las entradas ACL para eliminar.

Quite las entradas de ACL mediante el comando az storage fs access remove-recursive.

En este ejemplo se quita una entrada de ACL del directorio raíz del contenedor.

az storage fs access remove-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login

Nota:

Para eliminar una entrada por defecto de ACL, añade el prefijo default: a cada entrada. Por ejemplo, default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Recuperación de errores

Al modificar listas de control de acceso de forma recursiva, es posible que se produzcan errores del entorno de ejecución o de los permisos. En el caso de los errores de tiempo de ejecución, reinicie el proceso desde el principio. Pueden ocurrir errores de permiso si el responsable de seguridad no tiene permiso suficiente para modificar la ACL de un directorio o archivo en la jerarquía de directorios que estás modificando. Solucione el problema de permisos y, a continuación, elija reanudar el proceso desde el punto de error mediante un token de continuación, o bien reinicie el proceso desde el principio. No tiene que usar el token de continuación si prefiere reiniciar desde el principio. Puede volver a aplicar las entradas de ACL sin ningún efecto negativo.

Si ocurre un fallo, devuelve un token de continuación estableciendo el --continue-on-failure parámetro en false. Después de resolver los errores, puede reanudar el proceso desde el punto de error si ejecuta el comando de nuevo y, a continuación, establece el parámetro --continuation en el token de continuación.

az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure false --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login  

Para asegurarse de que el proceso se completa sin interrupciones, establezca el parámetro --continue-on-failure en true.

az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure true --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login  

Procedimientos recomendados

En esta sección se proporcionan algunas directrices de procedimientos recomendados para configurar las ACL de forma recursiva.

Manejo de errores de tiempo de ejecución

Se puede producir un error de tiempo de ejecución por muchos motivos (por ejemplo: una interrupción o un problema de conectividad de cliente). Si se produce un error de tiempo de ejecución, reinicie el proceso de ACL recursivo. Las ACL se pueden volver a aplicar a los elementos sin provocar ningún efecto negativo.

Manejo de errores de permisos (403)

Si experimenta una excepción de control de acceso al ejecutar un proceso de ACL recursivo, es posible que la entidad de seguridad de AD no tenga permisos suficientes para aplicar una ACL a uno o varios de los elementos secundarios de la jerarquía de directorios. Cuando se produce un error de permiso, el proceso se detiene y se proporciona un token de continuación. Repare el problema de permisos y, después, use el token de continuación para procesar el conjunto de datos restante. Los directorios y archivos que ya se han procesado correctamente no tendrán que procesarse de nuevo. También puede optar por reiniciar el proceso de ACL recursivo. Las ACL se pueden volver a aplicar a los elementos sin provocar ningún efecto negativo.

Credenciales

Se recomienda que aprovisione una entidad de seguridad de Microsoft Entra a la que se haya asignado el rol Propietario de datos de blobs de almacenamiento en el ámbito de la cuenta de almacenamiento o el contenedor de destino.

Rendimiento

Para reducir la latencia, se recomienda ejecutar el proceso de ACL recursivo en una máquina virtual de Azure que se encuentre en la misma región que la cuenta de almacenamiento.

Límites de ACL

El número máximo de ACL que puede aplicar a un directorio o archivo es de 32 ACL de acceso y 32 ACL predeterminadas. Para más información, consulte Control de acceso en Azure Data Lake Storage Gen2.

Consulte también