Freigeben über


Zugriff auf Azure-Dateifreigaben per SMB mit verwalteten Identitäten über Microsoft Entra ID (Vorschau)

Gilt für: ✔️ SMB Azure-Dateifreigaben

In diesem Artikel wird erläutert, wie Sie verwaltete Identitäten verwenden können, um virtuellen Windows- und Linux-Computern (VMs) den Zugriff auf SMB Azure-Dateifreigaben mithilfe der identitätsbasierten Authentifizierung mit Microsoft Entra ID (Vorschau) zu ermöglichen.

Eine verwaltete Identität ist eine Identität in microsoft Entra-ID, die automatisch von Azure verwaltet wird. Bei der Entwicklung von Cloudanwendungen verwenden Sie in der Regel verwaltete Identitäten, um die Anmeldeinformationen für die Authentifizierung bei Azure-Diensten zu verwalten.

Am Ende dieses Leitfadens haben Sie ein Speicherkonto bereit, auf das Sie mit einer verwalteten Identität zugreifen können. Außerdem wissen Sie, wie Sie eine verwaltete Identität für einen virtuellen Computer erstellen und ein OAuth-Token dafür generieren. Dann stellen Sie eine Dateifreigabe mit verwalteter, identitätsbasierter Authentifizierung und Autorisierung bereit, sodass kein Speicherkontoschlüssel verwendet werden muss.

Gründe für die Authentifizierung mithilfe einer verwalteten Identität?

Aus Sicherheitsgründen wird die Verwendung von Speicherkontoschlüsseln für den Zugriff auf eine Dateifreigabe nicht empfohlen. Wenn Sie einer VM eine verwaltete Identität zuweisen oder eine Anwendungsidentität verwenden, können Sie diese Identität verwenden, um sich bei Azure Files zu authentifizieren.

Dies hat unter anderem folgende Vorteile:

  • Erweiterte Sicherheit: Keine Abhängigkeit von Speicherkontoschlüsseln zum Verwalten oder Verfügbarmachen

  • Vereinfachte Verwaltung: Keine Schlüsseldrehung erforderlich

  • Feinkornierte Zugriffssteuerung: Rollenbasierter Zugriff auf Identitätsebene

  • Automatisierungsfreundlich: Einfache Integration in CI/CD-Pipelines, Azure Kubernetes Service (AKS)-Workloads und Kundenanwendungen

  • Kostengünstige: Verwaltete Identitäten können ohne zusätzliche Speicherkosten verwendet werden

Vom System zugewiesene und vom Benutzer zugewiesene verwaltete Identitäten

Es gibt zwei Arten von verwalteten Identitäten in Azure: system assigned and user assigned.

Eine vom System zugewiesene verwaltete Identität ist auf eine pro Ressource beschränkt und an den Lebenszyklus dieser Ressource gebunden. Sie können der verwalteten Identität mithilfe der rollenbasierten Zugriffssteuerung von Azure (Azure RBAC) Berechtigungen erteilen. Die verwaltete Identität wird mit Microsoft Entra ID authentifiziert, sodass Sie keine Anmeldeinformationen im Code speichern müssen. Vom System zugewiesene verwaltete Identitäten werden auf Linux-VMs nicht unterstützt.

Mit vom Benutzer zugewiesenen verwalteten Identitäten können Azure-Ressourcen sich bei Clouddiensten authentifizieren, ohne Anmeldeinformationen im Code zu speichern. Diese Art von verwalteten Identitäten wird als eigenständige Azure-Ressource erstellt und verfügt über einen eigenen Lebenszyklus. Eine einzelne Ressource, z. B. eine VM, kann mehrere vom Benutzer zugewiesene verwaltete Identitäten verwenden. Ebenso kann eine einzelne vom Benutzer zugewiesene verwaltete Identität über mehrere virtuelle Computer hinweg freigegeben werden.

Windows-VMs können sowohl vom Benutzer zugewiesene als auch vom System zugewiesene verwaltete Identitäten konfiguriert haben.

Voraussetzungen

In diesem Artikel wird davon ausgegangen, dass Sie über ein Azure-Abonnement mit den erforderlichen Berechtigungen zum Erstellen von Speicherkonten und Zuweisen von Azure-RBAC-Rollen (Role-Based Access Control) verfügen. Zum Zuweisen von Rollen müssen Sie über die Berechtigung zum Schreiben von Rollenzuweisungen (Microsoft.Authorization/roleAssignments/write) im Bereich verfügen, in dem Sie die Rolle zuweisen möchten.

Darüber hinaus sollten die Clients, die sich mit einer verwalteten Identität authentifizieren müssen, keiner Domäne beigetreten sein.

Vorbereiten der PowerShell-Umgebung

Öffnen Sie PowerShell als Administrator, und führen Sie den folgenden Befehl aus, um die PowerShell-Ausführungsrichtlinie festzulegen:

Set-ExecutionPolicy Unrestricted -Scope CurrentUser 

Stellen Sie sicher, dass Sie über das neueste PowerShellGet verfügen:

Install-Module PowerShellGet -Force -AllowClobber 

Installieren Sie das Az-Modul, wenn es noch nicht installiert ist:

Install-Module -Name Az -Repository PSGallery -Force 
Import-Module Az 

Melden Sie sich bei Azure an:

Connect-AzAccount

Wählen Sie Ihr Abonnement aus, indem Sie Ihre Abonnement-ID angeben (empfohlen):

Set-AzContext -SubscriptionId "<subscription-ID>" 

Sie können Ihr Abonnement auch auswählen, indem Sie Ihren Abonnementnamen angeben:

Set-AzContext -Subscription "<subscription-name>" 

Konfigurieren Sie die Eigenschaft für den verwalteten Identitätszugriff in dem Speicherkonto

Um eine verwaltete Identität zu authentifizieren, müssen Sie eine Eigenschaft namens SMBOAuth für das Speicherkonto aktivieren, das die Azure-Dateifreigabe enthält, auf die Sie zugreifen möchten. Es wird empfohlen, für diesen Zweck ein neues Speicherkonto zu erstellen. Sie können ein vorhandenes Speicherkonto nur verwenden, wenn es keine andere Identitätsquelle konfiguriert hat.

Um ein neues Speicherkonto mit aktivierter SMBOAuth zu erstellen, führen Sie den folgenden PowerShell-Befehl als Administrator aus. Ersetzen Sie <resource-group>, <storage-account-name> und <region> durch Ihre eigenen Werte. Sie können bei Bedarf eine andere SKU angeben.

New-AzStorageAccount -ResourceGroupName <resource-group> -Name <storage-account-name> -SkuName Standard_LRS -Location <region> -EnableSmbOAuth $true

Um SMBOAuth für ein vorhandenes Speicherkonto zu aktivieren, führen Sie den folgenden PowerShell-Befehl aus. Ersetzen Sie <resource-group> und <storage-account-name> durch Ihre eigenen Werte.

Set-AzStorageAccount -ResourceGroupName <resource-group> -Name <storage-account-name> -EnableSmbOAuth $true

Wenn Fehler angezeigt werden, dass die Ressource durch die Richtlinie nicht zugelassen ist, könnte auf Ihrem Abonnement möglicherweise eine Richtlinie eingerichtet sein, die Set-AzStorageAccount verhindert. Um zu umgehen, versuchen Sie es mit dem folgenden Befehl:

Set-AzStorageAccount -ResourceGroupName <resource-group> -Name <storage-account-name> -EnableSmbOAuth $true -AllowBlobPublicAccess $false

Erstellen Sie als Nächstes eine SMB-Dateifreigabe für das Speicherkonto. Ersetzen Sie <resource-group>, <storage-account-name> und <file-share-name> durch Ihre eigenen Werte.

$storageAccount = Get-AzStorageAccount -ResourceGroupName <resource-group> -Name <storage-account-name>
New-AzStorageShare -Name <file-share-name> -Context $storageAccount.Context

Sie sollten jetzt über ein Speicherkonto und eine Dateifreigabe für die SMB OAuth-Authentifizierung verfügen. Überprüfen Sie im Azure-Portal, ob Ihr Speicherkonto und die Dateifreigabe erstellt wurden.

Konfigurieren einer verwalteten Identität

Sie können verwaltete Identitäten mit Windows oder Linux verwenden. Wählen Sie die entsprechende Registerkarte aus, und folgen Sie den Anweisungen für Ihr Betriebssystem.

Die hier beschriebenen Aktivierungsschritte gelten für Azure-VMs. Wenn Sie eine verwaltete Identität auf Nicht-Azure-Windows-Computern (lokal oder in einer anderen Cloud) aktivieren möchten, müssen Sie sie in Azure Arc integrieren und eine verwaltete Identität zuweisen. Sie können sich auch mithilfe einer Anwendungsidentität authentifizieren, anstatt eine verwaltete Identität auf einem virtuellen Computer oder Windows-Gerät zu verwenden.

Aktivieren der verwalteten Identität auf einem virtuellen Azure-Computer

Führen Sie die folgenden Schritte aus, um eine verwaltete Identität auf einem virtuellen Azure-Computer zu aktivieren.

  1. Melden Sie sich beim Azure-Portal an, und erstellen Sie eine Windows-VM. Ihre VM muss Windows Server 2019 oder höher für Server-SKUs oder eine beliebige Windows-Client-SKU ausführen. Siehe Erstellen eines virtuellen Windows-Computers im Azure-Portal.

  2. Aktivieren Sie eine verwaltete Identität auf dem virtuellen Computer. Sie kann entweder vom System zugewiesen oder vom Benutzer zugewiesen werden. Wenn dem virtuellen Computer sowohl systemzugewiesene als auch benutzerzugewiesene Identitäten zugewiesen sind, verwendet Azure standardmäßig die systemzugewiesene Identität. Weisen Sie nur eins zu, um optimale Ergebnisse zu erzielen. Sie können eine vom System zugewiesene verwaltete Identität während der VM-Erstellung auf der Registerkarte " Verwaltung " aktivieren.

    Screenshot, der zeigt, wie Die vom System zugewiesene verwaltete Identität beim Erstellen eines neuen virtuellen Computers mithilfe des Azure-Portals aktiviert wird.

Zuweisen einer integrierten RBAC-Rolle zur verwalteten Identität oder Anwendungsidentität

Sobald eine verwaltete Identität aktiviert ist, können Sie alle erforderlichen Berechtigungen über Azure RBAC erteilen. Um Rollen zuzuweisen, müssen Sie als Benutzer angemeldet sein, der über Berechtigungen zum Schreiben von Rollenzuweisungen in dem Bereich verfügt, in dem Sie die Rolle zuweisen möchten.

Führen Sie die folgenden Schritte aus, um die eingebaute Azure-RBAC-Rolle Speicherdateien-SMB-MI-Administrator zuzuweisen, die den administrativen Zugriff auf verwaltete Identitäten für Dateien und Verzeichnisse in Azure Files ermöglicht.

  1. Gehen Sie zu dem Speicherkonto, das die Dateifreigabe enthält, die Sie mithilfe einer verwalteten Identität einbinden möchten. Wählen Sie im Menü "Service " die Zugriffssteuerung (IAM) aus.

  2. Unter Zugriff Zugriff auf diese Ressource gewähren wählen Sie Rollenzuweisung hinzufügen.

  3. Suchen Sie auf der Registerkarte "Rolle" unter "Aufgabenrollen" nach "Speicherdatei-Daten-SMB MI-Admin", und wählen Sie dann Weiter aus.

  4. Wählen Sie auf der Registerkarte " Mitglieder " unter " Zugriff zuweisen" die Option "Verwaltete Identität " für VM- oder Azure Arc-Identitäten aus. Wählen Sie für Anwendungsidentitäten "Benutzer", "Gruppe" oder "Dienstprinzipal" aus.

  5. Klicken Sie unter "Mitglieder" auf "+Mitglieder auswählen".

  6. Wählen Sie für Azure-VMs oder Azure Arc-Identitäten die verwaltete Identität für Ihren virtuellen Computer oder Ihr Windows-Gerät aus. Suchen Sie die Anwendungsidentität und wählen Sie sie aus. Klicke auf Auswählen.

  7. Nun sollte die verwaltete Identität oder Anwendungsidentität unter "Mitglieder" aufgeführt sein. Wählen Sie Weiteraus.

  8. Wählen Sie "Überprüfen" und "Zuweisen " aus, um dem Speicherkonto die Rollenzuweisung hinzuzufügen.

Vorbereiten des Clients für die Authentifizierung mithilfe einer verwalteten Identität

Führen Sie die folgenden Schritte aus, um das System vorzubereiten, damit die Dateifreigabe mithilfe der Authentifizierung über eine verwaltete Identität eingebunden werden kann. Die Schritte unterscheiden sich für Windows- und Linux-Clients. Clients sollten nicht einer Domäne beigetreten sein.

Führen Sie die folgenden Schritte aus, um Ihre Client-VM oder Ihr Windows-Gerät für die Authentifizierung mithilfe einer verwalteten Identität vorzubereiten.

  1. Melden Sie sich bei Ihrem virtuellen Computer oder Gerät an, dem die verwaltete Identität zugewiesen ist, und öffnen Sie ein PowerShell-Fenster als Administrator. Sie benötigen entweder PowerShell 5.1+ oder PowerShell 7+.

  2. Installieren Sie das Azure Files SMB Managed Identity Client PowerShell-Modul, und importieren Sie es:

    Install-Module AzFilesSMBMIClient 
    Import-Module AzFilesSMBMIClient 
    
  3. Überprüfen Sie Ihre aktuelle PowerShell-Ausführungsrichtlinie, indem Sie den folgenden Befehl ausführen:

    Get-ExecutionPolicy -List 
    

    Wenn die Ausführungsrichtlinie für CurrentUser eingeschränkt oder nicht definiert ist, ändern Sie sie in "RemoteSigned". Wenn die Ausführungsrichtlinie "RemoteSigned", "Default", "AllSigned", "Bypass" oder "Unrestricted" lautet, können Sie diesen Schritt überspringen.

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser 
    

Aktualisieren Sie die Authentifizierungsanmeldeinformationen

Bevor Sie die Dateifreigabe mithilfe der verwalteten Identität einbinden können, müssen Sie die Authentifizierungsdaten aktualisieren und Ihren Speicherkontoendpunkt angeben. Um Ihren Speicherkonto-URI zu kopieren, navigieren Sie zum Speicherkonto im Azure-Portal, und wählen Sie dann im Menü "Dienste" die Option "Endpunkte"> aus. Achten Sie darauf, den gesamten URI einschließlich des nachgestellten Schrägstrichs zu kopieren: https://<storage-account-name>.file.core.windows.net/

AzFilesSMBMIClient.exe refresh --uri https://<storage-account-name>.file.core.windows.net/

Dadurch wird ein OAuth-Token abgerufen und im Kerberos-Cache eingefügt, und das Token wird automatisch aktualisiert, wenn das Token nah am Ablauf ist. Sie können refresh optional weglassen.

Wenn Ihre Windows-VM sowohl vom Benutzer als auch vom System verwaltete Identitäten konfiguriert hat, können Sie den folgenden Befehl verwenden, um die vom Benutzer zugewiesene verwaltete Identität anzugeben. Ersetzen Sie <client-id> durch die Client-ID der verwalteten Identität.

AzFilesSmbMIClient.exe refresh --uri https://<storage-account-name>.file.core.windows.net/ --clientId <client-id> 

Tipp

Führen Sie die ausführbare Datei ohne Parameter aus, um vollständige Nutzungsinformationen und Beispiele anzuzeigen: AzFilesSmbMIClient.exe

Einbinden der Dateifreigabe

Sie sollten jetzt in der Lage sein, die Dateifreigabe unter Windows oder Linux ohne Verwendung eines Speicherkontoschlüssels zu mounten.

Auf Windows-Clients können Sie mithilfe des UNC-Pfads direkt auf Ihre Azure-Dateifreigabe zugreifen, indem Sie Folgendes in den Windows-Datei-Explorer eingeben. Stellen Sie sicher, dass Sie <storage-account-name> durch den Namen Ihres Speicherkontos und <file-share-name> durch den Namen Ihrer Dateifreigabe ersetzen:

\\<storage-account-name>.file.core.windows.net\<file-share-name>

Weitere Informationen finden Sie unter Bereitstellen der SMB Azure-Dateifreigabe unter Windows.

Problembehandlung

Die Schritte zur Problembehandlung unterscheiden sich für Windows- und Linux-Clients.

Wenn beim Einbinden der Dateifreigabe unter Windows Probleme auftreten, führen Sie die folgenden Schritte aus, um ausführliche Protokollierung zu aktivieren und Diagnoseinformationen zu sammeln.

  1. Verwenden Sie auf Windows-Clients den Registrierungs-Editor, um die Datenebene für die Ausführlichkeit auf 0x00000004 (4) festzulegen Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Azure\Storage\Files\SmbAuth.

  2. Versuchen Sie, die Freigabe erneut zu mounten, und reproduzieren Sie den Fehler.

  3. Sie sollten jetzt über eine Datei mit dem Namen AzFilesSmbMILog.logverfügen. Senden Sie die Protokolldatei an azurefilespm@microsoft.com, um Unterstützung zu erhalten.

Installations- und Integrationsoptionen für Clientbibliotheken

Die folgenden Informationen sind für Entwickler vorgesehen, die verwaltete Identitäten in ihre Anwendungen integrieren müssen.

Entwickler, die verwaltete Identitäten in ihre Windows-Anwendungen integrieren müssen, stehen je nach Anwendungsarchitektur und -anforderungen mehrere Implementierungsansätze zur Verfügung.

Integration verwalteter Assemblys: NuGet-Paket

Für .NET-Anwendungen enthält das Microsoft.Azure.AzFilesSmbMI NuGet-Paket eine verwaltete Assembly (Microsoft.Azure.AzFilesSmbMI.dll), die direkten Zugriff auf die SMB OAuth-Authentifizierungsfunktionalität bietet. Dieser Ansatz wird für C# und andere .NET-basierte Anwendungen empfohlen.

Installation: Install-Package Microsoft.Azure.AzFilesSmbMI -version 1.2.3168.94

Native DLL-Integration

Für systemeigene Anwendungen, die direkten API-Zugriff erfordern, ist AzFilesSmbMIClient als systemeigene DLL verfügbar. Dies ist besonders nützlich für C/C++-Anwendungen oder Systeme, die eine Integration auf niedrigerer Ebene erfordern. Siehe Windows-Implementierungs - und API-Referenz (systemeigene Headerdatei).

Systemeigene API-Methoden

Die systemeigene DLL exportiert die folgenden Kernmethoden für die Verwaltung von Anmeldeinformationen:

extern "C" AZFILESSMBMI_API HRESULT SmbSetCredential( 
    _In_  PCWSTR pwszFileEndpointUri, 
    _In_  PCWSTR pwszOauthToken, 
    _In_  PCWSTR pwszClientID, 
    _Out_ PDWORD pdwCredentialExpiresInSeconds 
); 
extern "C" AZFILESSMBMI_API HRESULT SmbRefreshCredential( 
    _In_ PCWSTR pwszFileEndpointUri, 
    _In_ PCWSTR pwszClientID 
); 
extern "C" AZFILESSMBMI_API HRESULT SmbClearCredential( 
    _In_ PCWSTR pwszFileEndpointUri 
); 

Siehe auch