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 Azure Active Directory. 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 Azure Active Directory-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 shows the System assigned tab for a virtual machine where you can turn on the System assigned status.

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

  1. Anmelden 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. Klicken Sie in der linken oberen Ecke des Azure-Portals auf die Schaltfläche + Ressource erstellen.

  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.

    Create new storage account

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. Klicken Sie unter Blob-Dienst auf Container.

  3. Klicken Sie oben auf der Seite auf + Container.

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

    Create storage container

  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. Klicken Sie im Bereich Blob hochladen unter Dateien auf das Ordnersymbol und navigieren Sie zur Datei hallo_welt.txt auf dem lokalen Computer. Wählen Sie dann die Datei aus, und klicken Sie auf Hochladen. Upload text file

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. Klicken Sie auf Zugriffssteuerung (IAM) .

  3. Klicken Sie auf HinzufügenRollenzuweisung hinzufügen, um die Seite „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>

    Add role assignment page in Azure portal.

Zugreifen auf Daten

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

Im Folgenden finden Sie ein .NET-Codebeispiel zum Öffnen einer Verbindung mit Azure Storage mithilfe eines Zugriffstokens und zum anschließenden Lesen der Inhalte der zuvor erstellten Datei. 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 shows the System assigned tab for a virtual machine where you can turn off the System assigned status.

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: