Freigeben über


Autorisieren des SSH File Transfer Protocol (SFTP)-Zugriffs auf Blobs mit Microsoft Entra ID (Vorschau)

Azure Blob Storage SFTP unterstützt jetzt Microsoft Entra ID-basierten Zugriff in der öffentlichen Vorschau. Zuvor unterstützte Azure Blob Storage SFTP nur den lokalen benutzerbasierten Zugriff, der entweder ein Kennwort oder einen privaten SSH-Schlüssel für die Authentifizierung erfordert. Mithilfe dieses neuen Features können Benutzer ihre Microsoft Entra-ID oder entra External Identities anwenden, um über SFTP eine Verbindung mit Azure-Speicherkonten herzustellen, ohne lokale Benutzer erstellen und verwalten zu müssen.

Microsoft Entra ID-basierter Zugriff bietet Azure Blob Storage SFTP viele Vorteile, einschließlich rollenbasierter Zugriffssteuerung (RBAC), mehrstufiger Authentifizierung (MFA) und Microsoft Entra ID Access Control Lists (ACLs).

Von Bedeutung

Microsoft Entra ID-basierter Zugriff für Azure Blob Storage SFTP befindet sich derzeit in der Vorschau. Die zusätzlichen Nutzungsbestimmungen für Microsoft Azure-Vorschauen enthalten rechtliche Bedingungen. Sie gelten für diejenigen Azure-Features, die sich in der Beta- oder Vorschauversion befinden oder aber anderweitig noch nicht zur allgemeinen Verfügbarkeit freigegeben sind. Nach der Aktivierung gilt dieses Feature für alle Speicherkonten innerhalb des gesamten Abonnements.

Hauptvorteile

  • Entfernen Sie die lokale Benutzerverwaltung – Mit Microsoft Entra ID-basierten Zugriff müssen Sie keine lokalen SFTP-Benutzer für jedes Speicherkonto erstellen, drehen oder verwalten. Die Microsoft Entra-ID behandelt die Authentifizierung, wodurch der Betriebsaufwand und die Komplexität der Konfiguration erheblich reduziert werden.

  • Identität und Sicherheit auf Unternehmensniveau – SFTP-Zugriff verwendet Microsoft Entra-ID, die Folgendes ermöglicht:

    • Zentralisierte Identitätslebenszyklusverwaltung
    • Starke Authentifizierung, einschließlich MFA über die Microsoft Entra-ID
    • Einheitliches Sicherheitsprofil, das an den Unternehmens-IAM-Standards ausgerichtet ist.
    • Dieser Ansatz verbessert die Sicherheit im Vergleich zu statischen, langlebigen lokalen Anmeldeinformationen.
  • Native Azure RBAC-, ABAC- und ACL-Integration – Autorisierung für SFTP entspricht dem vorhandenen Zugriffssteuerungsmodell von Azure Blob Storage:

    • Rollenbasierte Zugriffssteuerung (RBAC)
    • Attributbasierte Zugriffssteuerung (ABAC)
    • Access Control Lists (ACLs) im POSIX-Stil
    • Benutzer können dieselben Rollen und Berechtigungen anwenden, die für REST-, SDK- und Portalzugriff auf SFTP verwendet werden.
  • Schnelleres SFTP-Onboarding – Da Microsoft Entra-ID-Konten überall vorhanden sind, können Benutzer:

    • Wiederverwenden vorhandener Benutzer, Gruppen und Dienstprinzipale
    • Vermeiden sie zeitaufwendige lokale Benutzererstellung und Schlüsselverteilung
    • Mit weniger Setupschritten können Sie SFTP schneller ausführen.
    • Erheblich verkürzte Zeit-zu-Wert für SFTP-basierte Workflows
  • Sichere externe Zusammenarbeit – Mithilfe der externen Identitäten von Microsoft Entra ID können Kunden SFTP-Zugriff auf Partner und Anbieter sicher gewähren, ohne separate Identitätssysteme zu verwalten und gleichzeitig die volle Kontrolle und Auditierbarkeit zu gewährleisten.

Übersicht

Die folgende allgemeine Übersicht beschreibt die wichtigsten Schritte, die an diesem Prozess beteiligt sind. Sie authentifizieren sich zuerst mithilfe der Microsoft Entra-ID, rufen dann ein OpenSSH-Zertifikat ab und stellen schließlich mithilfe eines kompatiblen Clients oder SDK eine Verbindung mit Azure Blob Storage SFTP her. In den folgenden Abschnitten werden die einzelnen Schritte ausführlicher beschrieben.

  1. Authentifizieren Sie sich mit Microsoft Entra ID über Azure CLI, PowerShell, SDK und mehr.

  2. Rufen Sie ein OpenSSH-Zertifikat von der Microsoft Entra-ID ab, indem Sie einen öffentlichen Schlüssel übergeben.

  3. Verwenden Sie einen beliebigen SFTP-Client oder ein SDK, der OpenSSH-Zertifikate unterstützt, um eine Verbindung mit Azure Storage mit dem OpenSSH-Zertifikat und dem öffentlichen Schlüssel aus Schritt 2 herzustellen.

    Hinweis

    Die kennwortbasierte Authentifizierung wird nicht unterstützt, da keine SFTP-Clients systemeigene Microsoft Entra-ID-Integration haben, um eine Microsoft Entra ID-Benutzeroberfläche für die Kennworteingabe bereitzustellen.

Verbindung mit Azure Blob Storage mithilfe von Microsoft Entra-IDs herstellen

Registrieren der Funktion

Registrieren Sie das SFTP Entra ID Support Vorschaufeature in Ihrem Azure-Abonnement. Informationen zum Registrieren eines Vorschaufeatures finden Sie im Handbuch zu Vorschaufeatures.

OpenSSH-Zertifikat generieren

Generieren Sie das OpenSSH-Zertifikat mit dem Azure CLI az sftp-Befehl , wie im folgenden Beispiel gezeigt.

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

Aus Sicherheitsgründen ist das Zertifikat nur 65 Minuten gültig. Nach Ablauf des Vorgangs müssen Sie den Befehl erneut ausführen, um ein neues Zertifikat zu erhalten.

Hinweis

Derzeit unterstützen nur Azure CLI und Azure PowerShell das Abrufen von SSH-Zertifikaten. Die Unterstützung des Azure-Portals zum Herunterladen von SSH-Zertifikaten ist noch nicht verfügbar.

Optional können Sie ein eigenes SSH-Schlüsselpaar generieren und beim Herunterladen des Zertifikats verwenden.

SSH-Schlüsselpaar generieren: Sie müssen RSA-Schlüssel verwenden, da Microsoft Entra-ID nur RSA-Zertifikate unterstützt.

ssh-keygen -t rsa

Die folgenden Schlüsseldateien werden generiert:

Dateiname Schlüsseltyp
id_rsa Privater Schlüssel
id_rsa.pub Öffentlicher Schlüssel

Verwenden Sie den folgenden Befehl, um das SSH-Zertifikat mit den generierten Schlüsseln zu generieren:

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

Wenn Sie einen Dienstprinzipal verwenden, können Sie sich entweder mit einem geheimen Clientschlüssel oder einem Zertifikat anmelden:

Verwenden Sie den folgenden Befehl, um sich mit einem Zertifikat anzumelden:

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

Verwenden Sie den folgenden Befehl, um sich mit einem geheimen Clientschlüssel anzumelden:

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

Führen Sie nach der Authentifizierung denselben Befehl aus, um das Zertifikat herunterzuladen:

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

Überprüfen des Inhalts des OpenSSH-Zertifikats [Optional]

Verwenden Sie den folgenden Befehl, um das OpenSSH-Zertifikat anzuzeigen:

ssh-keygen -L -f my_cert.pub

In der Ausgabe enthält der Abschnitt "Prinzipale" den Benutzernamen.

Screenshot des Abschnitts „Hauptkomponenten” in der Ausgabe des Befehls.

Aus Sicherheitsgründen ist das OpenSSH-Zertifikat 65 Minuten gültig. Nach diesem Zeitraum müssen Sie ein neues Zertifikat anfordern, um weitere Transaktionen zu initiieren.

Herstellen einer Verbindung mit dem Speicherkonto mithilfe von OpenSSH

Verbinden mithilfe eines SFTP-Befehls

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>

Wenn der Principal das Format username@domain.com verwendet, schließen Sie den Domänenabschnitt im Befehl aus und verwenden Sie nur den Benutzernamen.

Sowohl Benutzer- als auch Dienstprinzipale werden unterstützt. Verwenden Sie für Dienstprinzipale anstelle des Benutzernamens in der Verbindungszeichenfolge die Dienstprinzipal-ID.

Hinweis

Das direkte Hinzufügen des Containernamens zur Verbindungszeichenfolge oder das Einrichten über das Startverzeichnis wird derzeit nicht unterstützt.

Nachdem die Verbindung hergestellt wurde, verwenden Sie den folgenden Befehl, um eine Datei über SFTP in Azure Storage hochzuladen:

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

Wenn Sie einen Fehler "Berechtigung verweigert" erhalten, stellen Sie sicher, dass Sie über die erforderlichen Azure-Rollen wie "Storage Blob Data Contributor" oder "Storage Blob Data Owner" verfügen.

Herstellen einer Verbindung mithilfe eines SFTP-Desktopclients

SFTP-Clients wie WinSCP und PuTTY unterstützen die OpenSSH-basierte Authentifizierung. Die folgenden Schritte zeigen, wie Sie mithilfe von WinSCP eine Verbindung herstellen:

  1. WinSCP: Unterstützung für OpenSSH-Zertifikate für die Benutzerauthentifizierung wurde in Version 6.0 implementiert (https://winscp.net/tracker/1873)

  2. Erhalten Sie das OpenSSH-Zertifikat aus dem vorherigen Schritt (Generierung des OpenSSH-Zertifikats)

  3. Geben Sie in WinSCP den Hostnamen und den Benutzernamen ein, und wählen Sie dann "Erweitert" aus.

    Screenshot des Anmeldefensters und der Option

  4. Wechseln Sie auf der Registerkarte SSH zum Abschnitt "Authentifizierung". Fügen Sie die aus den vorherigen Abschnitten abgerufenen privaten Schlüssel- und Zertifikatdateien an, und wählen Sie dann "OK" aus.

    Screenshot der Authentifizierungseinstellungen im Dialogfeld

  5. Wählen Sie "Anmelden " aus, um sich mit dem Microsoft Entra ID-Konto und dem OpenSSH-Zertifikat anzumelden.

    Screenshot des Dialogfelds

Verwenden Sie den folgenden Befehl, um eine Verbindung mithilfe des openSSH-Zertifikats herzustellen, das in den vorherigen Schritten abgerufen wurde:

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

Darüber hinaus können Sie das OpenSSH-Zertifikat abrufen und eine Verbindung mit SFTP herstellen, indem Sie einen einzelnen Befehl wie folgt verwenden:

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

Weitere Informationen zu den Befehlen finden Sie hier.

Microsoft Entra ID-basiertes Zugriffssteuerungsmodell in Azure Blob Storage SFTP

Mechanismus Status Tutorial
Rollenbasierte Zugriffssteuerung (Azure RBAC) Unterstützt Zugriffssteuerungsmodell für Azure Data Lake Storage – Azure Storage | Microsoft Learn
Zugriffssteuerungslisten (ACLs) Unterstützt Zugriffssteuerungsmodell für Azure Data Lake Storage – Azure Storage | Microsoft Learn
Attributbasierte Zugriffssteuerung (Azure ABAC) In der öffentlichen Vorschau nicht unterstützt. Wenn eine ABAC-Regel vorhanden ist, wird sie für SFTP ignoriert.

Wie Berechtigungen ausgewertet werden

SFTP spiegelt das Zugriffssteuerungsmodell von Azure Blob Storage. Weitere Informationen finden Sie unter Access Control Model in Azure Data Lake Storage. Während der öffentlichen Vorschau ist die ABAC-Unterstützung jedoch nur teilweise verfügbar. Weitere Informationen finden Sie im Abschnitt "Bekannte Probleme und Einschränkungen".

Freigeben des Zugriffs auf Benutzer außerhalb des Microsoft Entra ID-Mandanten

Organisationen müssen häufig azure Blob Storage SFTP-Zugriff für externe Partner und Kunden freigeben. Externe Identitäten von Microsoft Entra können diese Anforderung erfüllen, indem Azure Blob Storage SFTP den sicheren Zugriff auf externe Mitarbeiter ermöglicht. Dieses Feature ermöglicht effiziente und sichere Verbindungen und Interaktionen mit Speicherressourcen. Mithilfe der Externen Identitätsfunktionen von Microsoft Entra ID können Organisationen eine starke Zugriffssteuerung und Sicherheitsmaßnahmen beibehalten und gleichzeitig die Zusammenarbeit mit externen Entitäten ermöglichen. Erfahren Sie mehr über das Hinzufügen von Gastbenutzern.

Bekannte Probleme und Einschränkungen

  • Die Unterstützung der Microsoft Entra-ID ist auf SSH-Zertifikate und die Authentifizierung öffentlicher Schlüssel beschränkt.

  • Nur RSA-Zertifikate werden unterstützt. ECDSA wird nicht unterstützt.

  • ABAC-Verhalten ist inkonsistent, wenn sie mit der Rolle "Storage Blob Data Owner" verwendet wird und zu Timeoutfehlern führen kann. Um ABAC zu verwenden, wählen Sie die Rolle „Mitwirkender von Speicher-BLOB-Daten” aus, oder verwenden Sie die Rolle „Eigentümer der Blob-Daten” ohne ABAC.

  • ABAC-Unteroperationen werden nicht unterstützt und verhalten sich falsch. Bestimmte Verhaltensweisen der Unteroperationen werden in der folgenden Liste angezeigt:

    • Blobs auflisten (Blob.List): Benutzer können Blobs ohne Einschränkungen auflisten, und die ABAC-Bedingungsausdrücke werden ignoriert.

    • Lesen eines Blobs (NOT Blob.List): Funktioniert wie erwartet mit den angegebenen ABAC-Bedingungsausdrücken. In allen anderen Fällen schlägt die Aktion "Blobs auflisten" (Blob.List) jedoch auch unerwartet fehl, zusätzlich zum erwarteten Fehler beim Lesen eines Blobs (NICHT Blob.List).

    • (Veraltet) Lesen von Inhalten aus einem Blob mit Tagbedingungen (Blob.Read.WithTagConditions): Die ABAC-Bedingungsausdrücke werden ignoriert.

    • Legen Sie die Zugriffsebene für ein Blob (Blob.Write.Tier) fest: Die ABAC-Bedingungsausdrücke werden ignoriert.

    • Schreiben in ein Blob mit Blob-Indextag (Blob.Write.WithTagHeaders): Die ABAC-Bedingungsausdrücke werden ignoriert.

  • Das Festlegen eines Home-Verzeichnisses wird nicht unterstützt.

  • Die Verbindungszeichenfolge kann den Containernamen nicht enthalten. Der Benutzer stellt eine Verbindung mit dem Root des Speicherkontos her und navigiert dann mithilfe von 'cd' (change directory) Befehlen zum Zielcontainer und zu den Verzeichnissen.

  • chown und chgrp erfordern derzeit entweder Superuser- und Besitzerverwaltungsberechtigungen oder Besitzerverwaltungs-, Lese- und Schreibberechtigungen. Zukünftig sind nur Besitzer- oder Administratorrollen erforderlich.

  • Für chmod ist die aktuelle Anforderung, dass entweder Superuser-Rechte und Änderungsberechtigungen erforderlich sind, oder Änderungs-, Lese- und Schreibberechtigungen vorliegen müssen. Zukünftig ist entweder eine Änderung der Berechtigungen erforderlich oder ein Superuser.

Problembehandlung

Das Öffnen eines Containers schlägt mit "Zugriff verweigert" fehl.

Ein Access denied Fehler kann auch dann auftreten, wenn Sie über WinSCP eine Verbindung mit Speicherkonten herstellen können und die Liste der Container nach der Anmeldung angezeigt wird.

Dieser Fehler kann auftreten, da WinSCP automatisch versucht, jedes eingegebene Verzeichnis zu kanonisieren . Dies bedeutet, dass für jedecd Verzeichnisauflistung eine oder mehrere zusätzliche Protokollanforderungen gesendet werden, um den echten absoluten Pfad zu ermitteln.

  • Das Stammverzeichnis zeigt Container an.
  • Jeder Container fungiert als virtuelles Chroot. Sobald Sie sich darin befinden, können Sie nicht über oder außerhalb davon gehen.
  • Pfade sind virtuell, nicht physisch. Azure unterstützt keine c0-basierte absolute Navigation über Container hinaus.

Beheben Sie dieses Problem mithilfe einer der folgenden Optionen:

  • Deaktivieren Sie die Auflösung symbolischer Verknüpfungen. Navigieren Sie zu Advanced->Environment->Verzeichnissen, und entfernen Sie die Markierung Symbolische Links auflösen.

  • Legen Sie das Remote-Verzeichnis fest. Navigieren Sie zu Advanced->Environment->Verzeichnissen, und legen Sie Remote-Verzeichnis auf "\<containername>" fest. Durch Festlegen dieses Werts geben Sie den angegebenen Container direkt nach der Anmeldung ein.

Siehe auch