Een service-SAS maken
Belangrijk
Voor optimale beveiliging raadt Microsoft aan om waar mogelijk Microsoft Entra ID met beheerde identiteiten te gebruiken om aanvragen voor blob-, wachtrij- en tabelgegevens te autoriseren. Autorisatie met Microsoft Entra ID en beheerde identiteiten biedt superieure beveiliging en gebruiksgemak ten opzichte van autorisatie met gedeelde sleutels. Zie Autoriseren met Microsoft Entra ID voor meer informatie. Zie Wat zijn beheerde identiteiten voor Azure-resources voor meer informatie over beheerde identiteiten.
Voor resources die buiten Azure worden gehost, zoals on-premises toepassingen, kunt u beheerde identiteiten gebruiken via Azure Arc. Apps die worden uitgevoerd op servers met Azure Arc kunnen bijvoorbeeld beheerde identiteiten gebruiken om verbinding te maken met Azure-services. Zie Verifiëren op basis van Azure-resources met servers met Azure Arc voor meer informatie.
Voor scenario's waarin Sas (Shared Access Signatures) wordt gebruikt, raadt Microsoft aan een SAS voor gebruikersdelegering te gebruiken. Een SAS voor gebruikersdelegatie wordt beveiligd met Microsoft Entra referenties in plaats van de accountsleutel. Zie een SAS voor gebruikersdelegering Creatie voor meer informatie over handtekeningen voor gedeelde toegang.
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.
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 weergegeven 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-naar-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. |
signedPermissions
1 |
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. |
startPk
2startRk
2 |
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. |
endPk
2endRk
2 |
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 startPk
velden , startRk
, endPk
en 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 , rw
rd
, rl
, wd
, wl
en rl
. Voorbeelden van ongeldige instellingen zijn , wr
dr
, lr
en 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 Creatie een account-SAS Creatie 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 | Creatie of schrijf inhoud, eigenschappen, metagegevens of blokkeringslijsten. 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 | Creatie een nieuw bestand of kopieer een bestand naar een nieuw bestand. |
Schrijven | w | Creatie of schrijf inhoud, eigenschappen en metagegevens. 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 | Creatie 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 eigenschappen of metagegevens van een share 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 Update, 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 query's uitvoeren op entiteiten. |
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 waaruit de aanvraag afkomstig is, niet overeenkomt met het IP-adres of adresbereik dat is opgegeven in het SAS-token, wordt 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 sip=168.1.5.65
bijvoorbeeld of sip=168.1.5.60-168.1.5.70
opgeeft in de SAS, wordt de aanvraag beperkt tot die 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 is gedaan met de SAS. 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
Met de startPk
velden , startRk
, endPk
en endRk
wordt een reeks tabelentiteiten gedefinieerd die zijn gekoppeld aan een shared access signature. 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 aan endPk
, 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 endRk
aan , 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 diepte van de map opgeven
Wanneer een hiërarchische naamruimte is ingeschakeld en het signedResource
veld een map (sr=d
) opgeeft, 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 met 1 toegevoegd aan de diepte. 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 in de URI opgeeft, 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, waaronder de mogelijkheid om de handtekening indien 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 in 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 Shared Access Signature. Wanneer u een ondertekende id opgeeft in 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 versleuteling aan de serverzijde afgedwongen met het opgegeven versleutelingsbereik wanneer u blobs (PUT) uploadt met het SAS-token. 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 de foutcode 403 (Verboden).
Als u het standaardversleutelingsbereik voor de container of het bestandssysteem instelt, respecteert de ses
queryparameter het containerversleutelingsbeleid. Als de queryparameter en x-ms-default-encryption-scope
de ses
header niet overeenkomen 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 de foutcode 400 (Ongeldige aanvraag) als er een onjuiste overeenkomst 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 shared key-autorisatieschema 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-teken is een unieke tekenreeks die is samengesteld uit de velden en die moet worden geverifieerd om de aanvraag te autoriseren. De handtekening is een hash-gebaseerde berichtverificatiecode (HMAC) die u berekent op basis van de tekenreeks om te ondertekenen en sleutel met behulp van het SHA256-algoritme en vervolgens codeert met 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 bereikveld voor ondertekende versleuteling. Gebruik de volgende indeling om de tekenreeks voor Blob Storage-resources samen te stellen:
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 voor Blob Storage-resources samen te stellen:
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 voor Blob Storage- of Azure Files-resources samen te stellen:
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 voor Table Storage-resources samen te stellen:
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 voor Queue Storage-resources samen te stellen:
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 voor Blob Storage- of Azure Files-resources samen te stellen 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 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
Gebruik de volgende indeling om de tekenreeks voor een wachtrij samen te stellen:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier + "\n" +
signedVersion
Versie 2012-02-12
Gebruik de volgende indeling om de tekenreeks 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 voor Blob Storage-resources samen te stellen 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-naar-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
,wl
enrl
. Voorbeelden van ongeldige instellingen zijn ,wr
dr
,lr
endw
. 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 handtekening voor gedeelde toegang die een versie van de opslagservice aangeeft 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 21-02-2015 of hoger, de naam van het opslagaccount en de resourcenaam bevatten, en moet url-gedecodeerd zijn. Namen van blobs moeten de container van de blob bevatten. Tabelnamen moeten kleine letters zijn.
De canonicaliseerde 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 kleine letters bevat in de gecanoniseerde 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 handtekening voor gedeelde toegang
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 wilt blijven verlenen tot de resource, moet u een nieuwe handtekening uitgeven. U wordt aangeraden de levensduur van een handtekening voor gedeelde toegang 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: er wordt een opgeslagen toegangsbeleid 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 (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, waaronder de mogelijkheid om de handtekening indien 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 er eigenaar van is 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 in het verleden hebt gewijzigd om een verlooptijd 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 exact dezelfde naam als het verwijderde beleid, zijn alle bestaande SAS-tokens opnieuw geldig, afhankelijk van 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 die sleutel gebruiken, niet worden geautoriseerd totdat ze worden bijgewerkt voor gebruik van de andere geldige accountsleutel of de zojuist opnieuw gegenereerde accountsleutel. 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 om de handtekening te maken 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 met een service-SAS te gebruiken. Als u ervoor kiest om geen opgeslagen toegangsbeleid te gebruiken, moet u ervoor zorgen dat de periode waarin de ad-hoc-SAS geldig is, kort is. 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 onderdeel 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. We raden u ten zeerste aan 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 op basis van een tekenreeks en sleutel met behulp van het SHA256-algoritme en vervolgens wordt gecodeerd met base64-codering. |