Een SAS voor gebruikersdelegering maken voor een container of blob met PowerShell

Met een Shared Access Signature (SAS) kunt u beperkte toegang verlenen tot containers en blobs in uw opslagaccount. Wanneer u een SAS maakt, geeft u de beperkingen op, waaronder welke Azure Storage-resources een client mag openen, welke machtigingen ze hebben voor deze resources en hoe lang de SAS geldig is.

Elke SAS is ondertekend met een sleutel. U kunt een SAS op twee manieren ondertekenen:

  • Met een sleutel die is gemaakt met behulp van Microsoft Entra-referenties. Een SAS die is ondertekend met Microsoft Entra-referenties is een SAS voor gebruikersdelegatie . Aan een client die een SAS voor gebruikersdelegering maakt, moet een Azure RBAC-rol worden toegewezen die de actie Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey bevat. Zie Een SAS voor gebruikersdelegatie maken voor meer informatie.
  • Met de sleutel van het opslagaccount. Zowel een service-SAS als een account-SAS zijn ondertekend met de sleutel van het opslagaccount. De client die een service-SAS maakt, moet directe toegang hebben tot de accountsleutel of de machtiging Microsoft.Storage/storageAccounts/listkeys/action toewijzen. Zie Een service-SAS maken of Een account-SAS maken voor meer informatie.

Notitie

Een SAS voor gebruikersdelegering biedt superieure beveiliging voor een SAS die is ondertekend met de sleutel van het opslagaccount. Microsoft raadt het gebruik van een SAS voor gebruikersdelegering aan, indien mogelijk. Zie Beperkte toegang verlenen tot gegevens met Shared Access Signatures (SAS) voor meer informatie.

In dit artikel wordt beschreven hoe u Microsoft Entra-referenties gebruikt om een SAS voor gebruikersdelegatie te maken voor een container of blob met Azure PowerShell.

Over de SAS voor gebruikersdelegatie

Een SAS-token voor toegang tot een container of blob kan worden beveiligd met behulp van Microsoft Entra-referenties of een accountsleutel. Een SAS die is beveiligd met Microsoft Entra-referenties wordt een SAS voor gebruikersdelegatie genoemd, omdat het OAuth 2.0-token dat wordt gebruikt om de SAS te ondertekenen namens de gebruiker wordt aangevraagd.

Microsoft raadt u aan microsoft Entra-referenties te gebruiken als best practice voor beveiliging, in plaats van de accountsleutel te gebruiken, die gemakkelijker kan worden aangetast. Wanneer voor uw toepassingsontwerp handtekeningen voor gedeelde toegang zijn vereist, gebruikt u Microsoft Entra-referenties om een SAS voor gebruikersdelegatie te maken voor superieure beveiliging. Zie Een SAS voor gebruikersdelegatie maken voor meer informatie over de SAS voor gebruikersdelegatie.

Let op

Elke client die een geldige SAS heeft, heeft toegang tot gegevens in uw opslagaccount, zoals toegestaan door die SAS. Het is belangrijk om een SAS te beschermen tegen schadelijk of onbedoeld gebruik. Gebruik discretie bij het distribueren van een SAS en een plan voor het intrekken van een gecompromitteerde SAS.

Zie Beperkte toegang verlenen tot Azure Storage-resources met behulp van Sas (Shared Access Signatures ) voor meer informatie over handtekeningen voor gedeelde toegang.

De PowerShell-module installeren

Als u een SAS voor gebruikersdelegatie wilt maken met PowerShell, installeert u versie 1.10.0 of hoger van de Az.Storage-module. Volg deze stappen om de nieuwste versie van de module te installeren:

  1. Verwijder eventuele eerdere installaties van Azure PowerShell:

    • Verwijder eventuele eerdere installaties van Azure PowerShell uit Windows met behulp van de instelling Apps en functies onder Instellingen.
    • Verwijder alle Azure-modules uit %Program Files%\WindowsPowerShell\Modules.
  2. Zorg ervoor dat u de nieuwste versie van PowerShellGet hebt geïnstalleerd. Open een Windows PowerShell-venster en voer de volgende opdracht uit om de nieuwste versie te installeren:

    Install-Module PowerShellGet -Repository PSGallery -Force
    
  3. Sluit het PowerShell-venster en open het opnieuw nadat u PowerShellGet hebt geïnstalleerd.

  4. Installeer de nieuwste versie van Azure PowerShell:

    Install-Module Az -Repository PSGallery -AllowClobber
    
  5. Zorg ervoor dat u Azure PowerShell versie 3.2.0 of hoger hebt geïnstalleerd. Voer de volgende opdracht uit om de nieuwste versie van de Azure Storage PowerShell-module te installeren:

    Install-Module -Name Az.Storage -Repository PSGallery -Force
    
  6. Sluit het PowerShell-venster en open het opnieuw.

Voer de volgende opdracht uit om te controleren welke versie van de Az.Storage-module is geïnstalleerd:

Get-Module -ListAvailable -Name Az.Storage -Refresh

Zie Azure PowerShell installeren met PowerShellGet voor meer informatie over het installeren van Azure PowerShell.

Aanmelden bij Azure PowerShell met Microsoft Entra-id

Roep de opdracht Verbinding maken-AzAccount aan om u aan te melden met uw Microsoft Entra-account:

Connect-AzAccount

Zie Aanmelden met Azure PowerShell voor meer informatie over aanmelden met PowerShell.

Machtigingen toewijzen met Azure RBAC

Als u een SAS voor gebruikersdelegatie wilt maken vanuit Azure PowerShell, moet aan het Microsoft Entra-account dat wordt gebruikt om u aan te melden bij PowerShell een rol toegewezen die de actie Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey bevat. Met deze machtiging kan het Microsoft Entra-account de gebruikersdelegeringssleutel aanvragen. De gebruikersdelegeringssleutel wordt gebruikt om de SAS voor gebruikersdelegering te ondertekenen. De rol die de actie Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey levert, moet worden toegewezen op het niveau van het opslagaccount, de resourcegroep of het abonnement. Zie de sectie Machtigingen toewijzen met Azure RBAC in Een SAS voor gebruikersdelegatie maken voor meer informatie over Azure RBAC-machtigingen voor het maken van een SAS voor gebruikersdelegatie.

Als u niet over voldoende machtigingen beschikt om Azure-rollen toe te wijzen aan een Microsoft Entra-beveiligingsprincipaal, moet u mogelijk de accounteigenaar of -beheerder vragen om de benodigde machtigingen toe te wijzen.

In het volgende voorbeeld wordt de rol Inzender voor opslagblobgegevens toegewezen, waaronder de actie Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey . De rol is gericht op het niveau van het opslagaccount.

Vergeet niet om de waarden van de tijdelijke aanduidingen tussen de punthaken te vervangen door uw eigen waarden:

New-AzRoleAssignment -SignInName <email> `
    -RoleDefinitionName "Storage Blob Data Contributor" `
    -Scope  "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>"

Zie ingebouwde Rollen van Azure voor meer informatie over de ingebouwde rollen die de actie Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey bevatten.

Microsoft Entra-referenties gebruiken om een SAS te beveiligen

Wanneer u een SAS voor gebruikersdelegatie maakt met Azure PowerShell, wordt de gebruikersdelegeringssleutel die wordt gebruikt om de SAS te ondertekenen impliciet voor u gemaakt. De begin- en verlooptijd die u voor de SAS opgeeft, worden ook gebruikt als de begin- en verlooptijd voor de gebruikersdelegatiesleutel.

Omdat het maximale interval waarvoor de sleutel van de gebruikersdelegering geldig is 7 dagen vanaf de begindatum is, moet u een verlooptijd opgeven voor de SAS die binnen 7 dagen na de begintijd valt. De SAS is ongeldig nadat de gebruikersdelegeringssleutel is verlopen, dus een SAS met een verlooptijd van meer dan 7 dagen is nog steeds slechts 7 dagen geldig.

Als u een SAS voor gebruikersdelegatie wilt maken voor een container of blob met Azure PowerShell, maakt u eerst een nieuw Azure Storage-contextobject met de -UseConnectedAccount parameter op. De -UseConnectedAccount parameter geeft aan dat de opdracht het contextobject maakt onder het Microsoft Entra-account waarmee u zich hebt aangemeld.

Vergeet niet om de waarden van de tijdelijke aanduidingen tussen de punthaken te vervangen door uw eigen waarden:

$ctx = New-AzStorageContext -StorageAccountName <storage-account> -UseConnectedAccount

Een SAS voor gebruikersdelegatie maken voor een container

Als u een SAS-token voor gebruikersdelegatie voor een container wilt retourneren, roept u de opdracht New-AzStorageContainerSASToken aan en geeft u het Azure Storage-contextobject door dat u eerder hebt gemaakt.

In het volgende voorbeeld wordt een SAS-token voor gebruikersdelegering voor een container geretourneerd. Vergeet niet om de tijdelijke aanduidingen tussen haakjes te vervangen door uw eigen waarden:

New-AzStorageContainerSASToken -Context $ctx `
    -Name <container> `
    -Permission racwdl `
    -ExpiryTime <date-time>

Het SAS-token voor gebruikersdelegatie dat wordt geretourneerd, is vergelijkbaar met:

?sv=2018-11-09&sr=c&sig=<sig>&skoid=<skoid>&sktid=<sktid>&skt=2019-08-05T22%3A24%3A36Z&ske=2019-08-07T07%3A
00%3A00Z&sks=b&skv=2018-11-09&se=2019-08-07T07%3A00%3A00Z&sp=rwdl

Een SAS voor gebruikersdelegering maken voor een blob

Als u een SAS-token voor gebruikersdelegatie voor een blob wilt retourneren, roept u de opdracht New-AzStorageBlobSASToken aan en geeft u het Azure Storage-contextobject door dat u eerder hebt gemaakt.

De volgende syntaxis retourneert een SAS voor gebruikersdelegatie voor een blob. In het voorbeeld wordt de -FullUri parameter opgegeven, die de blob-URI retourneert met het SAS-token toegevoegd. Vergeet niet om de tijdelijke aanduidingen tussen haakjes te vervangen door uw eigen waarden:

New-AzStorageBlobSASToken -Context $ctx `
    -Container <container> `
    -Blob <blob> `
    -Permission racwd `
    -ExpiryTime <date-time>
    -FullUri

De SAS-URI voor gebruikersdelegatie die wordt geretourneerd, is vergelijkbaar met:

https://storagesamples.blob.core.windows.net/sample-container/blob1.txt?sv=2018-11-09&sr=b&sig=<sig>&skoid=<skoid>&sktid=<sktid>&skt=2019-08-06T21%3A16%3A54Z&ske=2019-08-07T07%3A00%3A00Z&sks=b&skv=2018-11-09&se=2019-08-07T07%3A00%3A00Z&sp=racwd

Notitie

Een SAS voor gebruikersdelegatie biedt geen ondersteuning voor het definiëren van machtigingen met een opgeslagen toegangsbeleid.

Een SAS voor gebruikersdelegering intrekken

Als u een SAS voor gebruikersdelegering wilt intrekken vanuit Azure PowerShell, roept u de opdracht Revoke-AzStorageAccountUserDelegationKeys aan. Met deze opdracht worden alle gebruikersdelegatiesleutels ingetrokken die zijn gekoppeld aan het opgegeven opslagaccount. Handtekeningen voor gedeelde toegang die aan deze sleutels zijn gekoppeld, worden ongeldig.

Vergeet niet om de waarden van de tijdelijke aanduidingen tussen de punthaken te vervangen door uw eigen waarden:

Revoke-AzStorageAccountUserDelegationKeys -ResourceGroupName <resource-group> `
    -StorageAccountName <storage-account>

Belangrijk

Zowel de sleutel van de gebruikersdelegering als de Azure-roltoewijzingen worden in de cache opgeslagen door Azure Storage, dus er kan een vertraging optreden tussen het initiëren van het intrekkingsproces en wanneer een bestaande SAS voor gebruikersdelegering ongeldig wordt.

Volgende stappen