Een service-SAS maken

Een SAS (Shared Access Signature) van een service delegeert de toegang tot een resource in slechts een van de opslagservices: Azure Blob Storage, Azure Queue Storage, Azure Table Storage of Azure Files. De URI voor een SAS op serviceniveau bestaat uit de URI naar de resource waarvoor de SAS de toegang delegeert, gevolgd door het SAS-token.

Het SAS-token is de queryreeks die alle informatie bevat die nodig is om een aanvraag te autoriseren. Het token geeft de resource aan waartoe een client toegang heeft, de verleende machtigingen en de periode waarin de handtekening geldig is.

Een SAS kan ook het ondersteunde IP-adres of adresbereik opgeven waaruit aanvragen kunnen afkomstig zijn, het ondersteunde protocol waarmee een aanvraag kan worden gedaan of een optionele toegangsbeleids-id die aan de aanvraag is gekoppeld.

Ten slotte bevat elk SAS-token een handtekening.

Waarschuwing

Handtekeningen voor gedeelde toegang zijn sleutels die machtigingen verlenen aan opslagresources. U moet deze net zo beveiligen als een accountsleutel. Het is belangrijk om een SAS te beschermen tegen kwaadwillend of onbedoeld gebruik. Gebruik discretie bij het distribueren van een SAS en zorg voor een plan voor het intrekken van een gecompromitteerde SAS. Bewerkingen die gebruikmaken van handtekeningen voor gedeelde toegang moeten alleen worden uitgevoerd via een HTTPS-verbinding en SAS-URI's mogen alleen worden gedistribueerd op een beveiligde verbinding, zoals HTTPS.

Een service-SAS autoriseren

U beveiligt een account-SAS met behulp van een opslagaccountsleutel. Wanneer u een account-SAS maakt, moet uw clienttoepassing over de accountsleutel beschikken.

Als u Microsoft Entra referenties wilt gebruiken om een SAS voor een container of blob te beveiligen, maakt u een SAS voor gebruikersdelegering.

Ondersteuning voor service-SAS voor toegang via een directory-bereik

Een service-SAS ondersteunt directorybereik (sr=d) wanneer de autorisatieversie (sv) 2020-02-10 of hoger is en een hiërarchische naamruimte is ingeschakeld. De semantiek voor directorybereik (sr=d) is vergelijkbaar met die voor containerbereik (sr=c), behalve dat de toegang is beperkt tot een map en alle bestanden en submappen daarin. Wanneer sr=d is opgegeven, is de sdd queryparameter ook vereist.

De tekenreeksindeling voor autorisatieversie 2020-02-10 is ongewijzigd.

Een service-SAS maken

In de volgende afbeelding ziet u de onderdelen van de Shared Access Signature-URI. De vereiste onderdelen worden oranje weergegeven. De velden waaruit het SAS-token bestaat, worden beschreven in de volgende secties.

Diagram van de parameterelementen van een Shared Access Signature-URL.

In de volgende secties wordt beschreven hoe u de parameters opgeeft waaruit het service-SAS-token bestaat.

signedVersion Het veld opgeven

Het signedVersion veld (sv) bevat de serviceversie van de Shared Access Signature. Deze waarde geeft de versie van autorisatie voor gedeelde sleutels op die wordt gebruikt door deze Shared Access Signature (in het signature veld). De waarde geeft ook de serviceversie aan voor aanvragen die worden gedaan met deze Shared Access Signature.

Zie Versiebeheer voor Azure Storage-services voor informatie over welke versie wordt gebruikt wanneer u aanvragen uitvoert via een Shared Access Signature.

Zie Toegang delegeren met een shared access signature voor informatie over de invloed van deze parameter op de autorisatie van aanvragen die zijn gedaan met een Shared Access Signature.

Veldnaam Queryparameter Beschrijving
signedVersion sv Vereist. Ondersteund in versie 2012-02-12 en hoger. De versie van de opslagservice die moet worden gebruikt voor het autoriseren en verwerken van aanvragen die u doet met deze Shared Access Signature. Zie Versiebeheer voor Azure Storage-services voor meer informatie.

De versie van een verouderde SAS-aanvraag bepalen

In verouderde scenario's waarin signedVersion niet wordt gebruikt, past Blob Storage regels toe om de versie te bepalen. Zie Versiebeheer voor Azure Storage-services voor meer informatie over deze regels.

Belangrijk

Clientsoftware kan onverwacht protocolgedrag ervaren wanneer u een Shared Access Signature-URI gebruikt die gebruikmaakt van een opslagserviceversie die nieuwer is dan de clientsoftware. Code die shared access signature-URI's maakt, moet afhankelijk zijn van versies die worden begrepen door de clientsoftware die opslagserviceaanvragen doet.

De ondertekende resource opgeven (alleen Blob Storage)

Het veld vereist signedResource (sr) geeft aan welke resources toegankelijk zijn via de Shared Access Signature. In de volgende tabel wordt beschreven hoe u verwijst naar een blob- of containerresource in het SAS-token.

Resource Parameterwaarde Ondersteunde versies Description
Blob b Alles Verleent toegang tot de inhoud en metagegevens van de blob.
Blob-versie Bv 2018-11-09 en hoger Verleent toegang tot de inhoud en metagegevens van de blobversie, maar niet tot de basis-blob.
Blob-momentopname bs 2018-11-09 en hoger Verleent toegang tot de inhoud en metagegevens van de momentopname van de blob, maar niet tot de basis-blob.
Container c Alles Verleent toegang tot de inhoud en metagegevens van een blob in de container en tot de lijst met blobs in de container.
Directory d 2020-02-10 en hoger Verleent toegang tot de inhoud en metagegevens van een blob in de map en tot de lijst met blobs in de map, in een opslagaccount waarvoor een hiërarchische naamruimte is ingeschakeld. Als er een map is opgegeven voor het signedResource veld, is de signedDirectoryDepth parameter (sdd) ook vereist. Een map is altijd genest in een container.

Geef de ondertekende resource op (Azure Files)

SAS wordt ondersteund voor Azure Files versie 21-02-2015 en hoger.

Het signedResource veld geeft aan welke resources toegankelijk zijn via de Shared Access Signature. In de volgende tabel wordt beschreven hoe u verwijst naar een bestands- of shareresource op de URI.

Veldnaam Queryparameter Beschrijving
signedResource sr Vereist.

Geef op f of de gedeelde resource een bestand is. Hiermee verleent u toegang tot de inhoud en metagegevens van het bestand.

Geef op s of de gedeelde resource een share is. Hiermee verleent u toegang tot de inhoud en metagegevens van een bestand in de share en tot de lijst met mappen en bestanden in de share.

Queryparameters opgeven om antwoordheaders te overschrijven (alleen Blob Storage en Azure Files)

Als u waarden wilt definiëren voor bepaalde antwoordheaders die moeten worden geretourneerd wanneer de Shared Access Signature wordt gebruikt in een aanvraag, kunt u antwoordheaders opgeven in queryparameters. Deze functie wordt ondersteund vanaf versie 2013-08-15 voor Blob Storage en versie 2015-02-21 voor Azure Files. Handtekeningen voor gedeelde toegang die gebruikmaken van deze functie, moeten de sv parameter bevatten die is ingesteld op 2013-08-15 of hoger voor Blob Storage, of op 2015-02-21 of hoger voor Azure Files.

De antwoordheaders en de bijbehorende queryparameters worden vermeld in de volgende tabel:

Naam van antwoordheader Bijbehorende SAS-queryparameter
Cache-Control rscc
Content-Disposition rscd
Content-Encoding rsce
Content-Language rscl
Content-Type rsct

Als u bijvoorbeeld de rsct=binary queryparameter opgeeft voor een Shared Access Signature die is gemaakt met versie 2013-08-15 of hoger, wordt de Content-Type antwoordheader ingesteld op binary. Deze waarde overschrijft de Content-Type headerwaarde die is opgeslagen voor de blob voor een aanvraag die alleen gebruikmaakt van deze Shared Access Signature.

Als u een shared access signature maakt die antwoordheaders opgeeft als queryparameters, moet u deze opnemen in de tekenreeks die wordt gebruikt om de handtekeningtekenreeks samen te stellen. Zie de sectie De handtekeningtekenreeks samenstellen verderop in dit artikel voor meer informatie. Zie Voorbeelden van service-SAS voor aanvullende voorbeelden.

Geef de tabelnaam op (alleen Table Storage)

Het tableName veld geeft de naam op van de tabel die moet worden gedeeld.

Veldnaam Queryparameter Beschrijving
tableName tn Vereist. De naam van de tabel die u wilt delen.

Het toegangsbeleid opgeven

Het toegangsbeleidsgedeelte van de URI geeft de periode aan waarin de shared access signature geldig is en de machtigingen die aan de gebruiker moeten worden verleend. De onderdelen van de URI waaruit het toegangsbeleid bestaat, worden beschreven in de volgende tabel:

Veldnaam Queryparameter Beschrijving
signedStart st Optioneel. Het tijdstip waarop de shared access signature geldig wordt, uitgedrukt in een van de geaccepteerde ISO 8601 UTC-indelingen. Als deze parameter wordt weggelaten, wordt de huidige UTC-tijd gebruikt als de begintijd.

In versies die ouder zijn dan 2012-02-12, kan de duur tussen signedStart en signedExpiry niet langer zijn dan één uur, tenzij een containerbeleid wordt gebruikt. Zie Datum-/tijdwaarden opmaken voor meer informatie over geaccepteerde UTC-notaties.
signedExpiry se Vereist. Het tijdstip waarop de handtekening voor gedeelde toegang ongeldig wordt, uitgedrukt in een van de geaccepteerde ISO 8601 UTC-indelingen. U moet dit veld weglaten als het is opgegeven in een gekoppeld opgeslagen toegangsbeleid. Zie Datum-/tijdwaarden opmaken voor meer informatie over geaccepteerde UTC-notaties.
signedPermissions1 sp Vereist. De machtigingen die zijn gekoppeld aan de Shared Access Signature. De gebruiker is beperkt tot bewerkingen die zijn toegestaan door de machtigingen. U moet dit veld weglaten als het is opgegeven in een gekoppeld opgeslagen toegangsbeleid.
startPk2

startRk2
spk

srk
Alleen Table Storage.

Optioneel, maar startPk moet vergezeld gaan van startRk. De minimale partitie- en rijsleutels die toegankelijk zijn met deze shared access signature. Sleutelwaarden zijn inclusief. Als u ze weglaat, is er geen ondergrens voor de tabelentiteiten die kunnen worden geopend.
endPk2

endRk2
epk

erk
Alleen Table Storage.

Optioneel, maar endPk moet vergezeld gaan van endRk. De maximale partitie- en rijsleutels die toegankelijk zijn met deze shared access signature. Sleutelwaarden zijn inclusief. Als u deze weglaat, is er geen bovengrens voor de tabelentiteiten die toegankelijk zijn.

1 Het signedPermissions veld is vereist voor de URI, tenzij het is opgegeven als onderdeel van een opgeslagen toegangsbeleid.
2 De startPkvelden , startRk, endPken endRk kunnen alleen worden opgegeven voor Table Storage-resources.

Machtigingen opgeven

De machtigingen die zijn opgegeven voor het signedPermissions veld (sp) in het SAS-token geven aan welke bewerkingen een client op de resource kan uitvoeren.

U kunt machtigingen combineren zodat een client meerdere bewerkingen met dezelfde SAS kan uitvoeren. Wanneer u de SAS maakt, moet u machtigingen opnemen in de volgende volgorde:

racwdxltmeop

Voorbeelden van geldige machtigingsinstellingen voor een container zijn , rwrd, rl, wd, wlen rl. Voorbeelden van ongeldige instellingen zijn , wrdr, lren dw. U kunt een machtigingsaanduiding niet meer dan één keer opgeven.

Een service-SAS kan geen toegang verlenen tot bepaalde bewerkingen:

  • Containers, wachtrijen en tabellen kunnen niet worden gemaakt, verwijderd of weergegeven.
  • Metagegevens en eigenschappen van containers kunnen niet worden gelezen of geschreven.
  • Wachtrijen kunnen niet worden gewist en de metagegevens ervan kunnen niet worden geschreven.
  • Containers kunnen niet worden geleased.

Als u een SAS wilt maken die toegang verleent tot deze bewerkingen, gebruikt u een account-SAS. Zie Een account-SAS maken voor meer informatie.

Belangrijk

Handtekeningen voor gedeelde toegang zijn sleutels die machtigingen verlenen aan opslagresources. U moet deze net zo beveiligen als een accountsleutel. Bewerkingen uitvoeren die alleen gebruikmaken van handtekeningen voor gedeelde toegang via een HTTPS-verbinding en URI's voor shared access signature alleen distribueren op een beveiligde verbinding, zoals HTTPS.

De machtigingen die worden ondersteund voor elk resourcetype, worden beschreven in de volgende secties.

Machtigingen voor een map, container of blob

De machtigingen die worden ondersteund voor elk resourcetype, worden beschreven in de volgende tabel:

Machtiging URI-symbool Resource Versieondersteuning Toegestane bewerkingen
Lezen r Container
Directory
Blob
Alles Lees de inhoud, de blokkeringslijst, eigenschappen en metagegevens van een blob in de container of map. Gebruik een blob als bron van een kopieerbewerking.
Toevoegen een Container
Directory
Blob
Alles Voeg een blok toe aan een toevoeg-blob.
Maken c Container
Directory
Blob
Alles Schrijf een nieuwe blob, maak een momentopname van een blob of kopieer een blob naar een nieuwe blob.
Schrijven w Container
Directory
Blob
Alles Inhoud, eigenschappen, metagegevens of blokkeringslijsten maken of schrijven. Momentopname of lease van de blob. Wijzig het formaat van de blob (alleen pagina-blob). Gebruik de blob als het doel van een kopieerbewerking.
Verwijderen d Container
Directory
Blob
Alles Een blob verwijderen. Voor versie 29-07-2017 en hoger staat de machtiging Verwijderen ook toe dat een lease op een blob wordt verbroken. Zie de bewerking Lease Blob voor meer informatie.
Versie verwijderen x Container
Blob
2019-12-12 en hoger Een blobversie verwijderen.
Permanent verwijderen y Blob 2020-02-10 en hoger Een blobmomentopname of -versie permanent verwijderen.
Lijst l Container
Directory
Alles Blobs niet recursief weergeven.
Tags t Blob 2019-12-12 en hoger Lees of schrijf de tags op een blob.
Find f Container 2019-12-12 en hoger Blobs met indextags zoeken.
Verplaatsen m Container
Directory
Blob
2020-02-10 en hoger Een blob of map en de inhoud ervan naar een nieuwe locatie verplaatsen. Deze bewerking kan optioneel worden beperkt tot de eigenaar van de onderliggende blob, map of bovenliggende map als de saoid parameter is opgenomen in het SAS-token en de sticky bit is ingesteld op de bovenliggende map.
Uitvoeren e Container
Directory
Blob
2020-02-10 en hoger Haal de systeemeigenschappen op en haal, als de hiërarchische naamruimte is ingeschakeld voor het opslagaccount, de POSIX-ACL van een blob op. Als de hiërarchische naamruimte is ingeschakeld en de aanroeper de eigenaar van een blob is, verleent deze machtiging de mogelijkheid om de groep die eigenaar is, POSIX-machtigingen en POSIX-ACL van de blob in te stellen. staat de aanroeper niet toe om door de gebruiker gedefinieerde metagegevens te lezen.
Eigendom o Container
Directory
Blob
2020-02-10 en hoger Wanneer de hiërarchische naamruimte is ingeschakeld, kan de aanroeper met deze machtiging de eigenaar of de groep die eigenaar is, instellen of als de eigenaar optreden bij het wijzigen van de naam of het verwijderen van een map of blob in een map waarvoor de plakbit is ingesteld.
Machtigingen p Container
Directory
Blob
2020-02-10 en hoger Wanneer de hiërarchische naamruimte is ingeschakeld, kan de aanroeper met deze machtiging machtigingen en POSIX-ACL's instellen voor mappen en blobs.
Onveranderbaarheidsbeleid instellen i Container
Blob
2020-06-12 en hoger Het onveranderbaarheidsbeleid of de juridische bewaring van een blob instellen of verwijderen.

Machtigingen voor een bestand

Machtiging URI-symbool Toegestane bewerkingen
Lezen r Lees de inhoud, eigenschappen en metagegevens. Gebruik het bestand als bron van een kopieerbewerking.
Maken c Maak een nieuw bestand of kopieer een bestand naar een nieuw bestand.
Schrijven w Inhoud, eigenschappen en metagegevens maken of schrijven. Wijzig het formaat van het bestand. Gebruik het bestand als het doel van een kopieerbewerking.
Verwijderen d Verwijder het bestand.

Machtigingen voor een share

Machtiging URI-symbool Toegestane bewerkingen
Lezen r Lees de inhoud, eigenschappen of metagegevens van een bestand in de share. Gebruik een bestand in de share als bron van een kopieerbewerking.
Maken c Maak een nieuw bestand in de share of kopieer een bestand naar een nieuw bestand in de share.
Schrijven w Voor elk bestand in de share kunt u inhoud, eigenschappen of metagegevens maken of schrijven. Wijzig het formaat van het bestand. Gebruik het bestand als het doel van een kopieerbewerking. Opmerking: u kunt geen machtigingen verlenen voor het lezen of schrijven van share-eigenschappen of metagegevens met behulp van een service-SAS. Gebruik in plaats daarvan een account-SAS.
Verwijderen d Verwijder een bestand in de share. Opmerking: u kunt geen machtigingen verlenen om een share te verwijderen met behulp van een service-SAS. Gebruik in plaats daarvan een account-SAS.
Lijst l Bestanden en mappen in de share weergeven.

Machtigingen voor een wachtrij

Machtiging URI-symbool Toegestane bewerkingen
Lezen r Lees metagegevens en eigenschappen, inclusief het aantal berichten. Kort weergeven bij berichten.
Toevoegen een Voeg berichten toe aan de wachtrij.
Bijwerken u Berichten in de wachtrij bijwerken. Opmerking: gebruik de machtiging Proces met Bijwerken, zodat u eerst het bericht kunt ontvangen dat u wilt bijwerken.
Proces p Berichten ophalen en verwijderen uit de wachtrij.

Machtigingen voor een tabel

Machtiging URI-symbool Toegestane bewerkingen
Query’s uitvoeren r Entiteiten ophalen en entiteiten opvragen.
Toevoegen een Entiteiten toevoegen. Opmerking: machtigingen voor toevoegen en bijwerken zijn vereist voor upsert-bewerkingen.
Bijwerken u Entiteiten bijwerken. Opmerking: machtigingen voor toevoegen en bijwerken zijn vereist voor upsert-bewerkingen.
Verwijderen d Entiteiten verwijderen.

Een IP-adres of IP-bereik opgeven

Vanaf versie 2015-04-05 geeft het optionele signedIp veld (sip) een openbaar IP-adres of een bereik van openbare IP-adressen op van waaruit aanvragen moeten worden geaccepteerd. Als het IP-adres van waaruit de aanvraag afkomstig is, niet overeenkomt met het IP-adres of adresbereik dat is opgegeven in het SAS-token, is de aanvraag niet geautoriseerd. Alleen IPv4-adressen worden ondersteund.

Wanneer u een bereik met IP-adressen opgeeft, moet u er rekening mee houden dat het bereik inclusief is. Als u bijvoorbeeld of sip=168.1.5.60-168.1.5.70 opgeeft in de SAS, sip=168.1.5.65 wordt de aanvraag beperkt tot deze IP-adressen.

In de volgende tabel wordt beschreven of het signedIp veld moet worden opgenomen in een SAS-token voor een opgegeven scenario, op basis van de clientomgeving en de locatie van het opslagaccount.

Clientomgeving De locatie van het opslagaccount Aanbeveling
Client die wordt uitgevoerd in Azure In dezelfde regio als de client Een SAS die in dit scenario aan de client wordt geleverd, mag geen uitgaand IP-adres voor het signedIp veld bevatten. Aanvragen die worden gedaan vanuit dezelfde regio die gebruikmaken van een SAS met een opgegeven uitgaande IP-adres, mislukken.

Gebruik in plaats daarvan een virtueel Azure-netwerk om netwerkbeveiligingsbeperkingen te beheren. Aanvragen naar Azure Storage vanuit dezelfde regio vinden altijd plaats via een privé-IP-adres. Raadpleeg Firewalls en virtuele netwerken voor Azure Storage configureren voor meer informatie.
Client die wordt uitgevoerd in Azure In een andere regio dan de client Een SAS die in dit scenario aan de client wordt verstrekt, kan een openbaar IP-adres of adresbereik voor het signedIp veld bevatten. Een aanvraag die met de SAS wordt gedaan, moet afkomstig zijn van het opgegeven IP-adres of adresbereik.
Client die on-premises of in een andere cloudomgeving wordt uitgevoerd In elke Azure-regio Een SAS die in dit scenario aan de client wordt verstrekt, kan een openbaar IP-adres of adresbereik voor het signedIp veld bevatten. Een aanvraag die met de SAS wordt gedaan, moet afkomstig zijn van het opgegeven IP-adres of adresbereik.

Als de aanvraag via een proxy of gateway wordt doorgegeven, geeft u het openbare uitgaande IP-adres van die proxy of gateway op voor het signedIp veld.

Het HTTP-protocol opgeven

Vanaf versie 2015-04-05 geeft het optionele signedProtocol veld (spr) het protocol op dat is toegestaan voor een aanvraag die met de SAS is gedaan. Mogelijke waarden zijn zowel HTTPS als HTTP (https,http) of alleen HTTPS (https). De standaardwaarde is https,http. Houd er rekening mee dat alleen HTTP geen toegestane waarde is.

Toegangsbereiken voor tabellen opgeven

De startPkvelden , startRk, endPken endRk definiëren een bereik van tabelentiteiten die zijn gekoppeld aan een handtekening voor gedeelde toegang. Tabelquery's retourneren alleen resultaten die zich binnen het bereik bevinden en pogingen om de Shared Access Signature te gebruiken om entiteiten buiten dit bereik toe te voegen, bij te werken of te verwijderen, mislukken.

Als startPk gelijk is endPkaan , autoriseert de shared access signature toegang tot entiteiten in slechts één partitie in de tabel.

Als startPk gelijk is endPk aan en startRk gelijk is aan endRk, heeft de Shared Access Signature slechts toegang tot één entiteit in één partitie.

Raadpleeg de volgende tabel om te begrijpen hoe deze velden de toegang tot entiteiten in een tabel beperken:

Aanwezige velden Bereik van beperking
startPk partitionKey >= startPk
endPk partitionKey <= endPk
startPk, startRk (partitionKey >startPk) || (partitionKey == startPk && rowKey >= startRk)
endPk, endRk (partitionKey <endPk) || (partitionKey == endPk && rowKey <= endRk)

De mapdiepte opgeven

Wanneer een hiërarchische naamruimte is ingeschakeld en het signedResource veld een map () opgeeft,sr=d moet u ook het signedDirectoryDepth veld (sdd) opgeven om het aantal submappen onder de hoofdmap aan te geven. De waarde van het sdd veld moet een niet-negatief geheel getal zijn.

De hoofdmap https://{account}.blob.core.windows.net/{container}/ heeft bijvoorbeeld een diepte van 0. Elke submap in de hoofdmap wordt toegevoegd aan de diepte met 1. De map https://{account}.blob.core.windows.net/{container}/d1/d2 heeft een diepte van 2.

Dit veld wordt ondersteund met versie 2020-02-10 of hoger.

De ondertekende id opgeven

Wanneer u het signedIdentifier veld opgeeft in de URI, koppelt u de opgegeven Shared Access Signature aan een bijbehorend opgeslagen toegangsbeleid. Een opgeslagen toegangsbeleid biedt een extra mate van controle over een of meer handtekeningen voor gedeelde toegang, inclusief de mogelijkheid om de handtekening zo nodig in te trekken. Elke container, wachtrij, tabel of share kan maximaal vijf opgeslagen toegangsbeleidsregels hebben.

In de volgende tabel wordt beschreven hoe u verwijst naar een ondertekende id op de URI:

Veldnaam Queryparameter Beschrijving
signedIdentifier si Optioneel. Een unieke waarde van maximaal 64 tekens die overeenkomt met een toegangsbeleid dat is opgegeven voor de container, wachtrij of tabel.

Een opgeslagen toegangsbeleid bevat een ondertekende id, een waarde van maximaal 64 tekens die uniek is binnen de resource. U kunt de waarde van deze ondertekende id opgeven voor het signedidentifier veld in de URI voor de handtekening voor gedeelde toegang. Wanneer u een ondertekende id opgeeft op de URI, koppelt u de handtekening aan het opgeslagen toegangsbeleid. Zie Toegang delegeren met een shared access signature als u toegangsbeleid op containerniveau wilt instellen met behulp van de REST API.

Het versleutelingsbereik opgeven

Met behulp van het signedEncryptionScope veld op de URI kunt u het versleutelingsbereik opgeven dat de clienttoepassing kan gebruiken. Hiermee wordt de versleuteling aan de serverzijde afgedwongen met het opgegeven versleutelingsbereik wanneer u blobs (PUT) uploadt met het SAS-token. De GET en HEAD worden niet beperkt en uitgevoerd zoals voorheen.

In de volgende tabel wordt beschreven hoe u verwijst naar een ondertekend versleutelingsbereik op de URI:

Veldnaam Queryparameter Beschrijving
signedEncryptionScope ses Optioneel. Geeft het versleutelingsbereik aan dat moet worden gebruikt om de inhoud van de aanvraag te versleutelen.

Dit veld wordt ondersteund met versie 2020-12-06 of hoger. Als u de ses toevoegt vóór de ondersteunde versie, retourneert de service foutcode 403 (Verboden).

Als u het standaardversleutelingsbereik voor de container of het bestandssysteem instelt, respecteert de ses queryparameter het containerversleutelingsbeleid. Als er een niet-overeenkomende ses queryparameter en x-ms-default-encryption-scope header is en de x-ms-deny-encryption-scope-override header is ingesteld op true, retourneert de service foutcode 403 (Verboden).

Wanneer u de x-ms-encryption-scope header en de ses queryparameter in de PUT-aanvraag opgeeft, retourneert de service foutcode 400 (Ongeldige aanvraag) als er een niet-overeenkomende fout is.

De handtekening opgeven

U gebruikt het handtekeninggedeelte van de URI om de aanvraag te autoriseren die is gedaan met de Shared Access Signature. Azure Storage maakt gebruik van een gedeeld sleutelautorisatieschema om een service-SAS te autoriseren.

In de volgende tabel wordt beschreven hoe u de handtekening voor de URI opgeeft:

Veldnaam Queryparameter Beschrijving
signature sig De tekenreeks-naar-tekenreeks is een unieke tekenreeks die is samengesteld uit de velden en die moet worden geverifieerd om de aanvraag te autoriseren. De handtekening is een HMAC (hash-based message authentication code) die u met behulp van het SHA256-algoritme berekent en vervolgens codeert met behulp van Base64-codering.

De handtekeningtekenreeks maken

Als u de handtekeningtekenreeks van een Shared Access Signature wilt maken, maakt u eerst de tekenreeks om te ondertekenen uit de velden waaruit de aanvraag bestaat, codeert u de tekenreeks als UTF-8 en berekent u vervolgens de handtekening met behulp van het algoritme HMAC-SHA256. De velden die zijn opgenomen in het tekenreeks-naar-teken moeten URL-gedecodeerd zijn.

Versie 2020-12-06 en hoger

Versie 2020-12-06 voegt ondersteuning toe voor het ondertekende versleutelingsbereikveld. Gebruik de volgende indeling om de tekenreeks-naar-tekenreeks voor Blob Storage-resources te maken:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedIP + "\n" +  
               signedProtocol + "\n" +  
               signedVersion + "\n" +  
               signedResource + "\n" +
               signedSnapshotTime + "\n" +
               signedEncryptionScope + "\n" +
               rscc + "\n" +  
               rscd + "\n" +  
               rsce + "\n" +  
               rscl + "\n" +  
Versie 2018-11-09 en hoger

Versie 2018-11-09 voegt ondersteuning toe voor de ondertekende resource en de tijdvelden voor ondertekende blobmomentopnamen. Deze velden moeten worden opgenomen in de tekenreeks-naar-tekenreeks. Gebruik de volgende indeling om de tekenreeks-naar-tekenreeks voor Blob Storage-resources te maken:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedIP + "\n" +  
               signedProtocol + "\n" +  
               signedVersion + "\n" +  
               signedResource + "\n"
               signedSnapshotTime + "\n" +
               rscc + "\n" +  
               rscd + "\n" +  
               rsce + "\n" +  
               rscl + "\n" +  
               rsct  
Versie 2015-04-05 en hoger

Versie 2015-04-05 voegt ondersteuning toe voor de ondertekende IP- en ondertekende protocolvelden. Deze velden moeten worden opgenomen in de tekenreeks-naar-tekenreeks. Gebruik de volgende indeling om de tekenreeks-naar-tekenreeks te maken voor Blob Storage- of Azure Files-resources:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedIP + "\n" +  
               signedProtocol + "\n" +  
               signedVersion + "\n" +  
               rscc + "\n" +  
               rscd + "\n" +  
               rsce + "\n" +  
               rscl + "\n" +  
               rsct  

Gebruik de volgende indeling om de tekenreeks-naar-tekenreeks te maken voor Table Storage-resources:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedIP + "\n" +  
               signedProtocol + "\n" +  
               signedVersion + "\n" +  
               startingPartitionKey + "\n"  
               startingRowKey + "\n"  
               endingPartitionKey + "\n"  
               endingRowKey  
  

Gebruik de volgende indeling om de tekenreeks-naar-tekenreeks te maken voor Queue Storage-resources:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedIP + "\n" +  
               signedProtocol + "\n" +  
               signedVersion  
  
Versie 2013-08-15 tot en met 21-02-2015

Gebruik de volgende indeling om de tekenreeks-naar-tekenreeks te maken voor Blob Storage- of Azure Files-resources met versie 2013-08-15 tot en met 21-02-2015. Voor Azure Files wordt SAS ondersteund vanaf versie 21-02-2015.

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedVersion + "\n" +  
               rscc + "\n" +  
               rscd + "\n" +  
               rsce + "\n" +  
               rscl + "\n" +  
               rsct  

Gebruik de volgende notatie om de tekenreeks-naar-teken voor een tabel samen te stellen:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedVersion + "\n" +  
               startPk + "\n" +  
               startRk + "\n" +  
               endPk + "\n" +  
               endRk  
  

Als u de tekenreeks voor een wachtrij wilt maken, gebruikt u de volgende indeling:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedVersion 
Versie 2012-02-12

Gebruik de volgende indeling om de tekenreeks-tot-teken voor Blob Storage-resources te maken voor versie 2012-02-12:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedVersion  
Versies ouder dan 2012-02-12

Gebruik de volgende indeling om de tekenreeks-naar-teken te maken voor Blob Storage-resources voor versies die ouder zijn dan 2012-02-12:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier  
  

Wanneer u de tekenreeks maakt die moet worden ondertekend, moet u rekening houden met het volgende:

  • Als een veld optioneel is en niet wordt opgegeven als onderdeel van de aanvraag, geeft u een lege tekenreeks op voor dat veld. Zorg ervoor dat u het nieuwe regelteken (\n) achter de lege tekenreeks opneemt.

  • Tekenreeks-tot-teken voor een tabel moet de extra parameters bevatten, zelfs als het lege tekenreeksen zijn.

  • Het signedpermission gedeelte van de tekenreeks moet de machtigingsaanduidingen bevatten in een vaste volgorde die specifiek is voor elk resourcetype. Elke combinatie van deze machtigingen is acceptabel, maar de volgorde van machtigingsbrieven moet overeenkomen met de volgorde in de volgende tabel.

    Resourcetype Volgorde van machtigingen
    Blob racwd
    Container racwdl
    Wachtrij raup
    File rcwd
    Delen rcwdl
    Tabel raud

    Voorbeelden van geldige machtigingsinstellingen voor een container zijn rw, rd, rl, wd, wlen rl. Voorbeelden van ongeldige instellingen zijn , wrdr, lren dw. Het is niet toegestaan om meerdere keren een machtigingsaanduiding op te geven.

  • Geef een waarde op voor het signedIdentifier gedeelte van de tekenreeks als u de aanvraag aan een opgeslagen toegangsbeleid wilt koppelen.

  • Een Shared Access Signature waarmee een versie van de opslagservice wordt opgegeven die ouder is dan 2012-02-12, kan alleen een blob of container delen en moet en het nieuwe regelteken ervoor weglaten signedVersion .

  • Het canonicalizedResource gedeelte van de tekenreeks is een canoniek pad naar de ondertekende resource. Deze moet de servicenaam (Blob Storage, Table Storage, Queue Storage of Azure Files) voor versie 2015-02-21 of hoger bevatten, de naam van het opslagaccount en de resourcenaam, en moet URL-decoderen. Namen van blobs moeten de container van de blob bevatten. Tabelnamen moeten uit kleine letters bestaan.

De canonieke resourcetekenreeks voor een container, wachtrij, tabel of bestandsshare moet de afsluitende slash (/) weglaten voor een SAS die toegang biedt tot dat object.

In de volgende voorbeelden ziet u hoe u het canonicalizedResource gedeelte van de tekenreeks maakt, afhankelijk van het type resource.

Containers

Voor versie 21-02-21 en hoger:

URL = https://myaccount.blob.core.windows.net/music  
canonicalizedResource = "/blob/myaccount/music"  

Voor versies ouder dan 21-02-2015:

URL = https://myaccount.blob.core.windows.net/music
canonicalizedResource = "/myaccount/music"  

Blobs

Voor versie 21-02-21 en hoger:

URL = https://myaccount.blob.core.windows.net/music/intro.mp3  
canonicalizedResource = "/blob/myaccount/music/intro.mp3"  

Voor versies ouder dan 21-02-2015:

URL = https://myaccount.blob.core.windows.net/music/intro.mp3
canonicalizedResource = "/myaccount/music/intro.mp3"  

Bestandsshares

URL = https://myaccount.file.core.windows.net/music
canonicalizedResource = "/file/myaccount/music"  

Bestanden

URL = https://myaccount.file.core.windows.net/music/intro.mp3
canonicalizedResource = "/file/myaccount/music/intro.mp3"  

Wachtrijen

Voor versie 21-02-21 en hoger:

URL = https://myaccount.queue.core.windows.net/thumbnails  
canonicalizedResource = "/queue/myaccount/thumbnails"  

Voor versies ouder dan 21-02-2015:

URL = https://myaccount.queue.core.windows.net/thumbnails  
canonicalizedResource = "/myaccount/thumbnails"  

Tabellen

Als de ondertekende resource een tabel is, moet u ervoor zorgen dat de tabelnaam in kleine letters is in de canonieke indeling.

Voor versie 21-02-21 en hoger:

URL = https://myaccount.table.core.windows.net/Employees(PartitionKey='Jeff',RowKey='Price')  
canonicalizedResource = "/table/myaccount/employees"  

Voor versies ouder dan 21-02-2015:

URL = https://myaccount.table.core.windows.net/Employees(PartitionKey='Jeff',RowKey='Price')  
canonicalizedResource = "/myaccount/employees"  

Levensduur en intrekking van een shared access signature

Handtekeningen voor gedeelde toegang verlenen gebruikers toegangsrechten tot opslagaccountresources. Wanneer u van plan bent om een SAS te gebruiken, moet u nadenken over de levensduur van de SAS en of uw toepassing onder bepaalde omstandigheden mogelijk toegangsrechten moet intrekken.

Ad-hoc SAS versus opgeslagen toegangsbeleid

Een service-SAS kan een van de volgende twee vormen hebben:

  • Ad-hoc-SAS: wanneer u een ad-hoc-SAS maakt, worden de begintijd, verlooptijd en machtigingen voor de SAS allemaal opgegeven in de SAS-URI (of impliciet, als de begintijd wordt weggelaten). Elk type SAS kan een ad-hoc-SAS zijn.

    U kunt de levensduur van een ad-hoc-SAS beheren met behulp van het signedExpiry veld. Als u een client na de verlooptijd toegang tot de resource wilt blijven verlenen, moet u een nieuwe handtekening uitgeven. U wordt aangeraden de levensduur van een shared access signature kort te houden. Vóór versie 2012-02-12 kon een shared access signature die niet is gekoppeld aan een opgeslagen toegangsbeleid, geen actieve periode hebben die langer was dan één uur.

  • SAS met opgeslagen toegangsbeleid: een opgeslagen toegangsbeleid wordt gedefinieerd voor een resourcecontainer, die een blobcontainer, tabel, wachtrij of bestandsshare kan zijn. U kunt het opgeslagen toegangsbeleid gebruiken om beperkingen voor een of meer handtekeningen voor gedeelde toegang te beheren. Wanneer u een SAS koppelt aan een opgeslagen toegangsbeleid, neemt de SAS de beperkingen (dat wil gezegd, de begintijd, verlooptijd en machtigingen) over die zijn gedefinieerd voor het opgeslagen toegangsbeleid.

    Het opgeslagen toegangsbeleid wordt vertegenwoordigd door het signedIdentifier veld op de URI. Een opgeslagen toegangsbeleid biedt een extra mate van controle over een of meer handtekeningen voor gedeelde toegang, inclusief de mogelijkheid om de handtekening zo nodig in te trekken.

Een SAS intrekken

Omdat een SAS-URI een URL is, kan iedereen die de SAS verkrijgt deze gebruiken, ongeacht wie de SAS oorspronkelijk heeft gemaakt. Als een SAS openbaar wordt gepubliceerd, kan deze door iedereen ter wereld worden gebruikt. Een SAS verleent toegang tot resources aan iedereen die deze heeft totdat een van de vier dingen gebeurt:

  • De verlooptijd die is opgegeven voor een ad-hoc-SAS is bereikt.

  • De verlooptijd die is opgegeven in het opgeslagen toegangsbeleid waarnaar wordt verwezen door de SAS, wordt bereikt als naar een opgeslagen toegangsbeleid wordt verwezen en het toegangsbeleid een verlooptijd opgeeft.

    De verlooptijd kan worden bereikt omdat het interval is verstreken of omdat u het opgeslagen toegangsbeleid hebt gewijzigd om een verlooptijd in het verleden te hebben. Dit is een manier om de SAS in te trekken.

  • Het opgeslagen toegangsbeleid waarnaar wordt verwezen door de SAS, wordt verwijderd, waardoor de SAS wordt ingetrokken. Als Azure Storage het opgeslagen toegangsbeleid dat is opgegeven in de shared access signature niet kan vinden, heeft de client geen toegang tot de resource die wordt aangegeven door de URI.

    Als u het opgeslagen toegangsbeleid opnieuw maakt met precies dezelfde naam als het verwijderde beleid, zijn alle bestaande SAS-tokens opnieuw geldig, volgens de machtigingen die zijn gekoppeld aan dat opgeslagen toegangsbeleid. Hierbij wordt ervan uitgegaan dat de verlooptijd op de SAS niet is verstreken. Als u van plan bent de SAS in te trekken, moet u een andere naam gebruiken wanneer u het toegangsbeleid opnieuw maakt met een verlooptijd in de toekomst.

  • De accountsleutel die is gebruikt om de SAS te maken, wordt opnieuw gegenereerd. Het opnieuw genereren van een accountsleutel zorgt ervoor dat alle toepassingsonderdelen die deze sleutel gebruiken, niet worden geautoriseerd totdat ze zijn bijgewerkt om de andere geldige accountsleutel of de zojuist opnieuw gegenereerde accountsleutel te gebruiken. Het opnieuw genereren van de accountsleutel is de enige manier om een ad-hoc-SAS onmiddellijk in te trekken.

Belangrijk

Een Shared Access Signature-URI is gekoppeld aan de accountsleutel die wordt gebruikt voor het maken van de handtekening en het bijbehorende opgeslagen toegangsbeleid, indien van toepassing. Als er geen opgeslagen toegangsbeleid is opgegeven, kunt u een handtekening voor gedeelde toegang alleen intrekken door de accountsleutel te wijzigen.

Als best practice raden we u aan een opgeslagen toegangsbeleid te gebruiken met een service-SAS. Als u ervoor kiest geen opgeslagen toegangsbeleid te gebruiken, moet u ervoor zorgen dat u de periode waarin de ad-hoc-SAS geldig is, kort houdt. Zie Een opgeslagen toegangsbeleid definiëren voor meer informatie over het koppelen van een service-SAS aan een opgeslagen toegangsbeleid.

Voorbeeld van service-SAS

In het volgende voorbeeld ziet u een blob-URI waaraan een service-SAS-token is toegevoegd. Het SERVICE-SAS-token biedt lees- en schrijfmachtigingen voor de blob.

https://myaccount.blob.core.windows.net/sascontainer/blob1.txt?sp=rw&st=2023-05-24T01:13:55Z&se=2023-05-24T09:13:55Z&sip=168.1.5.60-168.1.5.70&spr=https&sv=2022-11-02&sr=b&sig=<signature>

Elk deel van de URI wordt beschreven in de volgende tabel:

Name SAS-gedeelte Description
Resource-URI https://myaccount.blob.core.windows.net/sascontainer/blob1.txt Het adres van de blob. U wordt ten zeerste aangeraden HTTPS te gebruiken.
Scheidingsteken ? Het scheidingsteken dat voorafgaat aan de querytekenreeks. Het scheidingsteken maakt geen deel uit van het SAS-token.
Machtigingen sp=rw De machtigingen die door de SAS worden verleend, zijn Lezen (r) en Schrijven (w).
Begintijd st=2023-05-24T01:13:55Z Opgegeven in UTC-tijd. Als u wilt dat de SAS onmiddellijk geldig is, laat u de begintijd weg.
Verlooptijd se=2023-05-24T09:13:55Z Opgegeven in UTC-tijd.
IP-bereik sip=168.1.5.60-168.1.5.70 Het bereik van IP-adressen van waaruit een aanvraag wordt geaccepteerd.
Protocol spr=https Alleen aanvragen die https gebruiken, zijn toegestaan.
Azure Storage-versie sv=2023-05-24 Voor Azure Storage-versie 2012-02-12 en hoger geeft deze parameter de versie aan die moet worden gebruikt.
Resource sr=b De resource is een blob.
Handtekening sig=<signature> Wordt gebruikt om toegang tot de blob te autoriseren. De handtekening is een HMAC die wordt berekend via een tekenreeks om te ondertekenen en sleutel met behulp van het SHA256-algoritme en vervolgens wordt gecodeerd met behulp van Base64-codering.

Zie ook