Tutorial: Verwenden einer Linux-VM/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 Linux-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 Linux-Computer für den Zugriff auf Azure Data Lake Storage verwenden.

Sie lernen Folgendes:

  • Gewähren des Zugriffs auf Azure Data Lake Store durch Ihren virtuellen Computer
  • Abrufen eines Zugriffstokens mithilfe der systemseitig zugewiesenen verwalteten Identität eines virtuellen Computers zum Zugreifen auf Azure Data Lake Store

Gewähren von Zugriff

In diesem Abschnitt wird gezeigt, wie Sie Ihrem virtuellen Computer Zugriff auf Dateien und Ordner in Azure Data Lake Store 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 Data Lake Store-Instanz zu erstellen, führen Sie diesen Schnellstart zu Azure Data Lake Store durch. 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 Data Lake Store einen neuen Ordner, und erteilen Sie der systemseitig zugewiesenen verwalteten Identität der Linux-VM die Berechtigungen zum Lesen, Schreiben und Ausführen von Dateien in diesem Ordner:

  1. Wählen Sie im Azure-Portal im linken Bereich Data Lake Store.
  2. Wählen Sie die Data Lake Store-Instanz aus, die Sie verwenden möchten.
  3. Klicken Sie auf der Befehlsleiste auf Daten-Explorer.
  4. Der Stammordner der Data Lake Store-Instanz ist ausgewählt. Klicken Sie auf der Befehlsleiste auf Zugriff.
  5. Wählen Sie Hinzufügen. Geben Sie im Feld Auswählen den Namen Ihrer VM an, z. B. DevTestVM. Wählen Sie aus den Suchergebnissen Ihre VM aus, und wählen Sie anschließend Auswählen aus.
  6. Wählen Sie Berechtigungen auswählen aus. Wählen Sie Lesen und Ausführen aus, fügen Sie die Berechtigungen Dieser Ordner und Nur als Zugriffsberechtigung hinzu, und wählen Sie dann OK aus. Die Berechtigung sollte erfolgreich hinzugefügt werden.
  7. Schließen Sie den Bereich Zugriff.
  8. Erstellen Sie einen neuen Ordner, wählen Sie auf der Befehlsleiste Neuer Ordner aus, geben nennen Sie dem neuen Ordner einen Namen, beispielsweise TestFolder, und wählen Sie OK aus.
  9. Wählen Sie den erstellten Ordner aus, und wählen Sie dann auf der Befehlsleiste Zugriff aus.
  10. Wählen Sie Hinzufügen aus, und geben Sie dann den Namen Ihrer VM in das Feld Auswählen ein.
  11. Wählen Sie aus den Suchergebnissen Ihre VM aus, und wählen Sie anschließend Auswählen aus.
  12. Wählen Sie Berechtigungen auswählen und dann Lesen, Schreiben und Ausführen aus.
  13. Fügen Sie diese zu Dieser Ordner hinzu, fügen Sie sie anschließend als Ein Zugriffsberechtigungseintrag und ein Standardberechtigungseintrag hinzu, und wählen Sie dann OK aus. Die Berechtigung sollte erfolgreich hinzugefügt werden.

Verwaltete Identitäten für Azure-Ressourcen können nun alle Vorgänge für Dateien in dem von Ihnen erstellten Ordner ausführen. Weitere Informationen zum Verwalten des Zugriffs auf Data Lake Store finden Sie unter Zugriffssteuerung in Azure Data Lake Store.

Abrufen eines Zugriffstokens

In diesem Abschnitt wird gezeigt, wie Sie ein Zugriffstoken abrufen und das Data Lake Store-Dateisystem aufrufen. Azure Data Lake Storage 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 die Authentifizierung im Data Lake Storage-Dateisystem übermitteln Sie ein Zugriffstoken, das von Microsoft Entra ID für Ihren Endpunkt des Data Lake Storage-Dateisystems ausgestellt wurde. Das Zugriffstoken ist in einem Autorisierungsheader im Format Bearer \<ACCESS_TOKEN_VALUE\> enthalten. 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.

Als Nächstes authentifizieren Sie sich bei der REST-API für das Data Lake Store-Dateisystem mit REST-Anforderungen in cURL.

Hinweis

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

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 verwenden. Wenn Sie Hilfe beim Konfigurieren der SSH-Clientschlüssel benötigen, finden Sie unter 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 weitere Informationen.

  1. Navigieren Sie im Portal zu Ihrer Linux-VM, und wählen Sie dann im Abschnitt Übersicht die Option Verbinden aus.

  2. Stellen Sie mithilfe des gewünschten SSH-Clients eine Verbindung mit dem virtuellen Computer her.

  3. Senden Sie im Terminalfenster mithilfe von cURL eine Anforderung an den lokalen Endpunkt der verwalteten Identitäten für Azure-Ressourcen, um ein Zugriffstoken für das Data Lake Store-Dateisystem abzurufen. Der Ressourcenbezeichner für Data Lake Store lautet https://datalake.azure.net/. Es ist wichtig, den abschließenden Schrägstrich in den Ressourcenbezeichner einzuschließen.

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatalake.azure.net%2F' -H Metadata:true   
    

    Eine erfolgreiche Antwort gibt das Zugriffstoken zurück, das Sie zur Authentifizierung bei Data Lake Store verwenden:

    {"access_token":"eyJ0eXAiOiJ...",
     "refresh_token":"",
     "expires_in":"3599",
     "expires_on":"1508119757",
     "not_before":"1508115857",
     "resource":"https://datalake.azure.net/",
     "token_type":"Bearer"}
    
  4. Stellen Sie mithilfe von cURL eine Anforderung an den REST-Endpunkt Ihres Data Lake Store-Dateisystems, um die Ordner im Stammordner aufzulisten. Damit können Sie am besten überprüfen, ob alles richtig konfiguriert ist. Kopieren Sie den Wert des Zugriffstokens aus dem vorherigen Schritt. Es ist wichtig, dass die Zeichenfolge Bearer im Autorisierungsheader mit dem Großbuchstaben „B“ beginnt. Sie finden den Namen Ihrer Data Lake Store-Instanz im Abschnitt Übersicht im Bereich Data Lake Store im Azure-Portal.

    curl https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -H "Authorization: Bearer <ACCESS_TOKEN>"
    

    Eine erfolgreiche Antwort sieht wie folgt aus:

    {"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY","blockSize":0,"accessTime":1507934941392,"modificationTime":1508105430590,"replication":0,"permission":"770","owner":"bd0e76d8-ad45-4fe1-8941-04a7bf27f071","group":"bd0e76d8-ad45-4fe1-8941-04a7bf27f071"}]}}
    
  5. Laden Sie nun eine Datei in Ihre Data Lake Store-Instanz hoch. Erstellen Sie zunächst eine Datei zum Hochladen.

    echo "Test file." > Test1.txt
    
  6. Stellen Sie mit cURL eine Anforderung an den REST-Endpunkt Ihres Data Lake Store-Dateisystems, um die Datei in den zuvor erstellten Ordner hochzuladen. Zum Upload gehört eine Umleitung, der cURL automatisch folgt.

    curl -i -X PUT -L -T Test1.txt -H "Authorization: Bearer <ACCESS_TOKEN>" 'https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/<FOLDER_NAME>/Test1.txt?op=CREATE' 
    

    Eine erfolgreiche Antwort sieht wie folgt aus:

    HTTP/1.1 100 Continue
    HTTP/1.1 307 Temporary Redirect
    Cache-Control: no-cache, no-cache, no-store, max-age=0
    Pragma: no-cache
    Expires: -1
    Location: https://mytestadls.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE&write=true
    x-ms-request-id: 756f6b24-0cca-47ef-aa12-52c3b45b954c
    ContentLength: 0
    x-ms-webhdfs-version: 17.04.22.00
    Status: 0x0
    X-Content-Type-Options: nosniff
    Strict-Transport-Security: max-age=15724800; includeSubDomains
    Date: Sun, 15 Oct 2017 22:10:30 GMT
    Content-Length: 0
    
    HTTP/1.1 100 Continue
    
    HTTP/1.1 201 Created
    Cache-Control: no-cache, no-cache, no-store, max-age=0
    Pragma: no-cache
    Expires: -1
    Location: https://mytestadls.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE&write=true
    x-ms-request-id: af5baa07-3c79-43af-a01a-71d63d53e6c4
    ContentLength: 0
    x-ms-webhdfs-version: 17.04.22.00
    Status: 0x0
    X-Content-Type-Options: nosniff
    Strict-Transport-Security: max-age=15724800; includeSubDomains
    Date: Sun, 15 Oct 2017 22:10:30 GMT
    Content-Length: 0
    

Schließlich können Sie mithilfe anderer APIs für das Data Lake Store-Dateisystem Dateien anfügen und herunterladen und viele andere Aufgaben durchführen.

Verwenden einer systemseitig zugewiesenen verwalteten Identität eines virtuellen Linux-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 Linux-Computer verwenden, um auf Azure Storage zuzugreifen.

Sie lernen Folgendes:

  • Erstellen eines Speicherkontos
  • Erstellen eines Blobcontainers im Speicherkonto
  • Gewähren Sie der verwalteten Identität der Linux-VM Zugriff auf einen Azure Storage-Container.
  • Erhalten eines Zugriffstokens und seine Verwendung zum Aufrufen von Azure Storage

Erstellen eines Speicherkontos

Um die CLI-Skripte in diesem Beispiel auszuführen, haben Sie zwei Optionen:

Erstellen Sie zuerst 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: Bildschirms zum 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 Blob-Dienst und dann Container aus.

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

  4. Wählen Sie Neuer Container aus, und geben Sie dann einen Namen für den Container ein.

  5. Stellen Sie sicher, dass der Standardwert Öffentliche Zugriffsebene lautet.

    Screenshot: Bildschirms zum Erstellen von Speichercontainern

  6. 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 Hello world! hinzu, und speichern Sie die Datei.

  7. Wählen Sie den Containernamen und anschließend Hochladen aus. Dadurch wird die Datei in den neu erstellten Container hochgeladen.

  8. Wählen Sie im Bereich Blob hochladen im Abschnitt Dateien das Ordnersymbol aus, und navigieren Sie auf Ihrem lokalen Computer zu der Datei hello_world.txt.

  9. Wählen Sie die Datei und dann Hochladen aus.

    Screenshot: Abschnitt „Textdatei hochladen“

Gewähren des Zugriffs auf einen Azure-Speichercontainer für Ihre VM

Sie können die verwaltete Identität des virtuellen Computers verwenden, um die Daten in Azure Storage Blob abzurufen. Verwaltete Identitäten für Azure-Ressourcen können zum Authentifizieren bei Ressourcen verwendet werden, die die Microsoft Entra-Authentifizierung unterstützen. Gewähren Sie Zugriff, indem Sie der verwalteten Identität im Bereich der Ressourcengruppe, die Ihr Speicherkonto enthält, die Rolle storage-blob-data-reader zuweisen.

Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

Hinweis

Weitere Informationen zu den verschiedenen Rollen, die Sie zum Gewähren von Berechtigungen für die Speicherüberprüfung verwenden können, finden Sie unter Autorisieren des Zugriffs auf Blobs und Warteschlangen mit Microsoft Entra.

Erhalten eines Zugriffstokens und seine Verwendung zum Aufrufen von Azure Storage

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

Um die folgenden Schritte abzuschließen, müssen Sie von der zuvor erstellten VM aus arbeiten. Außerdem benötigen Sie einen SSH-Client, der eine Verbindung damit herstellt.

Wenn Sie Windows verwenden, können Sie den SSH-Client im Windows-Subsystem für Linux verwenden. 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 Azure-Portal zu Virtuelle Computer. Wechseln Sie zu Ihrem virtuellen Linux-Computer, und klicken Sie dann auf der Seite Übersicht auf Verbinden. Kopieren Sie die Zeichenfolge, um eine Verbindung mit Ihrem virtuellen Computer herzustellen.

  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ät zum Abrufen eines Zugriffstokens für Azure Storage.

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true
    
  4. Verwenden Sie das Zugriffstoken, um auf Azure Storage zuzugreifen. Wenn Sie z. B. den Inhalt der Beispieldatei, die Sie zuvor in den Container hochgeladen haben, lesen möchten, ersetzen Sie die Werte von <STORAGE ACCOUNT>, <CONTAINER NAME> und <FILE NAME> durch die Werte, die Sie zuvor angegeben haben, und <ACCESS TOKEN> durch das Token, das im vorherigen Schritt zurückgegeben wurde.

    curl https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME> -H "x-ms-version: 2017-11-09" -H "Authorization: Bearer <ACCESS TOKEN>"
    

    Die Antwort enthält den Inhalt der Datei:

    Hello world! :)
    

Schließlich können Sie das Token auch in einer Variablen speichern und es wie gezeigt an den zweiten Befehl übergeben:

# Run the first curl command and capture its output in a variable
access_token=$(curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true | jq -r '.access_token')

# Run the second curl command with the access token
curl "https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME>" \
  -H "x-ms-version: 2017-11-09" \
  -H "Authorization: Bearer $access_token"

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

In diesem Tutorial erfahren Sie, wie Sie eine systemseitig zugewiesene verwaltete Identität für eine Linux-VM verwenden, um SAS-Anmeldeinformationen (Shared Access Signature) für Storage abzurufen, genauer gesagt Dienst-SAS-Anmeldeinformationen.

Hinweis

Der in diesem Tutorial generierte SAS-Schlüssel wird nicht eingeschränkt/an den virtuellen Computer gebunden.

Eine Dienst-SAS gewährt eingeschränkten Zugriff auf Objekte in einem Speicherkonto, ohne einen Kontozugriffsschlüssel bereitzustellen. Der Zugriff kann auf einen bestimmten Zeitraum und einen bestimmten Dienst begrenzt werden. Sie können SAS-Anmeldeinformationen wie gewohnt bei Speichervorgängen verwenden, z. B. bei der Verwendung des Storage SDK. In diesem Tutorial laden Sie ein Blob mithilfe der Azure Storage CLI hoch und herunter.

Sie lernen Folgendes:

  • Speicherkonto erstellen
  • Erstellen eines Blob-Containers im Speicherkonto
  • 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

Erstellen eines Speicherkontos

Erstellen Sie ein Speicherkonto, sofern Sie noch keines besitzen. Sie können diesen Schritt auch überspringen und der systemseitig zugewiesenen verwalteten Identität Ihrer VM Zugriff auf die Schlüssel eines vorhandenen Speicherkontos gewähren.

  1. Wählen Sie im Azure-Portal in der linken oberen Ecke die Schaltfläche +/Neuen Dienst erstellen aus.

  2. Wählen Sie Speicher und dann Speicherkonto aus. Daraufhin wird der Bereich Speicherkonto erstellen angezeigt.

  3. Geben Sie unter Name einen Namen für das Speicherkonto ein. Merken Sie sich diesen Namen, da Sie ihn später benötigen.

  4. Stellen Sie sicher, dass das Bereitstellungsmodell auf Ressourcen-Manager festgelegt ist und die Kontoart auf Allgemein festgelegt ist.

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

  6. Wählen Sie Erstellen aus, um die Erstellung eines Speicherkontos abzuschließen.

    Screenshot: Bildschirms zum Erstellen eines neuen Speicherkontos

Erstellen eines Blob-Containers im Speicherkonto

Später im Tutorial laden Sie eine Datei in das neue Speicherkonto hoch und laden die Datei herunter. Da Dateien Blob Storage erfordern, müssen wir einen Blobcontainer erstellen, in dem die Datei gespeichert wird.

  1. Navigieren Sie zum neu erstellten Speicherkonto.

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

  3. Wählen Sie oben auf der Seite + Container aus. Daraufhin wird der Bereich Neuer Container angezeigt.

  4. Geben Sie dem Container einen Namen, und wählen Sie eine Zugriffsebene aus. Klicken Sie anschließend auf OK. Sie benötigen den Namen, den Sie später im Lernprogramm angeben.

    Screenshot: Bildschirm zum Erstellen von Speichercontainern

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

Azure Storage bietet native Unterstützung für die Microsoft Entra-Authentifizierung. Dadurch können Sie die systemseitig zugewiesene verwaltete Identität Ihrer VM zum Abrufen einer Speicher-SAS von Resource Manager verwenden. Anschließend können Sie die SAS verwenden, um auf den Speicher zuzugreifen.

In diesem Abschnitt gewähren Sie der systemseitig zugewiesenen verwalteten Identität Ihrer VM Zugriff auf die SAS des Speicherkontos. Weisen Sie der verwalteten Identität im Bereich der Ressourcengruppe, die Ihr Speicherkonto enthält, die Rolle Speicherkontomitwirkender zu.

Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

Hinweis

Weitere Informationen zu den verschiedenen Rollen, die Sie zum Gewähren von Berechtigungen für die Speicherüberprüfung verwenden können, finden Sie unter Autorisieren des Zugriffs auf Blobs und Warteschlangen mit Microsoft Entra ID.

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

In den restlichen Teilen dieses Tutorials arbeiten Sie von der VM aus, die Sie zuvor erstellt haben.

Für die Ausführung 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. Unterstützung bei der Konfiguration der Schlüssel Ihres SSH-Clients finden Sie unter:

Nachdem Sie ihren SSH-Client haben, führen Sie die folgenden Schritte aus:

  1. Navigieren Sie im Azure-Portal zu Virtuellen Computer, und wechseln Sie dann zu Ihrer Linux-VM.
  2. Wählen Sie auf der Seite Übersicht am oberen Bildschirmrand Verbinden aus.
  3. Kopieren Sie die Zeichenfolge, um eine Verbindung mit Ihrem virtuellen Computer herzustellen.
  4. Stellen Sie mit Ihrem SSH-Client eine Verbindung mit Ihrem virtuellen Computer her.
  5. Geben Sie Ihr Kennwort ein, das Sie beim Erstellen der Linux-VMhinzugefügt haben. Anschließend sollten Sie erfolgreich angemeldet werden.
  6. Verwenden Sie CURL, um ein Zugriffstoken für Azure Resource Manager abzurufen.

Die CURL-Anforderung und -Antwort für das Zugriffstoken sehen Sie unten:

curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -H Metadata:true    

Hinweis

In der vorherigen Anforderung muss der Wert des Parameters resource genau 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.

In der folgenden Antwort wurde das access_token-Element aus Gründen der Übersichtlichkeit gekürzt.

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

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

Als Nächstes verwenden Sie CURL, um Resource Manager mit dem Zugriffstoken, das wir im vorherigen Abschnitt abgerufen haben, aufzurufen. Verwenden Sie dies, um eine SAS-Speicheranmeldeinformationen zu erstellen. Sobald wir die SAS-Anmeldeinformationen haben, können wir Upload-/Download-Vorgänge in den bzw. aus dem Speicher 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.
}

Geben Sie diese Parameter im Text der POST-Anforderung für die SAS-Anmeldeinformationen an. Weitere Informationen zu Parametern für das Erstellen von SAS-Anmeldeinformationen finden Sie in der REST-Referenz zu „List Service SAS“.

Verwenden Sie die folgende cURL-Anforderung, um die SAS-Anmeldeinformationen abzurufen. Ersetzen Sie die Parameter<SUBSCRIPTION ID>, <RESOURCE GROUP>, <STORAGE ACCOUNT NAME>, <CONTAINER NAME> und <EXPIRATION TIME> durch Ihre eigenen Werte. Ersetzen Sie den Wert <ACCESS TOKEN> durch das Zugriffstoken, das Sie zuvor abgerufen haben:

curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listServiceSas/?api-version=2017-06-01 -X POST -d "{\"canonicalizedResource\":\"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>\",\"signedResource\":\"c\",\"signedPermission\":\"rcw\",\"signedProtocol\":\"https\",\"signedExpiry\":\"<EXPIRATION TIME>\"}" -H "Authorization: Bearer <ACCESS TOKEN>"

Hinweis

Beim Text in der URL oben wird zwischen Groß-/Kleinschreibung unterschieden. Wenn Sie also für Ihre Ressourcengruppen Groß-/Kleinschreibung verwenden, achten Sie darauf, die richtige Schreibweise zu verwenden. Zudem ist es wichtig zu wissen, dass es sich um eine POST-Anforderung und nicht um eine GET-Anforderung handelt.

Die cURL-Antwort gibt die SAS-Anmeldeinformationen zurück:

{"serviceSasToken":"sv=2015-04-05&sr=c&spr=https&st=2017-09-22T00%3A10%3A00Z&se=2017-09-22T02%3A00%3A00Z&sp=rcw&sig=QcVwljccgWcNMbe9roAJbD8J5oEkYoq%2F0cUPlgriBn0%3D"} 

Erstellen Sie auf einer Linux-VM mithilfe des folgenden Befehls eine Blob-Beispieldatei, die in Ihren Blob-Speichercontainer hochgeladen werden soll:

echo "This is a test file." > test.txt

Im nächsten Schritt authentifizieren Sie sich mit dem CLI-Befehl az storage unter Verwendung der SAS-Anmeldeinformationen. Dann laden Sie die Datei in den Blob-Container hoch. Für diesen Schritt müssen Sie auf Ihrer VM die neueste Azure CLI installieren, sofern dies noch nicht geschehen ist.

 az storage blob upload --container-name 
                        --file 
                        --name
                        --account-name 
                        --sas-token

Antwort:

Finished[#############################################################]  100.0000%
{
  "etag": "\"0x8D4F9929765C139\"",
  "lastModified": "2017-09-21T03:58:56+00:00"
}

Sie können die Datei mithilfe der Azure-Befehlszeilenschnittstelle auch herunterladen und mit den SAS-Anmeldeinformationen authentifizieren.

Anforderung:

az storage blob download --container-name
                         --file 
                         --name 
                         --account-name
                         --sas-token

Antwort:

{
  "content": null,
  "metadata": {},
  "name": "testblob",
  "properties": {
    "appendBlobCommittedBlockCount": null,
    "blobType": "BlockBlob",
    "contentLength": 16,
    "contentRange": "bytes 0-15/16",
    "contentSettings": {
      "cacheControl": null,
      "contentDisposition": null,
      "contentEncoding": null,
      "contentLanguage": null,
      "contentMd5": "Aryr///Rb+D8JQ8IytleDA==",
      "contentType": "text/plain"
    },
    "copy": {
      "completionTime": null,
      "id": null,
      "progress": null,
      "source": null,
      "status": null,
      "statusDescription": null
    },
    "etag": "\"0x8D4F9929765C139\"",
    "lastModified": "2017-09-21T03:58:56+00:00",
    "lease": {
      "duration": null,
      "state": "available",
      "status": "unlocked"
    },
    "pageBlobSequenceNumber": null,
    "serverEncrypted": false
  },
  "snapshot": null
}

Verwenden einer systemseitig zugewiesenen verwalteten Identität eines virtuellen Linux-Computers für den Zugriff auf Azure Storage über Zugriffsschlüssel

In diesem Tutorial erfahren Sie, wie Sie eine systemseitig zugewiesene verwaltete Identität für einen virtuellen Linux-Computer verwenden, um Speicherkonto-Zugriffsschlüssel abzurufen. Sie können einen Speicherzugriffsschlüssel wie gewohnt bei Speichervorgängen verwenden, z. B. bei der Verwendung des Storage SDK. Für dieses Tutorial laden Sie Blobs mithilfe der Azure-CLI hoch und herunter.

Sie lernen Folgendes:

  • Gewähren des Zugriffs auf Speicherkonto-Zugriffsschlüssel für Ihren virtuellen Computer in Resource Manager
  • Abrufen eines Zugriffstokens mithilfe der Identität Ihres virtuellen Computers und Verwenden dieses Zugriffstokens zum Abrufen von Speicherzugriffsschlüsseln aus Resource Manager

Erstellen eines Speicherkontos

Wenn Sie kein bestehendes Speicherkonto haben, bevor Sie mit diesem Tutorial beginnen, müssen Sie eines erstellen. Wenn Sie über ein vorhandenes Speicherkonto verfügen, führen Sie die folgenden Schritte aus, um der systemseitig zugewiesenen verwalteten Identität Ihrer VM Zugriff auf die Schlüssel für Ihr vorhandenes Speicherkonto zu gewähren.

  1. Wählen Sie im Azure-Portal in der linken oberen Ecke die Schaltfläche +/Neuen Dienst erstellen aus.

  2. Wählen Sie Speicher und dann Speicherkonto aus. Daraufhin wird der Bereich Speicherkonto erstellen angezeigt.

  3. Geben Sie unter Name einen Namen für das Speicherkonto ein. Merken Sie sich diesen Namen, da Sie ihn später benötigen.

  4. Stellen Sie sicher, dass das Bereitstellungsmodell auf Ressourcen-Manager festgelegt ist und die Kontoart auf Allgemein festgelegt ist.

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

  6. Wählen Sie Erstellen aus, um die Erstellung eines Speicherkontos abzuschließen.

    Screenshot: Erstellung eines neuen Speicherkontos

Erstellen eines Blob-Containers im Speicherkonto

Später im Tutorial laden Sie eine Datei in das neue Speicherkonto hoch und laden die Datei herunter. Da Dateien Blob Storage erfordern, müssen wir einen Blobcontainer erstellen, in dem die Datei gespeichert wird.

  1. Navigieren Sie zum neu erstellten Speicherkonto.

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

  3. Wählen Sie oben auf der Seite + Container aus. Daraufhin wird der Bereich Neuer Container angezeigt.

  4. Geben Sie dem Container einen Namen, und wählen Sie eine Zugriffsebene aus. Klicken Sie anschließend auf OK. Sie benötigen den Namen, den Sie später im Lernprogramm angeben.

    Screenshot: Erstellung eines Speichercontainers

Gewähren des Zugriffs für die systemseitig zugewiesene verwaltete Identität Ihres virtuellen Computers zur Verwendung von Speicherkonto-Zugriffsschlüsseln

Azure Storage unterstützt die Microsoft Entra-Authentifizierung nicht nativ. Sie können jedoch die systemseitig zugewiesene verwaltete Identität des virtuellen Computers zum Abrufen einer Speicher-SAS von Resource Manager verwenden und mithilfe 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. Gewähren Sie Zugriff, indem Sie der verwalteten Identität im Bereich der Ressourcengruppe, die Ihr Speicherkonto enthält, die Rolle Speicherkontomitwirkender zuweisen.

Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

Hinweis

Weitere Informationen zu den verschiedenen Rollen, die Sie zum Gewähren von Berechtigungen für die Speicherüberprüfung verwenden können, finden Sie unter Autorisieren des Zugriffs auf Blobs und Warteschlangen mit Microsoft Entra ID.

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

Im weiteren Verlauf des Tutorials arbeiten wir von der VM aus, die wir zuvor erstellt haben.

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 verwenden. 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 Azure-Portal zu Virtuelle Computer. Wählen Sie Ihren virtuellen Linux-Computer aus, und wählen Sie oben auf der Seite Übersicht dann Verbinden aus. Kopieren Sie die Zeichenfolge, um eine Verbindung mit Ihrem virtuellen Computer herzustellen.

  2. Stellen Sie mit Ihrem SSH-Client eine Verbindung mit Ihrem virtuellen Computer her.

  3. Als Nächstes müssen Sie das Kennwort eingeben, das Sie beim Erstellen der Linux-VMhinzugefügt haben.

  4. Verwenden Sie CURL, um ein Zugriffstoken für Azure Resource Manager abzurufen.

    Die CURL-Anforderung und -Antwort für das Zugriffstoken sehen Sie unten:

    curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -H Metadata:true
    

    Hinweis

    In der Anforderung oben muss der Wert des resource-Parameters genau 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. In der folgenden Antwort wurde das access_token-Element aus Gründen der Übersichtlichkeit gekürzt.

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

Abrufen von Speicherkonto-Zugriffsschlüsseln aus Azure Resource Manager, um Speicheraufrufe auszuführen

Nun rufen Sie mit CURL und dem Zugriffstoken, das im vorherigen Abschnitt abgerufen wurde, Resource Manager auf, um den Speicherzugriffsschlüssel abzurufen. Sobald wir den Speicherzugriffsschlüssel haben, können wir Vorgänge zum Up- und Download von Speicher aufrufen. Ersetzen Sie die Parameter <SUBSCRIPTION ID>, <RESOURCE GROUP>, und <STORAGE ACCOUNT NAME> durch Ihre eigenen Werte. Ersetzen Sie den Wert <ACCESS TOKEN> durch das Zugriffstoken, das Sie zuvor abgerufen haben:

curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listKeys?api-version=2016-12-01 --request POST -d "" -H "Authorization: Bearer <ACCESS TOKEN>" 

Hinweis

Für den Text in der URL oben wird zwischen Groß-/Kleinschreibung unterschieden. Wenn Sie also für Ihre Ressourcengruppen Groß-/Kleinschreibung verwenden, achten Sie darauf, die richtige Schreibweise zu verwenden. Wichtig ist darüber hinaus die Tatsache, dass es sich um eine POST-Anforderung und nicht um eine GET-Anforderung handelt. Stellen Sie sicher, dass Sie mit -d einen Wert zum Erfassen einer Längenbeschränkung übergeben, der NULL sein kann.

Die CURL-Antwort stellt die Liste der Schlüssel bereit:

{"keys":[{"keyName":"key1","permissions":"Full","value":"iqDPNt..."},{"keyName":"key2","permissions":"Full","value":"U+uI0B..."}]} 

Erstellen Sie eine Beispiel-Blob-Datei, die in den Blob-Speichercontainer hochgeladen wird. Dies ist auf einem virtuellen Linux-Computer mit dem folgenden Befehl möglich.

echo "This is a test file." > test.txt

Im nächsten Schritt authentifizieren Sie sich mit dem CLI-Befehl az storage unter Verwendung des Speicherzugriffsschlüssels. Laden Sie die Datei dann in den BLOB-Container hoch. Für diesen Schritt müssen Sie auf Ihrer VM die neueste Azure CLI installieren, sofern dies noch nicht geschehen ist.

az storage blob upload -c <CONTAINER NAME> -n test.txt -f test.txt --account-name <STORAGE ACCOUNT NAME> --account-key <STORAGE ACCOUNT KEY>

Antwort:

Finished[#############################################################]  100.0000%
{
  "etag": "\"0x8D4F9929765C139\"",
  "lastModified": "2017-09-12T03:58:56+00:00"
}

Zudem können Sie die Datei mithilfe der Azure CLI herunterladen und mit dem Speicherzugriffsschlüssel authentifizieren.

Anforderung:

az storage blob download -c <CONTAINER NAME> -n test.txt -f test-download.txt --account-name <STORAGE ACCOUNT NAME> --account-key <STORAGE ACCOUNT KEY>

Antwort:

{
  "content": null,
  "metadata": {},
  "name": "test.txt",
  "properties": {
    "appendBlobCommittedBlockCount": null,
    "blobType": "BlockBlob",
    "contentLength": 21,
    "contentRange": "bytes 0-20/21",
    "contentSettings": {
      "cacheControl": null,
      "contentDisposition": null,
      "contentEncoding": null,
      "contentLanguage": null,
      "contentMd5": "LSghAvpnElYyfUdn7CO8aw==",
      "contentType": "text/plain"
    },
    "copy": {
      "completionTime": null,
      "id": null,
      "progress": null,
      "source": null,
      "status": null,
      "statusDescription": null
    },
    "etag": "\"0x8D5067F30D0C283\"",
    "lastModified": "2017-09-28T14:42:49+00:00",
    "lease": {
      "duration": null,
      "state": "available",
      "status": "unlocked"
    },
    "pageBlobSequenceNumber": null,
    "serverEncrypted": false
  },
  "snapshot": null
}

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

In diesem Tutorial erfahren Sie, wie ein virtueller Linux-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 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 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 dem Schlüsseltresor

Erstellen eines Schlüsseltresors

Außerdem benötigen Sie einen virtuellen Linux-Computer, auf dem systemseitig zugewiesene verwaltete Identitäten aktiviert sind.

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.

Zunächst müssen Sie eine Key Vault-Instanz erstellen und der systemseitig zugewiesenen verwalteten Identität der VM den Zugriff darauf 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 Feld Marketplace durchsuchen den Suchbegriff Key Vault ein, und drücken Sie die EINGABETASTE.

  4. Wählen Sie in den Ergebnissen Key Vault aus.

  5. Klicken Sie auf Erstellen.

  6. Geben Sie unter Name einen Namen für die neue Key Vault-Instanz an.

    Screenshot: Bildschirm zum Erstellen von Azure Key Vault-Instanzen

  7. Geben Sie alle erforderlichen Informationen ein. Wählen Sie dabei unbedingt das Abonnement und die Ressourcengruppe aus, in denen Sie den für dieses Tutorial verwendeten virtuellen Computer erstellt haben.

  8. Wählen Sie Überprüfen + erstellen und dann Erstellen aus.

Erstellen eines geheimen Schlüssels

Fügen Sie als Nächstes der Key Vault-Instanz ein Geheimnis hinzu, das Sie später mithilfe von Code abrufen können, der auf der VM ausgeführt wird. In diesem Abschnitt verwenden Sie PowerShell. Die gleichen Konzepte gelten jedoch für jeden Code, der auf dieser VM ausgeführt wird.

  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. Wechseln Sie im Abschnitt Geheimnis erstellen zu Uploadoptionen, und stellen Sie sicher, dass Manuell ausgewählt ist.

  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 Aktivierungsdatum und das Ablaufdatum leer, und vergewissern Sie sich, dass Aktiviert auf Ja festgelegt ist. 

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

    Screenshot: Erstellen des Geheimnisses

Gewähren von Zugriff

Der von der VM verwendeten verwalteten Identität muss Zugriff gewährt werden, damit sie das in Key Vault gespeicherte Geheimnis lesen kann.

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

  2. Wählen Sie in der linken Navigationsleiste Zugriffsrichtlinie aus.

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

    Screenshot: Key Vault-Bildschirm zum Erstellen einer Zugriffsrichtlinie

  4. Wählen Sie im Abschnitt Zugriffsrichtlinie hinzufügen unter Anhand einer Vorlage konfigurieren (optional) im Dropdownmenü die Option Verwaltung von Geheimnissen aus.

  5. Wählen Sie Prinzipal auswählen aus, und geben Sie in das Suchfeld den Namen der zuvor erstellten VM ein.  Wählen Sie die VM in der Ergebnisliste aus, und wählen Sie dann Auswählen aus.

  6. Wählen Sie Hinzufügen.

  7. Wählen Sie Speichern aus.

Zugreifen auf Daten

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

Wichtig

Alle Azure SDKs unterstützen die Azure.Identity-Bibliothek, die das Erwerben von Microsoft Entra-Token für den Zugriff auf Zieldienste vereinfacht. Erfahren Sie mehr über Azure SDKs und den Zugriff auf die Azure.Identity-Bibliothek.

  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 Key Vault 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%3A%2F%2Fvault.azure.net' -H Metadata:true
  ```
The response includes the access token you need to access Resource Manager. 
  
Response:
  
```bash
{"access_token":"eyJ0eXAi...",
"refresh_token":"",
"expires_in":"3599",
"expires_on":"1504130527",
"not_before":"1504126627",
"resource":"https://vault.azure.net",
"token_type":"Bearer"} 

Sie können dieses Zugriffstoken zur Authentifizierung bei Azure Key Vault verwenden.  Die nächste CURL-Anforderung zeigt, wie Sie mithilfe von CURL und der Key Vault-REST-API ein Geheimnis aus der Key Vault lesen.  Sie benötigen die URL Ihrer Key Vault-Instanz. Diese befindet sich in Key Vault auf der Seite Übersicht im Abschnitt Zusammenfassung.  Außerdem benötigen Sie das Zugriffstoken, das Sie im vorherigen Aufruf abgerufen haben. 

curl 'https://<YOUR-KEY-VAULT-URL>/secrets/<secret-name>?api-version=2016-10-01' -H "Authorization: Bearer <ACCESS TOKEN>" 

Die Antwort sieht wie folgt aus:

{"value":"p@ssw0rd!","id":"https://mytestkeyvault.vault.azure.net/secrets/MyTestSecret/7c2204c6093c4d859bc5b9eff8f29050","attributes":{"enabled":true,"created":1505088747,"updated":1505088747,"recoveryLevel":"Purgeable"}} 

Nachdem Sie das Geheimnis aus 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 bereit zur Bereinigung der Ressourcen sind, melden Sie sich beim Azure-Portal an, und wählen Sie Ressourcengruppen aus. Suchen Sie anschließend die Ressourcengruppe, die im Verlauf dieses Tutorials erstellt wurde (z. B. mi-test), und wählen Sie sie aus. Sie können den Befehl Ressourcengruppe löschen oder PowerShell oder die CLI verwenden.

Verwenden der systemseitig zugewiesenen verwalteten Identität einer Linux-VM für den Zugriff auf eine Ressourcengruppe in 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 Linux-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.

Folgendes wird vermittelt:

  • 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 im Dropdownmenü Identitätsverwaltung Virtueller Computer aus.

  10. Wählen Sie im Dropdownmenü für die Option Auswählen Ihre VM aus, und wählen Sie anschließend Speichern aus.

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

Abrufen eines Zugriffstokens

Verwenden Sie die systemseitig zugewiesene verwaltete Identität der VM, um Resource Manager aufzurufen und ein Zugriffstoken abzurufen.

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 Azure-Portal zu Ihrer Linux-VM.
  2. Wählen Sie in der Übersicht Verbinden aus.
  3. Verbinden Sie den virtuellen Computer mit dem gewünschten SSH-Client.
  4. Führen Sie im Terminalfenster mithilfe von curl eine Anforderung an den lokalen Endpunkt der verwalteten Identitäten für Azure-Ressourcen aus, 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. Stellen Sie daher sicher, dass Sie genau die Groß-/Kleinschreibung verwenden, die Sie zuvor bei der Benennung der Ressourcengruppe verwendet haben. Beachten Sie zudem die Großschreibung von „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"
  }
} 

Verwenden einer benutzerseitig zugewiesenen verwalteten Identität der Linux-VM für den Zugriff auf eine Ressourcengruppe in Azure 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 benutzerseitig zugewiesene Identität erstellen, diese einer Linux-VM zuweisen und 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

Erstellen Sie mit az identity create eine benutzerseitig zugewiesene verwaltete Identität. Der Parameter -g gibt die Ressourcengruppe an, in der die vom Benutzer zugewiesene verwaltete Identität erstellt wird, und der Parameter -n gibt den Namen an. Ersetzen Sie die Parameterwerte <RESOURCE GROUP> und <UAMI NAME> durch Ihre eigenen Werte:

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.

az identity create -g <RESOURCE GROUP> -n <UAMI NAME>

Die Antwort enthält Details zu der erstellten benutzerseitig zugewiesenen verwalteten Identität, ähnlich dem folgenden Beispiel. Notieren Sie sich den Wert id Ihrer benutzerseitig zugewiesenen verwalteten Identität, da er im nächsten Schritt verwendet wird:

{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"clientSecretUrl": "https://control-westcentralus.identity.azure.net/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>/credentials?tid=5678&oid=9012&aid=aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"id": "/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>",
"location": "westcentralus",
"name": "<UAMI NAME>",
"principalId": "9012",
"resourceGroup": "<RESOURCE GROUP>",
"tags": {},
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

Zuweisen einer Identität zum virtuellen Linux-Computer

Eine benutzerseitig zugewiesene verwaltete 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 verwaltete Identität zuzuweisen. Verwenden Sie die Eigenschaft Id, die im vorherigen Schritt für den Parameter -IdentityID zurückgegeben wird.

Weisen Sie mit az vm identity assign Ihrem virtuellen Linux-Computer die benutzerseitig zugewiesene verwaltete Identität zu. Ersetzen Sie die Parameterwerte <RESOURCE GROUP> und <VM NAME> durch Ihre eigenen Werte. Verwenden Sie die Eigenschaft id, die im vorherigen Schritt für den Parameterwert --identities zurückgegeben wird.

az vm identity assign -g <RESOURCE GROUP> -n <VM NAME> --identities "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>"

Gewähren des Zugriffs auf eine Ressourcengruppe in Azure Resource Manager

Verwaltete Identitäten 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 ist es die Ressourcengruppe, in der die VM enthalten ist. Aktualisieren Sie abhängig von Ihrer Umgebung die Werte für <SUBSCRIPTION ID> und <RESOURCE GROUP>. Ersetzen Sie <UAMI PRINCIPALID> durch die Eigenschaft principalId, die unter Erstellen einer benutzerseitig zugewiesenen verwalteten Identität vom Befehl az identity create zurückgegeben wurde:

az role assignment create --assignee <UAMI PRINCIPALID> --role 'Reader' --scope "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP> "

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

{
  "id": "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
  "name": "00000000-0000-0000-0000-000000000000",
  "properties": {
    "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
    "roleDefinitionId": "/subscriptions/<SUBSCRIPTION ID>/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000",
    "scope": "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>"
  },
  "resourceGroup": "<RESOURCE GROUP>",
  "type": "Microsoft.Authorization/roleAssignments"
}

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

Tipp

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

Im restlichen Tutorial arbeiten Sie von der VM aus, die Sie zuvor erstellt haben.

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

  1. Melden Sie sich beim Azure-Portal an.

  2. Navigieren Sie im Portal zu Virtuelle Computer, wechseln Sie dann zum virtuellen Linux-Computer, und klicken Sie in der Übersicht auf Verbinden. Kopieren Sie die Zeichenfolge, um eine Verbindung mit Ihrem virtuellen Computer herzustellen.

  3. Stellen Sie eine Verbindung zwischen der VM und dem gewünschten SSH-Client her. Wenn Sie Windows verwenden, können Sie den SSH-Client im Windows-Subsystem für Linux verwenden. 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.

  4. Erstellen Sie im Terminalfenster mit CURL eine Anforderung an den Azure IMDS-Identitätsendpunkt (Instance Metadata Service) zum Abrufen eines Zugriffstokens für den Azure Resource Manager.

    Im folgenden Beispiel wird die cURL-Anforderung zum Abrufen eines Zugriffstokens angezeigt. Ersetzen Sie <CLIENT ID> durch die Eigenschaft clientId, die unter Erstellen einer benutzerseitig zugewiesenen verwalteten Identität vom Befehl az identity create zurückgegeben wurde:

    curl -H Metadata:true "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com/&client_id=<UAMI CLIENT ID>"
    

    Hinweis

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

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

    Beispielantwort:

    {
    "access_token":"eyJ0eXAiOi...",
    "refresh_token":"",
    "expires_in":"3599",
    "expires_on":"1504130527",
    "not_before":"1504126627",
    "resource":"https://management.azure.com",
    "token_type":"Bearer"
    } 
    
  5. Verwenden Sie dieses Zugriffstoken, um auf Azure Resource Manager zuzugreifen und die Eigenschaften der Ressourcengruppe zu lesen, auf die Sie der benutzerseitig zugewiesenen verwalteten Identität zuvor Zugriff gewährt haben. Ersetzen Sie <SUBSCRIPTION ID> und <RESOURCE GROUP> durch die Werte, die Sie zuvor angegeben haben, und <ACCESS TOKEN> durch den im vorherigen Schritt zurückgegebenen Token.

    Hinweis

    Bei der URL wird die Groß-/Kleinschreibung beachtet. Achten Sie daher darauf, dieselbe Groß- und Kleinschreibung zu verwenden wie zuvor beim Benennen der Ressourcengruppe, einschließlich des Großbuchstaben „G“ in resourceGroups.

    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 jeweiligen Informationen zur Ressourcengruppe, ähnlich wie im folgenden Beispiel dargestellt wird:

    {
    "id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/DevTest",
    "name":"DevTest",
    "location":"westus",
    "properties":{"provisioningState":"Succeeded"}
    } 
    

Weitere Informationen