Een SAS voor gebruikersdelegatie maken voor een container of blob met de Azure CLI

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 gebruikersdelegering te maken voor een container of blob met de Azure CLI.

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 nieuwste versie van de Azure CLI installeren

Als u de Azure CLI wilt gebruiken om een SAS te beveiligen met Microsoft Entra-referenties, moet u eerst controleren of u de nieuwste versie van Azure CLI hebt geïnstalleerd. Zie De Azure CLI installeren voor meer informatie over het installeren van de Azure CLI.

Als u een SAS voor gebruikersdelegering wilt maken met behulp van de Azure CLI, moet u ervoor zorgen dat u versie 2.0.78 of hoger hebt geïnstalleerd. Gebruik de az --version opdracht om de geïnstalleerde versie te controleren.

Aanmelden met Microsoft Entra-referenties

Meld u aan bij de Azure CLI met uw Microsoft Entra-referenties. Zie Aanmelden met de Azure CLI voor meer informatie.

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 Azure CLI 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.

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:

az role assignment create \
    --role "Storage Blob Data Contributor" \
    --assignee <email> \
    --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 gebruikersdelegering maakt met de Azure CLI, 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.

Wanneer u een SAS voor gebruikersdelegering maakt, zijn deze --auth-mode login--as-user parameters vereist. Geef aanmelding op voor de --auth-mode parameter, zodat aanvragen die naar Azure Storage worden gedaan, zijn geautoriseerd met uw Microsoft Entra-referenties. Geef de --as-user parameter op om aan te geven dat de geretourneerde SAS een SAS voor gebruikersdelegatie moet zijn.

Een SAS voor gebruikersdelegatie maken voor een container

Als u een SAS voor gebruikersdelegatie wilt maken voor een container met de Azure CLI, roept u de opdracht az storage container generate-sas aan.

Ondersteunde machtigingen voor een SAS voor gebruikersdelegatie in een container zijn onder andere Toevoegen, Maken, Verwijderen, Lijst, Lezen en Schrijven. Machtigingen kunnen afzonderlijk of gecombineerd worden opgegeven. Zie Een SAS voor gebruikersdelegatie maken voor meer informatie over deze machtigingen.

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:

az storage container generate-sas \
    --account-name <storage-account> \
    --name <container> \
    --permissions acdlrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user

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

se=2019-07-27&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sktid=<sktid>&skt=2019-07-26T18%3A01%3A22Z&ske=2019-07-27T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

Notitie

Het SAS-token dat wordt geretourneerd door Blob Storage bevat geen scheidingsteken ('?') voor de URL-querytekenreeks. Als u het SAS-token toevoegt aan een resource-URL, moet u ook het scheidingsteken toevoegen.

Een SAS voor gebruikersdelegering maken voor een blob

Als u een SAS voor gebruikersdelegatie wilt maken voor een blob met de Azure CLI, roept u de opdracht az storage blob generate-sas aan.

Ondersteunde machtigingen voor een SAS voor gebruikersdelegatie in een blob zijn toevoegen, maken, verwijderen, lezen en schrijven. Machtigingen kunnen afzonderlijk of gecombineerd worden opgegeven. Zie Een SAS voor gebruikersdelegatie maken voor meer informatie over deze machtigingen.

De volgende syntaxis retourneert een SAS voor gebruikersdelegatie voor een blob. In het voorbeeld wordt de --full-uri 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:

az storage blob generate-sas \
    --account-name <storage-account> \
    --container-name <container> \
    --name <blob> \
    --permissions acdrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user \
    --full-uri

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

https://storagesamples.blob.core.windows.net/sample-container/blob1.txt?se=2019-08-03&sp=rw&sv=2018-11-09&sr=b&skoid=<skoid>&sktid=<sktid>&skt=2019-08-02T2
2%3A32%3A01Z&ske=2019-08-03T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

Notitie

Het SAS-token dat wordt geretourneerd door Azure CLI bevat niet het scheidingsteken ('?') voor de URL-querytekenreeks. Als u het SAS-token toevoegt aan een resource-URL, moet u het scheidingsteken toevoegen aan de resource-URL voordat u het SAS-token toevoegt.

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 de Azure CLI, roept u de opdracht az storage account revoke-delegation-keys 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:

az storage account revoke-delegation-keys \
    --name <storage-account> \
    --resource-group <resource-group>

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