Självstudier: Komma åt Azure Storage via en SAS-autentiseringsuppgift med en systemtilldelad hanterad identitet för virtuell Linux-dator

Hanterade identiteter för Azure-resurser är en funktion i Microsoft Entra-ID. Alla Azure-tjänster som stöder hanterade identiteter för Azure-resurser har sin egen tidslinje. Var noga med att kontrollera tillgänglighetsstatus för hanterade identiteter för din resurs och kända problem innan du börjar.

Den här självstudien visar hur du använder en systemtilldelad hanterad identitet för en virtuell Linux-dator och hämtar en SAS-autentiseringsuppgift (en signatur för delad åtkomst) för lagring. Mer specifikt, en autentiseringsuppgift för tjänst-SAS.

Kommentar

SAS-nyckeln som genereras i den här självstudien kommer inte att begränsas/bindas till den virtuella datorn.

En tjänst-SAS beviljar begränsad åtkomst till objekt i ett lagringskonto utan att uppvisa någon kontoåtkomstnyckel. Åtkomst kan beviljas under en begränsad tid och för en specifik tjänst. Du kan en använda SAS-autentiseringsuppgift som vanligt när du gör lagringsåtgärder, till exempel när du använder Storage SDK. I den här självstudien visar vi hur man laddar upp och ned en blob med hjälp av Azure Storage CLI. Du lär dig att:

  • Skapa ett lagringskonto
  • Skapa en blob-container i lagringskontot
  • Ge den virtuella datorn åtkomst till en SAS för lagringskonton i Resource Manager
  • Hämta en åtkomsttoken med hjälp av den virtuella datorns identitet och använde den när du hämtar SAS:en från Resource Manager

Förutsättningar

Skapa ett lagringskonto

Om du inte redan har ett skapar du nu ett lagringskonto. Du kan även hoppa över det här steget och ge den virtuella datorns systemtilldelade hanterade identitet åtkomst till nycklarna till ett befintligt lagringskonto.

  1. Välj knappen +/Skapa ny tjänst i det övre vänstra hörnet i Azure-portalen.

  2. Välj Lagring, sedan Lagringskonto och en ny panel för "Skapa lagringskonto".

  3. Ange ett namn för lagringskontot som du ska använda senare.

  4. Distributionsmodellen och kontotypen ska anges till "Resource Manager" respektive "Generell användning".

  5. Kontrollera att informationen under Prenumeration och Resursgrupp matchar informationen som du angav när du skapade den virtuella datorn i föregående steg.

  6. Välj Skapa.

    Skärmbild som visar skärmen för att skapa det nya lagringskontot.

Skapa en blob-container i lagringskontot

Senare laddar vi upp och laddar ned en fil till det nya lagringskontot. Eftersom filer kräver blob-lagring måste vi skapa en blob-container som filen ska lagras i.

  1. Gå tillbaka till det lagringskonto du nyss skapade.

  2. Välj länken Containrar i den vänstra panelen under "Blob service".

  3. Välj + Container överst på sidan och panelen "Ny container" skjuts ut.

  4. Ge containern ett namn, välj en åtkomstnivå och välj sedan OK. Du ska använda det här namnet senare i självstudien.

    Skärmbild som visar skärmen för att skapa lagringscontainer.

Ge den virtuella datorns systemtilldelade hanterade identitet åtkomst till att använda lagrings-SAS

Azure Storage har inbyggt stöd för Microsoft Entra-autentisering, så att du kan använda den virtuella datorns systemtilldelade hanterade identitet för att hämta en lagrings-SAS från Resource Manager och sedan använda SAS för att komma åt lagringen. I det här steget ger du den virtuella datorns systemtilldelade hanterade identitet åtkomst till SAS för lagringskontot. Tilldela rollen Lagringskontodeltagare till den hanterade identiteten i omfånget för resursgruppen som innehåller ditt lagringskonto.

Läs mer om att tilldela roller i Tilldela Azure-roller via Azure Portal.

Kommentar

Mer information om de olika roller som du kan använda för att bevilja behörigheter för lagring finns i Auktorisera åtkomst till blobar och köer med hjälp av Microsoft Entra-ID.

Hämta en åtkomsttoken med hjälp av den virtuella datorns identitet och använd den för att anropa Azure Resource Manager

Under resten av självstudien arbetar vi från den virtuella dator som vi skapade tidigare.

Du behöver en SSH-klient för att slutföra de här stegen. Om du använder Windows kan du använda SSH-klienten i Windows-undersystem för Linux. Om du behöver hjälp med att konfigurera SSH-klientens nycklar kan du läsa:

Nu när du har din SSH-klient fortsätter du till stegen nedan:

  1. I Azure-portalen går du till Virtuella datorer, går till din virtuella Linux-dator och väljer sedan Anslut längst upp på sidan Översikt. Kopiera strängen för anslutning till din virtuella dator.

  2. Anslut till den virtuella datorn med hjälp av SSH-klienten.

  3. Därefter uppmanas du att ange ditt lösenord som du lade till när du skapade den virtuella Linux-datorn. Därefter bör du loggas in.

  4. Använd CURL och hämta en åtkomsttoken för Azure Resource Manager.

    CURL-begäran och -svar för åtkomsttoken visas nedan:

    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    
    

    Kommentar

    I föregående begäran måste värdet för parametern "resurs" vara en exakt matchning för vad som förväntas av Microsoft Entra-ID. När du använder Azure Resource Manager-resurs-ID:t måste du ta med det avslutande snedstrecket i URI:n. I följande svar har elementet access_token förkortats för korthet.

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

Hämta en SAS-autentiseringsuppgift från Azure Resource Manager om du vill göra lagringsanrop

Anropa Resource Manager via CURL med hjälp av den åtkomsttoken som vi hämtade i föregående avsnitt och skapa en SAS-autentiseringsuppgift för lagring. När vi har fått SAS-autentiseringsuppgiften kan vi anropa uppladdnings- och nedladdningsåtgärder för lagring.

För den här begäran använder vi följande HTTP-begäransparametrar för att skapa SAS-autentiseringsuppgifterna:

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

Dessa parametrar används i SAS-autentiseringsuppgiftens POST-begäran. Mer information om parametrarna som krävs när du skapar en SAS-autentiseringsuppgift finns i referensen för tjänsten för SAS REST-listan.

Använd följande CURL-begäran och få SAS-autentiseringsuppgiften. Ersätt parametervärdena <SUBSCRIPTION ID>, <RESOURCE GROUP>, <STORAGE ACCOUNT NAME>, <CONTAINER NAME> och <EXPIRATION TIME> med dina egna värden. Ersätt värdet <ACCESS TOKEN> med den åtkomsttoken som du hämtade tidigare:

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

Kommentar

Eftersom texten i den tidigare URL:en är skiftlägeskänslig måste du använda samma skiftläge för dina resursgrupper. Dessutom är det viktigt att du är medveten om att det här är en POST-begäran och inte en GET-begäran.

CURL-svaret returnerar SAS-autentiseringsuppgiften:

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

På en virtuell Linux-dator skapar du en exempelblobfil som ska laddas upp till din bloblagringscontainer med hjälp av följande kommando:

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

Sedan autentiserar du med CLI-kommandot az storage med hjälp av SAS-autentiseringsuppgiften och laddar upp filen till blobcontainern. För det här steget måste du installera den senaste Azure CLI på den virtuella datorn, om du inte redan har gjort det.

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

Svar:

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

Du kan dessutom ladda ned filen med hjälp av Azure CLI och autentisera med SAS-autentiseringsuppgiften.

Begäran:

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

Svar:

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

Nästa steg

I den här självstudien har du lärt dig hur du använder en systemtilldelad hanterad identitet för en virtuell Linux-dator för åtkomst till Azure Storage med hjälp av en SAS-autentiseringsuppgift. Mer information om Azure Storage SAS finns i: