Tutorial: Verwenden einer systemseitig zugewiesenen verwalteten Identität eines virtuellen Windows-Computers für den Zugriff auf Azure Storage

Verwaltete Identitäten für Azure-Ressourcen ist eine Funktion von Microsoft Entra ID. Für alle Azure-Dienste, die verwaltete Identitäten unterstützen, gilt ein eigener Zeitplan. Sehen Sie sich den Verfügbarkeitsstatus der verwalteten Identitäten für Ihre Ressource und die bekannten Probleme an, bevor Sie beginnen.

In diesem Tutorial erfahren Sie, wie Sie eine systemseitig zugewiesene verwaltete Identität für einen virtuellen Windows-Computer verwenden, um auf Azure Storage zuzugreifen. Folgendes wird vermittelt:

  • Erstellen eines Blobcontainers im Speicherkonto
  • Gewähren des Zugriffs auf ein Speicherkonto für die systemseitig zugewiesene verwaltete Identität Ihres virtuellen Windows-Computers
  • Erhalten eines Zugriffs und seine Verwendung zum Aufrufen von Azure Storage

Hinweis

Die Microsoft Entra-Authentifizierung für Azure Storage liegt in der Public Preview-Version vor.

Voraussetzungen

Aktivieren

Eine systemseitig zugewiesene verwaltete Identität wird mit einem Mausklick aktiviert. Sie können sie entweder während der Erstellung eines virtuellen Computers oder in den Eigenschaften eines vorhandenen virtuellen Computers aktivieren.

Screenshot mit der Registerkarte „Vom System zugewiesen“ für einen virtuellen Computer, auf der Sie den vom System zugewiesenen Status aktivieren können.

So aktivieren Sie eine systemseitig zugewiesene verwaltete Identität auf einem neuen virtuellen Computer:

  1. Melden Sie sich beim Azure-Portal

  2. Erstellen eines virtuellen Computers mit aktivierter systemseitig zugewiesener Identität

Gewähren von Zugriff

Speicherkonto erstellen

In diesem Abschnitt erstellen Sie ein Speicherkonto.

  1. Wählen Sie in der linken oberen Ecke des Azure-Portals die Schaltfläche + Ressource erstellen aus.

  2. Wählen Sie die Option Speicher und anschließend Speicherkonto – Blob, Datei, Tabelle, Warteschlange aus.

  3. Geben Sie unter Name einen Namen für das Speicherkonto ein.

  4. Bereitstellungsmodell und Kontoart sollten jeweils auf Resource Manager und Storage (universell, Version 1) festgelegt werden.

  5. Stellen Sie sicher, dass Abonnement und Ressourcengruppe dem entsprechen, was Sie bei der Erstellung Ihrer VM im vorherigen Schritt angegeben haben.

  6. Klicken Sie auf Erstellen.

    Screenshot: Erstellen eines neuen Speicherkontos

Erstellen eines Blobcontainers und Hochladen einer Datei in das Speicherkonto

Da Dateien Blob Storage erfordern, müssen wir einen Blobcontainer erstellen, in dem die Datei gespeichert wird. Anschließend laden Sie eine Datei in den Blobcontainer im neuen Speicherkonto hoch.

  1. Navigieren Sie zurück zum neu erstellten Speicherkonto.

  2. Wählen Sie unter Blob-Dienst die Option Container aus.

  3. Wählen Sie oben auf der Seite + Container aus.

  4. Geben Sie unter Neuer Container einen Namen für den Container ein, und behalten Sie unter Öffentliche Zugriffsebene den Standardwert bei.

    Screenshot: Erstellen eines neuen Speichercontainers

  5. Erstellen Sie mit einem Editor Ihrer Wahl eine Datei mit dem Titel hall_ welt.txt auf dem lokalen Computer. Öffnen Sie die Datei, fügen Sie den Text „Hallo Welt! :)“ (ohne Anführungszeichen) hinzu, und speichern Sie ihn.

  6. Laden Sie die Datei in den neu erstellten Container hoch, indem Sie auf den Containernamen und dann auf Hochladen klicken.

  7. Wählen Sie im Bereich Blob hochladen unter Dateien das Ordnersymbol aus, und navigieren Sie zur Datei hallo_welt.txt auf dem lokalen Computer. Wählen Sie dann die Datei und anschließend Hochladen aus. Screenshot: Bildschirms zum Hochladen der Textdatei

Gewähren von Zugriff

In diesem Abschnitt erfahren Sie, wie Sie Ihrem virtuellen Computer Zugriff auf einen Azure-Speichercontainer gewähren. Sie können die systemseitig zugewiesene verwaltete Identität des virtuellen Computers verwenden, um die Daten in Azure Storage Blob abzurufen.

  1. Navigieren Sie zurück zum neu erstellten Speicherkonto.

  2. Wählen Sie die Option Zugriffssteuerung (IAM) aus.

  3. Wählen Sie Hinzufügen>Rollenzuweisung hinzufügen aus, um den Bereich „Rollenzuweisung hinzufügen“ zu öffnen.

  4. Weisen Sie die folgende Rolle zu. Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

    Einstellung Wert
    Role Leser von Speicherblobdaten
    Zugriff zuweisen zu Verwaltete Identität
    Systemseitig zugewiesen Virtual Machine
    Select <Ihr virtueller Computer>

    Screenshot: Seite zum Hinzufügen einer Rollenzuweisung

Zugreifen auf Daten

Azure Storage unterstützt die Microsoft Entra-Authentifizierung nativ, sodass Zugriffstoken, die mit einer verwalteten Identität abgerufen wurden, direkt angenommen werden können. Dieser Ansatz verwendet die Azure Storage-Integration mit Microsoft Entra ID und unterscheidet sich vom Bereitstellen von Anmeldeinformationen in der Verbindungszeichenfolge.

Hier sehen Sie ein .NET-Codebeispiel für das Öffnen einer Verbindung mit Azure Storage. Im Beispiel wird ein Zugriffstoken verwendet und dann der Inhalt der Datei gelesen, die Sie zuvor erstellt haben. Dieser Code muss auf dem virtuellen Computer ausgeführt werden, um auf Endpunkt für die verwaltete Identität des virtuellen Computers zugreifen zu können. Für die Verwendung des Verfahrens mit Zugriffstoken ist .NET Framework 4.6 oder höher erforderlich. Ersetzen Sie entsprechend den Wert <URI to blob file>. Diesen erhalten Sie, wenn Sie zur Datei navigieren, die Sie zuvor erstellt und in Blob Storage hochgeladen haben, und darin die URL unter Eigenschaften auf der Seite Übersicht kopieren.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;
using System.Web.Script.Serialization;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;

namespace StorageOAuthToken
{
    class Program
    {
        static void Main(string[] args)
        {
            //get token
            string accessToken = GetMSIToken("https://storage.azure.com/");

            //create token credential
            TokenCredential tokenCredential = new TokenCredential(accessToken);

            //create storage credentials
            StorageCredentials storageCredentials = new StorageCredentials(tokenCredential);

            Uri blobAddress = new Uri("<URI to blob file>");

            //create block blob using storage credentials
            CloudBlockBlob blob = new CloudBlockBlob(blobAddress, storageCredentials);

            //retrieve blob contents
            Console.WriteLine(blob.DownloadText());
            Console.ReadLine();
        }

        static string GetMSIToken(string resourceID)
        {
            string accessToken = string.Empty;
            // Build request to acquire MSI token
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=" + resourceID);
            request.Headers["Metadata"] = "true";
            request.Method = "GET";

            try
            {
                // Call /token endpoint
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                // Pipe response Stream to a StreamReader, and extract access token
                StreamReader streamResponse = new StreamReader(response.GetResponseStream());
                string stringResponse = streamResponse.ReadToEnd();
                JavaScriptSerializer j = new JavaScriptSerializer();
                Dictionary<string, string> list = (Dictionary<string, string>)j.Deserialize(stringResponse, typeof(Dictionary<string, string>));
                accessToken = list["access_token"];
                return accessToken;
            }
            catch (Exception e)
            {
                string errorText = String.Format("{0} \n\n{1}", e.Message, e.InnerException != null ? e.InnerException.Message : "Acquire token failed");
                return accessToken;
            }
        }
    }
}

Die Antwort enthält den Inhalt der Datei:

Hello world! :)

Disable

Wenn Sie die systemseitig zugewiesene Identität auf Ihrem virtuellen Computer deaktivieren möchten, legen Sie ihren Status auf Aus fest.

Screenshot: Registerkarte „Systemseitig zugewiesen“ für einen virtuellen Computer, auf der Sie den Status „Systemseitig zugewiesen“ deaktivieren können

Nächste Schritte

In diesem Tutorial haben Sie gelernt, wie Sie eine systemseitig zugewiesene Identität eines virtuellen Windows-Computers für den Zugriff auf Azure Storage aktivieren. Weitere Informationen zu Azure Storage finden Sie hier: