Zelfstudie: Toegang krijgen tot Azure Storage via SAS-referenties met een door het systeem toegewezen identiteit voor een virtuele Linux-machine (VM)

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.

Deze zelfstudie laat zien hoe u referenties voor een gedeelde handtekening (SAS) ophaalt voor Azure Storage met een door het systeem toegewezen beheerde identiteit voor een virtuele Linux-machine (VM). Een service-SAS-referentie, om precies te zijn.

Notitie

De SAS-sleutel die in deze zelfstudie wordt gegenereerd, is niet beperkt tot/gebonden aan de virtuele machine.

Een service-SAS biedt beperkte toegang tot objecten in een opslagaccount zonder dat een toegangssleutel voor het account wordt weergegeven. Toegang kan gedurende een beperkte tijd en voor een specifieke service worden verleend. U kunt een SAS-referentie gebruiken zoals u gewend bent bij opslagbewerkingen, bijvoorbeeld bij het gebruik van de Storage-SDK. Voor deze zelfstudie demonstreren we het uploaden en downloaden van een blob met behulp van de opdrachtregelinterface (CLI) van Azure Storage. U leert het volgende:

  • Een opslagaccount maken
  • Een blobcontainer in het 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

Vereisten

Een opslagaccount maken

Als u nog geen opslagaccount hebt, maakt u er nu een. U kunt deze stap ook overslaan en de door het systeem toegewezen beheerde identiteit voor uw VM toegang verlenen tot de sleutels van een bestaand opslagaccount.

  1. Klik op de knop +/Nieuwe service maken in de linkerbovenhoek van Azure Portal.

  2. Selecteer Opslag en vervolgens Opslagaccount. Het paneel 'Opslagaccount make' wordt weergegeven.

  3. Voer een Naam in voor het opslagaccount. U gaat deze gegevens later gebruiken.

  4. Implementatiemodel en Soort account moeten respectievelijk worden ingesteld op Resource Manager en Algemeen gebruik.

  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 van het scherm voor het maken van een nieuw opslagaccount.

Een blobcontainer in het opslagaccount maken

Later zullen we een bestand uploaden en downloaden naar het nieuwe opslagaccount. Omdat voor bestanden blobopslag nodig is, moeten we een blobcontainer maken waarin het bestand kan worden opgeslagen.

  1. Navigeer terug naar het zojuist gemaakte opslagaccount.

  2. Selecteer de link Containers in het linkerpaneel, onder 'Blob service'.

  3. Selecteer + Container bovenaan de pagina om het paneel 'Nieuwe container' deelvenster uit te schuiven.

  4. Geef een naam voor de container op, selecteer een toegangsniveau en selecteer OK. De naam die u hebt opgegeven, wordt verderop in de zelfstudie gebruikt.

    Schermopname van het scherm voor het maken van opslagcontainers.

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

Azure Storage biedt systeemeigen ondersteuning voor Microsoft Entra-verificatie, zodat u de door het systeem toegewezen beheerde identiteit van uw VM kunt gebruiken om een opslag-SAS op te halen uit Resource Manager en vervolgens de SAS te gebruiken voor toegang tot opslag. In deze stap verleent u de door het systeem toegewezen beheerde identiteit voor uw VM toegang tot de SAS voor uw opslagaccount. Wijs deInzender voor opslagaccounts toe aan de beheerde identiteit binnen het bereik van de resourcegroep die uw opslagaccount bevat.

Raadpleeg Azure-rollen toewijzen met Azure Portal voor informatie over het toewijzen van rollen.

Notitie

Voor meer informatie over de verschillende rollen die u kunt gebruiken om machtigingen te verlenen voor opslagbeoordeling Autoriseren van toegang tot blobs en wachtrijen met behulp van Microsoft Entra-id.

Een toegangstoken ophalen met behulp van de identiteit van de virtuele machine en daarmee Azure Resource Manager aanroepen

Voor de rest van de zelfstudie werken we op de virtuele machine die we eerder hebben gemaakt.

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. Als u hulp nodig hebt bij het configureren van de sleutels van uw SSH-client, raadpleegt u:

Nu u uw SSH-client hebt, gaat u verder met de onderstaande stappen:

  1. In Azure Portal navigeert u naar Virtuele machines, gaat u naar uw virtuele Linux-machine, selecteert u vervolgens bovenaan de pagina OverzichtVerbinden. Kopieer de verbindingsreeks voor uw virtuele machine.

  2. Maak verbinding met uw virtuele machine via de SSH-client.

  3. Vervolgens wordt u gevraagd om het wachtwoord in te voeren dat u hebt toegevoegd bij het maken van de Linux-VM. Als het goed is, bent u daarna aangemeld.

  4. Gebruik CURL om een toegangstoken voor Azure Resource Manager op te halen.

    Hieronder ziet u de CURL-aanvraag en de reactie voor het toegangstoken:

    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    
    

    Notitie

    In de vorige aanvraag moet de waarde van de parameter 'resource' exact overeenkomen met 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. In het volgende antwoord is het element access_token ingekort.

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

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

Gebruik nu CURL voor het aanroepen van Resource Manager met behulp van het toegangstoken dat we hebben opgehaald in de vorige sectie, om een SAS-referentie voor opslag op te halen. Als we de SAS-referentie eenmaal hebben, kunnen we up- en downloadbewerkingen aanroepen.

Voor deze aanvraag gebruiken we de volgende HTTP-aanvraagparameters voor het maken van de SAS-referentie:

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

Deze parameters worden opgenomen in de tekst van de POST-aanvraag voor de SAS-referentie. Zie de naslaginformatie over REST voor het weergeven van service-SAS voor meer informatie over de parameters voor het maken van een SAS-referentie.

Gebruik de volgende CURL-aanvraag om de SAS-referentie op te halen. Vervang de parameterwaarden <SUBSCRIPTION ID>, <RESOURCE GROUP>, <STORAGE ACCOUNT NAME>, <CONTAINER NAME> en <EXPIRATION TIME> door uw eigen waarden. Vervang de waarde <ACCESS TOKEN> door het toegangstoken dat u eerder hebt opgehaald:

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

Notitie

De tekst in de voorgaande URL is hoofdlettergevoelig, dus gebruik dienovereenkomstige hoofdletters en kleine letters voor de resourcegroepen. Het is ook belangrijk te weten dat dit een POST-aanvraag is en geen GET-aanvraag.

De SAS-referentie wordt geretourneerd in de CURL-reactie:

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

Maak op een Virtuele Linux-machine een voorbeeldblobbestand om te uploaden naar uw blobopslagcontainer met behulp van de volgende opdracht:

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

Voer de verificatie uit met de CLI-opdracht az storage met behulp van de SAS-referentie, en upload het bestand naar de blobcontainer. Voor deze stap moet u de nieuwste versie van Azure CLI installeren op de virtuele machine, als u dat nog niet gedaan hebt.

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

Respons:

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

U kunt het bestand ook downloaden met behulp van Azure CLI en de verificatie uitvoeren met de SAS-referentie.

Aanvraag:

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

Respons:

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

Volgende stappen

In deze zelfstudie hebt u geleerd een door het systeem toegewezen beheerde identiteit voor een virtuele Linux-machine (VM) te gebruiken om toegang tot Azure Storage te krijgen met behulp van een SAS-referentie. Zie voor meer informatie over Azure Storage SAS: