Skapa en SAS för användardelegering
Viktig
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 via 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.
Du kan skydda en SAS-token (signatur för delad åtkomst) för åtkomst till en container, katalog eller blob med hjälp av antingen Microsoft Entra-autentiseringsuppgifter eller en kontonyckel. En SAS som skyddas med Microsoft Entra-autentiseringsuppgifter kallas för en användardelegering SAS. Vi rekommenderar att du använder Microsoft Entra-autentiseringsuppgifter när det är möjligt, i stället för kontonyckeln, vilket är enklare att kompromettera. När din programdesign kräver signaturer för delad åtkomst använder du Microsoft Entra-autentiseringsuppgifter för att skapa en SAS för användardelegering för att säkerställa bättre säkerhet.
Varje SAS signeras med en nyckel. Om du vill skapa en SAS för användardelegering måste du först begära en användardelegeringsnyckel, som du sedan använder för att signera SAS. Användardelegeringsnyckeln motsvarar den kontonyckel som används för att signera en tjänst-SAS eller ett SAS-konto, förutom att den förlitar sig på dina Microsoft Entra-autentiseringsuppgifter. Om du vill begära användarens delegeringsnyckel anropar du åtgärden Hämta användardelegeringsnyckel. Du kan sedan använda användardelegeringsnyckeln för att skapa SAS.
En SAS för användardelegering stöds för Azure Blob Storage och Azure Data Lake Storage. Lagrade åtkomstprinciper stöds inte för sas för användardelegering.
Försiktighet
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 signatur-URI:er för delad åtkomst bör endast distribueras på en säker anslutning, till exempel HTTPS.
Information om hur du använder din kontonyckel för att skydda en SAS finns i Create a service SAS and Create an account SAS.
Sas-stöd för användardelegering för katalogomfattande åtkomst
En SAS för användardelegering stöder katalogomfång (sr=d
) när auktoriseringsversionen (sv
) är 2020-02-10 eller senare och ett hierarkiskt namnområde (HNS) är aktiverat. Semantiken för katalogomfånget (sr=d
) liknar containeromfånget (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 sdd
frågeparameter.
Sträng-till-tecken-formatet för auktoriseringsversion 2020-02-10 är oförändrat.
SAS-stöd för användardelegering för en användar-OID
SAS för användardelegering stöder en valfri användarobjektidentifierare (OID) som finns i parametern saoid
eller suoid
när auktoriseringsversionen (sv
) är 2020-02-10 eller senare. Parametrarna saoid
och suoid
motsvarar säkerhetsobjektet för slutanvändaren som använder SAS och tillhandahåller en förbättrad auktoriseringsmodell för klusterarbetsbelastningar med flera användare, till exempel Hadoop och Spark.
SAS-token kan begränsas till en specifik filsystemåtgärd och användare, vilket ger en mindre sårbar åtkomsttoken som är säkrare att distribuera över ett kluster med flera användare. Ett användningsfall för dessa funktioner är integreringen av Hadoop ABFS-drivrutinen med Apache Ranger.
Mer information om de valfria parametrarna saoid
och suoid
finns i Ange ett signerat användarobjekt-ID.
Auktorisera en SAS för användardelegering
När en klient får åtkomst till en Blob Storage-resurs med en SAS för användardelegering, auktoriseras begäran till Azure Storage med de Microsoft Entra-autentiseringsuppgifter som användes för att skapa SAS. Klientens åtkomst till resursen bestäms av följande behörigheter:
- Behörigheterna för rollbaserad åtkomstkontroll (RBAC) som beviljas till Microsoft Entra-säkerhetsobjektet som begärde användardelegeringsnyckeln.
- Behörigheterna för POSIX-åtkomstkontrollistan (ACL) som har beviljats till säkerhetsobjektet som begärde användarens delegeringsnyckel. Den här ytterligare kontrollen sker bara när RBAC-behörigheter inte kan bevilja åtkomst, och endast när hierarkiskt namnområde är aktiverat på lagringskontot.
- De behörigheter som uttryckligen beviljas för SAS-token.
Den här metoden ger ytterligare en säkerhetsnivå och hjälper dig att undvika att behöva lagra din kontoåtkomstnyckel med programkoden. Därför är det bästa sättet att skapa en SAS med hjälp av Microsoft Entra-autentiseringsuppgifter.
Behörigheterna som beviljas till en klient som har SAS är skärningspunkten mellan de behörigheter som beviljats till säkerhetsobjektet som begärde användarens delegeringsnyckel och de behörigheter som beviljats resursen på SAS-token med hjälp av fältet signedPermissions
(sp
). Om en behörighet som beviljas säkerhetsobjektet via RBAC- eller POSIX-ACL:er inte också beviljas på SAS-token beviljas inte den behörigheten till klienten som försöker använda SAS för att komma åt resursen. När du skapar en SAS för användardelegering kontrollerar du att de behörigheter som beviljas via RBAC- och POSIX-ACL:er och de behörigheter som beviljas via SAS-token båda överensstämmer med den åtkomstnivå som krävs av klienten.
Gör följande för att skapa en SAS för användardelegering:
- Använd RBAC- eller POSIX-ACL:er för att bevilja önskade behörigheter till säkerhetsobjektet som begär användarens delegeringsnyckel.
- Hämta en OAuth 2.0-token från Microsoft Entra-ID.
- Använd token för att begära användardelegeringsnyckeln genom att anropa åtgärden Hämta användardelegeringsnyckel.
- Använd användardelegeringsnyckeln för att konstruera SAS-token med lämpliga fält.
Tilldela behörigheter med RBAC
Säkerhetsobjektet som begär användardelegeringsnyckeln måste ha rätt behörighet för att göra det. Ett Säkerhetsobjekt för Microsoft Entra-ID kan vara en användare, en grupp, ett huvudnamn för tjänsten eller en hanterad identitet.
Om du vill begära användarens delegeringsnyckel måste du tilldela säkerhetsobjektet åtgärden Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Följande inbyggda RBAC-roller omfattar åtgärden Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey, antingen explicit eller som en del av en jokerteckendefinition:
- deltagare
- Storage-kontodeltagare
- Storage Blob Data Contributor
- Storage Blob Data Owner
- Storage Blob Data Reader
- Storage Blob Delegator
Eftersom åtgärden Get User Delegation Key fungerar på lagringskontots nivå måste åtgärden Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey begränsas på lagringskontots, resursgruppens eller prenumerationens nivå. Om säkerhetsobjektet har tilldelats någon av de tidigare angivna, inbyggda rollerna eller en anpassad roll som innehåller Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey åtgärd, på nivån för lagringskontot, resursgruppen eller prenumerationen, kan säkerhetsobjektet sedan begära användardelegeringsnyckeln.
Om säkerhetsobjektet tilldelas en roll som tillåter dataåtkomst men är begränsad till nivån för en container kan du dessutom tilldela Storage Blob Delegator roll till säkerhetsobjektet på nivån för lagringskontot, resursgruppen eller prenumerationen. Rollen Storage Blob Delegator ger säkerhetsobjektet behörighet att begära användarens delegeringsnyckel.
Mer information om RBAC-roller för Azure Storage finns i Auktorisera med Microsoft Entra.
Hämta en OAuth 2.0-token
Om du vill hämta användardelegeringsnyckeln begär du först en OAuth 2.0-token från Microsoft Entra-ID. Ange token med bearer-schemat för att auktorisera anropet till åtgärden Hämta användardelegeringsnyckel. Mer information om hur du begär en OAuth-token från Microsoft Entra-ID finns i autentiseringsflöden och programscenarier.
Begär användarens delegeringsnyckel
Ett anrop till åtgärden Hämta användardelegeringsnyckel returnerar nyckeln som en uppsättning värden som används som parametrar på SAS-token för användardelegering. Dessa parametrar beskrivs i referensen Hämta användardelegeringsnyckel och i nästa avsnittSkapa en SAS-för användardelegering .
När en klient begär en användardelegeringsnyckel med hjälp av en OAuth 2.0-token returnerar Azure Storage användarens delegeringsnyckel för säkerhetsobjektets räkning. DEN SAS som skapats med användardelegeringsnyckeln beviljas de behörigheter som beviljas säkerhetsobjektet.
När du har användardelegeringsnyckeln kan du använda den för att skapa valfritt antal signaturer för delad åtkomst för användardelegering under nyckelns livslängd. Användardelegeringsnyckeln är oberoende av OAuth 2.0-token som du använder för att hämta den, så token behöver inte förnyas så länge nyckeln fortfarande är giltig. Du kan ange att nyckeln är giltig i upp till sju dagar.
Skapa en SAS för användardelegering
I följande tabell sammanfattas de fält som stöds för en SAS-token för användardelegering. Efterföljande avsnitt innehåller ytterligare information om hur du anger dessa parametrar.
SAS-fältnamn | SAS-tokenparameter | Obligatoriskt eller valfritt | Versionsstöd | Beskrivning |
---|---|---|---|---|
signedVersion |
sv |
Krävs | 2018-11-09 och senare | Anger vilken version av tjänsten som används för att konstruera signaturfältet. Den anger också den tjänstversion som hanterar begäranden som görs med denna SAS. |
signedResource |
sr |
Krävs | Alla | Anger vilka blobresurser som är tillgängliga via signaturen för delad åtkomst. |
signedStart |
st |
Valfri | Alla | Valfri. Den tid då signaturen för delad åtkomst blir giltig, uttryckt i något av de godkända ISO 8601 UTC-formaten. Om det här värdet utelämnas används den aktuella UTC-tiden som starttid. Mer information om accepterade UTC-format finns i Formatera DateTime-värden. |
signedExpiry |
se |
Krävs | Alla | Den tid då signaturen för delad åtkomst blir ogiltig, uttryckt i något av de godkända ISO 8601 UTC-formaten. Mer information om accepterade UTC-format finns i Formatera DateTime-värden. |
signedPermissions |
sp |
Krävs | Alla | Anger vilka åtgärder som en klient som har SAS kan utföra på resursen. Behörigheter kan kombineras. |
signedIp |
sip |
Valfri | 2015-04-05 och senare | Anger en IP-adress eller ett inkluderande intervall med IP-adresser som begäranden ska accepteras från. När du anger ett intervall bör du tänka på att intervallet är inkluderande. Endast IPv4-adresser stöds. Till exempel sip=198.51.100.0 eller sip=198.51.100.10-198.51.100.20 . |
signedProtocol |
spr |
Valfri | 2015-04-05 och senare | Anger det protokoll som tillåts för en begäran som görs med SAS. Inkludera det här fältet för att kräva att begäranden som görs med SAS-token använder HTTPS. |
signedObjectId |
skoid |
Krävs | 2018-11-09 och senare | Anger objekt-ID:t för ett Microsoft Entra-säkerhetsobjekt. Det här objekt-ID:t motsvarar säkerhetsobjektet som begärde användarens delegeringsnyckel. Innan åtgärden godkänns kontrollerar Azure Storage RBAC-behörigheter mot objekt-ID:t. Om RBAC-behörigheter inte kan bevilja åtkomst kontrollerar Azure Storage POSIX ACL-behörigheter mot objekt-ID:t. |
signedTenantId |
sktid |
Krävs | 2018-11-09 och senare | Anger den Microsoft Entra-klientorganisation där ett säkerhetsobjekt har definierats. |
signedKeyStartTime |
skt |
Krävs. | 2018-11-09 och senare | Värdet returneras av åtgärden Hämta användardelegeringsnyckel. Anger början av livslängden för användardelegeringsnyckeln, uttryckt i något av de godkända ISO 8601 UTC-formaten. Mer information om accepterade UTC-format finns i Formatera DateTime-värden. |
signedKeyExpiryTime |
ske |
Krävs | 2018-11-09 och senare | Värdet returneras av åtgärden Hämta användardelegeringsnyckel. Anger slutet på livslängden för användarens delegeringsnyckel, uttryckt i något av de godkända ISO 8601 UTC-formaten. Mer information om accepterade UTC-format finns i Formatera DateTime-värden. |
signedKeyVersion |
skv |
Krävs | 2018-11-09 och senare | Värdet returneras av åtgärden Hämta användardelegeringsnyckel. Anger den lagringstjänstversion som användes för att hämta användardelegeringsnyckeln. Det här fältet måste ange version 2018-11-09 eller senare. |
signedKeyService |
sks |
Krävs | 2018-11-09 och senare | Anger den tjänst som användarens delegeringsnyckel är giltig för. För närvarande stöds endast Blob Storage. |
signedAuthorizedObjectId |
saoid |
Valfri | 2020-02-10 och senare | Anger objekt-ID:t för ett Microsoft Entra-säkerhetsobjekt som har auktoriserats av ägaren av användardelegeringsnyckeln för att utföra åtgärden som beviljats av SAS-token. Det här objekt-ID:t motsvarar säkerhetsobjektet för slutanvändaren av SAS. Ingen ytterligare behörighetskontroll på POSIX-åtkomstkontrollistor (ACL: er) utförs. |
signedUnauthorizedObjectId |
suoid |
Valfri | 2020-02-10 och senare | Anger objekt-ID för ett Microsoft Entra-säkerhetsobjekt när ett hierarkiskt namnområde är aktiverat. Det här objekt-ID:t motsvarar säkerhetsobjektet för slutanvändaren av SAS. Azure Storage utför en POSIX ACL-kontroll mot objekt-ID:t innan åtgärden godkänns. |
signedCorrelationId |
scid |
Valfri | 2020-02-10 och senare | Korrelera lagringsgranskningsloggarna med de granskningsloggar som används av huvudkontot som genererar och distribuerar SAS. |
signedDirectoryDepth |
sdd |
Krävs när sr=d |
2020-02-10 och senare | Anger antalet kataloger i rotmappen i katalogen som anges i fältet canonicalizedResource i sträng-till-tecken. |
signedEncryptionScope |
ses |
Valfri | 2020-12-06 och senare | Anger krypteringsomfånget som ska användas för att kryptera innehållet i begäran. |
signature |
sig |
Krävs | Alla | Signaturen är en hash-baserad kod för meddelandeautentisering (HMAC) som beräknas över sträng-till-tecken och nyckel med hjälp av SHA256-algoritmen och sedan kodas med hjälp av Base64-kodning. |
Cache-Control svarsrubrik |
rscc |
Valfri | 2013-08-15 och senare | Azure Storage anger Cache-Control svarshuvud till det värde som anges på SAS-token. |
Content-Disposition svarsrubrik |
rscd |
Valfri | 2013-08-15 och senare | Azure Storage anger Content-Disposition svarshuvud till det värde som anges på SAS-token. |
Content-Encoding svarsrubrik |
rsce |
Valfri | 2013-08-15 och senare | Azure Storage anger Content-Encoding svarshuvud till det värde som anges på SAS-token. |
Content-Language svarsrubrik |
rscl |
Valfri | 2013-08-15 och senare | Azure Storage anger Content-Language svarshuvud till det värde som anges på SAS-token. |
Content-Type svarsrubrik |
rsct |
Valfri | 2013-08-15 och senare | Azure Storage anger Content-Type svarshuvud till det värde som anges på SAS-token. |
Ange fältet signerad version
Det obligatoriska fältet signedVersion
(sv
) anger tjänstversionen för signaturen för delad åtkomst. Det här värdet anger vilken version av tjänsten som används för att konstruera fältet signature
och anger den tjänstversion som hanterar en begäran som görs med signaturen för delad åtkomst. Värdet för fältet sv
måste vara version 2018-11-09 eller senare.
Ange det signerade resursfältet
Det obligatoriska fältet signedResource
(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-, container- eller katalogresurs i SAS-token:
Resurs | Parametervärde | Versioner som stöds | Beskrivning |
---|---|---|---|
Klick | b | Alla | Ger åtkomst till blobens innehåll och metadata. |
Blobversion | Bv | 2018-11-09 och senare | Ger åtkomst till innehållet och metadata för blobversionen, men inte basbloben. |
Blobögonblicksbild | Bs | 2018-11-09 och senare | Ger åtkomst till innehållet och metadata för blobögonblicksbilden, men inte basbloben. |
Behållare | 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 finns alltid i en container. |
Ange varaktigheten för signaturens giltighet
Fälten signedStart
(st
) och signedExpiry
(se
) anger start- och förfallotiderna för SAS. Fältet signedExpiry
krävs. Fältet signedStart
är valfritt. Om den utelämnas används den aktuella UTC-tiden som starttid.
För en SAS för användardelegering bör start- och förfallotiderna för SAS ligga inom det intervall som har definierats för användarens delegeringsnyckel. Om en klient försöker använda en SAS när användardelegeringsnyckeln har upphört att gälla misslyckas SAS med ett auktoriseringsfel, oavsett om SJÄLVA SAS fortfarande är giltigt.
Mer information om accepterade UTC-format finns i Formatera DateTime-värden.
Ange behörigheter
De behörigheter som anges för fältet signedPermissions
(sp
) på SAS-token anger vilka åtgärder en klient som har SAS kan utföra på resursen.
Behörigheter kan kombineras 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
, lr
och dw
. Det är inte tillåtet att ange en behörighetsbeteckning mer än en gång.
En sas för användardelegering kan inte bevilja åtkomst till vissa åtgärder:
- Containrar kan inte skapas, tas bort eller visas.
- Containermetadata och egenskaper kan inte läsas eller 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.
De behörigheter som stöds för varje resurstyp beskrivs i följande tabell:
Tillåtelse | URI-symbol | Resurs | Versionsstöd | Tillåtna åtgärder |
---|---|---|---|---|
Läsa | r | Behållare Katalog Klick |
Alla | Läs innehållet, blocklistan, egenskaperna och metadata för alla blobar i containern eller katalogen. Använd en blob som källa för en kopieringsåtgärd. |
Addera | a | Behållare Katalog Klick |
Alla | Lägg till ett block i en tilläggsblob. |
Skapa | c | Behållare Katalog Klick |
Alla | Skriv en ny blob, ögonblicksbild av en blob eller kopiera en blob till en ny blob. |
Skriva | w | Behållare Katalog Klick |
Alla | Skapa eller skriva innehåll, egenskaper, metadata eller blocklista. Ögonblicksbild eller lånar bloben. Ändra storlek på bloben (endast sidblob). Använd bloben som mål för en kopieringsåtgärd. |
Ta bort | d | Behållare Katalog Klick |
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 Lease Blob. |
Ta bort version | x | Behållare Klick |
2019-12-12 och senare | Ta bort en blobversion. |
Permanent borttagning | y | Klick | 2020-02-10 och senare | Ta bort en ögonblicksbild eller version av bloben permanent. |
Lista | l | Behållare Katalog |
Alla | Visa en lista över blobar som inte rekursivt. |
Taggar | t | Klick | 2019-12-12 och senare | Läsa eller skriva taggarna på en blob. |
Flytta | m | Behållare Katalog Klick |
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 eventuellt begränsas till ägaren av den underordnade bloben, katalogen eller den överordnade katalogen om parametern saoid ingår i SAS-token och den fästiga biten anges i den överordnade katalogen. |
Utföra | e | Behållare Katalog Klick |
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. Det tillåter inte anroparen att läsa användardefinierade metadata. |
Ägande | o | Behållare Katalog Klick |
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 anroparen byter namn på eller tar bort en katalog eller blob i en katalog som har den fasta bituppsättningen. |
Behörigheter | p | Behållare Katalog Klick |
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 | jag | Behållare Klick |
2020-06-12 och senare | Ange eller ta bort oföränderlighetsprincipen eller det juridiska undantaget för en blob. |
Ange en IP-adress eller ETT IP-intervall
Det valfria fältet signedIp
(sip
) anger en offentlig IP-adress eller ett intervall med offentliga IP-adresser som begäranden ska accepteras från. Om IP-adressen 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.
När du anger ett intervall med IP-adresser är intervallet inkluderande. Om du till exempel anger sip=198.51.100.0
eller sip=198.51.100.10-198.51.100.20
på SAS begränsas begäran till dessa IP-adresser.
I följande tabell beskrivs om du vill inkludera fältet signedIp
på en SAS-token för ett visst 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 klienten i det här scenariot bör inte innehålla en utgående IP-adress för fältet signedIp . Begäranden som du gör från samma region med hjälp av 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 klienten i det här scenariot kan innehålla en offentlig IP-adress eller adressintervall för fältet signedIp . Begäranden som du gör med SAS måste komma från den angivna IP-adressen eller adressintervallet. |
Klienten körs lokalt eller i en annan molnmiljö | I valfri Azure-region | En SAS som tillhandahålls klienten i det här scenariot kan innehålla en offentlig IP-adress eller adressintervall för fältet signedIp . Begäranden som du gör 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 proxyn eller gatewayen för fältet signedIp . |
Ange HTTP-protokollet
Det valfria fältet signedProtocol
(spr
) anger det protokoll som tillåts för begäranden 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
.
Not
Det går inte att ange HTTP för fältet spr
.
Ange det signerade objekt-ID:t
Fältet signedObjectId
(skoid
) krävs för en SAS för användardelegering. Åtgärden Hämta användardelegeringsnyckel returnerar det här värdet som en del av svaret. Det signerade objekt-ID:t är ett GUID-värde som hanterar den oföränderliga identifieraren för ett säkerhetsobjekt på Microsofts identitetsplattform.
Ange det signerade klientorganisations-ID:t
Fältet signedTenantId
(sktid
) krävs för en SAS för användardelegering. Åtgärden Hämta användardelegeringsnyckel returnerar det här värdet som en del av svaret. Det signerade klient-ID:t är ett GUID-värde som representerar Den Microsoft Entra-klient där ett säkerhetsobjekt har definierats.
Ange den signerade nyckelns starttid
Det obligatoriska fältet signedKeyStartTime
(skt
) anger början på livslängden för användarens delegeringsnyckel i ISO-datumformat. Åtgärden Hämta användardelegeringsnyckel returnerar det här värdet som en del av svaret.
Ange den signerade nyckelns förfallotid
Fältet signedKeyExpiryTime
(ske
) krävs för en SAS för användardelegering i ISO-datumformat. Åtgärden Hämta användardelegeringsnyckel returnerar det här värdet som en del av svaret. Den signerade nyckelns förfallotid anger slutet på livslängden för användardelegeringsnyckeln. Värdet för förfallotiden kan vara högst sju dagar från starttiden för SAS.
Ange den signerade nyckeltjänsten
Fältet signedKeyService
(sks
) krävs för en SAS för användardelegering. Åtgärden Hämta användardelegeringsnyckel returnerar det här värdet som en del av svaret. Fältet signerad nyckeltjänst anger den tjänst som användarens delegeringsnyckel är giltig för. Värdet för det signerade nyckeltjänstfältet för Blob Storage är b
.
Ange den signerade nyckelversionen
Fältet signedkeyversion
(skv
) krävs för en SAS för användardelegering. Åtgärden Hämta användardelegeringsnyckel returnerar det här värdet som en del av svaret. Fältet signedkeyversion
anger den lagringstjänstversion som används för att hämta användardelegeringsnyckeln. Det här fältet måste ange version 2018-11-09 eller senare.
Ange ett signerat användarobjekt-ID för ett säkerhetsobjekt
De valfria fälten signedAuthorizedObjectId
(saoid
) och signedUnauthorizedObjectId
(suoid
) möjliggör integrering med Apache Hadoop och Apache Ranger för Azure Data Lake Storage-arbetsbelastningar. Använd ett av dessa fält på SAS-token för att ange objekt-ID:t för ett säkerhetsobjekt:
- Fältet
saoid
anger objekt-ID:t för ett Microsoft Entra-säkerhetsobjekt som har auktoriserats av ägaren av användardelegeringsnyckeln för att utföra åtgärden som beviljats av SAS-token. Azure Storage validerar SAS-token och ser till att ägaren av användardelegeringsnyckeln har de behörigheter som krävs innan Azure Storage beviljar åtkomst. Ingen ytterligare behörighetskontroll av POSIX-ACL:er utförs. - Fältet
suoid
anger objekt-ID för ett Microsoft Entra-säkerhetsobjekt när ett hierarkiskt namnområde är aktiverat för ett lagringskonto. Fältetsuoid
är endast giltigt för konton som har ett hierarkiskt namnområde. När fältetsuoid
ingår i SAS-token utför Azure Storage en POSIX ACL-kontroll mot objekt-ID:t innan åtgärden godkänns. Om den här ACL-kontrollen inte lyckas misslyckas åtgärden. Ett hierarkiskt namnområde måste vara aktiverat för lagringskontot om fältetsuoid
ingår i SAS-token. Annars misslyckas behörighetskontrollen med ett auktoriseringsfel.
Objekt-ID:t för säkerhetsobjektet som begär användardelegeringsnyckeln samlas in i det obligatoriska skoid
fältet. Om du vill ange ett objekt-ID på SAS-token med fältet saoid
eller suoid
, Säkerhetsobjektet som identifieras i fältet skoid
måste tilldelas en RBAC-roll som innehåller Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action eller Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action. Mer information om dessa åtgärder finns i Azure-resursprovideråtgärder.
Genom att ange objekt-ID:t i fältet saoid
eller suoid
begränsar du även åtgärder som är relaterade till katalog- eller blobägarskap på följande sätt:
- Om en åtgärd skapar en katalog eller blob anger Azure Storage ägaren av katalogen eller blobben till det värde som anges av objekt-ID:t. Om objekt-ID:t inte har angetts anger Azure Storage ägaren av katalogen eller blobben till det värde som anges av parametern
skoid
. - Om den klibbiga biten har angetts i den överordnade katalogen och åtgärden tar bort eller byter namn på en katalog eller blob, måste objekt-ID:t för ägaren till den överordnade katalogen eller resursens ägare matcha det värde som anges av objekt-ID:t.
- Om en åtgärd anger ägaren för en katalog eller blob och
x-ms-owner
-huvudet anges måste värdet som anges av objekt-ID:t matcha det värde som anges avx-ms-owner
-huvudet. - Om en åtgärd anger gruppen för en katalog eller blob och
x-ms-group
-huvudet anges måste det värde som anges av objekt-ID vara medlem i den grupp som anges avx-ms-group
-huvudet. - Om en åtgärd anger behörigheter eller ACL för en katalog eller blob måste ett av följande två villkor också uppfyllas:
- Värdet som anges för objekt-ID:t måste vara ägare till katalogen eller bloben.
- Värdet för fältet
signedPermissions
(sp
) måste innehålla behörighetenOwnership
(o
) utöver behörighetenPermissions
(p
).
Objekt-ID:t som anges i fältet saoid
eller suoid
ingår i diagnostikloggarna när du gör begäranden med hjälp av SAS-token.
Fältet saoid
eller suoid
stöds endast om fältet signedVersion
(sv
) är inställt på version 2020-02-10 eller senare. Endast ett av dessa fält kan ingå i SAS-token.
Ange ett korrelations-ID
Fältet signedCorrelationId
(scid
) anger ett korrelations-ID som kan användas för att korrelera lagringsgranskningsloggarna med de granskningsloggar som används av huvudkontot som genererar och distribuerar SAS. Till exempel har en betrodd auktoriseringstjänst vanligtvis en hanterad identitet som autentiserar och auktoriserar användare, genererar en SAS, lägger till en post i den lokala granskningsloggen och returnerar SAS till en användare, som sedan kan använda SAS för att komma åt Azure Storage-resurser. Genom att inkludera ett korrelations-ID i både den lokala granskningsloggen och lagringsgranskningsloggen tillåter du att dessa händelser korreleras senare. Värdet är ett GUID utan klammerparenteser och med gemener.
Det här fältet stöds med version 2020-02-10 och senare.
Ange katalogdjupet
Om fältet signedResource
anger en katalog (sr=d
) måste du också ange fältet signedDirectoryDepth
(sdd
) för att ange antalet underkataloger under rotkatalogen. Värdet för fältet sdd
måste vara ett heltal som inte är negativt.
Rotkatalogen https://{account}.blob.core.windows.net/{container}/
har till exempel ett djup på 0. Varje underkatalog i rotkatalogen lägger till 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 och senare.
Ange frågeparametrar för att åsidosätta svarshuvuden
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. Svarshuvudena och motsvarande frågeparametrar är följande:
Namn på svarshuvud | Motsvarande SAS-frågeparameter |
---|---|
Cache-Control |
rscc |
Content-Disposition |
rscd |
Content-Encoding |
rsce |
Content-Language |
rscl |
Content-Type |
rsct |
Om du till exempel anger frågeparametern rsct=binary
på en SAS-token är Content-Type
-svarshuvudet inställt på binary
. Det här värdet åsidosätter det Content-Type
huvudvärde som lagras för blobben för en begäran endast med den här signaturen för delad åtkomst.
Om du skapar en signatur för delad åtkomst som anger svarshuvuden som frågeparametrar måste du inkludera dessa svarshuvuden i sträng-till-tecken som används för att konstruera signatursträngen. Mer information finns i avsnittet "Ange signaturen" .
Ange krypteringsomfånget
Fältet signed encryption scope
(ses
) anger ett krypteringsomfång som klientprogrammet använder när du laddar upp blobar med hjälp av SAS-token via åtgärden Put Blob. Fältet signed encryption scope
stöds när fältet signerad version (sv
) på SAS-token är version 2020-12-06 eller senare. Om fältet signerad version anger en version som är tidigare än den version som stöds returnerar tjänsten felsvarskoden 403 (Förbjuden).
Om standardkrypteringsomfånget har angetts för containern eller filsystemet respekterar fältet ses
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 på true
returnerar tjänsten felsvarskoden 403 (Förbjuden).
Om både x-ms-encryption-scope
-huvudet och frågeparametern ses
anges i PUT-begäran och det finns ett matchningsfel returnerar tjänsten felsvarskoden 400 (felaktig begäran).
Ange signaturen
Fältet signature
(sig
) används för att auktorisera en begäran som görs av en klient med signaturen för delad åtkomst. Sträng-till-tecken är en unik sträng som har konstruerats från de fält som måste verifieras för att godkänna begäran. Signaturen är en HMAC som beräknas över sträng-till-tecken och nyckel med hjälp av SHA256-algoritmen och sedan kodas med hjälp av Base64-kodning.
Skapa signatursträngen för en sas för användardelegering genom att skapa sträng-till-signering från fälten som utgör begäran, koda strängen som UTF-8 och sedan beräkna signaturen med hjälp av HMAC-SHA256-algoritmen. Fälten som ingår i sträng-till-tecken måste vara URL-avkodade.
Vilka fält som krävs i sträng-till-tecken beror på vilken tjänstversion som används för auktorisering (sv
fält). I följande avsnitt beskrivs sträng-till-signering-konfigurationen för versioner som stöder SAS för användardelegering.
Version 2020-12-06 och senare
Sträng-till-sign för auktoriseringsversion 2020-12-06 och senare har följande format:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedKeyObjectId + "\n" +
signedKeyTenantId + "\n" +
signedKeyStart + "\n" +
signedKeyExpiry + "\n" +
signedKeyService + "\n" +
signedKeyVersion + "\n" +
signedAuthorizedUserObjectId + "\n" +
signedUnauthorizedUserObjectId + "\n" +
signedCorrelationId + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
signedResource + "\n" +
signedSnapshotTime + "\n" +
signedEncryptionScope + "\n" +
rscc + "\n" +
rscd + "\n" +
rsce + "\n" +
rscl + "\n" +
rsct
Version 2020-02-10
Sträng-till-tecken för auktoriseringsversion 2020-02-10 har följande format:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedKeyObjectId + "\n" +
signedKeyTenantId + "\n" +
signedKeyStart + "\n" +
signedKeyExpiry + "\n" +
signedKeyService + "\n" +
signedKeyVersion + "\n" +
signedAuthorizedUserObjectId + "\n" +
signedUnauthorizedUserObjectId + "\n" +
signedCorrelationId + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
signedResource + "\n" +
signedSnapshotTime + "\n" +
rscc + "\n" +
rscd + "\n" +
rsce + "\n" +
rscl + "\n" +
rsct
Tidigare versioner än 2020-02-10
Sträng-till-tecken för auktoriseringsversioner som är tidigare än 2020-02-10 har följande format:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedKeyObjectId + "\n" +
signedKeyTenantId + "\n" +
signedKeyStart + "\n" +
signedKeyExpiry + "\n" +
signedKeyService + "\n" +
signedKeyVersion + "\n" +
signedAuthorizedUserObjectId + "\n" +
signedUnauthorizedUserObjectId + "\n" +
signedCorrelationId + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
signedResource + "\n" +
rscc + "\n" +
rscd + "\n" +
rsce + "\n" +
rscl + "\n" +
rsct
Kanonisk resurs
Den canonicalizedResource
delen av strängen är en kanonisk sökväg till den signerade resursen. Den måste innehålla Blob Storage-slutpunkten och resursnamnet, och den måste vara URL-avkodad. En blobsökväg måste innehålla dess container. En katalogsökväg måste innehålla antalet underkataloger som motsvarar parametern sdd
.
Den kanoniska resurssträngen för en container måste utelämna det avslutande snedstrecket (/) för en SAS som ger åtkomst till containern.
Följande exempel visar hur du konstruerar canonicalizedResource
delen av strängen, beroende på resurstyp.
Containerexempel (Azure Blob Storage)
URL = https://myaccount.blob.core.windows.net/music
canonicalizedResource = "/blob/myaccount/music"
Blobexempel (Azure Blob Storage)
URL = https://myaccount.blob.core.windows.net/music/intro.mp3
canonicalizedResource = "/blob/myaccount/music/intro.mp3"
Containerexempel (Azure Data Lake Storage)
URL = https://myaccount.dfs.core.windows.net/music
canonicalizedResource = "/blob/myaccount/music"
Katalogexempel (Azure Data Lake Storage)
URL = https://myaccount.dfs.core.windows.net/music/instruments/guitar/
canonicalizedResource = "/blob/myaccount/music/instruments/guitar/"
Blobexempel (Azure Data Lake Storage)
URL = https://myaccount.dfs.core.windows.net/music/intro.mp3
canonicalizedResource = "/blob/myaccount/music/intro.mp3"
Valfria fält
Om ett fält är valfritt och inte anges som en del av SAS-token anger du en tom sträng för fältet. Se till att inkludera det nya radtecknet (\n) efter den tomma strängen.
SAS-exempel för användardelegering
I följande exempel visas en blob-URI med en SAS-token för användardelegering som läggs till i den. SAS-token för användardelegering 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&skoid=<object-id>&sktid=<tenant-id>&skt=2023-05-24T01:13:55Z&ske=2023-05-24T09:13:55Z&sks=b&skv=2022-11-02&sip=198.51.100.10-198.51.100.20&spr=https&sv=2022-11-02&sr=b&sig=<signature>
Varje del av URI:n beskrivs i följande tabell:
Namn | SAS-del | Beskrivning |
---|---|---|
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 är Läs (r) och Skriv (w). |
Starttid | st=2023-05-24T01:13:55Z |
Anges i UTC-tid. Om du vill att SAS ska vara giltigt omedelbart utelämnar du starttiden. |
Förfallotid | se=2023-05-24T09:13:55Z |
Anges i UTC-tid. |
Objekt-ID | skoid=<object-id> |
Ett Säkerhetsobjekt för Microsoft Entra. |
Klientorganisations-ID | sktid=<tenant-id> |
Den Microsoft Entra-klientorganisation där säkerhetsobjektet är registrerat. |
Starttid för nyckel | skt=2023-05-24T01:13:55Z |
Början av livslängden för användarens delegeringsnyckel. |
Nyckel förfallotid | ske=2023-05-24T09:13:55Z |
Slutet av livslängden för användarens delegeringsnyckel. |
Nyckeltjänst | sks=b |
Endast Blob-tjänsten stöds för tjänstvärdet. |
Nyckelversion | skv=2022-11-02 |
Lagringstjänstversionen som användes för att hämta användardelegeringsnyckeln. |
IP-intervall | sip=198.51.100.10-198.51.100.20 |
Intervallet med IP-adresser som en begäran kommer att accepteras från. |
Protokoll | spr=https |
Endast begäranden som använder HTTPS tillåts. |
Blob-tjänstversion | sv=2022-11-02 |
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. |
Underskrift | 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. |
Återkalla en SAS för användardelegering
Om du anser att en SAS har komprometterats bör du återkalla den. Du kan återkalla en SAS för användardelegering antingen genom att återkalla användardelegeringsnyckeln eller genom att ändra eller ta bort RBAC-rolltilldelningar och POSIX-ACL:er för säkerhetsobjektet som används för att skapa SAS.
Viktig
Både användardelegeringsnyckeln och RBAC-rolltilldelningarna cachelagras av Azure Storage, så det kan uppstå en fördröjning mellan när du initierar återkallningsprocessen och när en befintlig SAS för användardelegering blir ogiltig.
Återkalla användarens delegeringsnyckel
Du kan återkalla användarens delegeringsnyckel genom att anropa åtgärden Återkalla användardelegeringsnycklar. När du återkallar användardelegeringsnyckeln blir alla signaturer för delad åtkomst som förlitar sig på den nyckeln ogiltiga. Du kan sedan anropa åtgärden Hämta användardelegeringsnyckel igen och använda nyckeln för att skapa nya signaturer för delad åtkomst. Det här är det snabbaste sättet att återkalla en SAS för användardelegering.
Ändra eller ta bort rolltilldelningar eller ACL:er
Du kan ändra eller ta bort RBAC-rolltilldelningen och POSIX-ACL:er för säkerhetsobjektet som används för att skapa SAS. När en klient använder SAS för att komma åt en resurs kontrollerar Azure Storage att säkerhetsobjektet vars autentiseringsuppgifter användes för att skydda SAS har de behörigheter som krävs för resursen.