Conectar-se ao Armazenamento de Blobs do Azure usando o SFTP (protocolo FTP SSH)

Este artigo mostra como se conectar com segurança ao endpoint do armazenamento Blob de uma conta do Armazenamento do Azure usando um cliente SFTP. Depois de se conectar, você pode carregar e baixar arquivos, bem como modificar ACLs (listas de controle de acesso) em arquivos e pastas.

Para saber mais sobre o suporte ao SSH File Transfer Protocol (SFTP) para Armazenamento de Blobs do Azure, consulte SSH File Transfer Protocol (SFTP) no Armazenamento de Blobs do Azure.

Pré-requisitos

Conecte um cliente SFTP

É possível usar qualquer cliente SFTP para se conectar e, em seguida, transferir arquivos com segurança. O exemplo a seguir mostra uma sessão do Windows PowerShell que usa o Open SSH.

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

O nome de usuário do SFTP é storage_account_name.username. No exemplo anterior, o storage_account_name é "contoso4" e o username é "contosouser." O nome de usuário combinado passa a ser "contoso4.contosouser". O ponto de extremidade do serviço de blob é "contoso4.blob.core.windows.net".

Para concluir a conexão, talvez seja necessário responder a uma ou mais solicitações. Por exemplo, se você configurou o usuário local com autenticação por senha, é solicitado a inserir essa senha. Você também pode ser solicitado a confiar em uma chave de host. As chaves de host válidas foram publicadas aqui.

Observação

O SFTP opera sobre o ponto final Armazenamento de Blobs (blob.core.windows.net) e não sobre o ponto final Data Lake Storage (dfs.core.windows.net). Portanto, não há suporte para pontos de extremidade do Data Lake Storage, como contoso4.contosouser@contoso4.dfs.core.windows.net .

Conectar usando um domínio personalizado

Para se conectar ao ponto de extremidade do serviço Blob usando um domínio personalizado, use a cadeia de conexão myaccount.myuser@customdomain.com. Se você não especificar o diretório inicial do usuário, use a cadeia de conexão myaccount.mycontainer.myuser@customdomain.com.

Importante

Certifique-se de que seu provedor de DNS não atue como proxy para as solicitações, pois essa ação pode fazer com que a tentativa de conexão atinja o tempo limite.

Para saber como mapear um domínio personalizado para um ponto de extremidade do serviço de blob, consulte Mapear um domínio personalizado para um ponto de extremidade do Armazenamento de Blobs do Azure.

Conectar usando um ponto de extremidade privado

Para se conectar ao ponto de extremidade do serviço Blob usando um endpoint privado, use a cadeia de conexão myaccount.myuser@myaccount.privatelink.blob.core.windows.net. Se você não especificar o diretório inicial para o usuário, use myaccount.mycontainer.myuser@myaccount.privatelink.blob.core.windows.net.

Observação

Certifique-se de alterar a configuração de rede para Habilitada a partir de redes virtuais selecionadas e endereços IP e, em seguida, selecione seu endpoint privado. Caso contrário, o endpoint do serviço blob permanece acessível publicamente.

Conectar-se usando o roteamento da Internet

Para se conectar ao ponto de extremidade do serviço Blob usando o roteamento pela Internet, use a cadeia de conexão myaccount.myuser@myaccount-internetrouting.blob.core.windows.net. Se você não especificar o diretório inicial para o usuário, use myaccount.mycontainer.myuser@myaccount-internetrouting.blob.core.windows.net.

Transferir dados

Depois de se conectar, você pode carregar e baixar arquivos. O exemplo a seguir carrega um arquivo chamado logfile.txt usando uma sessão Open SSH ativa.

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

Depois que a transferência for concluída, você poderá exibir e gerenciar o arquivo no portal do Azure.

Captura de tela do arquivo carregado que aparece na conta de armazenamento.

Observação

O portal do Azure usa a API REST do Blob e a API REST do Data Lake Storage. Poder interagir com um arquivo carregado no portal do Azure demonstra a interoperabilidade entre o SFTP e o REST.

Consulte a documentação do seu cliente SFTP para obter orientação sobre como conectar e transferir arquivos.

Retomar o upload

O recurso de upload retomável para o SFTP do Armazenamento de Blobs do Azure está disponível para uso geral. Esse recurso permite retomar o upload de arquivos a partir do ponto de falha em caso de falhas parciais de transferência, economizando tempo e reduzindo o uso de largura de banda da rede. Os seguintes modos de transferência SFTP são suportados pelo Armazenamento de Blobs do Azure SFTP:

  • Gravação: esse modo permite que o cliente continue um upload adicionando dados a um arquivo existente de um ponto específico sem criar um novo arquivo.
  • Gravação + Criação: esse modo permite que o cliente retome um upload adicionando a um arquivo existente ou criando um novo se ele não existir, fornecendo flexibilidade quando o arquivo pode não estar presente inicialmente.
  • Acrescentar: esse modo adiciona dados ao final de um arquivo existente sem substituir seu conteúdo atual. Anteriormente, esse recurso suportava apenas o modo de anexação durante a prévia, o que limitava a retomada de upload com clientes SFTP que não tinham suporte ao modo de adição. Com a disponibilidade geral, o Armazenamento de Blobs do Azure SFTP agora suporta modos de escrita e escrita + criação, o que beneficia usuários que usam clientes SFTP sem o modo de anexação.

Observação

O upload retomável só tem suporte para blobs criados com o protocolo SFTP. Você não pode retomar um upload para blobs existentes que foram criados com um protocolo diferente de SFTP, como REST.

Modificar a ACL de um arquivo ou diretório

Você pode modificar o nível de permissão do usuário proprietário, do grupo proprietário e de todos os outros usuários de uma ACL usando um cliente SFTP. Você também pode alterar o usuário proprietário e o grupo proprietário. Para saber mais sobre o suporte à ACL para clientes SFTP, consulte ACLs.

Observação

Os usuários proprietários agora também podem modificar o grupo proprietário e as permissões de um blob ou diretório sem permissões de contêiner. Essa melhoria de recurso foi adicionada durante a fase de disponibilidade geral das ACLs para usuários locais. Para qualquer usuário que não seja o proprietário, as permissões do container ainda são necessárias.

Modificar permissões

Para alterar o nível de permissão do usuário proprietário, do grupo proprietário ou de todos os outros usuários de uma ACL, o usuário local deve ter permissão Modify Permission. Consulte Conceder permissão aos contêineres.

O exemplo a seguir imprime a ACL de um diretório no console. Depois, ele usa o chmod comando para definir a ACL para 777. Cada 7 é a forma numérica de rwx (ler, gravar e executar). Portanto, 777 fornece permissão de leitura, gravação e execução para o usuário proprietário, grupo proprietário e todos os outros usuários. Este exemplo imprime a ACL atualizada no console. Para saber mais sobre formatos numéricos e abreviados de uma ACL, consulte Formatos abreviados para permissões.

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

Observação

Adicionar ou modificar entradas de ACL para usuários nomeados, grupos nomeados e princípios de segurança nomeados ainda não é suportado.

Alterar o usuário proprietário

Para alterar o usuário proprietário de um diretório ou blob, o usuário local deve ter permissão Modify Ownership. Consulte Conceder permissão aos contêineres.

O exemplo a seguir imprime a ACL de um diretório no console. A ID do usuário proprietário é 0. Este exemplo usa o comando chown para definir a ID do usuário proprietário como 1234 e imprime a alteração no console.

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>

Alterar o grupo proprietário

Para alterar o grupo proprietário de um diretório ou blob, o usuário local deve ter permissão Modify Ownership. Consulte Conceder permissão aos contêineres.

O exemplo a seguir imprime a ACL de um diretório no console. A ID do grupo proprietário é 0. Este exemplo usa o comando chgrp para definir a ID do grupo proprietário como 5678 e imprime a alteração no console.

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