Autorización del acceso a blobs y archivos con AzCopy y Microsoft Entra ID
Puede proporcionar AzCopy con credenciales de autorización mediante Microsoft Entra ID. De este modo, no tendrá que anexar un token de firma de acceso compartido (SAS) a cada comando.
Empiece por comprobar las asignaciones de roles. A continuación, elija qué tipo de entidad de seguridad quiere autorizar. Una identidad de usuario, una identidad administrada y una entidad de servicio son tipos de entidad de seguridad.
Para autorizar el acceso, establecerá variables de entorno en la memoria. A continuación, ejecute cualquier comando de AzCopy. AzCopy recuperará el token de autenticación necesario para completar la operación. Una vez finalizada la operación, el token desaparece de la memoria.
AzCopy recupera el token de OAuth mediante las credenciales que proporcione. Como alternativa, AzCopy puede usar el token de OAuth de una CLI de Azure activa o de una sesión de Azure PowerShell.
Para más información sobre AzCopy, consulte Introducción a AzCopy.
Comprobación de asignaciones de roles
El nivel de autorización que necesita se basa en si va a cargar los archivos o solo a descargarlos.
Si solo desea descargar archivos, compruebe que se haya asignado el rol Lector de datos de Storage Blob (Azure Blob Storage) o el rol Lector con privilegios de datos de archivos de almacenamiento (Azure Files) a la identidad de usuario, la identidad administrada o la entidad de servicio.
Si desea cargar archivos en Azure Blob Storage, compruebe que se ha asignado a la entidad de seguridad uno de estos roles.
Si quiere cargar archivos en un recurso compartido de archivos de Azure, compruebe que se haya asignado el rol Lector con privilegios de datos de archivos de almacenamiento a la entidad de seguridad.
Estos roles pueden asignarse a la entidad de seguridad en cualquiera de estos ámbitos:
- Contenedor (sistema de archivos) o recurso compartido de archivos
- Cuenta de almacenamiento
- Resource group
- Suscripción
Para saber cómo comprobar y asignar roles, consulte Asignación de un rol de Azure para el acceso a datos de blobs (Blob Storage) o Elegir cómo autorizar el acceso a los datos de archivos en Azure Portal (Azure Files).
Nota:
Tenga en cuenta que las asignaciones de roles de Azure pueden tardar hasta cinco minutos en propagarse.
No es necesario tener asignado uno de estos roles a su entidad de seguridad si esta se agrega a la lista de control de acceso (ACL) del directorio o contenedor de destino. En la ACL, la entidad de seguridad necesita permiso de escritura en el directorio de destino y permiso de ejecución en el contenedor y cada directorio primario.
Para más información, consulte Modelo de control de acceso de Azure Data Lake Storage.
Autorización con AzCopy
AzCopy usa las credenciales que se proporcionen para autorizar la entidad de seguridad.
Autorización de una identidad de usuario
Después de comprobar que se ha dado el nivel de autorización necesario a su identidad de usuario, escriba el comando siguiente y, a continuación, presione la tecla ENTRAR.
export AZCOPY_AUTO_LOGIN_TYPE=DEVICE
A continuación, ejecute cualquier comando azcopy (por ejemplo: azcopy list https://contoso.blob.core.windows.net
).
Este comando devuelve un código de autenticación y la dirección URL de un sitio web. Abra el sitio web, proporcione el código y, después, elija el botón Siguiente.
Aparece una ventana de inicio de sesión. En esa ventana, inicie sesión en la cuenta de Azure con sus credenciales de la cuenta de Azure. Una vez que haya iniciado sesión correctamente, la operación se puede completar.
Creación y autorización de una identidad administrada
Esta es una buena opción si va a usar AzCopy dentro de un script que se ejecuta sin interacción del usuario a partir de una máquina virtual de Azure. Al usar esta opción, no tendrá que almacenar credenciales en la máquina virtual.
Puede iniciar sesión en su cuenta mediante el uso de una identidad administrada que abarque todo el sistema que haya habilitado en la máquina virtual, o bien con el identificador de cliente, de objeto o de recurso de una identidad administrada asignada por el usuario que haya asignado a la máquina virtual.
Para obtener más información sobre cómo habilitar una identidad administrada que abarque todo el sistema o crear una identidad administrada asignada por el usuario, consulte Configurar identidades administradas para recursos de Azure en una VM mediante Azure Portal.
Autorización mediante el uso de una identidad administrada que abarque todo el sistema
En primer lugar, asegúrese de haber habilitado una identidad administrada para todo el sistema en la máquina virtual. Consulte Identidad administrada asignada por el sistema.
Escriba el comando siguiente y presione la tecla ENTRAR.
export AZCOPY_AUTO_LOGIN_TYPE=MSI
A continuación, ejecute cualquier comando azcopy (por ejemplo: azcopy list https://contoso.blob.core.windows.net
).
Autorización mediante el uso de una identidad administrada asignada por el usuario
En primer lugar, asegúrese de haber habilitado una identidad administrada asignada por el usuario en la máquina virtual. Consulte Identidad administrada asignada por el usuario.
Escriba el comando siguiente y presione la tecla ENTRAR.
export AZCOPY_AUTO_LOGIN_TYPE=MSI
A continuación, escriba cualquiera de los comandos siguientes y presione la tecla ENTRAR.
export AZCOPY_MSI_CLIENT_ID=<client-id>
Reemplace el marcador de posición <client-id>
por el identificador de cliente de la identidad administrada asignada por el usuario.
export AZCOPY_MSI_OBJECT_ID=<object-id>
Reemplace el marcador de posición <object-id>
por el identificador de objeto de la identidad administrada asignada por el usuario.
export AZCOPY_MSI_RESOURCE_STRING=<resource-id>
Reemplace el marcador de posición <resource-id>
por el identificador de recurso de la identidad administrada asignada por el usuario.
Después de establecer estas variables, puede ejecutar cualquier comando de azcopy (por ejemplo: azcopy list https://contoso.blob.core.windows.net
).
Autorización de una entidad de servicio
Esta es una buena opción si va a usar AzCopy dentro de un script que se ejecuta sin interacción del usuario, en particular si se ejecuta de forma local. Si tiene previsto ejecutar AzCopy en máquinas virtuales que se ejecutan en Azure, una identidad de servicio administrada es más fácil de administrar. Para más información, consulte la sección Creación y autorización de una identidad administrada de este artículo.
Para iniciar sesión en su cuenta, use un secreto de cliente o la contraseña de un certificado asociado al registro de la aplicación de la entidad de servicio.
Para obtener más información sobre la creación de una entidad de servicio, consulte Procedimiento: Uso del portal para crear una aplicación de Microsoft Entra y una entidad de servicio con acceso a los recursos.
Para obtener más información sobre las entidades de servicio en general, consulte Objetos de aplicación y de entidad de servicio de Microsoft Entra ID.
Autorización de una entidad de servicio mediante el uso de un secreto de cliente
Escriba el comando siguiente y presione la tecla ENTRAR.
export AZCOPY_AUTO_LOGIN_TYPE=SPN
export AZCOPY_SPA_APPLICATION_ID=<application-id>
export AZCOPY_SPA_CLIENT_SECRET=<client-secret>
export AZCOPY_TENANT_ID=<tenant-id>
Reemplace el marcador de posición <application-id>
por el identificador de aplicación del registro de la aplicación de la entidad de servicio. Reemplace el marcador de posición <client-secret>
por el secreto de cliente. Reemplace el marcador de posición <tenant-id>
por el identificador de inquilino de la organización a la que pertenece la cuenta de almacenamiento. Para buscar el identificador de inquilino, seleccione Propiedades de inquilino > Id. de inquilino en Azure Portal.
Nota:
Considere la posibilidad de usar una solicitud para recopilar la contraseña del usuario. De este modo, la contraseña no aparecerá en el historial de comandos.
A continuación, ejecute cualquier comando azcopy (por ejemplo: azcopy list https://contoso.blob.core.windows.net
).
Autorización de una entidad de servicio mediante el uso de un certificado
Si prefiere usar sus propias credenciales para la autorización, puede cargar un certificado en el registro de la aplicación y utilizar ese certificado para iniciar sesión.
Además de cargar el certificado en el registro de la aplicación, también deberá tener una copia del certificado guardada en el equipo o la máquina virtual donde se ejecutará AzCopy. Esta copia del certificado debe tener el formato .PFX o .PEM e incluir la clave privada. La clave privada debe estar protegida por contraseña. Si está usando Windows y el certificado solo existe en un almacén de certificados, asegúrese de exportarlo a un archivo PFX (incluida la clave privada). Para obtener instrucciones, consulte Export-PfxCertificate
Escriba el comando siguiente y presione la tecla ENTRAR.
export AZCOPY_AUTO_LOGIN_TYPE=SPN
export AZCOPY_SPA_APPLICATION_ID=<application-id>
export AZCOPY_SPA_CERT_PATH=<path-to-certificate-file>
export AZCOPY_SPA_CERT_PASSWORD=<certificate-password>
export AZCOPY_TENANT_ID=<tenant-id>
Reemplace el marcador de posición <application-id>
por el identificador de aplicación del registro de la aplicación de la entidad de servicio. Reemplace el marcador de posición <path-to-certificate-file>
por la ruta de acceso completa o relativa al archivo del certificado. AzCopy guarda la ruta de acceso a este certificado, pero no guarda una copia del certificado, así que asegúrese de tener el certificado listo para usar. Reemplace el marcador de posición <certificate-password>
por la contraseña del certificado. Reemplace el marcador de posición <tenant-id>
por el identificador de inquilino de la organización a la que pertenece la cuenta de almacenamiento. Para buscar el identificador de inquilino, seleccione Propiedades de inquilino > Id. de inquilino en Azure Portal.
Nota:
Considere la posibilidad de usar una solicitud para recopilar la contraseña del usuario. De este modo, la contraseña no aparecerá en el historial de comandos.
A continuación, ejecute cualquier comando azcopy (por ejemplo: azcopy list https://contoso.blob.core.windows.net
).
Autorización mediante el comando de inicio de sesión de AzCopy
Como alternativa al uso de variables en la memoria, se autoriza el acceso mediante el comando de inicio de sesión de azcopy.
El comando de inicio de sesión de azcopy recupera un token de OAuth y, a continuación, coloca ese token en un almacén secreto del sistema. Si el sistema operativo no tiene un almacén secreto como un conjunto de claves de Linux, el comando de inicio de sesión de azcopy no funcionará porque no hay ningún lugar donde colocar el token.
Autorización de una identidad de usuario (comando de inicio de sesión de azcopy)
Después de comprobar que se ha dado el nivel de autorización necesario a su identidad de usuario, abra un símbolo del sistema, escriba el comando siguiente y, a continuación, presione la tecla ENTRAR.
azcopy login
Si recibe un error, intente incluir el identificador de inquilino de la organización a la que pertenece la cuenta de almacenamiento.
azcopy login --tenant-id=<tenant-id>
Reemplace el marcador de posición <tenant-id>
por el identificador de inquilino de la organización a la que pertenece la cuenta de almacenamiento. Para buscar el identificador de inquilino, seleccione Propiedades de inquilino > Id. de inquilino en Azure Portal.
Este comando devuelve un código de autenticación y la dirección URL de un sitio web. Abra el sitio web, proporcione el código y, después, elija el botón Siguiente.
Aparece una ventana de inicio de sesión. En esa ventana, inicie sesión en la cuenta de Azure con sus credenciales de la cuenta de Azure. Cuando haya iniciado sesión correctamente, puede cerrar la ventana del explorador y comenzar a usar AzCopy.
Autorización mediante una identidad administrada en todo el sistema (comando de inicio de sesión de azcopy)
En primer lugar, asegúrese de haber habilitado una identidad administrada para todo el sistema en la máquina virtual. Consulte Identidad administrada asignada por el sistema.
A continuación, en la consola de comandos, escriba el comando siguiente y presione la tecla ENTRAR.
azcopy login --identity
Autorización mediante una identidad administrada asignada por el usuario (comando de inicio de sesión de azcopy)
En primer lugar, asegúrese de haber habilitado una identidad administrada asignada por el usuario en la máquina virtual. Consulte Identidad administrada asignada por el usuario.
A continuación, en la consola de comandos, escriba cualquiera de los siguientes comandos y, luego, presione la tecla Entrar.
azcopy login --identity --identity-client-id "<client-id>"
Reemplace el marcador de posición <client-id>
por el identificador de cliente de la identidad administrada asignada por el usuario.
azcopy login --identity --identity-object-id "<object-id>"
Reemplace el marcador de posición <object-id>
por el identificador de objeto de la identidad administrada asignada por el usuario.
azcopy login --identity --identity-resource-id "<resource-id>"
Reemplace el marcador de posición <resource-id>
por el identificador de recurso de la identidad administrada asignada por el usuario.
Autorización de una entidad de servicio (comando de inicio de sesión de azcopy)
Antes de ejecutar un script, deberá iniciar sesión interactivamente al menos una vez para poder proporcionar a AzCopy las credenciales de la entidad de servicio. Esas credenciales se almacenan en un archivo seguro y cifrado para que el script no tenga que proporcionar esa información confidencial.
Para iniciar sesión en su cuenta, use un secreto de cliente o la contraseña de un certificado asociado al registro de la aplicación de la entidad de servicio.
Para obtener más información sobre la creación de una entidad de servicio, consulte Procedimiento: Uso del portal para crear una aplicación de Microsoft Entra y una entidad de servicio con acceso a los recursos.
Autorización de una entidad de servicio mediante un secreto de cliente (comando de inicio de sesión de azcopy)
Para comenzar, establezca la variable de entorno AZCOPY_SPA_CLIENT_SECRET
en el secreto de cliente del registro de la aplicación de la entidad de servicio.
Nota:
Asegúrese de establecer este valor desde el símbolo del sistema y no en la configuración de la variable de entorno del sistema operativo. De este modo, el valor está disponible solo en la sesión actual.
En este ejemplo se muestra cómo podría hacer esto en PowerShell.
$env:AZCOPY_SPA_CLIENT_SECRET="$(Read-Host -prompt "Enter key")"
Nota:
Considere la posibilidad de utilizar un símbolo del sistema como se muestra en este ejemplo. De este modo, la contraseña no aparecerá en el historial de comandos de la consola.
A continuación, escriba el comando siguiente y presione la tecla ENTRAR.
azcopy login --service-principal --application-id application-id --tenant-id=tenant-id
Reemplace el marcador de posición <application-id>
por el identificador de aplicación del registro de la aplicación de la entidad de servicio. Reemplace el marcador de posición <tenant-id>
por el identificador de inquilino de la organización a la que pertenece la cuenta de almacenamiento. Para buscar el identificador de inquilino, seleccione Propiedades de inquilino > Id. de inquilino en Azure Portal.
Autorización de una entidad de servicio mediante un certificado (comando de inicio de sesión de azcopy)
Si prefiere usar sus propias credenciales para la autorización, puede cargar un certificado en el registro de la aplicación y utilizar ese certificado para iniciar sesión.
Además de cargar el certificado en el registro de la aplicación, también deberá tener una copia del certificado guardada en el equipo o la máquina virtual donde se ejecutará AzCopy. Esta copia del certificado debe tener el formato .PFX o .PEM e incluir la clave privada. La clave privada debe estar protegida por contraseña. Si está usando Windows y el certificado solo existe en un almacén de certificados, asegúrese de exportarlo a un archivo PFX (incluida la clave privada). Para obtener instrucciones, consulte Export-PfxCertificate
A continuación, establezca la variable de entorno AZCOPY_SPA_CERT_PASSWORD
en la contraseña del certificado.
Nota:
Asegúrese de establecer este valor desde el símbolo del sistema y no en la configuración de la variable de entorno del sistema operativo. De este modo, el valor está disponible solo en la sesión actual.
En este ejemplo se muestra cómo podría realizar esta tarea en PowerShell.
$env:AZCOPY_SPA_CERT_PASSWORD="$(Read-Host -prompt "Enter key")"
A continuación, escriba el comando siguiente y presione la tecla ENTRAR.
azcopy login --service-principal --application-id application-id --certificate-path <path-to-certificate-file> --tenant-id=<tenant-id>
Reemplace el marcador de posición <application-id>
por el identificador de aplicación del registro de la aplicación de la entidad de servicio. Reemplace el marcador de posición <path-to-certificate-file>
por la ruta de acceso completa o relativa al archivo del certificado. AzCopy guarda la ruta de acceso a este certificado, pero no guarda una copia del certificado, así que asegúrese de tener el certificado listo para usar. Reemplace el marcador de posición <tenant-id>
por el identificador de inquilino de la organización a la que pertenece la cuenta de almacenamiento. Para buscar el identificador de inquilino, seleccione Propiedades de inquilino > Id. de inquilino en Azure Portal.
Nota:
Considere la posibilidad de utilizar un símbolo del sistema como se muestra en este ejemplo. De este modo, la contraseña no aparecerá en el historial de comandos de la consola.
Autorización con la CLI de Azure
Si se inicia sesión con la CLI de Azure, la CLI de Azure obtendrá un token de OAuth que AzCopy podrá usar para autorizar las operaciones.
Para permitir que AzCopy use ese token, escriba el siguiente comando y presione la tecla ENTRAR.
export AZCOPY_AUTO_LOGIN_TYPE=AZCLI
Para obtener más información sobre cómo iniciar sesión con la CLI de Azure, consulte Inicio de sesión con la CLI de Azure.
Autorización con Azure PowerShell
Si se inicia sesión con Azure PowerShell, este obtendrá un token de OAuth que AzCopy podrá usar para autorizar las operaciones.
Para permitir que AzCopy use ese token, escriba el siguiente comando y presione la tecla ENTRAR.
$Env:AZCOPY_AUTO_LOGIN_TYPE="PSCRED"
Para obtener más información sobre cómo iniciar sesión con Azure PowerShell, consulte Inicio de sesión con Azure PowerShell.
Pasos siguientes
Para más información sobre AzCopy, consulte Introducción a AzCopy.
Si tiene alguna pregunta, problemas o comentarios generales, envíelos en la página GitHub.