Conexión a Azure Blob Storage mediante el protocolo de transferencia de archivos SSH (SFTP)

En este artículo se muestra cómo conectarse de forma segura al punto de conexión de Blob Storage de una cuenta de Azure Storage mediante un cliente SFTP. Después de conectarse, puede cargar y descargar archivos, así como modificar listas de control de acceso (ACL) en archivos y carpetas.

Para más información sobre la compatibilidad de SFTP con Azure Blob Storage, consulte Protocolo de transferencia de archivos SSH (SFTP) en Azure Blob Storage.

Requisitos previos

Conexión de un cliente SFTP

Puede usar cualquier cliente SFTP para conectarse y transferir archivos de forma segura. En el ejemplo siguiente se muestra una sesión de Windows PowerShell que usa Open SSH.

PS C:\Users\temp> sftp contoso4.contosouser@contoso4.blob.core.windows.net

El nombre de usuario de SFTP es storage_account_name.username. En el ejemplo anterior, el storage_account_name es "contoso4" y el username es "contosouser." El nombre de usuario combinado pasa a ser "contoso4.contosouser". El punto de conexión de Blob service es "contoso4.blob.core.windows.net".

Para completar la conexión, es posible que tenga que responder a una o varias solicitudes. Por ejemplo, si configuraste el usuario local con autenticación por contraseña, se te pide que introduzcas esa contraseña. Es posible que se le pida que confíe en una clave de host. Las claves de host válidas se publican aquí.

Nota:

SFTP opera sobre el extremo de Blob Storage (blob.core.windows.net) y no sobre el extremo de Data Lake Storage (dfs.core.windows.net). Por lo tanto, no se admiten puntos de conexión de Data Lake Storage, como contoso4.contosouser@contoso4.dfs.core.windows.net .

Conexión mediante un dominio personalizada

Para conectarse al endpoint del servicio blob usando un dominio personalizado, utilice la cadena de conexión myaccount.myuser@customdomain.com. Si no especificas el directorio de casa para el usuario, usa la cadena de conexión myaccount.mycontainer.myuser@customdomain.com.

Importante

Asegúrate de que tu proveedor de DNS no actúe como proxy para las solicitudes, ya que esto podría hacer que el intento de conexión agote el tiempo de espera.

Para obtener información sobre cómo asignar un dominio personalizado a un punto de conexión de Blob service, consulte Asignación de un dominio personalizado a un punto de conexión de Azure Blob Storage.

Conexión mediante un punto de conexión privado

Para conectarse al endpoint del servicio blob usando un endpoint privado, utilice la cadena de conexión myaccount.myuser@myaccount.privatelink.blob.core.windows.net. Si no especificas el directorio de inicio para el usuario, usa myaccount.mycontainer.myuser@myaccount.privatelink.blob.core.windows.net.

Nota:

Asegúrate de cambiar la configuración de red a Habilitada desde las redes virtuales y direcciones IP seleccionadas, y luego selecciona tu punto final privado. De lo contrario, el endpoint del servicio blob sigue siendo accesible públicamente.

Conexión mediante el enrutamiento de Internet

Para conectarte al endpoint del servicio blob usando enrutamiento por internet, utiliza la cadena de conexión myaccount.myuser@myaccount-internetrouting.blob.core.windows.net. Si no especificas el directorio de inicio para el usuario, usa myaccount.mycontainer.myuser@myaccount-internetrouting.blob.core.windows.net.

Transferencia de datos

Después de conectarse, puede cargar y descargar archivos. En el ejemplo siguiente se carga un archivo denominado logfile.txt mediante una sesión de Open SSH activa.

sftp> put logfile.txt
Uploading logfile.txt to /mydirectory/logfile.txt
logfile.txt
        100%    19    0.2kb/S    00.00

Una vez completada la transferencia, puede ver y administrar el archivo en Azure Portal.

Captura de pantalla del archivo cargado que aparece en la cuenta de almacenamiento.

Nota:

Azure Portal usa la API de REST de blob y la API de REST de Data Lake Storage. La capacidad de interactuar con un archivo cargado en Azure Portal muestra la interoperabilidad entre SFTP y REST.

Consulte la documentación del cliente SFTP para obtener instrucciones sobre cómo conectar y transferir archivos.

Reanudación de la carga

La característica de carga reanudable para SFTP de Azure Blob Storage ahora está disponible con carácter general. Esta función permite reanudar la subida de archivos desde el punto de fallo en caso de fallos parciales en la transferencia, ahorrando así tiempo y reduciendo el uso de ancho de banda de red. Los siguientes modos de transferencia SFTP son compatibles con Azure Blob Storage SFTP:

  • Escritura: este modo permite al cliente continuar una carga agregando datos a un archivo existente desde un punto específico sin crear un archivo nuevo.
  • Escribir y crear: este modo permite al cliente reanudar una carga agregando a un archivo existente o creando uno nuevo si no existe, lo que proporciona flexibilidad cuando es posible que el archivo no esté presente inicialmente.
  • Anexar: este modo agrega datos al final de un archivo existente sin sobrescribir su contenido actual. Anteriormente, esta función solo soportaba el modo de añadir durante la vista previa, lo que limitaba la reanudación de subidas con clientes SFTP que carecían de soporte para el modo de añadir. Con la disponibilidad general, Azure Blob Storage SFTP admite ahora los modos de escritura y escritura + creación, lo que beneficia a los usuarios que utilizan clientes SFTP sin modo de anexión.

Nota:

La carga reanudable solo se admite para blobs creados con el protocolo SFTP. No se puede reanudar una carga de blobs existentes creados con un protocolo distinto de SFTP, como REST.

Modifique la ACL de un archivo o directorio.

Puede modificar el nivel de permiso del usuario propietario, el grupo propietario y todos los demás usuarios de una ACL mediante un cliente SFTP. También puede cambiar el usuario propietario y el grupo propietario. Para obtener más información sobre la compatibilidad de ACL con los clientes SFTP, consulte ACL.

Nota:

Los usuarios propietarios ahora también pueden modificar el grupo propietario y los permisos de un blob o directorio sin necesidad de tener permisos sobre el contenedor. Esta mejora de funcionalidad se añadió durante la fase de disponibilidad general de las ACL para usuarios locales. Para cualquier usuario que no sea el propietario, los permisos del contenedor siguen siendo necesarios.

Modificar permisos

Para cambiar el nivel de permiso del usuario propietario, el grupo propietario o todos los demás usuarios de una ACL, el usuario local debe tener permiso Modify Permission. Consulte la sección sobre cómo conceder permiso a los contenedores.

En el ejemplo siguiente se imprime la ACL de un directorio en la consola. Luego utiliza el chmod comando para establecer la ACL en 777. Cada 7 es la forma numérica de rwx (lectura, escritura y ejecución). Por lo tanto, 777 concede permiso de lectura, escritura y ejecución al usuario propietario, al grupo propietario y a todos los demás usuarios. A continuación, en este ejemplo se imprime la ACL actualizada en la consola. Para obtener más información sobre las formas numéricas y abreviadas de una ACL, consulte Formas abreviadas de los permisos.

sftp> ls -l
drwxr-x---     1234     5678                0 Mon, 08 Jan 2024 16:53:25 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp> chmod 777 dir1
Changing mode on /dir1
sftp> ls -l
drwxrwxrwx     1234     5678                0 Mon, 08 Jan 2024 16:54:06 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2

Nota:

Aún no se admite agregar ni modificar entradas ACL para usuarios con nombre, grupos con nombre y entidades de seguridad con nombre.

Cambio del usuario propietario

Para cambiar el usuario propietario de un directorio o blob, el usuario local debe tener permiso Modify Ownership. Consulte la sección sobre cómo conceder permiso a los contenedores.

En el ejemplo siguiente se imprime la ACL de un directorio en la consola. El identificador del usuario propietario es 0. En este ejemplo se usa el comando chown para establecer el identificador del usuario propietario en 1234 e imprime el cambio en la consola.

sftp> ls -l
drwxr-x---        0        0                0 Mon, 08 Jan 2024 16:00:12 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp> chown 1234 dir1
Changing owner on /dir1
sftp> ls -l
drwxr-x---     1234        0                0 Mon, 08 Jan 2024 16:52:52 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp>

Cambio del grupo propietario

Para cambiar el grupo propietario de un directorio o blob, el usuario local debe tener permiso Modify Ownership. Consulte la sección sobre cómo conceder permiso a los contenedores.

En el ejemplo siguiente se imprime la ACL de un directorio en la consola. El identificador del grupo propietario es 0. En este ejemplo se usa el comando chgrp para establecer el identificador del grupo propietario en 5678 e imprime el cambio en la consola.

sftp> ls -l
drwxr-x---     1234        0                0 Mon, 08 Jan 2024 16:52:52 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2
sftp> chgrp 5678 dir1
Changing group on /dir1
sftp> ls -l
drwxr-x---     1234     5678                0 Mon, 08 Jan 2024 16:53:25 GMT dir1
drwxr-x---        0        0                0 Mon, 16 Oct 2023 12:18:08 GMT dir2