Condividi tramite


Autorizzare l'accesso SFTP (SSH File Transfer Protocol) ai BLOB usando Microsoft Entra ID (anteprima)

Azure Blob Storage SFTP supporta ora l'accesso basato su Microsoft Entra ID in anteprima pubblica. In precedenza, Azure Blob Storage SFTP supportava solo l'accesso locale basato sull'utente, richiedeva l'autenticazione tramite password o chiave privata SSH. Usando questa nuova funzionalità, gli utenti possono applicare l'ID Microsoft Entra o entra identità esterne per connettersi agli account di archiviazione di Azure tramite SFTP senza dover creare e gestire gli utenti locali.

L'accesso basato su ID di Microsoft Entra offre molti vantaggi al SFTP di Azure Blob Storage, tra cui il controllo degli accessi in base al ruolo (RBAC), l'autenticazione a più fattori (MFA) e le liste di controllo degli accessi (ACL) di Microsoft Entra ID.

Importante

L'accesso basato su ID Microsoft Entra per Azure Blob Storage SFTP è attualmente disponibile in ANTEPRIMA. Consultare i Termini supplementari di utilizzo per le anteprime di Microsoft Azure per i termini legali applicabili alle funzionalità di Azure in versione beta, anteprima o non ancora rilasciate in versione generale. Una volta abilitata, questa funzionalità si applica a tutti gli account di archiviazione all'interno dell'intera sottoscrizione.

Vantaggi principali

  • Eliminare la gestione degli utenti locali : usando l'accesso basato su ID Di Microsoft Entra, non è necessario creare, ruotare o gestire gli utenti SFTP locali per ogni account di archiviazione. Microsoft Entra ID gestisce l'autenticazione, riducendo significativamente il sovraccarico operativo e la complessità della configurazione.

  • Identità e sicurezza di livello aziendale : l'accesso SFTP usa l'ID Microsoft Entra, che abilita:

    • Gestione centralizzata del ciclo di vita delle identità
    • Autenticazione avanzata, inclusa l'autenticazione a più fattori tramite Microsoft Entra ID
    • Comportamento di sicurezza coerente allineato agli standard IAM aziendali
    • Questo approccio migliora la sicurezza rispetto alle credenziali locali statiche di lunga durata.
  • Integrazione nativa di Azure RBAC, ABAC e ACL - L'autorizzazione per SFTP corrisponde al modello di controllo degli accessi esistente di Azure Blob Storage:

    • Controllo degli accessi in base al ruolo
    • Controllo degli accessi in base all'attributo
    • Elenchi di controllo di accesso in stile POSIX (ACL)
    • Gli utenti possono applicare gli stessi ruoli e autorizzazioni usati per l'accesso REST, SDK e portale a SFTP.
  • Onboarding SFTP più veloce - Poiché gli account ID di Microsoft Entra sono molto diffusi, gli utenti possono:

    • Riutilizzare utenti, gruppi ed entità servizio esistenti
    • Evitare la creazione e la distribuzione delle chiavi locali che richiedono molto tempo
    • Ottenere SFTP operativo più velocemente con un minor numero di passaggi di configurazione
    • Abbreviare significativamente il tempo per realizzare valore per i flussi di lavoro basati su SFTP
  • Collaborazione esterna sicura : usando identità esterne microsoft Entra ID, i clienti possono concedere in modo sicuro l'accesso SFTP ai partner e ai fornitori senza gestire sistemi di identità separati, mantenendo al contempo controllo completo e controllabilità.

Informazioni generali

La panoramica generale seguente descrive i passaggi chiave coinvolti in questo processo. Prima di tutto si esegue l'autenticazione usando Microsoft Entra ID, quindi si ottiene un certificato OpenSSH e infine si connette a SFTP di Archiviazione BLOB di Azure usando un client o un SDK compatibile. Le sezioni seguenti descrivono in modo più dettagliato ognuno di questi passaggi.

  1. Eseguire l'autenticazione con Microsoft Entra ID tramite l'interfaccia della riga di comando di Azure, PowerShell, SDK e altro ancora.

  2. Ottenere un certificato OpenSSH da Microsoft Entra ID passando una chiave pubblica.

  3. Usare un qualsiasi client SFTP o SDK che supporti i certificati OpenSSH per connettersi ad Azure Storage utilizzando il certificato OpenSSH e la chiave pubblica del passaggio 2.

    Annotazioni

    L'autenticazione basata su password non è supportata perché nessun client SFTP dispone dell'integrazione nativa di Microsoft Entra ID per fornire un'esperienza utente di Microsoft Entra ID per l'immissione della password.

Connessione all'archiviazione BLOB di Azure con ID di Microsoft Entra

Registrare la funzionalità

Registrare sulla sottoscrizione di Azure la funzionalità di anteprima SFTP Entra ID Support. Per informazioni su come registrare una funzionalità di anteprima, vedere la guida alle funzionalità di anteprima.

Generare un certificato OpenSSH

Generare il certificato OpenSSH con il comando az sftp dell'interfaccia della riga di comando di Azure, come illustrato nell'esempio seguente.

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

Per motivi di sicurezza, il certificato è valido solo per 65 minuti. Dopo la scadenza, è necessario eseguire di nuovo il comando per ottenere un nuovo certificato.

Annotazioni

Attualmente, solo l'interfaccia della riga di comando di Azure e Azure PowerShell supportano il recupero di certificati SSH. Il supporto del portale di Azure per il download dei certificati SSH non è ancora disponibile.

Facoltativamente, è possibile generare la propria coppia di chiavi SSH e usarla durante il download del certificato.

Genera coppia di chiavi SSH: è necessario usare le chiavi RSA, perché Microsoft Entra ID supporta solo i certificati RSA.

ssh-keygen -t rsa

Verranno generati i file di chiave seguenti:

FileName Tipo di chiave
id_rsa Chiave privata
id_rsa.pub Chiave pubblica

Usare il comando seguente per generare il certificato SSH con le chiavi generate:

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

Se si sta utilizzando un principal del servizio, è possibile accedere utilizzando un segreto client o un certificato:

Per accedere usando un certificato, usare il comando seguente:

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

Per accedere usando un segreto client, usare il comando seguente:

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

Dopo l'autenticazione, eseguire lo stesso comando per scaricare il certificato:

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

Verificare il contenuto del certificato OpenSSH [Facoltativo]

Usare il comando seguente per visualizzare il certificato OpenSSH:

ssh-keygen -L -f my_cert.pub

Nell'output la sezione Principals contiene il nome utente.

Screenshot della sezione

Per motivi di sicurezza, il certificato OpenSSH è valido per 65 minuti. Dopo questo periodo, è necessario richiedere un nuovo certificato per avviare altre transazioni.

Connettersi all'account di archiviazione usando OpenSSH

Connettersi usando un comando SFTP

C:\Users\username> sftp -o PubkeyAcceptedKeyTypes="rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-256" -o IdentityFile="C:\path\to\key\.ssh\id_rsa" -o CertificateFile="C:\path\to\cert\.ssh\my_cert.pub" storageaccountname.username@storageaccountname.blob.core.windows.net
Connected to storageaccountname.blob.core.windows.net.
sftp>

Se l'entità usa il formato username@domain.com, assicurarsi di escludere la sezione dominio nel comando e usare solo la parte del nome utente.

Sono supportati sia i principali utente che i principali servizio. Per i principal del servizio, utilizzare l'ID principale del servizio al posto del nome utente nella stringa di connessione.

Annotazioni

L'aggiunta del nome del contenitore direttamente alla stringa di connessione o la configurazione tramite home directory non è attualmente supportata.

Dopo la connessione, usare il comando seguente per caricare un file in Archiviazione di Azure tramite SFTP:

sftp> put 'C:\path\to\blob\blog.jpeg'

Se ricevi un errore di permesso negato, assicurati di avere i ruoli di Azure necessari, come Collaboratore ai dati BLOB di archiviazione o Proprietario dei dati BLOB di archiviazione.

Connettersi tramite un client desktop SFTP

I client SFTP, ad esempio WinSCP e PuTTY, supportano l'autenticazione basata su OpenSSH. La procedura seguente illustra come connettersi tramite WinSCP:

  1. WinSCP: il supporto per i certificati OpenSSH per l'autenticazione utente è stato implementato nella versione 6.0 (https://winscp.net/tracker/1873)

  2. Ottenere il certificato OpenSSH dal passaggio precedente (Generare il certificato OpenSSH)

  3. In WinSCP immettere il nome host e il nome utente e quindi selezionare Avanzate

    Screenshot della finestra di login e dell'opzione Avanzate.

  4. Nella scheda SSH passare alla sezione Autenticazione. Allegare i file di chiave privata e certificato ottenuti dalle sezioni precedenti e quindi selezionare OK.

    Screenshot delle impostazioni di autenticazione nella finestra di dialogo delle Impostazioni avanzate del sito.

  5. Selezionare Accedi per accedere usando l'account Microsoft Entra ID e il certificato OpenSSH.

    Screenshot della finestra di dialogo Accesso.

Usare il comando seguente per connettersi usando il certificato OpenSSH ottenuto nei passaggi precedenti:

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

Inoltre, è possibile ottenere il certificato OpenSSH e connettersi a SFTP usando un singolo comando come indicato di seguito:

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

Per altre informazioni sui comandi, vedere qui.

Modello di controllo degli accessi basato su Microsoft Entra ID in SFTP di Archiviazione BLOB di Azure

Meccanismo Stato Tutorial
Controllo degli accessi in base al ruolo (Azure RBAC) Supportato Modello di controllo di accesso per Azure Data Lake Storage - Archiviazione di Azure | Microsoft Learn
Elenchi di controllo di accesso (ACL) Supportato Modello di controllo di accesso per Azure Data Lake Storage - Archiviazione di Azure | Microsoft Learn
Controllo degli accessi in base all'attributo (ABAC di Azure) Non supportato nell'anteprima pubblica. Se esiste una regola ABAC, per SFTP viene ignorata.

Modalità di valutazione delle autorizzazioni

SFTP rispecchia il modello di controllo di accesso di Blob Storage di Azure. Per altre informazioni, vedere Modello di controllo di accesso in Azure Data Lake Storage. Tuttavia, durante l'anteprima pubblica, il supporto per il controllo degli accessi basato sugli attributi (ABAC) è parziale. Per altre informazioni, vedere la sezione Problemi noti e limitazioni.

Condivisione dell'accesso agli utenti esterni al tenant principale di Microsoft Entra ID

Le organizzazioni spesso devono condividere l'accesso SFTP di Archiviazione BLOB di Azure con partner e clienti esterni. Le identità esterne di Microsoft Entra possono soddisfare questo requisito abilitando SFTP di Azure Blob Storage per fornire l'accesso sicuro ai collaboratori esterni. Questa funzionalità consente connessioni e interazioni efficienti e sicure con le risorse di archiviazione. Usando le funzionalità di identità esterna di Microsoft Entra ID, le organizzazioni possono mantenere misure di sicurezza e controllo di accesso avanzate, abilitando al contempo la collaborazione con entità esterne. Altre informazioni sull'aggiunta di utenti guest.

Problemi noti e limitazioni

  • Il supporto di Microsoft Entra ID è limitato ai certificati SSH e all'autenticazione con chiave pubblica.

  • Sono supportati solo i certificati RSA. ECDSA non è supportato.

  • Il comportamento ABAC non è coerente quando viene usato con il ruolo di Proprietario dei dati del blob di archiviazione e potrebbe causare errori di timeout. Per usare ABAC, scegliere il ruolo di Collaboratore ai dati dei BLOB di archiviazione, oppure utilizzare il ruolo di Proprietario dati BLOB di archiviazione senza ABAC.

  • Le sottooperazioni ABAC non sono supportate e si comportano in modo non corretto. Nell'elenco seguente vengono visualizzati comportamenti specifici delle sottooperazioni:

    • Elencare i BLOB (Blob.List): Gli utenti possono elencare i BLOB senza restrizioni e le espressioni di condizione ABAC vengono ignorate.

    • Leggere un BLOB (NON Blob.List): Funziona come previsto con le espressioni di condizione del controllo di accesso basato sugli attributi (ABAC). Tuttavia, per tutti gli altri casi, anche l'azione Elenca BLOB (Blob.List) fallisce inaspettatamente oltre al previsto errore di Lettura di un BLOB (NON Blob.List).

    • (Deprecato) Leggere il contenuto da un BLOB con condizioni di tag (Blob.Read.WithTagConditions): Le espressioni di condizione ABAC vengono ignorate.

    • Impostare il livello di accesso in un BLOB (Blob.Write.Tier): Le espressioni di condizione ABAC vengono ignorate.

    • Scrivere in un BLOB con tag indice BLOB (Blob.Write.WithTagHeaders): le espressioni di condizione ABAC vengono ignorate.

  • L'impostazione di una home directory non è supportata.

  • La stringa di connessione non può includere il nome del contenitore. L'utente si connette alla radice dell'account di archiviazione e quindi passa al contenitore di destinazione e alle directory usando i comandi 'change directory' (cd).

  • Al momento,chown e chgrp richiedono privilegi di superutente e autorizzazioni di gestione della proprietà, oppure autorizzazioni di gestione della proprietà, lettura e scrittura. In futuro sono richiesti solo i ruoli di gestione della proprietà o di superutente.

  • Per chmod, il requisito attuale è essere superutente e avere permessi di modifica, oppure avere permessi di modifica, lettura e scrittura. In futuro sarà necessario modificare solo i permessi o avere un superutente.

Risoluzione dei problemi

L'apertura di ogni contenitore fallisce con "Accesso negato"

Un Access denied errore può verificarsi anche se è possibile connettersi agli account di archiviazione tramite WinSCP ed è possibile visualizzare l'elenco dei contenitori dopo l'accesso.

Questo errore può verificarsi perché WinSCP tenta automaticamente di canonizzare ogni directory immessa. Ciò significa che per ognicd elenco di directory, invia una o più richieste di protocollo aggiuntive per individuare il percorso assoluto "vero".

  • La directory radice mostra container.
  • Ogni contenitore funge da chroot virtuale. Una volta che sei dentro di esso, non puoi andare sopra o fuori di esso.
  • I percorsi sono virtuali, non fisici. Azure non supporta l'attraversamento assoluto sopra i contenitori basato su /.

Risolvere il problema usando una delle opzioni seguenti:

  • Disabilitare Risolvi collegamenti simbolici. Passare a Advanced->Environment->Directories e deselezionare Risolvi collegamenti simbolici.

  • Impostare la directory remota. Passa a Advanced->Environment->Directories e imposta Remote Directory su "\<container-name>". Impostando questo valore, accedi direttamente al contenitore specificato dopo aver effettuato l'accesso.

Vedere anche