Tutorial: Verwenden einer Windows-VM bzw. eines Windows-VMSS für den Zugriff auf Azure-Ressourcen

Verwaltete Identitäten für Azure-Ressourcen sind ein Feature 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.

Voraussetzungen

Verwenden einer systemseitig zugewiesenen verwalteten Identität eines virtuellen Windows-Computers für den Zugriff auf Azure Data Lake Store

In diesem Tutorial erfahren Sie, wie Sie eine systemseitig zugewiesene verwaltete Identität für einen virtuellen Windows-Computer (VM) für den Zugriff auf Azure Data Lake Storage verwenden. Verwaltete Identitäten werden von Azure automatisch verwaltet. Sie ermöglichen Ihrer Anwendung die Authentifizierung bei Diensten mit Unterstützung für die Microsoft Entra-Authentifizierung, ohne dass Anmeldeinformationen in Ihren Code eingebettet werden müssen.

In diesem Artikel lernen Sie Folgendes:

  • Gewähren des Zugriffs auf eine Azure Data Lake Store-Instanz durch Ihre VM
  • Abrufen eines Zugriffstokens mithilfe der VM-Identität und Verwenden dieses Zugriffstokens für den Zugriff auf Azure Data Lake Store

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 an.

  2. Erstellen einer VM, auf der die systemseitig zugewiesene Identität aktiviert ist

Gewähren von Zugriff

Sie können Ihrer VM Zugriff auf Dateien und Ordner in einer Azure Data Lake Storage-Instanz gewähren. Für diesen Schritt können Sie eine vorhandene Data Lake Store-Instanz verwenden oder eine neue erstellen.

Um im Azure-Portal eine neue Data Lake Storage-Instanz zu erstellen, lesen Sie diesen Schnellstart zu Azure Data Lake Storage. Es gibt in der Dokumentation zu Azure Data Lake Store auch Schnellstarts, in denen die Azure-Befehlszeilenschnittstelle und Azure PowerShell verwendet werden.

Erstellen Sie in Ihrer Data Lake Store-Instanz einen neuen Ordner, und erteilen Sie der systemseitig zugewiesenen Identität Ihres virtuellen Computers die entsprechenden Berechtigungen. Die Identität benötigt Rechte zum Lesen, Schreiben und Ausführen von Dateien in diesem Ordner:

  1. Wählen Sie im Azure-Portal im linken Navigationsbereich Data Lake Store aus.
  2. Wählen Sie die Data Lake Store-Instanz aus, die Sie für dieses Tutorial verwenden möchten.
  3. Wählen Sie auf der Befehlsleiste Daten-Explorer aus.
  4. Der Stammordner der Data Lake Store-Instanz ist ausgewählt. Wählen Sie auf der Befehlsleiste Zugriff aus.
  5. Wählen Sie Hinzufügen. Geben Sie im Feld Auswählen den Namen Ihres virtuellen Computers ein, z.B. DevTestVM. Wählen Sie aus den Suchergebnissen Ihre VM und anschließend Auswählen aus.
  6. Wählen Sie Berechtigungen auswählen und anschließend Lesen sowie Ausführen aus. Fügen Sie diese zu Dieser Ordner hinzu, und wählen Sie anschließend Nur eine Zugriffsberechtigung aus.
  7. Wählen Sie OK aus, und schließen Sie daraufhin das Blatt Access. Die Berechtigung sollte erfolgreich hinzugefügt werden.
  8. Erstellen Sie als Nächstes einen neuen Ordner. Wählen Sie in der Befehlsleiste Neuer Ordner aus, und benennen Sie den neuen Ordner. Nennen Sie ihn beispielsweise TestFolder, und wählen Sie anschließend OK aus.
  9. Wählen Sie den von Ihnen erstellten Ordner aus, und wählen Sie anschließend auf der Befehlsleiste Zugriff aus.
  10. Wählen Sie Hinzufügen aus, geben Sie anschließend im Feld Auswählen den Namen Ihrer VM ein, und wählen Sie Auswählen aus.
  11. Wählen Sie Berechtigungen auswählen und anschließend Lesen, Schreiben sowie Ausführen aus. Fügen Sie diese zu Dieser Ordner hinzu, und fügen Sie sie anschließend als Ein Zugriffsberechtigungseintrag und ein Standardberechtigungseintrag hinzu.
  12. Klicken Sie auf OK. Die Berechtigung sollte erfolgreich hinzugefügt werden.

Ihre systemseitig zugewiesene verwaltete Identität des virtuellen Computers kann nun alle Vorgänge für Dateien in dem erstellten Ordner ausführen. Weitere Informationen zum Verwalten des Zugriffs auf Data Lake Storage finden Sie unter Zugriffssteuerung in Data Lake Storage.

Zugreifen auf Daten

Azure Data Lake Storage bietet native Unterstützung für die Microsoft Entra-Authentifizierung. Dadurch können Zugriffstoken, die mithilfe verwalteter Identitäten für Azure-Ressourcen abgerufen wurden, direkt angenommen werden. Für die Authentifizierung im Data Lake Store-Dateisystem übermitteln Sie ein Zugriffstoken, das von Microsoft Entra ID für Ihren Endpunkt des Data Lake Store-Dateisystems ausgestellt wurde, in einem Autorisierungsheader. Der Header weist das Format Bearer <ACCESS_TOKEN_VALUE> auf.

Weitere Informationen zur Unterstützung von Data Lake Storage für die Microsoft Entra-Authentifizierung finden Sie unter Authentifizierung bei Data Lake Storage mithilfe von Microsoft Entra ID.

Hinweis

Die Client-SDKs für das Data Lake Store-Dateisystem unterstützen noch keine verwalteten Identitäten für Azure-Ressourcen.

In diesem Tutorial authentifizieren Sie sich bei der REST-API für das Data Lake Store-Dateisystem mit REST-Anforderungen in PowerShell. Um die systemseitig zugewiesene verwaltete Identität des virtuellen Computers für die Authentifizierung zu verwenden, müssen Sie die Anforderungen auf dem virtuellen Computer auszuführen.

  1. Navigieren Sie im Portal zu Virtuelle Computer, und wechseln Sie zu Ihrer Windows-VM. Wählen Sie anschließend in der Übersicht Verbinden aus.

  2. Geben Sie Ihren Benutzernamen und Ihr Kennwort ein, die Sie beim Erstellen der Windows-VM hinzugefügt haben.

  3. Nachdem Sie nun eine Remotedesktopverbindung mit der VM hergestellt haben, öffnen Sie PowerShell in der Remotesitzung.

  4. Erstellen Sie mithilfe des PowerShell-Cmdlets Invoke-WebRequest eine Anforderung an den lokalen Endpunkt für die verwalteten Identitäten für Azure-Ressourcen, um ein Zugriffstoken für Azure Data Lake Storage zu erhalten. Der Ressourcenbezeichner für Data Lake Store lautet https://datalake.azure.net/. Data Lake führt eine Prüfung auf exakte Übereinstimmung der Ressourcen-ID durch, weshalb der nachstehende Schrägstrich wichtig ist.

    $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatalake.azure.net%2F' -Method GET -Headers @{Metadata="true"}
    

    Konvertieren Sie die Antwort aus einem JSON-Objekt in ein PowerShell-Objekt.

    $content = $response.Content | ConvertFrom-Json
    

    Extrahieren Sie das Zugriffstoken aus der Antwort.

    $AccessToken = $content.access_token
    
  5. Überprüfen Sie, ob alles richtig konfiguriert ist. Führen Sie mithilfe des PowerShell-Cmdlets Invoke-WebRequest eine Anforderung an den REST-Endpunkt Ihrer Data Lake Storage-Instanz durch, um die Ordner im Stammordner aufzulisten. Es ist wichtig, dass die Zeichenfolge Bearer im Autorisierungsheader den Großbuchstaben „B“ aufweist. Sie finden den Namen Ihrer Data Lake Store-Instanz im Abschnitt Übersicht Ihrer Data Lake Store-Instanz.

    Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -Headers @{Authorization="Bearer $AccessToken"}
    

    Eine erfolgreiche Antwort sieht wie folgt aus:

    StatusCode        : 200
    StatusDescription : OK
    Content           : {"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY", "blockSize":0,"accessTime":1507934941392, "modificationTime":1507944835699,"replication":0, "permission":"770","ow..."
    RawContent        : HTTP/1.1 200 OK
                        Pragma: no-cache
                        x-ms-request-id: b4b31e16-e968-46a1-879a-3474aa7d4528
                        x-ms-webhdfs-version: 17.04.22.00
                        Status: 0x0
                        X-Content-Type-Options: nosniff
                        Strict-Transport-Security: ma...
    Forms             : {}
    Headers           : {[Pragma, no-cache], [x-ms-request-id, b4b31e16-e968-46a1-879a-3474aa7d4528],
                        [x-ms-webhdfs-version, 17.04.22.00], [Status, 0x0]...}
    Images            : {}
    InputFields       : {}
    Links             : {}
    ParsedHtml        : System.__ComObject
    RawContentLength  : 556
    
  6. Versuchen Sie nun, eine Datei in Ihre Data Lake Storage-Instanz hochzuladen. Erstellen Sie zunächst eine Datei zum Hochladen.

    echo "Test file." > Test1.txt
    
  7. Erstellen Sie mithilfe des PowerShell-Cmdlets Invoke-WebRequest eine Anforderung an den REST-Endpunkt Ihrer Data Lake Storage-Instanz, um die Datei in den Ordner hochzuladen, den Sie zuvor erstellt haben. Diese Anforderung wird in zwei Schritten durchgeführt.

    1. Führen Sie eine Anforderung durch, und rufen Sie eine Umleitung zu dem Speicherort ab, in den die Datei hochgeladen werden soll.
    2. Laden Sie die Datei hoch. Denken Sie daran, die Namen des Ordners und der Datei entsprechend festzulegen, wenn Sie andere als die in diesem Tutorial angegebenen Werte verwendet haben.
    $HdfsRedirectResponse = Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
    

    Wenn Sie den Wert von $HdfsRedirectResponse untersuchen, sollte dieser der folgenden Antwort ähneln:

    PS C:\> $HdfsRedirectResponse
    
    StatusCode        : 307
    StatusDescription : Temporary Redirect
    Content           : {}
    RawContent        : HTTP/1.1 307 Temporary Redirect
                        Pragma: no-cache
                        x-ms-request-id: b7ab492f-b514-4483-aada-4aa0611d12b3
                        ContentLength: 0
                        x-ms-webhdfs-version: 17.04.22.00
                        Status: 0x0
                        X-Content-Type-Options: nosn...
    Headers           : {[Pragma, no-cache], [x-ms-request-id, b7ab492f-b514-4483-aada-4aa0611d12b3], 
                        [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...}
    RawContentLength  : 0
    

    Schließen Sie den Upload ab, indem Sie eine Anforderung an den Umleitungsendpunkt senden:

    Invoke-WebRequest -Uri $HdfsRedirectResponse.Headers.Location -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
    

    Eine erfolgreiche Antwort sieht wie folgt aus:

    StatusCode        : 201
    StatusDescription : Created
    Content           : {}
    RawContent        : HTTP/1.1 201 Created
                        Pragma: no-cache
                        x-ms-request-id: 1e70f36f-ead1-4566-acfa-d0c3ec1e2307
                        ContentLength: 0
                        x-ms-webhdfs-version: 17.04.22.00
                        Status: 0x0
                        X-Content-Type-Options: nosniff
                        Strict...
    Headers           : {[Pragma, no-cache], [x-ms-request-id, 1e70f36f-ead1-4566-acfa-d0c3ec1e2307],
                        [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...}
    RawContentLength  : 0
    

Schließlich können Sie andere Dateisystem-APIs von Data Lake Storage verwenden, um Dateien unter anderem anzufügen und herunterzuladen.

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

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

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

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 an.

  2. Erstellen einer VM, auf der die systemseitig zugewiesene Identität aktiviert ist

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 im Feld für 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 zum neu erstellten Speicherkonto.

  2. Wählen Sie im Abschnitt Blob-Dienst Container aus.

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

  4. Geben Sie im Feld für Neuer Container einen Namen für den Container ein, und behalten Sie für die Option Ö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! hinzu, und speichern Sie die Datei anschließend.

  6. Wählen Sie den Containernamen aus, um die Datei in den neu erstellten Container hochzuladen, und wählen Sie anschließend Hochladen aus.

  7. Wählen Sie im Bereich Blob hochladen im Abschnitt Dateien das Ordnersymbol aus, und navigieren Sie auf Ihrem lokalen Computer zur Datei hello_world.txt. Wählen Sie anschließend die Datei und Upload 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 zum neu erstellten Speicherkonto.

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

  3. Wählen Sie Hinzufügen>Rollenzuweisung hinzufügen aus, 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>

    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

Verwenden einer vom Windows-VM-System zugewiesenen verwalteten Identität für den Zugriff auf Azure Storage über SAS-Anmeldeinformationen

In diesem Tutorial erfahren Sie, wie Sie eine systemseitig zugewiesene Identität für einen virtuellen Windows-Computer (VM) verwenden, um SAS-Anmeldeinformationen (Shared Access Signature) für Storage abzurufen.

Eine Dienst-SAS bietet die Möglichkeit, eingeschränkten Zugriff auf Objekte in einem Speicherkonto für begrenzte Zeit und einen bestimmten Dienst zu gewähren (in diesem Fall für einen Blob-Dienst). Dabei macht die SAS keinen Kontozugriffsschlüssel verfügbar. Sie können SAS-Anmeldeinformationen wie gewohnt für Speichervorgänge verwenden – beispielsweise bei der Verwendung eines Storage SDK. In diesem Tutorial wird das Hoch- und Herunterladen eines Blobs mithilfe von Azure Storage PowerShell veranschaulicht.

Sie lernen Folgendes:

  • Erstellen eines Speicherkontos
  • Gewähren des Zugriffs auf eine Speicherkonto-SAS für Ihren virtuellen Computer in Ressourcen-Manager
  • Abrufen eines Zugriffstokens mithilfe der Identität Ihres virtuellen Computers und Verwenden dieses Zugriffstokens zum Abrufen der SAS von Ressourcen-Manager

Hinweis

Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren des Azure Az PowerShell-Moduls. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Erstellen eines Speicherkontos

Wenn Sie noch kein Konto besitzen, müssen Sie ein Speicherkonto erstellen. Führen Sie andernfalls die folgenden Schritte aus, um der systemseitig zugewiesenen verwalteten Identität Ihrer VM Zugriff auf die SAS-Anmeldeinformationen eines vorhandenen Speicherkontos zu gewähren.

  1. Wählen Sie Storage und anschließend Speicherkonto aus.

  2. Geben Sie im Panel Speicherkonto erstellen einen Namen für das Speicherkonto ein.

  3. Stellen Sie sicher, dass Bereitstellungsmodell und Kontovariante auf Resource Manager und Universell festgelegt sind.

  4. Stellen Sie sicher, dass das Abonnement und Ressourcengruppe den Elementen entsprechen, die Sie vorherigen Schritt beim Erstellen der VM im angegeben haben.

  5. Wählen Sie Erstellen aus, um Ihr Speicherkonto zu erstellen.

    Screenshot: Erstellen eines neuen Speicherkontos

Erstellen eines Blob-Containers im Speicherkonto

Zu einem späteren Zeitpunkt in diesem Tutorial laden Sie eine Datei in das neue Speicherkonto hoch und aus dem Speicherkonto herunter. Da Dateien Blob Storage erfordern, müssen Sie einen Blob-Container erstellen, in dem die Datei gespeichert wird.

  1. Navigieren Sie zum neu erstellten Speicherkonto.

  2. Klicken Sie im linken Panel unter Blob-Dienst auf den Link Container.

  3. Wählen Sie oben auf der Seite + Container aus, woraufhin das Panel Neuer Container angezeigt werden sollte.

  4. Benennen Sie den Container, legen Sie die Zugriffsebene fest, und wählen Sie anschließend OK aus. Der Name, den Sie hier angeben, wird zu einem späteren Zeitpunkt im Tutorial verwendet.

    Screenshot: Erstellen eines Speichercontainers

Gewähren des Zugriffs für die systemseitig zugewiesene verwaltete Identität Ihres virtuellen Computers zur Verwendung einer Speicher-SAS

Azure Storage unterstützt die Microsoft Entra-Authentifizierung nicht nativ. Sie können mit einer verwalteten Identität jedoch eine Speicher-SAS von Resource Manager abrufen und mit dieser SAS auf den Speicher zugreifen. In diesem Schritt gewähren Sie der systemseitig zugewiesenen verwalteten Identität Ihres virtuellen Computers Zugriff auf die SAS des Speicherkontos.

  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 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 Speicherkontomitwirkender
    Zugriff zuweisen zu Verwaltete Identität
    Systemseitig zugewiesen Virtueller Computer
    Select <Ihr virtueller Windows-Computer>

    Screenshot: Seite zum Hinzufügen einer Rollenzuweisung

Abrufen eines Zugriffstokens mithilfe der VM-Identität und Verwenden dieses Zugriffstokens zum Aufrufen von Azure Resource Manager

Den Rest dieses Tutorials arbeiten Sie in Ihrer VM. In diesem Abschnitt müssen Sie PowerShell-Cmdlets von Azure Resource Manager verwenden. Falls Sie PowerShell nicht installiert haben, laden Sie die aktuelle Version herunter, bevor Sie fortfahren.

  1. Navigieren Sie im Azure-Portal zu Virtuelle Computer, wechseln Sie zu Ihrer Windows-VM, und klicken Sie dann oben auf der Seite Übersicht auf Verbinden.

  2. Geben Sie Ihren Benutzernamen und Ihr Kennwort ein, die Sie beim Erstellen Ihrer Windows-VM hinzugefügt haben.

  3. Stellen Sie eine Remotedesktopverbindung mit der VM her.

  4. Öffnen Sie in der Remotesitzung PowerShell, und verwenden Sie anschließend das PowerShell-Cmdlet Invoke-WebRequest, um ein Azure Resource Manager-Token aus dem lokalen Endpunkt für verwaltete Identitäten für Azure-Ressourcen abzurufen.

       $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -Method GET -Headers @{Metadata="true"}
    

    Hinweis

    Der Wert des resource-Parameters muss exakt mit dem von Microsoft Entra ID erwarteten Wert übereinstimmen. Wenn Sie die Azure Resource Manager-Ressourcen-ID verwenden, müssen Sie den nachgestellten Schrägstrich im URI verwenden.

    Extrahieren Sie als Nächstes das content-Element, das im $response-Objekt als Zeichenfolge im JSON-Format (JavaScript Object Notation) gespeichert ist.

    $content = $response.Content | ConvertFrom-Json
    

    Extrahieren Sie dann das Zugriffstoken aus der Antwort.

    $ArmToken = $content.access_token
    

Abrufen von SAS-Anmeldeinformationen von Azure Resource Manager für Speicheraufrufe

Verwenden Sie schließlich PowerShell, um Resource Manager mithilfe des Zugriffstokens aufzurufen, das Sie im vorherigen Abschnitt abgerufen haben. Sie verwenden dieses Token, um SAS-Anmeldeinformationen für Storage zu erstellen. Sobald Sie über die SAS-Anmeldeinformationen verfügen, können Sie andere Speichervorgänge aufrufen.

Verwenden Sie für diese Anforderung die folgenden HTTP-Anforderungsparameter, um die SAS-Anmeldeinformationen zu erstellen:

{
    "canonicalizedResource":"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>",
    "signedResource":"c",              // The kind of resource accessible with the SAS, in this case a container (c).
    "signedPermission":"rcw",          // Permissions for this SAS, in this case (r)ead, (c)reate, and (w)rite. Order is important.
    "signedProtocol":"https",          // Require the SAS be used on https protocol.
    "signedExpiry":"<EXPIRATION TIME>" // UTC expiration time for SAS in ISO 8601 format, for example 2017-09-22T00:06:00Z.
}

Die hier aufgeführten Parameter sind im POST-Text der Anforderung für die SAS-Anmeldeinformationen enthalten. Weitere Informationen zu Parametern zum Erstellen von SAS-Anmeldeinformationen finden Sie in der REST-Referenz zum Auflisten von Dienst-SAS.

  1. Konvertieren Sie die Parameter in das JSON-Format, und rufen Sie anschließend den Storage-Endpunkt listServiceSas auf, um die SAS-Anmeldeinformationen zu erstellen:

    $params = @{canonicalizedResource="/blob/<STORAGE-ACCOUNT-NAME>/<CONTAINER-NAME>";signedResource="c";signedPermission="rcw";signedProtocol="https";signedExpiry="2017-09-23T00:00:00Z"}
    $jsonParams = $params | ConvertTo-Json
    
    $sasResponse = Invoke-WebRequest -Uri https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE-ACCOUNT-NAME>/listServiceSas/?api-version=2017-06-01 -Method POST -Body $jsonParams -Headers @{Authorization="Bearer $ArmToken"}
    

    Hinweis

    Bei der URL wird die Groß-/Kleinschreibung beachtet. Stellen Sie daher sicher, dass Sie genau die gleiche Groß-/Kleinschreibung verwenden, die beim Benennen der Ressourcengruppe verwendet wird, einschließlich der Großschreibung von „G“ in resourceGroups.

  2. Extrahieren Sie als Nächstes die SAS-Anmeldeinformationen aus der Antwort:

    $sasContent = $sasResponse.Content | ConvertFrom-Json
    $sasCred = $sasContent.serviceSasToken
    
  3. Beim Überprüfen der SAS-Anmeldeinformationen sollte etwa Folgendes angezeigt werden:

    PS C:\> $sasCred
    sv=2015-04-05&sr=c&spr=https&se=2017-09-23T00%3A00%3A00Z&sp=rcw&sig=JVhIWG48nmxqhTIuN0uiFBppdzhwHdehdYan1W%2F4O0E%3D
    
  4. Erstellen Sie eine Datei namens test.txt. Führen Sie anschließend mithilfe der SAS-Anmeldeinformationen die Authentifizierung mit dem New-AzStorageContent-Cmdlet aus. Laden Sie die Datei in den Blob-Container hoch und anschließend aus dem Blob-Container herunter.

    echo "This is a test text file." > test.txt
    
  5. Installieren Sie unbedingt zunächst die Azure Storage-Cmdlets mit Install-Module Azure.Storage. Laden Sie daraufhin das Blob, das Sie soeben erstellt haben, mit dem PowerShell-Cmdlet Set-AzStorageBlobContent hoch:

    $ctx = New-AzStorageContext -StorageAccountName <STORAGE-ACCOUNT-NAME> -SasToken $sasCred
    Set-AzStorageBlobContent -File test.txt -Container <CONTAINER-NAME> -Blob testblob -Context $ctx
    

    Antwort:

    ICloudBlob        : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob
    BlobType          : BlockBlob
    Length            : 56
    ContentType       : application/octet-stream
    LastModified      : 9/21/2017 6:14:25 PM +00:00
    SnapshotTime      :
    ContinuationToken :
    Context           : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext
    Name              : testblob
    
  6. Sie können das Blob, das Sie hochgeladen haben, auch mit dem PowerShell-Cmdlet Get-AzStorageBlobContent herunterladen:

    Get-AzStorageBlobContent -Blob testblob -Container <CONTAINER-NAME> -Destination test2.txt -Context $ctx
    

    Antwort:

    ICloudBlob        : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob
    BlobType          : BlockBlob
    Length            : 56
    ContentType       : application/octet-stream
    LastModified      : 9/21/2017 6:14:25 PM +00:00
    SnapshotTime      :
    ContinuationToken :
    Context           : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext
    Name              : testblob
    

Verwenden der systemseitig zugewiesenen verwalteten Identität einer Windows-VM für den Zugriff auf die Azure SQL-Datenbank

In diesem Tutorial erfahren Sie, wie Sie eine systemseitig zugewiesene Identität für einen virtuellen Windows-Computer verwenden, um auf Azure SQL-Datenbank zuzugreifen. Verwaltete Dienstidentitäten werden von Azure automatisch verwaltet und ermöglichen Ihnen die Authentifizierung für Dienste, die die Microsoft Entra-Authentifizierung unterstützen, ohne dass Sie Anmeldeinformationen in Ihren Code einfügen müssen.

Sie lernen Folgendes:

  • Gewähren des Zugriffs auf Azure SQL-Datenbank durch Ihren virtuellen Computer
  • Microsoft Entra-Authentifizierung aktivieren
  • Erstellen eines in der Datenbank enthaltenen Benutzers, der die vom System zugewiesene Identität des virtuellen Computers darstellt
  • Abrufen eines Zugriffstokens mithilfe der Identität des virtuellen Computers und Verwenden dieses Zugriffstokens zum Abfragen von Azure SQL-Datenbank

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 an.

  2. Erstellen einer VM, auf der die systemseitig zugewiesene Identität aktiviert ist

Gewähren von Zugriff

Um Ihrer VM Zugriff auf eine Datenbank in Azure SQL-Datenbank zu gewähren, verwenden Sie einen vorhandenen logischen SQL-Server, oder erstellen Sie einen neuen. Befolgen Sie zum Erstellen eines neuen Servers sowie einer Datenbank mithilfe des Azure-Portals den Schnellstart für Azure SQL. Es gibt in der Azure SQL-Dokumentation auch Schnellstarts, in denen die Azure-Befehlszeilenschnittstelle und Azure PowerShell verwendet werden.

Führen Sie die folgenden Schritte aus, um Ihrer VM Zugriff auf eine Datenbank zu gewähren:

  1. Aktivieren Sie die Microsoft Entra-Authentifizierung für den Server.
  2. Erstellen eines in der Datenbank enthaltenen Benutzers, der die vom System zugewiesene Identität des virtuellen Computers darstellt

Microsoft Entra-Authentifizierung aktivieren

Zum Konfigurieren der Microsoft Entra-Authentifizierung:

  1. Wählen Sie im Azure-Portal im linken Navigationsbereich SQL-Server aus.
  2. Wählen Sie den SQL-Server aus, den Sie für die Microsoft Entra-Authentifizierung aktivieren möchten.
  3. Klicken Sie auf dem Blatt im Abschnitt Einstellungen auf Active Directory-Administrator.
  4. Wählen Sie in der Befehlsleiste Administrator festlegen aus.
  5. Wählen Sie ein Microsoft Entra-Benutzerkonto als Administrator für den Server aus, und wählen Sie anschließend Auswählen aus.
  6. Klicken Sie auf der Befehlsleiste auf Speichern.

Erstellen eines enthaltenen Benutzers

In diesem Abschnitt erfahren Sie, wie Sie einen in der Datenbank enthaltenen Benutzer erstellen, der die systemseitig zugewiesene Identität der VM darstellt. Für diesen Schritt müssen Sie Microsoft SQL Server Management Studio (SSMS) installiert haben. Bevor Sie beginnen, kann es hilfreich sein, die folgenden Artikel mit Hintergrundinformationen zur Microsoft Entra-Integration zu lesen:

SQL-Datenbanken erfordern eindeutige Anzeigenamen in Microsoft Entra ID. Dadurch müssen Microsoft Entra-Konten wie Benutzer, Gruppen und Dienstprinzipale (Anwendungen) sowie für die verwaltete Identität aktivierte VM-Namen in Microsoft Entra ID eindeutig für ihre entsprechenden Anzeigenamen definiert werden. SQL überprüft die Anzeigenamen in Microsoft Entra ID während der Erstellung solcher Benutzer in T-SQL. Wenn die Anzeigenamen nicht eindeutig sind, schlägt der Befehl fehl, und Sie werden dazu aufgefordert, für jedes angegebene Konto einen eindeutigen Anzeigenamen in Microsoft Entra ID anzugeben.

Erstellen eines enthaltenen Benutzers

  1. Öffnen Sie SQL Server Management Studio.

  2. Geben Sie im Dialogfeld Mit Server verbinden im Feld Servername den Namen Ihres Servers ein.

  3. Wählen Sie im Feld Authentifizierung die Option Active Directory: universell mit MFA-Unterstützung aus.

  4. Geben Sie im Feld für Benutzername den Namen des Microsoft Entra-Kontos ein, das Sie als Serveradministrator festgelegt haben – zum Beispiel: cjensen@fabrikam.com.

  5. Klicken Sie auf Optionen.

  6. Geben Sie im Feld Mit Datenbank verbinden den Namen der systemfremden Datenbank ein, die Sie konfigurieren möchten.

  7. Wählen Sie Verbinden aus, und schließen Sie daraufhin den Anmeldevorgang ab.

  8. Erweitern Sie im Objekt-Explorer den Ordner Datenbanken.

  9. Klicken Sie mit der rechten Maustaste auf eine Benutzerdatenbank, und wählen Sie anschließend Neue Abfrage aus.

  10. Geben Sie im Abfragefenster die folgende Zeile ein, und klicken Sie auf der Symbolleiste auf Ausführen:

    Hinweis

    Im folgenden Befehl ist VMName der Name des virtuellen Computers, auf dem Sie im Abschnitt mit den Voraussetzungen die vom System zugewiesene Identität aktiviert haben.

    CREATE USER [VMName] FROM EXTERNAL PROVIDER
    

    Der Befehl sollte erfolgreich ausgeführt werden und den enthaltenen Benutzer für die systemseitig zugewiesene Identität der VM erstellen.

  11. Setzen Sie das Abfragefenster zurück, geben Sie die folgende Zeile ein, und wählen Sie auf der Symbolleiste Ausführen aus:

    Hinweis

    Im folgenden Befehl ist VMName der Name des virtuellen Computers, auf dem Sie im Abschnitt mit den Voraussetzungen die vom System zugewiesene Identität aktiviert haben.

    Wenn der Fehler „Prinzipal VMName hat doppelten Anzeigenamen“ auftritt, fügen Sie die CREATE USER-Anweisung mit „WITH OBJECT_ID='xxx'“ an.

    ALTER ROLE db_datareader ADD MEMBER [VMName]
    

    Der Befehl sollte erfolgreich ausgeführt werden und dem enthaltenen Benutzer die Möglichkeit gewähren, die gesamte Datenbank zu lesen.

Auf dem virtuellen Computer ausgeführter Code kann jetzt unter Verwendung der systemseitig zugewiesenen verwalteten Identität ein Token abrufen und sich damit beim Server authentifizieren.

Zugreifen auf Daten

In diesem Abschnitt erfahren Sie, wie Sie mithilfe der systemseitig zugewiesenen verwalteten Identität der VM ein Zugriffstoken abrufen und dieses verwenden, um Azure SQL aufzurufen. Azure SQL unterstützt die Microsoft Entra-Authentifizierung nativ, sodass Zugriffstoken, die mit verwalteten Identitäten für Azure-Ressourcen abgerufen wurden, direkt angenommen werden können. Für diese Methode müssen in der Verbindungszeichenfolge keine Anmeldeinformationen angegeben werden.

Im Folgenden finden Sie ein .NET-Codebeispiel für das Öffnen einer Verbindung mit SQL mithilfe der Authentifizierung mit einer verwalteten Active Directory-Identität. Der Code muss auf dem virtuellen Computer ausgeführt werden, um auf den Endpunkt der systemseitig zugewiesenen verwalteten Identität des virtuellen Computers zugreifen zu können.

Für die Verwendung dieser Methode ist .NET Framework 4.6.2 oder höher bzw. .NET Core 3.1 oder höher erforderlich. Ersetzen Sie die Werte von AZURE-SQL-SERVERNAME und DATABASE, und fügen Sie der Microsoft.Data.SqlClient-Bibliothek einen NuGet-Verweis hinzu.

using Microsoft.Data.SqlClient;

try
{
//
// Open a connection to the server using Active Directory Managed Identity authentication.
//
string connectionString = "Data Source=<AZURE-SQL-SERVERNAME>; Initial Catalog=<DATABASE>; Authentication=Active Directory Managed Identity; Encrypt=True";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();

Hinweis

Sie können verwaltete Identitäten zusammen mit anderen Programmieroptionen über unsere SDKs verwenden.

Verwenden Sie alternativ PowerShell, um das End-to-End-Setup zu testen, ohne eine App auf der VM programmieren und bereitstellen zu müssen.

  1. Navigieren Sie im Portal zu Virtuelle Computer, wechseln Sie anschließend zu Ihrer Windows-VM, und wählen Sie daraufhin in der Übersicht die Option Verbinden aus.

  2. Geben Sie Ihre VM-Administratoranmeldeinformationen ein, die Sie beim Erstellen der Windows-VM hinzugefügt haben.

  3. Nachdem Sie nun eine Remotedesktopverbindung mit der VM hergestellt haben, öffnen Sie PowerShell in einer Remotesitzung.

  4. Erstellen Sie mithilfe des PowerShell-Cmdlets Invoke-WebRequest eine Anforderung an den lokalen Endpunkt für die verwaltete Identität, um ein Zugriffstoken für Azure SQL zu erhalten.

        $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net%2F' -Method GET -Headers @{Metadata="true"}
    

    Konvertieren Sie die Antwort aus einem JSON-Objekt in ein PowerShell-Objekt.

    $content = $response.Content | ConvertFrom-Json
    

    Extrahieren Sie das Zugriffstoken aus der Antwort.

    $AccessToken = $content.access_token
    
  5. Öffnen Sie eine Verbindung zum Server. Denken Sie daran, die Werte für AZURE-SQL-SERVERNAME und DATABASE zu ersetzen.

    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $SqlConnection.ConnectionString = "Data Source = <AZURE-SQL-SERVERNAME>; Initial Catalog = <DATABASE>; Encrypt=True;"
    $SqlConnection.AccessToken = $AccessToken
    $SqlConnection.Open()
    

    Als Nächstes erstellen Sie eine Abfrage und senden diese an den Server. Denken Sie daran, den Wert für TABLE zu ersetzen.

    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
    $SqlCmd.CommandText = "SELECT * from <TABLE>;"
    $SqlCmd.Connection = $SqlConnection
    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
    $SqlAdapter.SelectCommand = $SqlCmd
    $DataSet = New-Object System.Data.DataSet
    $SqlAdapter.Fill($DataSet)
    

Überprüfen Sie schließlich den Wert von $DataSet.Tables[0], um die Ergebnisse der Abfrage anzuzeigen.

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

Verwenden der systemseitig zugewiesenen verwalteten Identität eines virtuellen Windows-Computers für den Zugriff auf Azure Key Vault

In diesem Tutorial erfahren Sie, wie ein virtueller Windows-Computer mithilfe einer systemseitig zugewiesenen verwalteten Identität auf Azure Key Vault zugreifen kann. Key Vault ermöglicht es Ihrer Clientanwendung, mithilfe eines Geheimnisses auf Ressourcen zuzugreifen, die nicht durch Microsoft Entra ID geschützt sind. Verwaltete Identitäten werden von Azure automatisch verwaltet. Sie ermöglichen Ihnen die Authentifizierung bei Diensten, die Microsoft Entra-Authentifizierung unterstützen, ohne dass Authentifizierungsinformationen in Ihren Code eingebettet werden müssen.

Sie lernen Folgendes:

  • Gewähren des Zugriffs auf ein in einer Key Vault gespeicherten Geheimnisses für den virtuellen Computer
  • Abrufen eines Zugriffstokens mithilfe der VM-Identität und Verwenden dieses Zugriffstokens zum Abrufen des Geheimnisses aus der Key Vault

Erstellen eines Schlüsseltresors

Tipp

Die Schritte in diesem Artikel können je nach dem Portal, mit dem Sie beginnen, geringfügig variieren.

In diesem Abschnitt wird gezeigt, wie Sie einem virtuellen Computer den Zugriff auf ein in einer Key Vault-Instanz gespeichertes Geheimnis gewähren. Mithilfe von verwalteten Identitäten für Azure-Ressourcen kann der Code Zugriffstoken zur Authentifizierung von Ressourcen abrufen, die die Microsoft Entra-Authentifizierung unterstützen. 

Jedoch nicht alle Azure-Dienste unterstützen die Microsoft Entra-Authentifizierung. Um verwaltete Identitäten für Azure-Ressourcen mit diesen Diensten zu verwenden, speichern Sie die Dienstanmeldeinformationen in Azure Key Vault, und greifen Sie mit der verwalteten Identität des virtuellen Computers auf Key Vault zu, um die Anmeldeinformationen abzurufen.

Sie müssen zunächst eine Key Vault-Instanz erstellen und der systemseitig zugewiesenen verwalteten Identität der VM den Zugriff auf Key Vault erteilen.

  1. Melden Sie sich beim Azure-Portal an.

  2. Wählen Sie oben in der linken Navigationsleiste Ressource erstellen aus.

  3. Geben Sie im Textfeld Marketplace durchsuchen den Suchbegriff Key Vault ein, und drücken Sie die EINGABETASTE.

  4. Wählen Sie aus den Ergebnissen Key Vault und anschließend Erstellen aus.

  5. Geben Sie unter Name einen Namen für den neuen Schlüsseltresor an.

    Screenshot des Bildschirms „Schlüsseltresor erstellen“

  6. Füllen Sie alle erforderlichen Informationen aus. Wählen Sie unbedingt das Abonnement und die Ressourcengruppe aus, die Sie für dieses Tutorial verwenden.

  7. Wählen Sie Überprüfen + erstellen aus.

  8. Klicken Sie auf Erstellen.

Erstellen eines geheimen Schlüssels

Als Nächstes müssen Sie der Key Vault-Instanz ein Geheimnis hinzufügen, damit Sie es später mithilfe von Code abrufen können, der in Ihrer VM ausgeführt wird. In diesem Abschnitt verwenden Sie PowerShell. Dieselben Konzepte gelten jedoch für jeden Code, den Sie in Ihrer VM ausführen.

  1. Navigieren Sie zur neu erstellten Key Vault-Instanz.

  2. Wählen Sie Geheimnisse und anschließend Hinzufügen aus.

  3. Wählen Sie die Option Generieren/Importieren aus.

  4. Lassen Sie auf dem Bildschirm Geheimnis erstellen in den Uploadoptionen Manuell ausgewählt.

  5. Geben Sie einen Namen und einen Wert für das Geheimnis ein. Dabei kann es sich um einen beliebigen Wert handeln. 

  6. Lassen Sie das Aktivierungs- und das Ablaufdatum leer, und übernehmen Sie für Aktiviert die ausgewählte Option Ja

  7. Wählen Sie Erstellen aus, um das Geheimnis zu erstellen.

    Screenshot: Erstellen eines geheimen Schlüssels

Gewähren von Zugriff

Der von der VM verwendete verwaltete Identität muss Zugriff gewährt werden, um das Geheimnis zu lesen, das die Key Vault-Instanz speichert.

  1. Navigieren Sie zur neu erstellten Key Vault-Instanz.

  2. Wählen Sie im Menü auf der linken Seite die Option Zugriffsrichtlinie aus.

  3. Wählen Sie Zugriffsrichtlinie hinzufügen aus.

    Screenshot: Bildschirm mit Zugriffsrichtlinie für Schlüsseltresor

  4. Wählen Sie im Abschnitt Zugriffsrichtlinie hinzufügen unter Anhand einer Vorlage konfigurieren (optional) aus dem Dropdownmenü Geheimnisverwaltung aus.

  5. Wählen Sie Prinzipal auswählen aus, und geben Sie anschließend im Suchfeld den Namen der VM ein, die Sie zuvor erstellt haben. 

  6. Wählen Sie in der Ergebnisliste die VM und anschließend Auswählen aus.

  7. Wählen Sie Hinzufügen.

  8. Wählen Sie Speichern aus.

Zugreifen auf Daten

In diesem Abschnitt erfahren Sie, wie Sie mithilfe der VM-Identität ein Zugriffstoken abrufen und dieses zum Abrufen des Geheimnisses aus Key Vault verwenden. Wenn bei Ihnen nicht PowerShell 4.3.1 oder höher installiert ist, müssen Sie die neueste Version herunterladen und installieren.

Hinweis

Die Methode der Verwendung von PowerShell zum Authentifizieren und Abrufen des geheimen Schlüssels wird in Szenarien bevorzugt, in denen verwaltete Identitäten speziell erforderlich sind, oder beim Einbetten des Prozesses in den Code einer Anwendung.

Verwenden Sie zunächst die systemseitig zugewiesene verwaltete Identität der VM, um ein Zugriffstoken für die Authentifizierung bei Key Vault abzurufen:

  1. Navigieren Sie im Portal zu Virtuelle Computer, wechseln Sie anschließend zu Ihrer Windows-VM, und wählen Sie daraufhin in der Übersicht die Option Verbinden aus.
  2. Geben Sie Ihren Benutzernamen und Ihr Kennwort ein, die Sie beim Erstellen der Windows-VM hinzugefügt haben.
  3. Nachdem Sie nun eine Remotedesktopverbindung mit der VM hergestellt haben, öffnen Sie PowerShell in einer Remotesitzung.
  4. Rufen Sie in PowerShell die Webanforderung für den Mandanten auf, um das Token für den lokalen Host am spezifischen Port des virtuellen Computers abzurufen.

Hinweis

Verwenden Sie bei einer Sovereign Cloud wie GCC-H im PowerShell-Cmdlet den Endpunkt vault.usgovcloudapi.net anstelle von vault.azure.net.

PowerShell-Beispielanforderung:

$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -Method GET -Headers @{Metadata="true"} 

Hinweis

Beim Arbeiten mit Sovereign Clouds müssen Sie Anpassungen am Endpunkt vornehmen, der am Ende des Cmdlets angegeben ist.

Beispiel: vault.usgovcloudapi.net sollte beim Arbeiten mit Azure Government Cloud verwendet werden. Dabei sieht das Endergebnis folgendermaßen aus:

$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.usgovcloudapi.net' -Method GET -Headers @{Metadata="true"

Überprüfen Sie anhand des Artikels Azure Key Vault-Sicherheitsübersicht, ob das Suffix Ihrer Umgebung entspricht.

Die Antwort sollte in etwa wie folgt aussehen:

Screenshot: Anforderung mit Tokenantwort

Extrahieren Sie dann das Zugriffstoken aus der Antwort.

   $KeyVaultToken = $Response.access_token

Verwenden Sie schließlich das PowerShell-Cmdlet Invoke-WebRequest, um das Geheimnis abzurufen, das Sie zuvor in der Key Vault-Instanz erstellt haben, und übergeben Sie das Zugriffstoken im Autorisierungsheader. Sie benötigen die URL Ihrer Key Vaults. Diese befindet sich im Abschnitt Zusammenfassung der Seite Übersicht der Key Vault.

Invoke-RestMethod -Uri https://<your-key-vault-URL>/secrets/<secret-name>?api-version=2016-10-01 -Method GET -Headers @{Authorization="Bearer $KeyVaultToken"}

Das Ergebnis sieht in etwa wie folgt aus:

  value       id                                                                                    attributes
  -----       --                                                                                    ----------
  'My Secret' https://mi-lab-vault.vault.azure.net/secrets/mi-test/50644e90b13249b584c44b9f712f2e51 @{enabled=True; created=16…

Nachdem Sie das Geheimnis aus der Key Vault abgerufen haben, können Sie es für die Authentifizierung bei einem Dienst verwenden, für den ein Name und ein Kennwort angegeben werden müssen.

Bereinigen von Ressourcen

Wenn Sie Ressourcen bereinigen möchten, melden Sie sich beim Azure-Portal an und wählen Sie Ressourcengruppen aus. Suchen Sie anschließend die Ressourcengruppe, die im Prozess dieses Tutorials erstellt wurde (z. B. mi-test), und wählen Sie sie aus. Verwenden Sie daraufhin den Befehl Ressourcengruppe löschen.

Alternativ können Sie Ressourcen ebenfalls mithilfe von PowerShell oder der CLI bereinigen.

Verwenden der systemseitig zugewiesenen verwalteten Identität einer Windows-VM für den Zugriff auf Resource Manager

Tipp

Die Schritte in diesem Artikel können je nach dem Portal, mit dem Sie beginnen, geringfügig variieren.

In diesem Tutorial erfahren Sie, wie Sie eine systemseitig zugewiesene Identität erstellen, diese einem virtuellen Windows-Computer (VM) zuweisen und die Identität anschließend verwenden, um auf die Azure Resource Manager-API zuzugreifen. Verwaltete Dienstidentitäten werden von Azure automatisch verwaltet. Sie ermöglichen die Authentifizierung von Diensten mit Unterstützung für die Microsoft Entra-Authentifizierung, ohne dass Anmeldeinformationen in Ihren Code eingebettet werden müssen.

Sie lernen Folgendes:

  • Gewähren des Zugriffs auf Azure Resource Manager für Ihre VM
  • Abrufen eines Zugriffstokens mithilfe der systemseitig zugewiesenen verwalteten Identität der VM zum Zugreifen auf Resource Manager
  1. Melden Sie sich mit Ihrem Administratorkonto beim Azure-Portal an.

  2. Navigieren Sie zur Registerkarte Ressourcengruppen.

  3. Wählen Sie die Ressourcengruppe aus, für die Sie der verwalteten Identität der VM den Zugriff erteilen möchten.

  4. Wählen Sie im linken Bereich die Option Zugriffssteuerung (IAM) aus.

  5. Wählen Sie Hinzufügen und dann Rollenzuweisung hinzufügen aus.

  6. Wählen Sie auf der Registerkarte Rolle die Rolle Leser aus. Mit dieser Rolle können Sie alle Ressourcen anzeigen, aber keine Änderungen vornehmen.

  7. Wählen Sie auf der Registerkarte Mitglieder für die Option Zugriff zuweisen zu Verwaltete Identität aus, und wählen Sie anschließend + Mitglieder auswählen aus.

  8. Stellen Sie sicher, dass in der Dropdownliste Abonnement das richtige Abonnement aufgeführt wird. Wählen Sie unter Ressourcengruppe die Option Alle Ressourcengruppen aus.

  9. Wählen Sie in der Dropdownliste Identität verwalten den Eintrag Virtueller Computer aus.

  10. Wählen Sie schließlich unter Auswählen in der Dropdownliste Ihre VM aus, und wählen Sie dann Speichern aus.

    Screenshot: Hinzufügen der Leserrolle zur verwalteten Identität.

Abrufen eines Zugriffstokens

Verwenden Sie die systemseitig zugewiesene verwaltete Identität der VM zum Aufrufen von Resource Manager und Abrufen eines Zugriffstokens.

Zum Ausführen dieser Schritte benötigen Sie einen SSH-Client. Wenn Sie Windows verwenden, können Sie den SSH-Client im Windows-Subsystem für Linux nutzen. Wenn Sie Hilfe beim Konfigurieren der SSH-Clientschlüssel benötigen, lesen Sie die Informationen unter Vorgehensweise: Verwenden von SSH-Schlüsseln mit Windows in Azure oder Erstellen und Verwenden eines SSH-Schlüsselpaars (öffentlich und privat) für virtuelle Linux-Computer in Azure.

  1. Navigieren Sie im Portal zu Ihrem virtuellen Linux-Computer, und wählen Sie in der Übersicht die Option Verbinden aus.
  2. Verbinden Sie den virtuellen Computer mit dem gewünschten SSH-Client.
  3. Übermitteln Sie im Terminalfenster mit curl eine Anforderung an den lokalen Endpunkt der verwalteten Identitäten für Azure-Ressourcen, um ein Zugriffstoken für Azure Resource Manager abzurufen.   Die curl-Anforderung für das Zugriffstoken finden Sie weiter unten.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true

Hinweis

Der Wert des resource-Parameters muss exakt mit dem von Microsoft Entra ID erwarteten Wert übereinstimmen. Für die Ressourcen-ID von Resource Manager müssen Sie im URI den nachstehenden Schrägstrich verwenden.

Die Antwort enthält das Zugriffstoken, das Sie für den Zugriff auf Azure Resource Manager benötigen.

Antwort:

{
  "access_token":"eyJ0eXAiOi...",
  "refresh_token":"",
  "expires_in":"3599",
  "expires_on":"1504130527",
  "not_before":"1504126627",
  "resource":"https://management.azure.com",
  "token_type":"Bearer"
}

Verwenden Sie dieses Zugriffstoken, um auf Azure Resource Manager zuzugreifen, beispielsweise um die Details der Ressourcengruppe zu lesen, für die Sie dieser VM zuvor den Zugriff gewährt haben. Ersetzen Sie die Werte von <SUBSCRIPTION-ID>, <RESOURCE-GROUP> und <ACCESS-TOKEN> mit den Werten, die Sie zuvor erstellt haben.

Hinweis

Bei der URL wird die Groß-/Kleinschreibung beachtet. Achten Sie daher darauf, genau die Groß- und Kleinschreibung zu verwenden wie zuvor beim Benennen der Ressourcengruppe. Beachten Sie auch den Großbuchstaben „G“ in „resourceGroup“.

curl https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS-TOKEN>" 

Die Antwort enthält die spezifischen Informationen zur Ressourcengruppe:

{
"id":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DevTest",
"name":"DevTest",
"location":"westus",
"properties":
{
  "provisioningState":"Succeeded"
  }
} 

Zugreifen auf Azure Resource Manager mit einer benutzerseitig zugewiesenen verwalteten Identität auf einem virtuellen Windows-Computer

In diesem Tutorial erfahren Sie, wie Sie eine benutzerseitig zugewiesene Identität erstellen, diese einem virtuellen Windows-Computer (VM) zuweisen und die Identität anschließend verwenden, um auf die Azure Resource Manager-API zuzugreifen. Verwaltete Dienstidentitäten werden von Azure automatisch verwaltet. Sie ermöglichen die Authentifizierung von Diensten mit Unterstützung für die Microsoft Entra-Authentifizierung, ohne dass Anmeldeinformationen in Ihren Code eingebettet werden müssen.

Sie lernen Folgendes:

  • Erstellen einer benutzerseitig zugewiesenen verwalteten Identität
  • Zuweisen einer benutzerseitig zugewiesenen Identität zu Ihrem virtuellen Windows-Computer
  • Gewähren des Zugriffs auf eine Ressourcengruppe in Azure Resource Manager für die benutzerseitig zugewiesene Identität
  • Abrufen eines Zugriffstokens mithilfe der benutzerseitig zugewiesenen Identität und Verwenden dieses Zugriffstokens zum Aufrufen von Azure Resource Manager
  • Lesen der Eigenschaften einer Ressourcengruppe

Hinweis

Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren des Azure Az PowerShell-Moduls. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Lokales Konfigurieren von Azure PowerShell

Zum Ausführen der Skripts in diesem Beispiel haben Sie zwei Optionen:

  • Verwenden Sie die Azure Cloud Shell, die Sie über die Schaltfläche Testen in der rechten oberen Ecke der Codeblöcke öffnen können.
  • Führen Sie Skripts lokal mit Azure PowerShell aus, wie im nächsten Abschnitt beschrieben.

Führen Sie die folgenden Schritte aus, um für dieses Tutorial Azure PowerShell lokal anstelle von Cloud Shell zu verwenden:

  1. Installieren Sie die aktuelle Version von Azure PowerShell, sofern noch nicht geschehen.

  2. Melden Sie sich bei Azure an:

    Connect-AzAccount
    
  3. Installieren Sie die neueste Version von PowerShellGet.

    Install-Module -Name PowerShellGet -AllowPrerelease
    

    Sie müssen die aktuelle PowerShell-Sitzung unter Umständen beenden (Exit), nachdem Sie diesen Befehl für den nächsten Schritt ausgeführt haben.

  4. Installieren Sie die endgültige Produktversion des Az.ManagedServiceIdentity-Moduls. Sie benötigen dieses Modul, um die Vorgänge mit der benutzerseitig zugewiesenen verwalteten Identität in diesem Tutorial auszuführen:

    Install-Module -Name Az.ManagedServiceIdentity -AllowPrerelease
    

Aktivieren

Für Szenarios, die auf einer benutzerseitig zugewiesenen Identität basieren, müssen Sie in diesem Abschnitt die folgenden Schritte ausführen:

  1. Erstellen einer Identität
  2. Zuweisen der neu erstellten Identität

Identität erstellen

In diesem Abschnitt erfahren Sie, wie Sie eine benutzerseitig zugewiesene Identität erstellen, die als eigenständige Azure-Ressource erstellt wird. Mithilfe des Cmdlets New-AzUserAssignedIdentity erstellt Azure in Ihrem Microsoft Entra-Mandanten eine Identität, die Sie einer oder mehreren Azure-Dienstinstanzen zuweisen können.

Wichtig

Wenn Sie benutzerseitig zugewiesene verwaltete Identitäten erstellen, muss der Name mit einem Buchstaben oder einer Zahl beginnen und darf eine Kombination aus alphanumerischen Zeichen, Bindestrichen (-) und Unterstrichen (_) enthalten. Damit die Zuweisung zu einem virtuellen Computer oder einer VM-Skalierungsgruppe ordnungsgemäß funktioniert, darf der Name höchstens 24 Zeichen lang sein. Weitere Informationen finden Sie unter FAQs und bekannte Probleme mit der verwalteten Dienstidentität (Managed Service Identity, MSI) für Azure Active Directory.

New-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1

Die Antwort enthält Details zur erstellten benutzerseitig zugewiesenen Identität und ähnelt dem folgenden Beispiel. Definieren Sie die Werte von Id und ClientId für Ihre benutzerseitig zugewiesene Identität, da diese in den folgenden Schritten verwendet werden:

{
Id: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1
ResourceGroupName : myResourceGroupVM
Name: ID1
Location: westus
TenantId: aaaabbbb-0000-cccc-1111-dddd2222eeee
PrincipalId: aaaaaaaa-bbbb-cccc-1111-222222222222
ClientId: 00001111-aaaa-2222-bbbb-3333cccc4444
ClientSecretUrl: https://control-westus.identity.azure.net/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1/credentials?tid=aaaabbbb-0000-cccc-1111-dddd2222eeee&oid=aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb&aid=00001111-aaaa-2222-bbbb-3333cccc4444
Type: Microsoft.ManagedIdentity/userAssignedIdentities
}

Zuweisen einer Identität

In diesem Abschnitt erfahren Sie, wie Sie die benutzerseitig zugewiesene Identität einer Windows-VM zuweisen. Eine benutzerseitig zugewiesene Identität kann von Clients für mehrere Azure-Ressourcen verwendet werden. Verwenden Sie die folgenden Befehle, um einem einzelnen virtuellen Computer die benutzerseitig zugewiesene Identität zuzuweisen. Verwenden Sie die Eigenschaft Id, die im vorherigen Schritt für den Parameter -IdentityID zurückgegeben wird.

$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
Update-AzVM -ResourceGroupName TestRG -VM $vm -IdentityType "UserAssigned" -IdentityID "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"

Gewähren von Zugriff

In diesem Abschnitt erfahren Sie, wie Sie Ihrer benutzerseitig zugewiesenen Identität in Azure Resource Manager Zugriff auf eine Ressourcengruppe gewähren. Verwaltete Identitäten für Azure-Ressourcen stellen Identitäten dar, mit denen Ihr Code Zugriffstoken zur Authentifizierung bei Ressourcen-APIs anfordern kann, die die Microsoft Entra-Authentifizierung unterstützen. In diesem Tutorial greift Ihr Code auf die Azure Resource Manager-API zu.

Bevor Ihr Code auf die API zugreifen kann, müssen Sie der Identität Zugriff auf eine Ressource im Azure Resource Manager gewähren. In diesem Fall greifen Sie auf die Ressourcengruppe zu, für die die VM enthalten ist. Aktualisieren Sie abhängig von Ihrer Umgebung den Wert für <SUBSCRIPTIONID>.

$spID = (Get-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1).principalid
New-AzRoleAssignment -ObjectId $spID -RoleDefinitionName "Reader" -Scope "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/"

Die Antwort enthält Details zu der erstellten Rollenzuweisung, ähnlich wie im folgenden Beispiel dargestellt wird:

RoleAssignmentId: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000
Scope: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM
DisplayName: ID1
SignInName:
RoleDefinitionName: Reader
RoleDefinitionId: 00000000-0000-0000-0000-000000000000
ObjectId: aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
ObjectType: ServicePrincipal
CanDelegate: False

Zugreifen auf Daten

Tipp

Die Schritte in diesem Artikel können je nach dem Portal, mit dem Sie beginnen, geringfügig variieren.

Abrufen eines Zugriffstokens

Den Rest des Tutorials arbeiten Sie in der VM, die Sie zuvor erstellt haben.

  1. Melden Sie sich beim Azure-Portal an.

  2. Navigieren Sie im Portal zu Virtuelle Computer, und wechseln Sie zur Windows-VM. Wählen Sie in der Übersicht Verbinden aus.

  3. Geben Sie den Benutzernamen und das Kennwort ein, die Sie beim Erstellen der Windows-VM verwendet haben.

  4. Nachdem Sie nun eine Remotedesktopverbindung mit Ihrer VM hergestellt haben, öffnen Sie PowerShell in einer Remotesitzung.

  5. Erstellen Sie mithilfe des PowerShell-Cmdlets Invoke-WebRequest eine Anforderung an den lokalen Endpunkt für die verwalteten Identitäten für Azure-Ressourcen, um ein Zugriffstoken für Azure Resource Manager zu erhalten. Der Wert client_id wurde zurückgegeben, als Sie die benutzerseitig zugewiesene verwaltete Identität erstellt haben.

    $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&client_id=00001111-aaaa-2222-bbbb-3333cccc4444&resource=https://management.azure.com/' -Method GET -Headers @{Metadata="true"}
    $content = $response.Content | ConvertFrom-Json
    $ArmToken = $content.access_token
    

Lesen von Eigenschaften

Verwenden Sie schließlich das im vorherigen Schritt abgerufene Zugriffstoken, um auf Azure Resource Manager zuzugreifen, und lesen Sie anschließend die Eigenschaften der Ressourcengruppe, für die Sie der benutzerseitig zugewiesenen Identität den Zugriff gewährt haben. Ersetzen Sie <SUBSCRIPTION ID> durch die Abonnement-ID Ihrer Umgebung.

(Invoke-WebRequest -Uri https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroupVM?api-version=2016-06-01 -Method GET -ContentType "application/json" -Headers @{Authorization ="Bearer $ArmToken"}).content

Die Antwort enthält die jeweiligen Informationen zur Ressourcengruppe, ähnlich wie im folgenden Beispiel dargestellt wird:

{"id":"/subscriptions/<SUBSCRIPTIONID>/resourceGroups/myResourceGroupVM","name":"myResourceGroupVM","location":"eastus","properties":{"provisioningState":"Succeeded"}}

Weitere Informationen