Autorizar o acesso do Protocolo de Transferência de Ficheiros SSH (SFTP) a blobs usando o Microsoft Entra ID

Armazenamento de Blobs do Azure SFTP suporta acesso baseado em Microsoft Entra ID. Anteriormente, o Armazenamento de Blobs do Azure SFTP suportava apenas acesso local baseado no utilizador, exigindo uma palavra-passe ou uma chave privada SSH para autenticação. Ao utilizar esta funcionalidade, os utilizadores podem aplicar o seu Microsoft Entra ID para se ligar a contas de armazenamento Azure através do SFTP sem necessidade de criar e manter utilizadores locais.

O acesso baseado no Microsoft Entra ID traz muitos benefícios ao Armazenamento de Blobs do Azure SFTP, incluindo controlo de acesso baseado em funções (RBAC), autenticação multifator (MFA) e Microsoft Entra ID Listas de Controlo de Acesso (ACLs).

Principais benefícios

  • Elimine a Gestão Local de Utilizadores - Ao usar o acesso baseado no Microsoft Entra ID, não precisa de criar, rodar ou manter utilizadores SFTP locais para cada conta de armazenamento. O Microsoft Entra ID gere a autenticação, o que reduz significativamente a sobrecarga operacional e a complexidade da configuração.

  • Identidade e segurança de nível empresarial - O acesso SFTP utiliza o Microsoft Entra ID, que permite:

    • Gestão centralizada do ciclo de vida da identidade
    • Autenticação forte, incluindo MFA através do Microsoft Entra ID
    • Postura de segurança consistente alinhada com os padrões IAM empresariais
    • Esta abordagem melhora a segurança em comparação com credenciais locais estáticas e de longa duração.
  • Integração nativa Azure RBAC, ABAC e ACL - A autorização para SFTP corresponde ao modelo de controlo de acesso existente do Armazenamento de Blobs do Azure:

    • Controlo de Acesso Baseado em Funções (RBAC)
    • Controlo de Acesso Baseado em Atributos (ABAC)
    • Listas de Controlo de Acesso (ACLs) ao estilo POSIX
    • Os utilizadores podem aplicar os mesmos papéis e permissões usados para acesso a REST, SDK e Portal ao SFTP.
  • Integração Rápida do SFTP - Como as contas Microsoft Entra ID são omnipresentes, os utilizadores podem:

    • Reutilizar utilizadores, grupos e princípios de serviço existentes
    • Evite a criação local de utilizadores e a distribuição de chaves que consome muito tempo
    • Pôr o SFTP a funcionar mais rapidamente com menos passos de configuração
    • Reduzir significativamente o tempo de obtenção de valor em fluxos de trabalho baseados em SFTP
  • Colaboração Externa Segura - Ao utilizar Identidades Externas Microsoft Entra ID, os clientes podem conceder acesso SFTP de forma segura a parceiros e fornecedores sem gerir sistemas de identidade separados, mantendo controlo total e auditabilidade.

Descrição geral

A seguinte visão geral descreve os passos principais envolvidos neste processo. Primeiro autentica-se usando o Microsoft Entra ID, depois obtém-se um certificado OpenSSH e, finalmente, liga-se ao Armazenamento de Blobs do Azure SFTP usando um cliente ou SDK compatível. As secções seguintes descrevem cada um destes passos com mais detalhe.

  1. Autentique com o Microsoft Entra ID através do CLI do Azure, PowerShell, SDK e mais.

  2. Obtenha um certificado OpenSSH do Microsoft Entra ID ao passar uma chave pública.

  3. Use qualquer cliente SFTP ou SDK que suporte certificados OpenSSH para se ligar ao Armazenamento do Azure com o certificado OpenSSH e a chave pública do passo 2.

    Observação

    A autenticação baseada em palavra-passe não é suportada porque nenhum cliente SFTP tem integração nativa com o Microsoft Entra ID para proporcionar uma experiência de utilizador Microsoft Entra ID para introdução de palavra-passe.

Conectar ao Armazenamento de Blobs do Azure com Microsoft Entra IDs

Gerar certificado OpenSSH

Gerar o certificado OpenSSH com o comando CLI do Azure az sftp , como mostrado no exemplo seguinte.

az login
az sftp cert --file ~/.ssh/my_cert.pub

Por razões de segurança, o certificado é válido apenas por 65 minutos. Depois de expirar, tens de reexecutar o comando para obter um novo certificado.

Opcionalmente, pode gerar o seu próprio par de chaves SSH e usá-lo ao descarregar o certificado.

Gerar par de chaves SSH: Deve usar chaves RSA, pois o Microsoft Entra ID suporta apenas certificados RSA.

ssh-keygen -t rsa

Serão gerados os seguintes ficheiros-chave:

Nome do Ficheiro Tipo de chave
id_rsa Chave privada
id_rsa.pub Chave pública

Use o seguinte comando para gerar o certificado SSH com as chaves geradas:

az login
az sftp cert --public-key-file ~/.ssh/id_rsa.pub --file ~/.ssh/my_cert.pub

Se estiver a utilizar um principal de serviço, pode iniciar sessão utilizando um client secret ou um certificado:

Para iniciar sessão usando um certificado, use o seguinte comando:

az login --service-principal -u <application_id_or_client_id> --tenant <tenant_id> --certificate <path_to_certificate>

Para iniciar sessão usando um cliente secreto, use o seguinte comando:

az login --service-principal -u <application_id_or_client_id> -p <secret_value> --tenant <tenant_id>

Após a autenticação, execute o mesmo comando para descarregar o certificado:

az sftp cert --public-key-file ~/.ssh/id_rsa.pub --file ~/.ssh/my_cert.pub

Verificar o conteúdo do certificado OpenSSH [Opcional]

Use o seguinte comando para visualizar o certificado OpenSSH:

ssh-keygen -L -f ~/.ssh/my_cert.pub

No resultado, a secção Princípios contém o nome de utilizador.

Captura de ecrã da secção de princípios na saída do certificado.

Por razões de segurança, o certificado OpenSSH é válido durante 65 minutos. Após este período, precisa de solicitar um novo certificado para iniciar quaisquer transações adicionais.

Liga-te à Conta de Armazenamento usando OpenSSH

Ligue usando um comando SFTP

sftp -o PubkeyAcceptedKeyTypes="rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-256" -o IdentityFile="~/.ssh/id_rsa" -o CertificateFile="~/.ssh/my_cert.pub" <storageaccountname>.<username>@<storageaccountname>.blob.core.windows.net

Se o principal usar o formato username@domain.com, certifique-se de excluir a secção de domínio no comando e use apenas a parte do nome de utilizador.

São suportados tanto princípios de utilizador como de serviço . Para os principals de serviço, use o ID do principal de serviço em vez do nome de utilizador na string de conexão.

Observação

Adicionar o nome do contentor diretamente à cadeia de ligação ou configurá-la através do diretório Home não é suportado.

Uma vez ligado, use o seguinte comando para carregar um ficheiro para o Armazenamento do Azure via SFTP:

put <local-file-path>

Se receber um erro de permissão negada, certifique-se de que tem as funções necessárias no Azure, tais como Storage Blob Data Contributor ou Storage Blob Data Owner.

Ligue-se usando um cliente de ambiente de trabalho SFTP

Clientes SFTP como WinSCP e PuTTY suportam autenticação baseada em OpenSSH. Os passos seguintes mostram como ligar-se usando o WinSCP:

  1. WinSCP: O suporte para certificados OpenSSH para autenticação de utilizadores foi implementado na versão 6.0 (https://winscp.net/tracker/1873)

  2. Obter o certificado OpenSSH do passo anterior (Gerar certificado OpenSSH)

  3. No WinSCP, introduza o Nome do Anfitrião e o Nome de Utilizador, e depois selecione Avançado

    Captura de ecrã da janela de login do WinSCP com a opção Avançada.

  4. No separador SSH, vá à secção de Autenticação. Anexe os ficheiros de chave privada e certificado obtidos das secções anteriores e depois selecione OK.

    Captura de ecrã das definições de autenticação com os campos de chave privada e certificado.

  5. Selecione Iniciar sessão para iniciar sessão usando a conta Microsoft Entra ID e o certificado OpenSSH.

    Captura de ecrã do botão de login do WinSCP.

Use o seguinte comando para se ligar usando o certificado OpenSSH obtido nos passos anteriores:

az sftp connect --storage-account <account_name> --certificate-file ~/.ssh/my_cert.pub

Adicionalmente, pode obter o certificado OpenSSH e ligar-se ao SFTP usando um único comando, como segue:

az sftp connect
az sftp connect --storage-account <account_name>

Para mais informações sobre os comandos, consulte aqui.

Modelo de controlo de acesso baseado em Microsoft Entra ID no Armazenamento de Blobs do Azure SFTP

Mecanismo Situação Tutorial
Controlo de acesso baseado em funções (Azure RBAC) Suportado Modelo de controlo de acesso para Azure Data Lake Storage - Armazenamento Azure | Microsoft Learn
Listas de controlo de acesso (ACL) Suportado Modelo de controlo de acesso para Azure Data Lake Storage - Armazenamento Azure | Microsoft Learn
Controlo de acesso baseado em atributos (Azure ABAC) Suportado Modelo de controlo de acesso para Azure Data Lake Storage - Armazenamento Azure | Microsoft Learn

Como são avaliadas as permissões

O SFTP espelha o modelo de controlo de acesso do Armazenamento de Blobs do Azure. Para mais informações, veja Modelo de Controlo de Acesso no Azure Data Lake Storage.

Partilha de acesso a utilizadores fora do tenant doméstico do Microsoft Entra ID

As organizações muitas vezes precisam de partilhar o acesso SFTP ao Armazenamento de Blobs do Azure com parceiros externos e clientes. O Microsoft Entra External Identities pode responder a este requisito ao permitir que o Armazenamento de Blobs do Azure SFTP forneça acesso seguro a colaboradores externos. Esta funcionalidade permite ligações e interações eficientes e seguras com recursos de armazenamento. Ao utilizar as capacidades de Identidade Externa do Microsoft Entra ID, as organizações podem manter um controlo de acesso rigoroso e medidas de segurança, permitindo ao mesmo tempo a colaboração com entidades externas. Saiba mais sobre como adicionar utilizadores convidados.

Problemas conhecidos e limitações

  • A autorização de identidade gerida não é suportada para SFTP com o Microsoft Entra ID.

  • O suporte ao Microsoft Entra ID limita-se a certificados SSH e autenticação de chave pública.

  • Apenas os certificados RSA são suportados. O ECDSA não é suportado.

  • Definir um diretório doméstico não é suportado.

  • A cadeia de ligação não pode incluir o nome do contentor. O utilizador liga-se à raiz da conta de armazenamento e depois navega até ao contentor de destino e aos diretórios usando comandos 'alterar diretório' (cd).

  • chown e chgrp exigem permissões de gestão de propriedade ou de superutilizador.

  • chmod requer permissões de modificação ou permissões de superutilizador.

Troubleshooting

Abrir qualquer contentor não é possível com "Acesso negado"

Pode acontecer um erro mesmo que consiga ligar-se a contas de armazenamento através do WinSCP, e pode ver a lista de contentores após iniciar Access denied sessão.

Este erro pode acontecer porque o WinSCP tenta automaticamente canonizar todos os diretórios em que entra. Isto significa que, para cadacd listagem de diretórios, envia um ou mais pedidos extra de protocolo para descobrir o caminho "verdadeiro" absoluto.

  • O diretório raiz mostra os contentores.
  • Cada contentor funciona como uma chroot virtual. Uma vez dentro dela, não se pode ir por cima nem para fora.
  • Os caminhos são virtuais, não físicos. O Azure não suporta /-baseada travessia absoluta acima de contentores.

Resolva este problema utilizando uma das seguintes opções:

  • Desativar Resolver Links Simbólicos. Navegue até Avançado->Ambiente->Diretórios e desmarque Resolver Links Simbólicos.

  • Define o diretório remoto. Navegue até Diretórios> de Ambiente> Avançado e defina o Diretório Remoto como "\<nome-contêiner>". Ao definir este valor, entra diretamente no contentor especificado após iniciar sessão.

Consulte também