Compartir vía


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

En este artículo, se muestra cómo usar la CLI de Azure para obtener, establecer y actualizar las listas de control de acceso de directorios y archivos.

La herencia de ACL ya está disponible para los nuevos elementos secundarios que se crean en un directorio primario. Ahora bien, también se pueden agregar, actualizar y quitar listas de control de acceso de forma recursiva en los elementos secundarios existentes de un directorio primario sin tener que realizar estos cambios individualmente para cada elemento secundario.

Referencia | Ejemplos | Enviar comentarios

Prerrequisitos

  • Suscripción a Azure. Para obtener más información, vea Obtención de una evaluación gratuita de Azure.

  • Una cuenta de almacenamiento que tenga habilitado un espacio de nombres jerárquico. Siga estas instrucciones para crear uno.

  • CLI de Azure versión 2.14.0 o posterior.

  • Uno de los siguientes permisos de seguridad:

    • Una entidad de seguridad aprovisionada de Microsoft Entra ID a la que se ha asignado el rol Propietario de datos de blobs de almacenamiento, con ámbito para el contenedor de destino, el grupo de recursos primario o la suscripción.

    • El usuario propietario del contenedor o directorio de destino al que va a aplicar la configuración de ACL. Para establecer listas de control de acceso de forma recursiva, se incluyen todos los elementos secundarios en el contenedor o el directorio de destino.

    • Clave de la cuenta de almacenamiento.

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

  1. Abra Azure Cloud Shell o, si ha instalado la CLI de Azure localmente, abra una aplicación de consola de comandos como Windows PowerShell.

  2. Use el comando siguiente para verificar que la versión de la CLI de Azure que ha instalado sea 2.14.0 o posterior.

     az --version
    

    Si la versión de la CLI de Azure es anterior a 2.14.0, instale 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 el explorador predeterminado, lo hará y cargará una página de inicio de sesión de 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 Autorización del acceso a los datos de blobs o colas con la CLI de Azure.

  2. Si su identidad se asocia a más de una suscripción, establezca su suscripción activa en la suscripción de la cuenta de almacenamiento que hospedará el sitio web estático.

    az account set --subscription <subscription-id>
    

    Reemplace el valor de marcador de posición <subscription-id> por el identificador de la suscripción.

Nota:

En el ejemplo que se presenta en este artículo se muestra la autorización de Microsoft Entra. Para obtener más información sobre los métodos de autorización, consulte Autorización del acceso a los datos de blobs o colas con la CLI de Azure.

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-file-system --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-file-system --account-name mystorageaccount --auth-mode login

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

Get ACL output

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 Gen2.

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-file-system --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-file-system --account-name mystorageaccount --auth-mode login

Use 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-file-system --account-name mystorageaccount --auth-mode login

Nota:

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

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

Get ACL output 2

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 Gen2.

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. En estas entradas se concede al usuario propietario permisos de lectura, escritura y ejecución, permisos solo de lectura y ejecución al grupo propietario, y ningún permiso al resto. 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:

Si desea establecer entradas de ACL predeterminadas, agregue el prefijo default: a cada una de ellas. Por ejemplo, default:user::rwx o default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.

Actualización de 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 debe obtener la ACL existente, simplemente proporcione las entradas de la ACL que se vayan a 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.

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 identificadores de objeto correspondientes. Por ejemplo, group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx o user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

Nota

La CLI de Azure no admite la actualización de la ACL de un único directorio sin actualizar primero 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:

Si desea actualizar entradas de ACL predeterminadas, agregue el prefijo default: a cada una de ellas. 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 quitar una entrada de ACL, cree un nuevo objeto de ACL para la entrada de ACL que se va a quitar y, a continuación, use ese objeto en la operación para quitar la ACL. No debe obtener la ACL existente; simplemente proporcione las entradas de la ACL que se van a quitar.

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:

Si desea quitar entradas de ACL predeterminadas, agregue el prefijo default: a cada una de ellas. 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. Los errores de permisos pueden producirse si la entidad de seguridad no tiene permisos suficientes para modificar la ACL de un directorio o archivo que se encuentra en la jerarquía de directorios que se está 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.

En caso de que se produzca un error, establezca el parámetro --continue-on-failure en false para devolver un token de continuación. 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  

Si desea que el proceso se complete sin que se interrumpa por errores de permisos, puede especificarlo.

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