Skapa en tjänst-SAS

Viktigt

För optimal säkerhet rekommenderar Microsoft att du använder Microsoft Entra ID med hanterade identiteter för att auktorisera begäranden mot blob-, kö- och tabelldata när det är möjligt. Auktorisering med Microsoft Entra ID och hanterade identiteter ger överlägsen säkerhet och enkel användning över auktorisering av delad nyckel. Mer information finns i Auktorisera med Microsoft Entra ID. Mer information om hanterade identiteter finns i Vad är hanterade identiteter för Azure-resurser?

För resurser som finns utanför Azure, till exempel lokala program, kan du använda hanterade identiteter via Azure Arc. Appar som körs på Azure Arc-aktiverade servrar kan till exempel använda hanterade identiteter för att ansluta till Azure-tjänster. Mer information finns i Autentisera mot Azure-resurser med Azure Arc-aktiverade servrar.

För scenarier där signaturer för delad åtkomst (SAS) används rekommenderar Microsoft att du använder en SAS för användardelegering. En SAS för användardelegering skyddas med Microsoft Entra autentiseringsuppgifter i stället för kontonyckeln. Mer information om signaturer för delad åtkomst finns i Skapa en SAS för användardelegering.

En signatur för delad åtkomst (SAS) för tjänsten delegerar åtkomst till en resurs i bara en av lagringstjänsterna: Azure Blob Storage, Azure Queue Storage, Azure Table Storage eller Azure Files. URI:n för en SAS på servicenivå består av URI:n till resursen som SAS delegerar åtkomst för, följt av SAS-token.

SAS-token är frågesträngen som innehåller all information som krävs för att auktorisera en begäran. Token anger den resurs som en klient kan komma åt, de behörigheter som beviljas och den tidsperiod under vilken signaturen är giltig.

En SAS kan också ange ip-adressen eller adressintervallet som stöds från vilket begäranden kan komma, vilket protokoll som stöds som en begäran kan göras med eller en valfri åtkomstprincipidentifierare som är associerad med begäran.

Slutligen innehåller varje SAS-token en signatur.

Varning

Signaturer för delad åtkomst är nycklar som ger behörighet till lagringsresurser, och du bör skydda dem på samma sätt som du skyddar en kontonyckel. Det är viktigt att skydda en SAS från skadlig eller oavsiktlig användning. Använd diskretion när du distribuerar en SAS och ha en plan för att återkalla en komprometterad SAS. Åtgärder som använder signaturer för delad åtkomst bör endast utföras via en HTTPS-anslutning och SAS-URI:er ska endast distribueras på en säker anslutning, till exempel HTTPS.

Auktorisera en tjänst-SAS

Du skyddar ett konto-SAS med hjälp av en lagringskontonyckel. När du skapar ett konto-SAS måste klientprogrammet ha kontonyckeln.

Om du vill använda Microsoft Entra autentiseringsuppgifter för att skydda en SAS för en container eller blob skapar du en SAS för användardelegering.

Tjänst-SAS-stöd för katalogomfattande åtkomst

En tjänst-SAS stöder katalogomfång (sr=d) när auktoriseringsversionen (sv) är 2020-02-10 eller senare och ett hierarkiskt namnområde är aktiverat. Semantiken för katalogomfånget (sr=d) liknar dem för containeromfång (sr=c), förutom att åtkomsten är begränsad till en katalog och alla filer och underkataloger i den. När sr=d anges krävs även frågeparametern sdd .

Sträng-till-tecken-formatet för auktoriseringsversion 2020-02-10 är oförändrat.

Skapa en tjänst-SAS

Följande bild representerar delar av signatur-URI:n för delad åtkomst. De nödvändiga delarna visas i orange. Fälten som utgör SAS-token beskrivs i efterföljande avsnitt.

Diagram över parameterelementen i en url för signatur för delad åtkomst.

I följande avsnitt beskrivs hur du anger de parametrar som utgör tjänstens SAS-token.

Ange fältet signedVersion

Fältet signedVersion (sv) innehåller tjänstversionen av signaturen för delad åtkomst. Det här värdet anger den version av auktoriseringen för delad nyckel som används av signaturen för delad åtkomst (i fältet signature ). Värdet anger även tjänstversionen för begäranden som görs med signaturen för delad åtkomst.

Information om vilken version som används när du kör begäranden via en signatur för delad åtkomst finns i Versionshantering för Azure Storage-tjänster.

Information om hur den här parametern påverkar auktoriseringen av begäranden som görs med en signatur för delad åtkomst finns i Delegera åtkomst med en signatur för delad åtkomst.

Fältnamn Frågeparameter Beskrivning
signedVersion sv Krävs. Stöds i version 2012-02-12 och senare. Den lagringstjänstversion som ska användas för att auktorisera och hantera begäranden som du gör med signaturen för delad åtkomst. Mer information finns i Versionshantering för Azure Storage-tjänster.

Fastställa versionen av en äldre SAS-begäran

I äldre scenarier där signedVersion inte används tillämpar Blob Storage regler för att fastställa versionen. Mer information om dessa regler finns i Versionshantering för Azure Storage-tjänster.

Viktigt

Klientprogramvaran kan uppleva oväntat protokollbeteende när du använder en signatur-URI för delad åtkomst som använder en lagringstjänstversion som är nyare än klientprogramvaran. Kod som skapar signatur-URI:er för delad åtkomst bör förlita sig på versioner som förstås av klientprogramvaran som gör lagringstjänstbegäranden.

Ange den signerade resursen (endast Blob Storage)

Det obligatoriska signedResource fältet (sr) anger vilka resurser som är tillgängliga via signaturen för delad åtkomst. I följande tabell beskrivs hur du refererar till en blob- eller containerresurs i SAS-token.

Resurs Parametervärde Versioner som stöds Description
Blob b Alla Ger åtkomst till blobens innehåll och metadata.
Blob-version Bv 2018-11-09 och senare Ger åtkomst till innehållet och metadata i blobversionen, men inte till basbloben.
Ögonblicksbild av blob Bs 2018-11-09 och senare Ger åtkomst till innehållet och metadata för blobögonblicksbilden, men inte basbloben.
Container c Alla Ger åtkomst till innehållet och metadata för alla blobar i containern och till listan över blobar i containern.
Katalog d 2020-02-10 och senare Ger åtkomst till innehållet och metadata för alla blobar i katalogen och till listan över blobar i katalogen, i ett lagringskonto med ett hierarkiskt namnområde aktiverat. Om en katalog anges för fältet signedResource krävs även parametern signedDirectoryDepth (sdd). En katalog är alltid kapslad i en container.

Ange den signerade resursen (Azure Files)

SAS stöds för Azure Files version 2015-02-21 och senare.

Fältet signedResource anger vilka resurser som är tillgängliga via signaturen för delad åtkomst. I följande tabell beskrivs hur du refererar till en fil eller resurs på URI:n.

Fältnamn Frågeparameter Beskrivning
signedResource sr Krävs.

Ange f om den delade resursen är en fil. På så sätt får du åtkomst till filens innehåll och metadata.

Ange s om den delade resursen är en resurs. Detta ger åtkomst till innehållet och metadata för alla filer i resursen samt till listan över kataloger och filer i resursen.

Ange frågeparametrar för att åsidosätta svarshuvuden (endast Blob Storage och Azure Files)

Om du vill definiera värden för vissa svarshuvuden som ska returneras när signaturen för delad åtkomst används i en begäran, kan du ange svarshuvuden i frågeparametrar. Den här funktionen stöds från och med version 2013-08-15 för Blob Storage och version 2015-02-21 för Azure Files. Signaturer för delad åtkomst som använder den här funktionen måste innehålla parametern sv inställd 2013-08-15 på eller senare för Blob Storage, eller till 2015-02-21 eller senare för Azure Files.

Svarshuvudena och motsvarande frågeparametrar visas i följande tabell:

Namn på svarsrubrik Motsvarande SAS-frågeparameter
Cache-Control rscc
Content-Disposition rscd
Content-Encoding rsce
Content-Language rscl
Content-Type rsct

Om du till exempel anger rsct=binary frågeparametern för en signatur för delad åtkomst som har skapats med version 2013-08-15 eller senare anges Content-Type svarshuvudet till binary. Det här värdet åsidosätter Content-Type huvudvärdet som lagras för bloben för en begäran som endast använder signaturen för delad åtkomst.

Om du skapar en signatur för delad åtkomst som anger svarshuvuden som frågeparametrar måste du inkludera dem i sträng-till-signera som används för att konstruera signatursträngen. Mer information finns i avsnittet "Skapa signatursträngen" senare i den här artikeln. Fler exempel finns i Exempel på tjänst-SAS.

Ange tabellnamnet (endast Table Storage)

Fältet tableName anger namnet på den tabell som ska delas.

Fältnamn Frågeparameter Beskrivning
tableName tn Krävs. Namnet på den tabell som ska delas.

Ange åtkomstprincipen

Åtkomstprincipdelen av URI:n anger under vilken tidsperiod signaturen för delad åtkomst är giltig och de behörigheter som ska beviljas till användaren. De delar av URI:n som utgör åtkomstprincipen beskrivs i följande tabell:

Fältnamn Frågeparameter Beskrivning
signedStart st Valfritt. Den tid då signaturen för delad åtkomst blir giltig, uttryckt i något av de godkända ISO 8601 UTC-formaten. Om den här parametern utelämnas används den aktuella UTC-tiden som starttid.

I versioner som är tidigare än 2012-02-12 får varaktigheten mellan signedStart och signedExpiry inte överstiga en timme om inte en containerprincip används. Mer information om godkända UTC-format finns i Formatera datum-/tidsvärden.
signedExpiry se Krävs. Den tid då signaturen för delad åtkomst blir ogiltig, uttryckt i något av de godkända ISO 8601 UTC-formaten. Du måste utelämna det här fältet om det har angetts i en associerad lagrad åtkomstprincip. Mer information om godkända UTC-format finns i Formatera datum-/tidsvärden.
signedPermissions 1 sp Krävs. De behörigheter som är associerade med signaturen för delad åtkomst. Användaren är begränsad till åtgärder som tillåts av behörigheterna. Du måste utelämna det här fältet om det har angetts i en associerad lagrad åtkomstprincip.
startPk 2

startRk 2
spk

srk
Endast Table Storage.

Valfritt, men startPk måste följa med startRk. Minsta partitions- och radnycklar som är tillgängliga med den här signaturen för delad åtkomst. Viktiga värden är inkluderande. Om de utelämnas finns det ingen nedre gräns för de tabellentiteter som kan nås.
endPk 2

endRk 2
epk

erk
Endast Table Storage.

Valfritt, men endPk måste följa med endRk. Maximalt antal partitions- och radnycklar som är tillgängliga med den här signaturen för delad åtkomst. Viktiga värden är inkluderande. Om de utelämnas finns det ingen övre gräns för de tabellentiteter som kan nås.

1 Fältet signedPermissions krävs på URI:n såvida det inte anges som en del av en lagrad åtkomstprincip.
2 Fälten startPk, startRk, endPkoch endRk kan endast anges för Table Storage-resurser.

Ange behörigheter

De behörigheter som anges för signedPermissions fältet (sp) på SAS-token anger vilka åtgärder en klient kan utföra på resursen.

Du kan kombinera behörigheter för att tillåta att en klient utför flera åtgärder med samma SAS. När du skapar SAS måste du inkludera behörigheter i följande ordning:

racwdxltmeop

Exempel på giltiga behörighetsinställningar för en container är rw, rd, rl, wd, wl, och rl. Exempel på ogiltiga inställningar är wr, dr, lroch dw. Du kan inte ange en behörighetsbeteckning mer än en gång.

En tjänst-SAS kan inte bevilja åtkomst till vissa åtgärder:

  • Containrar, köer och tabeller kan inte skapas, tas bort eller visas.
  • Containermetadata och egenskaper kan inte läsas eller skrivas.
  • Köer kan inte rensas och deras metadata kan inte skrivas.
  • Containrar kan inte hyras.

Om du vill skapa en SAS som ger åtkomst till dessa åtgärder använder du ett konto-SAS. Mer information finns i Skapa ett konto-SAS.

Viktigt

Signaturer för delad åtkomst är nycklar som ger behörighet till lagringsresurser och du bör skydda dem på samma sätt som du skyddar en kontonyckel. Utför åtgärder som endast använder signaturer för delad åtkomst via en HTTPS-anslutning och distribuerar signatur-URI:er för delad åtkomst endast på en säker anslutning, till exempel HTTPS.

De behörigheter som stöds för varje resurstyp beskrivs i följande avsnitt.

Behörigheter för en katalog, container eller blob

De behörigheter som stöds för varje resurstyp beskrivs i följande tabell:

Behörighet URI-symbol Resurs Versionsstöd Tillåtna åtgärder
Läsa r Container
Katalog
Blob
Alla Läs innehållet, blockeringslistan, egenskaperna och metadata för alla blobar i containern eller katalogen. Använd en blob som källa för en kopieringsåtgärd.
Lägg till a Container
Katalog
Blob
Alla Lägg till ett block i en tilläggsblob.
Skapa c Container
Katalog
Blob
Alla Skriv en ny blob, ögonblicksbild av en blob eller kopiera en blob till en ny blob.
Skriva w Container
Katalog
Blob
Alla Skapa eller skriva innehåll, egenskaper, metadata eller blocklista. Ögonblicksbild eller lånar bloben. Ändra storlek på bloben (endast sidblob). Använd blobben som mål för en kopieringsåtgärd.
Ta bort d Container
Katalog
Blob
Alla Ta bort en blob. För version 2017-07-29 och senare tillåter borttagningsbehörigheten även att ett lån för en blob bryts. Mer information finns i åtgärden Låna blob .
Ta bort version x Container
Blob
2019-12-12 och senare Ta bort en blobversion.
Permanent borttagning y Blob 2020-02-10 och senare Ta bort en ögonblicksbild eller version av bloben permanent.
Lista l Container
Katalog
Alla Visa en lista över blobar som inte rekursivt.
Taggar t Blob 2019-12-12 och senare Läsa eller skriva taggarna på en blob.
Hitta f Container 2019-12-12 och senare Hitta blobar med indextaggar.
Flytta m Container
Katalog
Blob
2020-02-10 och senare Flytta en blob eller en katalog och dess innehåll till en ny plats. Den här åtgärden kan också begränsas till ägaren av den underordnade bloben, katalogen eller den överordnade katalogen om parametern saoid ingår i SAS-token och fästbiten anges i den överordnade katalogen.
Genomförande e Container
Katalog
Blob
2020-02-10 och senare Hämta systemegenskaperna och hämta POSIX-ACL för en blob om det hierarkiska namnområdet är aktiverat för lagringskontot. Om det hierarkiska namnområdet är aktiverat och anroparen är ägare till en blob, ger den här behörigheten möjlighet att ange ägande grupp, POSIX-behörigheter och POSIX-ACL för bloben. tillåter inte anroparen att läsa användardefinierade metadata.
Ägarskap o Container
Katalog
Blob
2020-02-10 och senare När det hierarkiska namnområdet är aktiverat gör den här behörigheten det möjligt för anroparen att ange ägare eller ägande grupp, eller att fungera som ägare när du byter namn på eller tar bort en katalog eller blob i en katalog som har fästbitsuppsättningen.
Behörigheter P Container
Katalog
Blob
2020-02-10 och senare När det hierarkiska namnområdet är aktiverat tillåter den här behörigheten anroparen att ange behörigheter och POSIX-ACL:er för kataloger och blobar.
Ange oföränderlighetsprincip i Container
Blob
2020-06-12 och senare Ange eller ta bort oföränderlighetsprincipen eller det juridiska undantaget för en blob.

Behörigheter för en fil

Behörighet URI-symbol Tillåtna åtgärder
Läsa r Läs innehållet, egenskaperna, metadata. Använd filen som källa för en kopieringsåtgärd.
Skapa c Skapa en ny fil eller kopiera en fil till en ny fil.
Skriva w Skapa eller skriva innehåll, egenskaper, metadata. Ändra storlek på filen. Använd filen som mål för en kopieringsåtgärd.
Ta bort d Ta bort filen.

Behörigheter för en resurs

Behörighet URI-symbol Tillåtna åtgärder
Läsa r Läs innehållet, egenskaperna eller metadata för en fil i resursen. Använd valfri fil i resursen som källa för en kopieringsåtgärd.
Skapa c Skapa en ny fil i resursen eller kopiera en fil till en ny fil i resursen.
Skriva w För alla filer i resursen skapar eller skriver du innehåll, egenskaper eller metadata. Ändra storlek på filen. Använd filen som mål för en kopieringsåtgärd. Obs! Du kan inte bevilja behörighet att läsa eller skriva resursegenskaper eller metadata med hjälp av en tjänst-SAS. Använd ett konto-SAS i stället.
Ta bort d Ta bort alla filer i resursen. Obs! Du kan inte bevilja behörighet att ta bort en resurs med hjälp av en sas för tjänsten. Använd ett konto-SAS i stället.
Lista l Visa en lista över filer och kataloger i resursen.

Behörigheter för en kö

Behörighet URI-symbol Tillåtna åtgärder
Läsa r Läs metadata och egenskaper, inklusive antal meddelanden. Peek på meddelanden.
Lägg till a Lägg till meddelanden i kön.
Uppdatera U Uppdatera meddelanden i kön. Obs! Använd processbehörigheten med Uppdatera så att du först kan få det meddelande som du vill uppdatera.
Process P Hämta och ta bort meddelanden från kön.

Behörigheter för en tabell

Behörighet URI-symbol Tillåtna åtgärder
Söka i data r Hämta entiteter och frågeentiteter.
Lägg till a Lägg till entiteter. Obs! Lägg till och Uppdatera behörigheter krävs för upsert-åtgärder.
Uppdatera U Uppdatera entiteter. Obs! Lägg till och Uppdatera behörigheter krävs för upsert-åtgärder.
Ta bort d Ta bort entiteter.

Ange en IP-adress eller ETT IP-intervall

Från och med version 2015-04-05 anger det valfria signedIp fältet (sip) en offentlig IP-adress eller ett intervall med offentliga IP-adresser som begäranden ska accepteras från. Om DEN IP-adress som begäran kommer från inte matchar IP-adressen eller adressintervallet som anges på SAS-token, är begäran inte auktoriserad. Endast IPv4-adresser stöds.

Observera att intervallet är inkluderande när du anger ett intervall med IP-adresser. Om du till exempel anger sip=168.1.5.65 eller sip=168.1.5.60-168.1.5.70 använder SAS begränsas begäran till dessa IP-adresser.

I följande tabell beskrivs om fältet ska inkluderas signedIp på en SAS-token för ett angivet scenario, baserat på klientmiljön och lagringskontots plats.

Klientmiljö Lagringskontoplats Rekommendation
Klient som körs i Azure I samma region som klienten En SAS som tillhandahålls till klienten i det här scenariot bör inte innehålla en utgående IP-adress för fältet signedIp . Begäranden som görs från samma region som använder en SAS med en angiven utgående IP-adress misslyckas.

Använd i stället ett virtuellt Azure-nätverk för att hantera nätverkssäkerhetsbegränsningar. Begäranden till Azure Storage från samma region sker alltid via en privat IP-adress. Mer information finns i Konfigurera Azure Storage-brandväggar och virtuella nätverk.
Klient som körs i Azure I en annan region än klienten En SAS som tillhandahålls till klienten i det här scenariot kan innehålla en offentlig IP-adress eller adressintervall för fältet signedIp . En begäran som görs med SAS måste komma från den angivna IP-adressen eller adressintervallet.
Klienten körs lokalt eller i en annan molnmiljö I alla Azure-regioner En SAS som tillhandahålls till klienten i det här scenariot kan innehålla en offentlig IP-adress eller adressintervall för fältet signedIp . En begäran som görs med SAS måste komma från den angivna IP-adressen eller adressintervallet.

Om begäran skickas via en proxy eller gateway anger du den offentliga utgående IP-adressen för den proxyn eller gatewayen signedIp för fältet.

Ange HTTP-protokollet

Från och med version 2015-04-05 anger det valfria signedProtocol fältet (spr) det protokoll som tillåts för en begäran som görs med SAS. Möjliga värden är både HTTPS och HTTP (https,http) eller endast HTTPS (https). Standardvärdet är https,http. Observera att ENDAST HTTP inte är ett tillåtet värde.

Ange åtkomstintervall för tabeller

Fälten startPk, startRk, endPkoch endRk definierar ett intervall med tabellentiteter som är associerade med en signatur för delad åtkomst. Tabellfrågor returnerar endast resultat som ligger inom intervallet och försök att använda signaturen för delad åtkomst för att lägga till, uppdatera eller ta bort entiteter utanför det här intervallet misslyckas.

Om startPk är lika endPkmed tillåter signaturen för delad åtkomst åtkomst åtkomst till entiteter i endast en partition i tabellen.

Om startPk är lika med endPk och startRk lika endRkmed kan signaturen för delad åtkomst endast komma åt en entitet i en partition.

Information om hur dessa fält begränsar åtkomsten till entiteter i en tabell finns i följande tabell:

Fält som finns Begränsningens omfattning
startPk partitionKey >= startPk
endPk partitionKey <= endPk
startPk, startRk (partitionKey >startPk) || (partitionKey == startPk && rowKey >= startRk)
endPk, endRk (partitionKey <endPk) || (partitionKey == endPk && rowKey <= endRk)

Ange katalogdjupet

När ett hierarkiskt namnområde är aktiverat och signedResource fältet anger en katalog (sr=d) måste du också ange signedDirectoryDepth fältet (sdd) för att ange antalet underkataloger under rotkatalogen. Värdet för fältet sdd måste vara ett icke-negativt heltal.

Rotkatalogen https://{account}.blob.core.windows.net/{container}/ har till exempel ett djup på 0. Varje underkatalog i rotkatalogen ökar djupet med 1. Katalogen https://{account}.blob.core.windows.net/{container}/d1/d2 har ett djup på 2.

Det här fältet stöds med version 2020-02-10 eller senare.

Ange den signerade identifieraren

När du anger fältet signedIdentifier på URI:n relaterar du den angivna signaturen för delad åtkomst till en motsvarande lagrad åtkomstprincip. En lagrad åtkomstprincip ger ytterligare ett mått på kontroll över en eller flera signaturer för delad åtkomst, inklusive möjligheten att återkalla signaturen om det behövs. Varje container, kö, tabell eller resurs kan ha upp till fem lagrade åtkomstprinciper.

I följande tabell beskrivs hur du refererar till en signerad identifierare på URI:n:

Fältnamn Frågeparameter Beskrivning
signedIdentifier si Valfritt. Ett unikt värde på upp till 64 tecken som korrelerar med en åtkomstprincip som har angetts för containern, kön eller tabellen.

En lagrad åtkomstprincip innehåller en signerad identifierare, ett värde på upp till 64 tecken som är unikt i resursen. Du kan ange värdet för den här signerade identifieraren signedidentifier för fältet i URI:n för signaturen för delad åtkomst. När du anger en signerad identifierare för URI:n associerar du signaturen med den lagrade åtkomstprincipen. Information om hur du upprättar en åtkomstprincip på containernivå med hjälp av REST-API:et finns i Delegera åtkomst med en signatur för delad åtkomst.

Ange krypteringsomfånget

Genom att använda fältet signedEncryptionScope på URI:n kan du ange det krypteringsomfång som klientprogrammet kan använda. Den framtvingar kryptering på serversidan med angivet krypteringsomfång när du laddar upp blobar (PUT) med SAS-token. GET och HEAD kommer inte att begränsas och utföras som tidigare.

I följande tabell beskrivs hur du refererar till ett signerat krypteringsomfång på URI:n:

Fältnamn Frågeparameter Beskrivning
signedEncryptionScope ses Valfritt. Anger krypteringsomfånget som ska användas för att kryptera innehållet i begäran.

Det här fältet stöds med version 2020-12-06 eller senare. Om du lägger till ses före den version som stöds returnerar tjänsten felsvarskoden 403 (Förbjuden).

Om du anger standardkrypteringsomfånget för containern eller filsystemet ses respekterar frågeparametern containerkrypteringsprincipen. Om det finns ett matchningsfel mellan ses frågeparametern och x-ms-default-encryption-scope huvudet och x-ms-deny-encryption-scope-override huvudet är inställt truepå returnerar tjänsten felsvarskoden 403 (Förbjuden).

När du anger x-ms-encryption-scope huvudet och ses frågeparametern i PUT-begäran returnerar tjänsten felsvarskoden 400 (felaktig begäran) om det finns ett matchningsfel.

Ange signaturen

Du använder signaturdelen av URI:n för att auktorisera den begäran som görs med signaturen för delad åtkomst. Azure Storage använder ett auktoriseringsschema för delad nyckel för att auktorisera en tjänst-SAS.

I följande tabell beskrivs hur du anger signaturen för URI:n:

Fältnamn Frågeparameter Beskrivning
signature sig Sträng-till-tecken är en unik sträng som är konstruerad från fälten och som måste verifieras för att godkänna begäran. Signaturen är en hashbaserad kod för meddelandeautentisering (HMAC) som du beräknar över sträng-till-signering och -nyckel med hjälp av SHA256-algoritmen och sedan kodar med hjälp av Base64-kodning.

Skapa signatursträngen

Om du vill skapa signatursträngen för en signatur för delad åtkomst skapar du först sträng-till-sign från fälten som utgör begäran, kodar strängen som UTF-8 och beräknar sedan signaturen med hjälp av HMAC-SHA256-algoritmen. Fälten som ingår i sträng-till-signera måste vara URL-avkodade.

Version 2020-12-06 och senare

Version 2020-12-06 lägger till stöd för det signerade krypteringsomfångsfältet. Om du vill skapa sträng-till-signering för Blob Storage-resurser använder du följande format:

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" +  
Version 2018-11-09 och senare

Version 2018-11-09 lägger till stöd för de signerade resurs- och signerade tidsfälten för blobbögonblicksbilder. Dessa fält måste inkluderas i sträng-till-signera. Om du vill skapa sträng-till-signering för Blob Storage-resurser använder du följande format:

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  
Version 2015-04-05 och senare

Version 2015-04-05 lägger till stöd för fälten signerade IP-adresser och signerade protokoll. Dessa fält måste inkluderas i sträng-till-signera. Om du vill skapa sträng-till-signering för Blob Storage eller Azure Files resurser använder du följande format:

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  

Om du vill skapa sträng-till-signering för Table Storage-resurser använder du följande format:

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

Använd följande format för att skapa sträng-till-sign för Queue Storage-resurser:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedIP + "\n" +  
               signedProtocol + "\n" +  
               signedVersion  
  
Version 2013-08-15 till och med 2015-02-21

Om du vill skapa sträng-till-signering för Blob Storage eller Azure Files resurser med hjälp av version 2013-08-15 till 2015-02-21 använder du följande format. För Azure Files stöds SAS från och med version 2015-02-21.

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

Om du vill skapa sträng-till-tecken för en tabell använder du följande format:

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

Om du vill skapa sträng-till-signera för en kö använder du följande format:

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

Om du vill skapa sträng-till-signering för Blob Storage-resurser för version 2012-02-12 använder du följande format:

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

Om du vill skapa sträng-till-signering för Blob Storage-resurser för versioner som är tidigare än 2012-02-12 använder du följande format:

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

Tänk på följande när du skapar strängen som ska signeras:

  • Om ett fält är valfritt och inte tillhandahålls som en del av begäran anger du en tom sträng för fältet. Se till att inkludera det nya radtecknet (\n) efter den tomma strängen.

  • Sträng-till-tecken för en tabell måste innehålla ytterligare parametrar, även om de är tomma strängar.

  • Delen signedpermission av strängen måste innehålla behörighetsbeteckningarna i en fast ordning som är specifik för varje resurstyp. Alla kombinationer av dessa behörigheter är godkända, men ordningen på behörighetsbrev måste matcha ordningen i följande tabell.

    Resurstyp Behörighetsordning
    Blob racwd
    Container racwdl
    raup
    Fil rcwd
    Dela rcwdl
    Tabell raud

    Exempel på giltiga behörighetsinställningar för en container är rw, , rdrl, wd, wloch rl. Exempel på ogiltiga inställningar är wr, dr, lroch dw. Det är inte tillåtet att ange en behörighetsbeteckning mer än en gång.

  • Ange ett värde för delen signedIdentifier av strängen om du associerar begäran med en lagrad åtkomstprincip.

  • En signatur för delad åtkomst som anger en tidigare version av lagringstjänsten än 2012-02-12 kan bara dela en blob eller container, och den måste utelämna signedVersion och det nya radtecknet före den.

  • Delen canonicalizedResource av strängen är en kanonisk sökväg till den signerade resursen. Det måste innehålla tjänstnamnet (Blob Storage, Table Storage, Queue Storage eller Azure Files) för version 2015-02-21 eller senare, lagringskontots namn och resursnamnet, och det måste vara URL-avkodat. Namn på blobar måste innehålla blobens container. Tabellnamn måste ha gemener.

Den kanoniska resurssträngen för en container, kö, tabell eller filresurs måste utelämna det avslutande snedstrecket (/) för en SAS som ger åtkomst till objektet.

I följande exempel visas hur du konstruerar canonicalizedResource delen av strängen, beroende på typen av resurs.

Containrar

För version 2015-02-21 och senare:

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

För tidigare versioner än 2015-02-21:

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

Blobar

För version 2015-02-21 och senare:

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

För tidigare versioner än 2015-02-21:

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

Filresurser

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

Filer

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

Köer

För version 2015-02-21 och senare:

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

För tidigare versioner än 2015-02-21:

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

Tabeller

Om den signerade resursen är en tabell kontrollerar du att tabellnamnet har gemener i kanoniskt format.

För version 2015-02-21 och senare:

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

För tidigare versioner än 2015-02-21:

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

Livslängd och återkallande av en signatur för delad åtkomst

Signaturer för delad åtkomst ger användare åtkomstbehörighet till lagringskontoresurser. När du planerar att använda en SAS bör du tänka på livslängden för SAS och om ditt program kan behöva återkalla åtkomsträttigheter under vissa omständigheter.

Ad hoc SAS jämfört med lagrad åtkomstprincip

En tjänst-SAS kan ha ett av två former:

  • Ad hoc SAS: När du skapar en ad hoc SAS anges alla starttid, förfallotid och behörigheter för SAS i SAS-URI:n (eller underförstådd, om starttiden utelämnas). Alla typer av SAS kan vara en ad hoc-SAS.

    Du kan hantera livslängden för en ad hoc-SAS med hjälp av fältet signedExpiry . Om du vill fortsätta att bevilja en klient åtkomst till resursen efter förfallotiden måste du utfärda en ny signatur. Vi rekommenderar att du håller livslängden för en signatur för delad åtkomst kort. Före version 2012-02-12 kunde en signatur för delad åtkomst som inte är associerad med en lagrad åtkomstprincip inte ha en aktiv period som översteg en timme.

  • SAS med lagrad åtkomstprincip: En lagrad åtkomstprincip definieras på en resurscontainer, som kan vara en blobcontainer, tabell, kö eller filresurs. Du kan använda den lagrade åtkomstprincipen för att hantera begränsningar för en eller flera signaturer för delad åtkomst. När du associerar en SAS med en lagrad åtkomstprincip ärver SAS de begränsningar (dvs. starttid, förfallotid och behörigheter) som definieras för den lagrade åtkomstprincipen.

    Den lagrade åtkomstprincipen signedIdentifier representeras av fältet på URI:n. En lagrad åtkomstprincip ger ytterligare ett mått på kontroll över en eller flera signaturer för delad åtkomst, inklusive möjligheten att återkalla signaturen om det behövs.

Återkalla en SAS

Eftersom en SAS-URI är en URL kan alla som hämtar SAS använda den, oavsett vem som ursprungligen skapade den. Om en SAS publiceras offentligt kan den användas av vem som helst i världen. En SAS ger åtkomst till resurser till alla som har den tills någon av fyra saker händer:

  • Den förfallotid som anges i en ad hoc-SAS har uppnåtts.

  • Den förfallotid som anges i den lagrade åtkomstprincipen som refereras av SAS nås, om en lagrad åtkomstprincip refereras till och åtkomstprincipen anger en förfallotid.

    Förfallotiden kan nås antingen på grund av att intervallet förflutit eller för att du har ändrat den lagrade åtkomstprincipen så att den har en förfallotid tidigare, vilket är ett sätt att återkalla SAS.

  • Den lagrade åtkomstprincipen som refereras av SAS tas bort, vilket återkallar SAS. Om Azure Storage inte kan hitta den lagrade åtkomstprincipen som anges i signaturen för delad åtkomst kan klienten inte komma åt resursen som anges av URI:n.

    Om du återskapar den lagrade åtkomstprincipen med exakt samma namn som den borttagna principen kommer alla befintliga SAS-token återigen att vara giltiga, enligt de behörigheter som är associerade med den lagrade åtkomstprincipen. Detta förutsätter att förfallotiden för SAS inte har passerat. Om du tänker återkalla SAS ska du använda ett annat namn när du återskapar åtkomstprincipen med en förfallotid i framtiden.

  • Kontonyckeln som användes för att skapa SAS återskapas. Om du återskapar en kontonyckel kommer alla programkomponenter som använder den nyckeln inte att auktoriseras förrän de har uppdaterats för att använda antingen den andra giltiga kontonyckeln eller den nyligen återskapade kontonyckeln. Att återskapa kontonyckeln är det enda sättet att omedelbart återkalla en ad hoc-SAS.

Viktigt

En signatur-URI för delad åtkomst är associerad med den kontonyckel som används för att skapa signaturen och den associerade lagrade åtkomstprincipen, om tillämpligt. Om ingen lagrad åtkomstprincip anges är det enda sättet att återkalla en signatur för delad åtkomst att ändra kontonyckeln.

Vi rekommenderar att du använder en lagrad åtkomstprincip med en tjänst-SAS. Om du väljer att inte använda en lagrad åtkomstprincip måste du hålla den period under vilken ad hoc-SAS är giltig kort. Mer information om hur du associerar en tjänst-SAS med en lagrad åtkomstprincip finns i Definiera en lagrad åtkomstprincip.

Exempel på tjänst-SAS

I följande exempel visas en blob-URI med en SAS-token för tjänsten tillagd. Tjänstens SAS-token ger läs- och skrivbehörighet till bloben.

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>

Varje del av URI:n beskrivs i följande tabell:

Name SAS-del Description
Resurs-URI https://myaccount.blob.core.windows.net/sascontainer/blob1.txt Blobens adress. Vi rekommenderar starkt att du använder HTTPS.
Avgränsare ? Avgränsaren som föregår frågesträngen. Avgränsare är inte en del av SAS-token.
Behörigheter sp=rw Behörigheterna som beviljas av SAS inkluderar Läsa (r) och Skriva (w).
Starttid st=2023-05-24T01:13:55Z Anges i UTC-tid. Om du vill att SAS ska vara giltig omedelbart utelämnar du starttiden.
Förfallotid se=2023-05-24T09:13:55Z Anges i UTC-tid.
IP-intervall sip=168.1.5.60-168.1.5.70 Det intervall med IP-adresser som en begäran kommer att accepteras från.
Protokoll spr=https Endast begäranden som använder HTTPS tillåts.
Azure Storage-version sv=2023-05-24 För Azure Storage version 2012-02-12 och senare anger den här parametern vilken version som ska användas.
Resurs sr=b Resursen är en blob.
Signatur sig=<signature> Används för att auktorisera åtkomst till bloben. Signaturen är en HMAC som beräknas över en sträng-till-signering och nyckel med hjälp av SHA256-algoritmen och sedan kodas med hjälp av Base64-kodning.

Se även