Share via


Zelfstudie: Een Windows-VM/VMSS gebruiken voor toegang tot Azure-resources

Beheerde identiteiten voor Azure-resources is een functie van Microsoft Entra ID. Voor alle Azure-services die beheerde identiteiten voor Azure-resources ondersteunen, geldt een eigen tijdlijn. Controleer de beschikbaarheidsstatus van beheerde identiteiten voor uw resource en eventuele bekende problemen voordat u begint.

Vereisten

Een door het Windows-VM-systeem toegewezen beheerde identiteit gebruiken voor toegang tot Azure Data Lake Store

In deze zelfstudie leert u hoe u toegang krijgt tot een Azure Data Lake Store met een door het systeem toegewezen beheerde identiteit voor een virtuele Windows-machine (VM). Beheerde identiteiten worden automatisch beheerd door Azure. Ze stellen uw toepassing in staat om te verifiëren bij services die Ondersteuning bieden voor Microsoft Entra-verificatie, zonder dat u referenties hoeft in te voegen in uw code.

In dit artikel leert u het volgende:

  • Uw virtuele machine toegang verlenen tot Azure Data Lake Storage
  • Een toegangstoken ophalen met behulp van de identiteit van de virtuele machine en dat token gebruiken om toegang te krijgen tot Azure Data Lake Storage

Inschakelen

Het inschakelen van een door het systeem toegewezen beheerde identiteit gebeurt met één klik. U kunt deze inschakelen tijdens het maken van een VM of in de eigenschappen van een bestaande VM.

Schermopname van het tabblad Systeem toegewezen voor een virtuele machine, waarop u de status Systeem toegewezen kunt inschakelen.

Een door het systeem toegewezen beheerde identiteit inschakelen op een nieuwe VM:

  1. Meld u aan bij het Azure-portaal.

  2. Maak een virtuele machine waarvoor door het systeem toegewezen identiteit is ingeschakeld.

Toegang verlenen

U kunt uw VM toegang verlenen tot bestanden en mappen in een Azure Data Lake Store. Voor deze stap kunt u een bestaande Data Lake Storage gebruiken, of een nieuwe maken.

Als u een nieuwe Data Lake Store wilt maken met behulp van Azure Portal, raadpleegt u de quickstart voor Azure Data Lake Store. Er zijn ook snelstarts in de documentatie over Azure Data Lake Storage voor het gebruik van Azure CLI en Azure Powershell.

Maak een nieuwe map in uw Data Lake Store en verleen de door het systeem toegewezen identiteit van uw VM toestemming. De identiteit heeft rechten nodig voor het lezen, schrijven en uitvoeren van bestanden in die map:

  1. Selecteer in Azure Portal Data Lake Store in het linkernavigatievenster.
  2. Selecteer de Data Lake Store die u wilt gebruiken voor deze zelfstudie.
  3. Selecteer Data Explorer in de opdrachtbalk.
  4. De hoofdmap van de Data Lake Storage is geselecteerd. Selecteer Toegang in de opdrachtbalk.
  5. Selecteer Toevoegen. Voer in het veld Selecteren de naam van uw virtuele machine in, bijvoorbeeld DevTestVM. Selecteer uw virtuele machine in de zoekresultaten en selecteer vervolgens Selecteren.
  6. Selecteer Machtigingen selecteren en vervolgens Lezen en Uitvoeren. Voeg toe aan deze map en selecteer vervolgens alleen een toegangsmachtiging.
  7. Selecteer OK en sluit vervolgens de blade Access . De machtiging wordt toegevoegd.
  8. Maak vervolgens een nieuwe map. Selecteer Nieuwe map in de opdrachtbalk en geef de nieuwe map een naam. TestFolder bijvoorbeeld en selecteer vervolgens OK.
  9. Selecteer de map die u hebt gemaakt en selecteer vervolgens Access op de opdrachtbalk.
  10. Selecteer Toevoegen en voer vervolgens in hetveld Selecteren de naam van uw virtuele machine in en selecteer Selecteren.
  11. Selecteer Machtigingen selecteren en vervolgens Lezen, Schrijven en Uitvoeren. Voeg deze map toe en voeg deze toe als een toegangsmachtigingsvermelding en een standaardmachtigingsvermelding.
  12. Selecteer OK. De machtiging moet zijn toegevoegd.

De door het systeem toegewezen beheerde identiteit van uw virtuele machine kan nu alle bewerkingen uitvoeren op bestanden in de map die u hebt gemaakt. Zie Toegangsbeheer in Data Lake Store voor informatie over het beheren van de toegang tot Data Lake Store.

Toegang tot gegevens

Azure Data Lake Store biedt systeemeigen ondersteuning voor Microsoft Entra-verificatie, zodat deze rechtstreeks toegangstokens kan accepteren die zijn verkregen met behulp van beheerde identiteiten voor Azure-resources. Als u wilt verifiëren bij het Data Lake Store-bestandssysteem, verzendt u een toegangstoken dat is uitgegeven door Microsoft Entra-id naar het eindpunt van uw Data Lake Store-bestandssysteem in een autorisatieheader. De header heeft de indeling Bearer <ACCESS_TOKEN_VALUE>.

Zie Verificatie met Data Lake Store met behulp van Microsoft Entra-id voor meer informatie over data lake store-ondersteuning voor Microsoft Entra-verificatie.

Notitie

Beheerde identiteiten voor Azure-resources worden nog niet ondersteund in de client-SDK's van het Data Lake Storage-bestandssysteem.

In deze zelfstudie gebruikt u PowerShell voor het maken van REST-aanvragen om te verifiëren bij de REST-API van het Data Lake Storage-bestandssysteem. Als u de door het systeem toegewezen beheerde identiteit van de virtuele machine wilt gebruiken voor verificatie, moet u de aanvragen verzenden vanaf de virtuele machine.

  1. Navigeer in de portal naar Virtuele machines en ga naar uw Virtuele Windows-machine. Selecteer vervolgens verbinding maken in het overzicht.

  2. Voer uw gebruikersnaam en wachtwoord in die u hebt toegevoegd toen u de Virtuele Windows-machine hebt gemaakt.

  3. Nu u een verbinding met extern bureaublad met de VIRTUELE machine hebt gemaakt, opent u PowerShell in de externe sessie.

  4. Gebruik de PowerShell-cmdlet Invoke-WebRequest om een aanvraag in te dienen bij de lokale beheerde identiteiten voor het Eindpunt van Azure-resources om een toegangstoken voor Azure Data Lake Store op te halen. De resource-id voor Data Lake Storage is https://datalake.azure.net/. Data Lake doet een exacte overeenkomst op de resource-id, dus de afsluitende slash is belangrijk.

    $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"}
    

    Converteer de reactie van een JSON-object naar een PowerShell-object.

    $content = $response.Content | ConvertFrom-Json
    

    Extraheer het toegangstoken uit de reactie.

    $AccessToken = $content.access_token
    
  5. Controleer of alles correct is geconfigureerd. Gebruik de PowerShell-cmdlet Invoke-WebRequest om een aanvraag in te dienen bij het REST-eindpunt van uw Data Lake Store om de mappen in de hoofdmap weer te geven. Het is belangrijk dat de tekenreeks in de autorisatieheader Bearer een hoofdletter 'B' heeft. U vindt de naam van uw Data Lake Store in de sectie Overzicht van uw Data Lake Store.

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

    Een geslaagde reactie ziet er als volgt uit:

    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. Probeer nu een bestand te uploaden naar uw Data Lake Store. Maak eerst een bestand om te uploaden.

    echo "Test file." > Test1.txt
    
  7. Gebruik de PowerShell-cmdlet Invoke-WebRequest om een aanvraag in te dienen bij het REST-eindpunt van uw Data Lake Store om het bestand te uploaden naar de map die u eerder hebt gemaakt. Deze aanvraag bestaat uit twee stappen.

    1. Dien een aanvraag in en ontvang een omleiding naar de locatie waar het bestand moet worden geüpload.
    2. Upload het -bestand. Vergeet niet om de naam van de map en het bestand op de juiste manier in te stellen als u andere waarden hebt gebruikt dan aangegeven in deze zelfstudie.
    $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
    

    Als u de waarde van $HdfsRedirectResponse inspecteert, ziet het er ongeveer als volgt uit:

    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
    

    Voltooi het uploaden door een aanvraag te verzenden naar het omleidingseindpunt:

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

    Een geslaagde reactie ziet er ongeveer als volgt uit:

    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
    

Ten slotte kunt u andere Data Lake Store-bestandssysteem-API's gebruiken om bestanden toe te voegen en te downloaden, en meer.

Uitschakelen

Als u de door het systeem toegewezen identiteit op uw VM wilt uitschakelen, stelt u de status van de door het systeem toegewezen identiteit in op Uit.

Schermopname van het tabblad Systeem toegewezen voor een virtuele machine, waarop u de status Systeem toegewezen kunt uitschakelen.

Een door het Windows-VM-systeem toegewezen beheerde identiteit gebruiken voor toegang tot Azure Storage

Deze zelfstudie laat zien hoe u toegang krijgt tot Azure Storage met een door het systeem toegewezen beheerde identiteit voor een virtuele Windows-machine (VM). U leert het volgende:

  • Een blobcontainer in een opslagaccount maken
  • Door het systeem toegewezen beheerde entiteit van de virtuele Windows-machine toegang verlenen tot een opslagaccount
  • Een toegangstoken ophalen en daarmee Azure Storage aanroepen

Inschakelen

Het inschakelen van een door het systeem toegewezen beheerde identiteit gebeurt met één klik. U kunt deze inschakelen tijdens het maken van een VM of in de eigenschappen van een bestaande VM.

Schermopname van het tabblad Systeem toegewezen voor een virtuele machine, waarop u de status Systeem toegewezen kunt inschakelen.

Een door het systeem toegewezen beheerde identiteit inschakelen op een nieuwe VM:

  1. Meld u aan bij het Azure-portaal.

  2. Maak een virtuele machine waarvoor door het systeem toegewezen identiteit is ingeschakeld.

Een opslagaccount maken

In deze sectie maakt u een opslagaccount.

  1. Selecteer de knop + Een resource maken in de linkerbovenhoek van Azure Portal.

  2. Selecteer Opslag en vervolgens Opslagaccount - blob, bestand, tabel, wachtrij.

  3. Voer in het veld Naam een naam in voor het opslagaccount.

  4. Implementatiemodel en Soort account moeten respectievelijk worden ingesteld op Resource Manager en Storage (algemeen gebruik v1).

  5. Zorg ervoor dat de waarden van Abonnement en Resourcegroep overeenkomen met de waarden die u hebt opgegeven bij het maken van de virtuele machine in de vorige stap.

  6. Selecteer Maken.

    Schermopname die laat zien hoe u een nieuw opslagaccount maakt.

Een blobcontainer maken en een bestand naar het opslagaccount uploaden

Voor bestanden is blobopslag nodig, dus moeten we een blobcontainer maken waarin het bestand kan worden opgeslagen. Vervolgens uploadt u een bestand naar de blobcontainer in het nieuwe opslagaccount.

  1. Ga naar het zojuist gemaakte opslagaccount.

  2. Selecteer Containers in de sectie Blob Service.

  3. Selecteer + Container boven aan de pagina.

  4. Voer in het veld Nieuwe container een naam in voor de container en behoud vervolgens de standaardwaarde in de optie Openbaar toegangsniveau .

    Schermopname die laat zien hoe u een opslagcontainer maakt.

  5. Maak met behulp van een editor naar keuze een bestand met de naam hello_world.txt op uw lokale computer. Open het bestand en voeg de tekst Hallo wereld toe! en sla het op.

  6. Selecteer de containernaam om het bestand te uploaden naar de zojuist gemaakte container en selecteer vervolgens Uploaden.

  7. Selecteer in het deelvenster Blob uploaden in de sectie Bestanden het mappictogram en blader naar het bestand hello_world.txt op uw lokale computer. Selecteer vervolgens het bestand en uploaden. Schermopname van het scherm voor het uploaden van tekstbestanden.

Toegang verlenen

In deze sectie leert u hoe u uw VM toegang kunt verlenen tot een Azure Storage-container. U kunt de door het systeem toegewezen beheerde identiteit van de virtuele machine gebruiken om de gegevens in de Azure Storage-blob op te halen.

  1. Ga naar het zojuist gemaakte opslagaccount.

  2. Klik op Toegangsbeheer (IAM) .

  3. Klik op Toevoegen>Roltoewijzing toevoegen om het deelvenster Roltoewijzing toevoegen te openen.

  4. Wijs de volgende rol toe. Raadpleeg Azure-rollen toewijzen met Azure Portal voor informatie over het toewijzen van rollen.

    Instelling Weergegeven als
    Role Lezer voor opslagblobgegevens
    Toegang toewijzen aan Beheerde identiteit
    Door het systeem toegewezen Virtuele machine
    Select <uw virtuele machine>

    Schermopname van de pagina voor het toevoegen van een roltoewijzing.

Toegang tot gegevens

Azure Storage biedt systeemeigen ondersteuning voor Microsoft Entra-verificatie, zodat toegangstokens die zijn verkregen via een beheerde identiteit, rechtstreeks kunnen worden geaccepteerd. Deze benadering maakt gebruik van de integratie van Azure Storage met Microsoft Entra ID en verschilt van het opgeven van referenties in de verbindingsreeks.

Hier volgt een voorbeeld van .NET-code voor het openen van een verbinding met Azure Storage. In het voorbeeld wordt een toegangstoken gebruikt en wordt de inhoud gelezen van het bestand dat u eerder hebt gemaakt. Deze code moet worden uitgevoerd op de virtuele machine om toegang te krijgen tot het eindpunt van de beheerde identiteit van de virtuele machine. .NET framework 4.6 of hoger is vereist voor het gebruik van de toegangsmethode met een toegangstoken. Vervang de waarde van <URI to blob file> dienovereenkomstig. U kunt deze waarde verkrijgen door te navigeren naar het bestand dat u hebt gemaakt en geüpload naar de blobopslag en de URL onder Eigenschappen op de pagina Overzicht te kopiëren.

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;
            }
        }
    }
}

Het antwoord bevat de inhoud van het bestand:

Hello world! :)

Uitschakelen

Als u de door het systeem toegewezen identiteit op uw VM wilt uitschakelen, stelt u de status van de door het systeem toegewezen identiteit in op Uit.

Schermopname van het tabblad Systeem toegewezen voor een virtuele machine, waarop u de status Systeem toegewezen kunt uitschakelen.

Een door het Windows-VM-systeem toegewezen beheerde identiteit gebruiken voor toegang tot Azure Storage via een SAS-referentie

In deze zelfstudie leert u hoe u een door het systeem toegewezen identiteit gebruikt voor een virtuele Windows-machine (VM) om een SAS-referentie (Shared Access Signature) voor opslag te verkrijgen.

Een service-SAS biedt de mogelijkheid om gedurende beperkte tijd beperkte toegang te verlenen tot objecten in een opslagaccount en voor een specifieke service (in dit geval een blobservice). SAS doet dit zonder dat er een toegangssleutel voor een account wordt weergegeven. U kunt een SAS-referentie zoals gebruikelijk gebruiken voor opslagbewerkingen; Bijvoorbeeld wanneer u een opslag-SDK gebruikt. In deze zelfstudie ziet u hoe u een blob uploadt en downloadt met behulp van Azure Storage PowerShell.

U leert het volgende:

  • Een opslagaccount maken
  • Uw virtuele machine toegang verlenen tot een SAS voor een opslagaccount in Resource Manager
  • Een toegangstoken ophalen met de identiteit van de virtuele machine, en daarmee de SAS ophalen uit Resource Manager

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Een opslagaccount maken

Als u er nog geen hebt, moet u een opslagaccount maken. Volg anders deze stappen om de door het systeem toegewezen beheerde identiteit van uw VM toegang te verlenen tot de SAS-referentie van een bestaand opslagaccount.

  1. Selecteer Opslag en vervolgens Opslagaccount.

  2. Voer in het deelvenster Opslagaccount maken een naam in voor het opslagaccount.

  3. Zorg ervoor dat implementatiemodel en accounttype zijn ingesteld op Resource Manager en Algemeen gebruik.

  4. Controleer of het abonnement en de resourcegroep overeenkomen met de items die u hebt opgegeven tijdens het maken van uw virtuele machine in de vorige stap.

  5. Selecteer Maken om uw opslagaccount te maken.

    Schermopname die laat zien hoe u een nieuw opslagaccount maakt.

Een blobcontainer in het opslagaccount maken

Verderop in de zelfstudie uploadt en downloadt u een bestand naar het nieuwe opslagaccount. Omdat voor bestanden blobopslag is vereist, moet u een blobcontainer maken om het bestand in op te slaan.

  1. Ga naar het zojuist gemaakte opslagaccount.

  2. Selecteer de koppeling Containers in het linkerdeelvenster, onder Blob-service.

  3. Selecteer + Container boven aan de pagina en vervolgens wordt er een deelvenster Nieuwe container weergegeven.

  4. Geef de container een naam, bepaal het toegangsniveau en selecteer OK. De naam die u hier opgeeft, wordt verderop in de zelfstudie gebruikt.

    Schermopname die laat zien hoe u een opslagcontainer maakt.

De door het systeem toegewezen beheerde identiteit voor uw VM toegang verlenen tot het gebruik van een SAS-opslag

Azure Storage biedt geen systeemeigen ondersteuning voor Microsoft Entra-verificatie. U kunt echter een beheerde identiteit gebruiken om een opslag-SAS op te halen uit Resource Manager, en vervolgens de SAS gebruiken om toegang tot de opslag te krijgen. In deze stap verleent u de door het systeem toegewezen beheerde identiteit voor uw VM toegang tot de SAS voor uw opslagaccount.

  1. Navigeer terug naar het zojuist gemaakte opslagaccount.

  2. Klik op Toegangsbeheer (IAM) .

  3. Klik op Toevoegen>Roltoewijzing toevoegen om het deelvenster Roltoewijzing toevoegen te openen.

  4. Wijs de volgende rol toe. Raadpleeg Azure-rollen toewijzen met Azure Portal voor informatie over het toewijzen van rollen.

    Instelling Weergegeven als
    Role Inzender voor opslagaccount
    Toegang toewijzen aan Beheerde identiteit
    Door het systeem toegewezen Virtuele machine
    Select <uw Virtuele Windows-machine>

    Schermopname van de pagina voor het toevoegen van een roltoewijzing.

Een toegangstoken ophalen met behulp van de identiteit van de virtuele machine en deze gebruiken om Azure Resource Manager aan te roepen

Voor de rest van deze zelfstudie werkt u vanaf uw VIRTUELE machine. In dit gedeelte moet u de PowerShell-cmdlets van Azure Resource Manager gebruiken. Als u PowerShell niet hebt geïnstalleerd, downloadt u de nieuwste versie voordat u doorgaat.

  1. Navigeer in De Azure-portal naar Virtuele machines, ga naar uw virtuele Windows-machine en klik vervolgens op de overzichtspagina Verbinding maken bovenaan.

  2. Voer uw gebruikersnaam en wachtwoord in die u hebt toegevoegd bij het maken van uw Windows-VM.

  3. Maak een verbinding met extern bureaublad met de virtuele machine.

  4. Open PowerShell in de externe sessie en gebruik vervolgens de PowerShell-cmdlet Invoke-WebRequest om een Azure Resource Manager-token op te halen uit de lokale beheerde identiteit voor het Eindpunt van Azure-resources.

       $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"}
    

    Notitie

    De waarde van de resource parameter moet een exacte overeenkomst zijn voor wat wordt verwacht door Microsoft Entra ID. Wanneer u de resource-id van Azure Resource Manager gebruikt, moet u de URI opgeven met een slash op het einde.

    Pak vervolgens het content element uit dat is opgeslagen als een tekenreeks met JSON-indeling (JavaScript Object Notation) in het $response object.

    $content = $response.Content | ConvertFrom-Json
    

    Extraheer vervolgens het toegangstoken uit het antwoord.

    $ArmToken = $content.access_token
    

Een SAS-referentie ophalen uit Azure Resource Manager om opslagaanroepen te maken

Ten slotte gebruikt u PowerShell om Resource Manager aan te roepen met behulp van het toegangstoken dat u in de vorige sectie hebt opgehaald. U gebruikt dit token om een SAS-referentie voor opslag te maken. Zodra u de SAS-referentie hebt, kunt u andere opslagbewerkingen aanroepen.

Gebruik voor deze aanvraag de volgende HTTP-aanvraagparameters om de SAS-referentie te maken:

{
    "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.
}

De parameters hier zijn opgenomen in de POST-hoofdtekst van de aanvraag voor de SAS-referentie. Zie de naslaginformatie over list service SAS REST voor meer informatie over parameters voor het maken van een SAS-referentie.

  1. Converteer de parameters naar JSON en roep vervolgens het opslageindpunt listServiceSas aan om de SAS-referentie te maken:

    $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"}
    

    Notitie

    De URL is hoofdlettergevoelig, dus zorg ervoor dat u exact dezelfde case gebruikt als u de resourcegroep hebt genoemd, inclusief de hoofdletter 'G' in resourceGroups.

  2. Pak vervolgens de SAS-referentie uit het antwoord:

    $sasContent = $sasResponse.Content | ConvertFrom-Json
    $sasCred = $sasContent.serviceSasToken
    
  3. Als u de SAS-referentie inspecteert, ziet u ongeveer als volgt:

    PS C:\> $sasCred
    sv=2015-04-05&sr=c&spr=https&se=2017-09-23T00%3A00%3A00Z&sp=rcw&sig=JVhIWG48nmxqhTIuN0uiFBppdzhwHdehdYan1W%2F4O0E%3D
    
  4. Maak een bestand met de naam test.txt. Gebruik vervolgens de SAS-referentie om te verifiëren met de New-AzStorageContent cmdlet, upload het bestand naar de blobcontainer en download vervolgens het bestand.

    echo "This is a test text file." > test.txt
    
  5. Zorg ervoor dat u eerst de Azure Storage-cmdlets installeert met Install-Module Azure.Storage. Upload vervolgens de blob die u zojuist hebt gemaakt met behulp van de PowerShell-cmdlet Set-AzStorageBlobContent :

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

    Respons:

    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. U kunt de blob die u hebt geüpload, ook downloaden met de Get-AzStorageBlobContent PowerShell-cmdlet:

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

    Respons:

    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
    

Een door het Windows-VM-systeem toegewezen beheerde identiteit gebruiken voor toegang tot Azure SQL Database

Deze zelfstudie laat zien hoe u toegang krijgt tot Azure SQL Database met een door het systeem toegewezen identiteit voor een virtuele Windows-machine (VM). Beheerde service-identiteiten worden automatisch beheerd door Azure en stellen u in staat om te verifiëren bij services die ondersteuning bieden voor Microsoft Entra-verificatie, zonder dat u referenties hoeft in te voegen in uw code.

U leert het volgende:

  • Uw virtuele machine toegang verlenen tot Azure SQL Database
  • Microsoft Entra-verificatie inschakelen
  • Een ingesloten gebruiker maken in de database die staat voor de door de systeem toegewezen id van de VM
  • Een toegangstoken ophalen met de identiteit van de virtuele machine en daarmee een query uitvoeren op Azure SQL Database

Inschakelen

Het inschakelen van een door het systeem toegewezen beheerde identiteit gebeurt met één klik. U kunt deze inschakelen tijdens het maken van een VM of in de eigenschappen van een bestaande VM.

Schermopname van het tabblad Systeem toegewezen voor een virtuele machine, waarop u de status Systeem toegewezen kunt inschakelen.

Een door het systeem toegewezen beheerde identiteit inschakelen op een nieuwe VM:

  1. Meld u aan bij het Azure-portaal.

  2. Maak een virtuele machine waarvoor door het systeem toegewezen identiteit is ingeschakeld.

Toegang verlenen

Als u uw VM toegang wilt verlenen tot een database in Azure SQL Database, gebruikt u een bestaande logische SQL-server of maakt u een nieuwe. Als u een nieuwe server en database wilt maken met behulp van Azure Portal, volgt u de quickstart voor Azure SQL. Er zijn ook snelstarts in de documentatie over Azure SQL voor het gebruik van Azure CLI en Azure Powershell.

Volg deze stappen om uw VM toegang te verlenen tot een database:

  1. Schakel Microsoft Entra-verificatie in voor de server.
  2. Maak een ingesloten gebruiker in de database die staat voor de door de systeem toegewezen id van de VM.

Microsoft Entra-verificatie inschakelen

Microsoft Entra-verificatie configureren:

  1. Selecteer in Azure Portal SQL-server in de linkernavigatiebalk.
  2. Selecteer de SQL-server die u wilt inschakelen voor Microsoft Entra-verificatie.
  3. Selecteer Active Directory-beheerder in de sectie Instellingen van de blade.
  4. Selecteer Beheerder instellen in de opdrachtbalk.
  5. Selecteer een Microsoft Entra-gebruikersaccount om een beheerder voor de server te maken en selecteer Selecteren.
  6. Selecteer Opslaan op de opdrachtbalk.

Ingesloten gebruiker maken

In deze sectie wordt beschreven hoe u een ingesloten gebruiker maakt in de database die de door het systeem toegewezen identiteit van de VIRTUELE machine vertegenwoordigt. Voor deze stap moet Microsoft SQL Server Management Studio (SSMS) zijn geïnstalleerd. Voordat u begint, kan het handig zijn om de volgende artikelen te lezen voor achtergrondinformatie over Microsoft Entra-integratie:

VOOR SQL-databases zijn unieke weergavenamen van Microsoft Entra ID vereist. Hiermee moeten Microsoft Entra-accounts, zoals gebruikers, groepen en service-principals (toepassingen) en VM-namen die zijn ingeschakeld voor beheerde identiteit, uniek zijn gedefinieerd in Microsoft Entra-id die specifiek is voor de bijbehorende weergavenamen. SQL controleert de weergavenamen van Microsoft Entra ID tijdens het maken van dergelijke gebruikers via T-SQL. Als de weergavenamen niet uniek zijn, mislukt de opdracht en wordt u gevraagd een unieke Microsoft Entra ID-weergavenaam op te geven voor elk gegeven account.

Een ingesloten gebruiker maken

  1. Open SQL Server Management Studio.

  2. Voer in het dialoogvenster Verbinding maken met server de servernaam in het veld Servernaam in.

  3. Selecteer in het veld VerificatieActive Directory - Universeel met ondersteuning voor MFA.

  4. Voer in het veld Gebruikersnaam de naam in van het Microsoft Entra-account dat u hebt ingesteld als serverbeheerder, cjensen@fabrikam.combijvoorbeeld.

  5. Selecteer Opties.

  6. Voer in het veld Verbinding maken met database de naam in van de niet-systeemdatabase die u wilt configureren.

  7. Selecteer Verbinding maken en voltooi vervolgens het aanmeldingsproces.

  8. Vouw in Objectverkenner de map Databases uit.

  9. Klik met de rechtermuisknop op een gebruikersdatabase en selecteer vervolgens Nieuwe query.

  10. Voer in het queryvenster de volgende regel in en selecteer Uitvoeren op de werkbalk:

    Notitie

    VMName in de volgende opdracht staat de naam van de VM waarvoor u door het systeem toegewezen id's hebt ingeschakeld in het gedeelte met vereisten.

    CREATE USER [VMName] FROM EXTERNAL PROVIDER
    

    De opdracht moet worden voltooid door de ingesloten gebruiker te maken voor de door het systeem toegewezen identiteit van de VIRTUELE machine.

  11. Wis het queryvenster, voer de volgende regel in en selecteer Uitvoeren op de werkbalk:

    Notitie

    VMName in de volgende opdracht is de naam van de vm waarop u door het systeem toegewezen identiteit hebt ingeschakeld in de sectie Vereisten.

    Als u de fout 'Principal VMName heeft een dubbele weergavenaam' tegenkomt, voegt u de instructie CREATE USER toe met WITH OBJECT_ID='xxx'.

    ALTER ROLE db_datareader ADD MEMBER [VMName]
    

    De opdracht moet worden voltooid door de ingesloten gebruiker de mogelijkheid te geven om de hele database te lezen.

Code die wordt uitgevoerd op de VM kan nu een token verkrijgen via de door het systeem toegewezen beheerde identiteit en het token gebruiken voor verificatie bij de server.

Toegang tot gegevens

In deze sectie wordt beschreven hoe u een toegangstoken kunt ophalen met behulp van de door het systeem toegewezen beheerde identiteit van de VIRTUELE machine en hoe u dit gebruikt om Azure SQL aan te roepen. Azure SQL biedt systeemeigen ondersteuning voor Microsoft Entra-verificatie, zodat toegangstokens die zijn verkregen met behulp van beheerde identiteiten voor Azure-resources, rechtstreeks kunnen accepteren. Deze methode vereist geen referenties op de verbindingsreeks.

Hier volgt een .NET-codevoorbeeld van het openen van een verbinding met SQL met behulp van Active Directory Managed Identity-verificatie. De code moet worden uitgevoerd op de virtuele machine om toegang te krijgen tot het eindpunt van de door het systeem toegewezen beheerde identiteit van de virtuele machine.

.NET Framework 4.6.2 of hoger of .NET Core 3.1 of hoger is vereist voor het gebruik van deze methode. Vervang de waarden van AZURE-SQL-SERVERNAME en DATABASE dienovereenkomstig en voeg een NuGet-verwijzing toe aan de Bibliotheek Microsoft.Data.SqlClient.

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();

Notitie

U kunt beheerde identiteiten gebruiken terwijl u met andere programmeeropties werkt met behulp van onze SDK's.

Of gebruik PowerShell om de end-to-end-installatie te testen zonder dat u een app op de virtuele machine hoeft te schrijven en implementeren.

  1. Navigeer in de portal naar Virtuele machines, ga naar uw Windows-VM en selecteer vervolgens Verbinding maken in het overzicht.

  2. Voer uw VM-beheerdersreferenties in die u hebt toegevoegd bij het maken van de Windows-VM.

  3. Nu u een verbinding met extern bureaublad met de VIRTUELE machine hebt gemaakt, opent u PowerShell in een externe sessie.

  4. Gebruik de PowerShell-cmdlet Invoke-WebRequest om een aanvraag in te dienen bij het eindpunt van de lokale beheerde identiteit om een toegangstoken voor Azure SQL op te halen.

        $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"}
    

    Converteer de reactie van een JSON-object naar een PowerShell-object.

    $content = $response.Content | ConvertFrom-Json
    

    Extraheer het toegangstoken uit de reactie.

    $AccessToken = $content.access_token
    
  5. Open een verbinding met de server. Vervang de waarden voor AZURE-SQL-SERVERNAME en DATABASE.

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

    Maak vervolgens een query en verzend de query naar de server. Vergeet niet de waarde voor TABLE te vervangen.

    $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)
    

Controleer ten slotte de waarde van $DataSet.Tables[0] het weergeven van de resultaten van de query.

Uitschakelen

Als u de door het systeem toegewezen identiteit op uw VM wilt uitschakelen, stelt u de status van de door het systeem toegewezen identiteit in op Uit.

Schermopname van het tabblad Systeem toegewezen voor een virtuele machine, waarop u de status Systeem toegewezen kunt uitschakelen.

Een door het Windows-VM-systeem toegewezen beheerde identiteit gebruiken voor toegang tot Azure Key Vault

Deze zelfstudie laat zien hoe een virtuele Windows-machine (VM) een door het systeem toegewezen beheerde identiteit kan gebruiken om toegang tot Azure Key Vault te krijgen. Key Vault maakt het mogelijk voor uw clienttoepassing om een geheim te gebruiken voor toegang tot resources die niet zijn beveiligd door Microsoft Entra-id. Beheerde identiteiten worden automatisch beheerd door Azure. Hiermee kunt u zich verifiëren bij services die Ondersteuning bieden voor Microsoft Entra-verificatie, zonder verificatiegegevens in uw code op te slaan.

U leert het volgende:

  • Uw virtuele machine toegang verlenen tot een geheim dat is opgeslagen in een sleutelkluis
  • Een toegangstoken ophalen met behulp van de identiteit van de virtuele machine en daarmee het geheim uit Key Vault ophalen

Een sleutelkluis maken

Tip

Stappen in dit artikel kunnen enigszins variëren op basis van de portal waaruit u begint.

In deze sectie wordt uitgelegd hoe u uw VM toegang verleent tot een geheim dat is opgeslagen in een sleutelkluis. Wanneer u beheerde identiteiten gebruikt voor Azure-resources, kan uw code toegangstokens ophalen om te verifiëren bij resources die ondersteuning bieden voor Microsoft Entra-verificatie. 

Niet alle Azure-services ondersteunen Microsoft Entra-verificatie. Als u bij deze services beheerde identiteiten voor Azure-resources wilt gebruiken, slaat u de servicereferenties op in Azure Key Vault en gebruikt u de beheerde identiteit van de VM om toegang te krijgen tot Key Vault en de referenties op te halen.

Eerst moet u een Key Vault maken en de door het systeem toegewezen beheerde identiteit van uw VIRTUELE machine toegang verlenen tot de Key Vault.

  1. Meld u aan bij het Azure-portaal.

  2. Selecteer bovenaan de linkernavigatiebalk de optie Een resource maken.

  3. Typ in het vak Marketplace zoeken in Key Vault en druk op Enter.

  4. Selecteer Key Vault in de resultaten en selecteer Vervolgens Maken.

  5. Geef een naam op voor de nieuwe sleutelkluis.

    Schermopname van het scherm Een sleutelkluis maken.

  6. Vul alle vereiste gegevens in. Zorg ervoor dat u het abonnement en de resourcegroep kiest die u voor deze zelfstudie gebruikt.

  7. Selecteer Beoordelen en maken.

  8. Selecteer Maken.

Een geheim maken

Vervolgens moet u een geheim toevoegen aan de Sleutelkluis, zodat u het later kunt ophalen met behulp van code die wordt uitgevoerd op uw VIRTUELE machine. In deze sectie gebruikt u PowerShell, maar dezelfde concepten zijn van toepassing op alle code die u in uw VIRTUELE machine uitvoert.

  1. Ga naar uw zojuist gemaakte sleutelkluis.

  2. Selecteer Geheimen en selecteer vervolgens Toevoegen.

  3. Selecteer Genereren/Importeren.

  4. Laat in het scherm Een geheim maken in de uploadoptiesHandmatig geselecteerd.

  5. Voer een naam en een waarde in voor de geheime sleutel. De waarde mag elke gewenste waarde zijn. 

  6. Laat de activeringsdatum en vervaldatum leeg en laat Ingeschakeld ingesteld staan op Ja

  7. Selecteer Maken om het geheim te maken.

    Schermopname die laat zien hoe u een geheim maakt.

Toegang verlenen

De beheerde identiteit die door de VIRTUELE machine wordt gebruikt, moet toegang krijgen tot het lezen van het geheim dat in Key Vault wordt opgeslagen.

  1. Ga naar uw zojuist gemaakte sleutelkluis.

  2. Selecteer Toegangsbeleid in het menu aan de linkerkant.

  3. Selecteer Toegangsbeleid toevoegen.

    Schermopname van het scherm toegangsbeleid voor Key Vault.

  4. Kies in de sectie Toegangsbeleid toevoegen onder Configureren vanuit sjabloon (optioneel) de optie Geheimbeheer in de vervolgkeuzelijst.

  5. Kies Principal selecteren en voer in het zoekveld de naam in van de virtuele machine die u eerder hebt gemaakt. 

  6. Selecteer de VIRTUELE machine in de resultatenlijst en kies Selecteren.

  7. Selecteer Toevoegen.

  8. Selecteer Opslaan.

Toegang tot gegevens

In deze sectie wordt beschreven hoe u een toegangstoken ophaalt met behulp van de VM-identiteit en hoe u dit gebruikt om het geheim op te halen uit Key Vault. Als PowerShell 4.3.1 of hoger niet is geïnstalleerd, moet u de meest recente versie downloaden en installeren.

Notitie

De methode voor het gebruik van PowerShell om het geheim te verifiëren en op te halen heeft de voorkeur in scenario's waarin beheerde identiteiten specifiek vereist zijn, of wanneer het proces wordt ingesloten in de code van een toepassing.

Gebruik eerst de door het systeem toegewezen beheerde identiteit van de VM om een toegangstoken op te halen om te verifiëren bij Key Vault:

  1. Navigeer in de portal naar Virtuele machines en ga naar uw Windows-VM en selecteer vervolgens Verbinding maken in het overzicht.
  2. Voer uw gebruikersnaam en wachtwoord in die u hebt toegevoegd bij het maken van de Windows-VM.
  3. Nu u een verbinding met extern bureaublad met de VIRTUELE machine hebt gemaakt, opent u PowerShell in een externe sessie.
  4. Voer in PowerShell een Invoke-WebRequest-opdracht uit op de tenant om het token voor de lokale host in de specifieke poort voor de virtuele machine op te halen.

Notitie

Als u een onafhankelijke cloud gebruikt, zoals GCC-H, gebruikt u het eindpunt vault.usgovcloudapi.net in plaats van vault.azure.net in de PowerShell-cmdlet.

Voorbeeld van PowerShell-aanvraag:

$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"} 

Notitie

Wanneer u met onafhankelijke clouds werkt, moet u het eindpunt aanpassen dat aan het einde van de cmdlet is opgegeven.

Moet bijvoorbeeld vault.usgovcloudapi.net worden gebruikt bij het werken met Azure Government Cloud, waarbij dit het eindresultaat is:

$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"

Raadpleeg het artikel Azure Key Vault-beveiligingsoverzicht om te controleren of het achtervoegsel overeenkomt met uw omgeving.

Het antwoord moet er als volgt uitzien:

Schermopname van een aanvraag met tokenantwoord.

Extraheer vervolgens het toegangstoken uit het antwoord.

   $KeyVaultToken = $Response.access_token

Gebruik ten slotte de PowerShell-cmdlet Invoke-WebRequest om het geheim op te halen dat u eerder in key vault hebt gemaakt, waarbij het toegangstoken wordt doorgegeven in de autorisatieheader. U hebt de URL van uw sleutelkluis nodig. Deze vindt u in de sectie Essentials van de pagina Overzicht van de sleutelkluis.

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

Het antwoord moet er als volgt uitzien:

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

Zodra u het geheim hebt opgehaald uit de sleutelkluis, kunt u deze gebruiken om te verifiëren bij een service die een gebruikersnaam en wachtwoord vereist.

Resources opschonen

Als u resources wilt opschonen, meldt u zich aan bij Azure Portal, selecteert u Resourcegroepen en selecteert u vervolgens de resourcegroep die is gemaakt in het proces van deze zelfstudie (zoalsmi-test). Gebruik vervolgens de opdracht Resourcegroep verwijderen.

U kunt ook resources opschonen met Behulp van PowerShell of de CLI.

Een door het Windows-VM-systeem toegewezen beheerde identiteit gebruiken voor toegang tot Resource Manager

Tip

Stappen in dit artikel kunnen enigszins variëren op basis van de portal waaruit u begint.

In deze zelfstudie wordt uitgelegd hoe u een door het systeem toegewezen identiteit maakt, deze toewijst aan een virtuele Windows-machine (VM) en die identiteit vervolgens gebruikt voor toegang tot de Azure Resource Manager-API . Beheerde service-identiteiten worden automatisch beheerd door Azure. Ze maken verificatie mogelijk voor services die ondersteuning bieden voor Microsoft Entra-verificatie, zonder referenties in te sluiten in uw code.

U leert het volgende:

  • Uw VM toegang verlenen tot Azure Resource Manager.
  • Haal een toegangstoken op met behulp van de door het systeem toegewezen beheerde identiteit van de VIRTUELE machine om toegang te krijgen tot Resource Manager.
  1. Meld u aan bij Azure Portal met uw beheerdersaccount.

  2. Navigeer naar het tabblad Resourcegroepen .

  3. Selecteer de resourcegroep waaraan u de beheerde identiteit van de virtuele machine toegang wilt verlenen.

  4. Selecteer toegangsbeheer (IAM) in het linkerdeelvenster.

  5. Selecteer Toevoegen en selecteer vervolgens Roltoewijzing toevoegen.

  6. Selecteer Lezer op het tabblad Rol. Met deze rol kunt u alle resources weergeven, maar kunt u geen wijzigingen aanbrengen.

  7. Selecteer op het tabblad Leden voor de optie Toegang toewijzen de optie Beheerde identiteit toewijzen en selecteer vervolgens + Leden selecteren.

  8. Zorg ervoor dat het juiste abonnement wordt vermeld in de vervolgkeuzelijst Abonnement . Selecteer alle resourcegroepen voor resourcegroep.

  9. Voor de vervolgkeuzelijst Identiteit beheren selecteert u Virtuele machine.

  10. Voor Selecteren kiest u uw virtuele machine in de vervolgkeuzelijst en selecteert u Opslaan.

    Schermopname van het toevoegen van de rol lezer aan de beheerde identiteit.

Een toegangstoken opvragen

Gebruik de door het systeem toegewezen beheerde identiteit van de virtuele machine en roep resourcebeheer aan om een toegangstoken op te halen.

U hebt een SSH-client nodig om deze stappen uit te voeren. Als u Windows gebruikt, kunt u de SSH-client in het Windows-subsysteem voor Linux gebruiken. Zie De sleutels van uw SSH-client gebruiken onder Windows in Azure of Een sleutelpaar met een openbare SSH-sleutel en een privé-sleutel maken en gebruiken voor virtuele Linux-machines in Azure als u hulp nodig hebt bij het configureren van de sleutels van uw SSH-client.

  1. Navigeer in de portal naar uw Virtuele Linux-machine en selecteer Verbinding maken in het overzicht.
  2. Maak verbinding met de virtuele machine met de SSH-client van uw keuze.
  3. Voer in het terminalvenster, met behulp van curl, een aanvraag in bij de lokale beheerde identiteiten voor het Eindpunt van Azure-resources om een toegangstoken voor Azure Resource Manager op te halen.   Hieronder ziet u de curl-aanvraag voor het toegangstoken.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true

Notitie

De waarde van de resource parameter moet een exacte overeenkomst zijn voor wat wordt verwacht door Microsoft Entra ID. In het geval van de resource-id van Resource Manager moet u de afsluitende slash op de URI opnemen.

Het antwoord bevat het toegangstoken dat u nodig hebt voor toegang tot Azure Resource Manager.

Respons:

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

Gebruik dit toegangstoken om toegang te krijgen tot Azure Resource Manager; Als u bijvoorbeeld de details wilt lezen van de resourcegroep waaraan u eerder toegang tot deze VM hebt verleend. Vervang de waarden <SUBSCRIPTION-ID>, <RESOURCE-GROUP> en <ACCESS-TOKEN> door de waarden die u eerder hebt gemaakt.

Notitie

De URL is hoofdlettergevoelig, dus zorg ervoor dat u de exacte case gebruikt die u eerder hebt gebruikt toen u de resourcegroep noemde en de hoofdletter 'G' in 'resourceGroup'.

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

Het antwoord terug met de specifieke resourcegroepgegevens:

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

Toegang krijgen tot Azure Resource Manager met een door de gebruiker toegewezen beheerde identiteit op een Windows-VM

In deze zelfstudie wordt uitgelegd hoe u een door de gebruiker toegewezen identiteit maakt, deze toewijst aan een virtuele Windows-machine (VM) en deze identiteit vervolgens gebruikt voor toegang tot de Azure Resource Manager-API . Beheerde service-identiteiten worden automatisch beheerd door Azure. Ze maken verificatie mogelijk voor services die ondersteuning bieden voor Microsoft Entra-verificatie, zonder referenties in te sluiten in uw code.

U leert het volgende:

  • Een door de gebruiker toegewezen beheerde identiteit maken
  • Uw door de gebruiker toegewezen identiteit toewijzen aan uw Windows-VM
  • De door de gebruiker toegewezen identiteit toegang verlenen tot een resourcegroep in Azure Resource Manager
  • Een toegangstoken ophalen met behulp van de door de gebruiker toegewezen identiteit en daarmee Azure Resource Manager aanroepen
  • De eigenschappen van een resourcegroep lezen

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Azure PowerShell lokaal configureren

Als u scripts in dit voorbeeld wilt uitvoeren, hebt u twee opties:

  • Gebruik de Azure Cloud Shell, die u kunt openen met behulp van de knop Probeer het nu in de rechterbovenhoek van codeblokken.
  • Voer scripts lokaal uit met Azure PowerShell, zoals wordt beschreven in de volgende sectie.

Als u Azure PowerShell lokaal wilt gebruiken voor deze zelfstudie (in plaats van Cloud Shell), voert u de volgende stappen uit:

  1. Installeer de nieuwste versie van Azure PowerShell als u dat nog niet hebt gedaan.

  2. Meld u aan bij Azure:

    Connect-AzAccount
    
  3. Installeer de nieuwste versie van PowerShellGet.

    Install-Module -Name PowerShellGet -AllowPrerelease
    

    Mogelijk moet u Exit buiten de huidige PowerShell-sessie nadat u deze opdracht voor de volgende stap hebt uitgevoerd.

  4. Installeer de uitgebrachte versie van de Az.ManagedServiceIdentity module. U hebt dit nodig om de door de gebruiker toegewezen beheerde identiteiten uit te voeren in deze zelfstudie:

    Install-Module -Name Az.ManagedServiceIdentity -AllowPrerelease
    

Inschakelen

Voor scenario's op basis van een door de gebruiker toegewezen identiteit moet u de volgende stappen in deze sectie uitvoeren:

  1. Maak een identiteit.
  2. Wijs de zojuist gemaakte identiteit toe.

Identiteit maken

In deze sectie wordt beschreven hoe u een door de gebruiker toegewezen identiteit maakt, die wordt gemaakt als een zelfstandige Azure-resource. Met de cmdlet New-AzUserAssignedIdentity maakt Azure een identiteit in uw Microsoft Entra-tenant die u kunt toewijzen aan een of meer Azure-service-exemplaren.

Belangrijk

Wanneer u door de gebruiker toegewezen beheerde identiteiten maakt, moet de naam beginnen met een letter of cijfer en kan een combinatie van alfanumerieke tekens, afbreekstreepjes (-) en onderstrepingstekens (_) bevatten. De toewijzing aan een virtuele machine of virtuele-machineschaalset verloopt goed als de naam wordt beperkt tot 24 tekens. Zie Veelgestelde vragen en bekende problemen voor meer informatie.

New-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1

Het antwoord bevat details voor de door de gebruiker toegewezen identiteit, vergelijkbaar met het volgende voorbeeld. Definieer de waarden en ClientId waarden voor uw door de Id gebruiker toegewezen identiteit, omdat deze in de volgende stappen worden gebruikt:

{
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-bbbb-cccc-1111-222222222222&aid=00001111-aaaa-2222-bbbb-3333cccc4444
Type: Microsoft.ManagedIdentity/userAssignedIdentities
}

Identiteit toewijzen

In deze sectie wordt beschreven hoe u de door de gebruiker toegewezen identiteit toewijst aan een Windows-VM. Een door de gebruiker toegewezen identiteit kan worden gebruikt door clients op meerdere Azure-resources. Gebruik de volgende opdrachten om de door de gebruiker toegewezen identiteit toe te wijzen aan één VM. Gebruik de eigenschap Id die in de vorige stap is geretourneerd voor de parameter -IdentityID.

$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"

Toegang verlenen

In deze sectie wordt beschreven hoe u uw door de gebruiker toegewezen identiteit toegang verleent tot een resourcegroep in Azure Resource Manager. Beheerde identiteiten voor Azure-resources bieden identiteiten die uw code kan gebruiken om toegangstokens aan te vragen voor verificatie bij resource-API's die ondersteuning bieden voor Microsoft Entra-verificatie. In deze zelfstudie krijgt uw code toegang tot de Azure Resource Manager-API.

Voordat uw code toegang tot de API kan krijgen, moet u de identiteit toegang geven tot een resource in Azure Resource Manager. In dit geval krijgt u toegang tot de resourcegroep waarvoor de VIRTUELE machine is opgenomen. Werk de waarde voor <SUBSCRIPTIONID> bij overeenkomstig uw omgeving.

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

Het antwoord bevat details voor de gemaakte roltoewijzing, vergelijkbaar met het volgende voorbeeld:

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

Toegang tot gegevens

Tip

Stappen in dit artikel kunnen enigszins variëren op basis van de portal waaruit u begint.

Een toegangstoken opvragen

Voor de rest van de zelfstudie werkt u vanaf de VM die u eerder hebt gemaakt.

  1. Meld u aan bij het Azure-portaal.

  2. Navigeer in de portal naar Virtuele machines en ga naar de Virtuele Windows-machine. Selecteer Verbinding maken in het overzicht.

  3. Voer de gebruikersnaam en het wachtwoord in die u hebt gebruikt bij het maken van de Windows-VM.

  4. Nu u een verbinding met extern bureaublad met uw VIRTUELE machine hebt gemaakt, opent u PowerShell in een externe sessie.

  5. Gebruik de PowerShell-cmdlet Invoke-WebRequest om een aanvraag in te dienen bij de lokale beheerde identiteiten voor het Eindpunt van Azure-resources om een toegangstoken voor Azure Resource Manager op te halen. De waarde voor client_id is de waarde die wordt geretourneerd wanneer u de door de gebruiker toegewezen beheerde identiteit maakt.

    $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
    

Leeseigenschappen

Gebruik ten slotte het toegangstoken dat in de vorige stap is opgehaald om toegang te krijgen tot Azure Resource Manager en lees vervolgens de eigenschappen van de resourcegroep waaraan u uw door de gebruiker toegewezen identiteit toegang hebt verleend. Vervang door <SUBSCRIPTION ID> de abonnements-id van uw omgeving.

(Invoke-WebRequest -Uri https://management.azure.com/subscriptions/80c696ff-5efa-4909-a64d-f1b616f423ca/resourceGroups/myResourceGroupVM?api-version=2016-06-01 -Method GET -ContentType "application/json" -Headers @{Authorization ="Bearer $ArmToken"}).content

Het antwoord bevat de gegevens van de specifieke resourcegroep, vergelijkbaar met het volgende voorbeeld:

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

Meer informatie