Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
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. Para las instrucciones, consulte Crear una cuenta de almacenamiento que tenga un espacio de nombres jerárquico.
CLI de Azure versión
2.14.0o posterior.Uno de los siguientes permisos de seguridad:
Un principal de seguridad provisionado de Microsoft Entra ID que se asigna al rol de Propietario de Datos del Blob de Almacenamiento, asignado al contenedor objetivo, cuenta de almacenamiento, grupo de recursos padre o suscripción.
El usuario propietario del contenedor o directorio de destino al que va a aplicar la configuración de ACL. Para establecer ACLs de forma recursiva, este usuario incluye todos los elementos hijos del contenedor o directorio destino.
Asegúrese de que tiene instalada la versión correcta de la CLI de Azure.
Abre Azure Cloud Shell, o si instalaste la CLI de Azure localmente, abre una aplicación de consola de comandos como PowerShell de Windows.
Verifique que la versión de la CLI de Azure que ha instalado sea
2.14.0o posterior usando el siguiente comando.az --versionSi 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
Si usa la CLI de Azure localmente, ejecute el comando de inicio de sesión.
az loginSi 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.
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.
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.
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.