Vytvoření SAS služby
Sdílený přístupový podpis služby (SAS) deleguje přístup k prostředku jenom v jedné ze služeb úložiště: Azure Blob Storage, Azure Queue Storage, Azure Table Storage nebo Azure Files. Identifikátor URI sas na úrovni služby se skládá z identifikátoru URI prostředku, ke kterému bude SAS delegovat přístup, a následně z tokenu SAS.
Token SAS je řetězec dotazu, který obsahuje všechny informace potřebné k autorizaci požadavku. Token určuje prostředek, ke kterému může klient přistupovat, udělená oprávnění a časové období, během kterého je podpis platný.
SAS může také zadat podporovanou IP adresu nebo rozsah adres, ze kterých můžou pocházet požadavky, podporovaný protokol, se kterým je možné požadavek vytvořit, nebo volitelný identifikátor zásad přístupu, který je k požadavku přidružený.
Nakonec každý token SAS obsahuje podpis.
Upozornění
Sdílené přístupové podpisy jsou klíče, které udělují oprávnění k prostředkům úložiště, a měli byste je chránit stejně jako klíč účtu. Je důležité chránit SAS před škodlivým nebo neúmyslným použitím. Při distribuci sdíleného přístupového podpisu využijte diskrétnost a vytvořte plán pro odvolání ohroženého sas. Operace, které používají sdílené přístupové podpisy, by se měly provádět pouze přes připojení HTTPS a identifikátory URI SAS by se měly distribuovat pouze na zabezpečeném připojení, jako je https.
Autorizace SAS služby
Sas účtu můžete zabezpečit pomocí klíče účtu úložiště. Při vytváření SAS účtu musí klientská aplikace obsahovat klíč účtu.
Pokud chcete použít Microsoft Entra přihlašovací údaje k zabezpečení SAS pro kontejner nebo objekt blob, vytvořte SAS delegování uživatele.
Podpora služby SAS při přístupu vymezeném na adresář
Sas služby podporuje obor adresáře (sr=d
), pokud je autorizační verze (sv
) 2020-02-10 nebo novější a je povolený hierarchický obor názvů. Sémantika pro obor adresáře (sr=d
) je podobná těm pro obor kontejneru (sr=c
), s tím rozdílem, že přístup je omezený na adresář a všechny soubory a podadresáře v něm. Pokud sr=d
je zadaný, vyžaduje se sdd
také parametr dotazu.
Formát řetězce k podpisu pro autorizaci verze 2020-02-10 se nezmění.
Vytvoření SAS služby
Následující obrázek představuje části identifikátoru URI sdíleného přístupového podpisu. Požadované části se zobrazí oranžově. Pole, která tvoří token SAS, jsou popsána v následujících částech.
Následující části popisují, jak zadat parametry, které tvoří token SAS služby.
Zadejte pole.signedVersion
Pole signedVersion
(sv
) obsahuje verzi služby sdíleného přístupového podpisu. Tato hodnota určuje verzi autorizace sdíleného klíče, kterou tento sdílený přístupový podpis používá (v signature
poli). Hodnota také určuje verzi služby pro požadavky, které jsou provedeny s tímto sdíleným přístupovým podpisem.
Informace o tom, která verze se používá při spouštění požadavků prostřednictvím sdíleného přístupového podpisu, najdete v tématu Správa verzí pro služby Azure Storage.
Informace o tom, jak tento parametr ovlivňuje autorizaci požadavků provedených pomocí sdíleného přístupového podpisu, najdete v tématu Delegování přístupu pomocí sdíleného přístupového podpisu.
Název pole | Parametr dotazu | Popis |
---|---|---|
signedVersion |
sv |
Povinná hodnota. Podporováno ve verzi 2012-02-12 a novější. Verze služby úložiště, která se má použít k autorizaci a zpracování požadavků, které vytvoříte pomocí tohoto sdíleného přístupového podpisu. Další informace najdete v tématu Správa verzí pro služby Azure Storage. |
Určení verze starší verze žádosti SAS
Ve starších scénářích, kdy signedVersion
se nepoužívá, použije Blob Storage pravidla pro určení verze. Další informace o těchto pravidlech najdete v tématu Správa verzí pro služby Azure Storage.
Důležité
Klientský software může zaznamenat neočekávané chování protokolu, když použijete identifikátor URI sdíleného přístupového podpisu, který používá verzi služby úložiště, která je novější než klientský software. Kód, který vytváří identifikátory URI sdíleného přístupového podpisu, by se měl spoléhat na verze, kterým rozumí klientský software, který vytváří požadavky služby úložiště.
Zadejte podepsaný prostředek (jenom Blob Storage).
signedResource
Požadované pole (sr
) určuje, které prostředky jsou přístupné prostřednictvím sdíleného přístupového podpisu. Následující tabulka popisuje, jak odkazovat na prostředek objektu blob nebo kontejneru v tokenu SAS.
Prostředek | Hodnota parametru | Podporované verze | Description |
---|---|---|---|
Objekt blob | b | Vše | Uděluje přístup k obsahu a metadatům objektu blob. |
Verze objektu blob | Bv | 2018-11-09 a novější | Udělí přístup k obsahu a metadatům verze objektu blob, ale ne k základnímu objektu blob. |
Snímek objektu blob | Bs | 2018-11-09 a novější | Udělí přístup k obsahu a metadatům snímku objektu blob, ale ne k základnímu objektu blob. |
Kontejner | c | Vše | Udělí přístup k obsahu a metadatům libovolného objektu blob v kontejneru a k seznamu objektů blob v kontejneru. |
Directory | d | 2020-02-10 a novější | Udělí přístup k obsahu a metadatům libovolného objektu blob v adresáři a k seznamu objektů blob v adresáři v účtu úložiště s povoleným hierarchickým oborem názvů. Pokud je pro signedResource pole zadaný adresář, signedDirectoryDepth vyžaduje se také parametr (sdd ). Adresář je vždy vnořený v kontejneru. |
Zadejte podepsaný prostředek (Azure Files).
SAS se podporuje pro Azure Files verze 2015-02-21 a novější.
Pole signedResource
určuje, které prostředky jsou přístupné prostřednictvím sdíleného přístupového podpisu. Následující tabulka popisuje, jak odkazovat na soubor nebo prostředek sdílené složky v identifikátoru URI.
Název pole | Parametr dotazu | Popis |
---|---|---|
signedResource |
sr |
Povinná hodnota. Určete f , jestli je sdíleným prostředkem soubor. Tím udělíte přístup k obsahu a metadatům souboru.Určete s , jestli je sdíleným prostředkem sdílená složka. Tím se udělí přístup k obsahu a metadatům libovolného souboru ve sdílené složce a k seznamu adresářů a souborů ve sdílené složce. |
Určení parametrů dotazu pro přepsání hlaviček odpovědi (jenom Blob Storage a Azure Files)
Pokud chcete definovat hodnoty pro určité hlavičky odpovědi, které se mají vrátit při použití sdíleného přístupového podpisu v požadavku, můžete v parametrech dotazu zadat hlavičky odpovědi. Tato funkce se podporuje od verze 2013-08-15 pro Blob Storage a verze 2015-02-21 pro Azure Files. Sdílené přístupové podpisy, které používají tuto funkci, musí obsahovat sv
parametr nastavený na 2013-08-15
nebo novější pro službu Blob Storage nebo na 2015-02-21
hodnotu nebo novější pro Azure Files.
Hlavičky odpovědi a odpovídající parametry dotazu jsou uvedené v následující tabulce:
Název hlavičky odpovědi | Odpovídající parametr dotazu SAS |
---|---|
Cache-Control |
rscc |
Content-Disposition |
rscd |
Content-Encoding |
rsce |
Content-Language |
rscl |
Content-Type |
rsct |
Pokud například zadáte rsct=binary
parametr dotazu u sdíleného přístupového podpisu vytvořeného ve verzi 2013-08-15 nebo novější, hlavička Content-Type
odpovědi se nastaví na binary
. Tato hodnota přepíše hodnotu hlavičky Content-Type
uloženou pro objekt blob pro požadavek, který používá pouze tento sdílený přístupový podpis.
Pokud vytvoříte sdílený přístupový podpis, který určuje hlavičky odpovědi jako parametry dotazu, musíte je zahrnout do řetězce k podpisu, který se používá k vytvoření řetězce podpisu. Další informace najdete v části "Vytvoření řetězce podpisu" dále v tomto článku. Další příklady najdete v tématu Příklady SAS služby.
Zadejte název tabulky (jenom Table Storage).
Pole tableName
určuje název tabulky, která se má sdílet.
Název pole | Parametr dotazu | Popis |
---|---|---|
tableName |
tn |
Povinná hodnota. Název tabulky, která se má sdílet. |
Zadání zásad přístupu
Část identifikátoru URI zásad přístupu určuje časové období, během kterého je sdílený přístupový podpis platný, a oprávnění, která se mají uživateli udělit. Části identifikátoru URI, které tvoří zásady přístupu, jsou popsané v následující tabulce:
Název pole | Parametr dotazu | Popis |
---|---|---|
signedStart |
st |
Nepovinný parametr. Čas, kdy sdílený přístupový podpis začne platit, vyjádřený v jednom z přijatých formátů ISO 8601 UTC. Pokud tento parametr vynecháte, použije se jako počáteční čas aktuální čas UTC. Ve verzích, které jsou starší než 2012-02-12, doba trvání mezi signedStart a signedExpiry nesmí překročit jednu hodinu, pokud se nepoužijí zásady kontejneru. Další informace o akceptovaných formátech UTC najdete v tématu Formátování hodnot data a času. |
signedExpiry |
se |
Povinná hodnota. Čas, kdy sdílený přístupový podpis přestane být platný, vyjádřený v jednom z přijatých formátů ISO 8601 UTC. Toto pole musíte vynechat, pokud bylo zadáno v přidružených uložených zásadách přístupu. Další informace o akceptovaných formátech UTC najdete v tématu Formátování hodnot data a času. |
signedPermissions 1 |
sp |
Povinná hodnota. Oprávnění, která jsou přidružena ke sdílenému přístupovém podpisu. Uživatel je omezen na operace, které jsou povoleny oprávněními. Toto pole musíte vynechat, pokud bylo zadáno v přidružených uložených zásadách přístupu. |
startPk 2startRk 2 |
spk srk |
Pouze table Storage. Volitelné, ale startPk musí doprovázet startRk . Minimální klíč oddílu a řádku, které jsou přístupné pomocí tohoto sdíleného přístupového podpisu. Klíčové hodnoty jsou inkluzivní. Pokud je vynecháte, entity tabulky nemají dolní mez, ke které je možné přistupovat. |
endPk 2endRk 2 |
epk erk |
Pouze table Storage. Volitelné, ale endPk musí doprovázet endRk . Maximální počet klíčů oddílů a řádků, které jsou přístupné pomocí tohoto sdíleného přístupového podpisu. Klíčové hodnoty jsou inkluzivní. Pokud je vynecháte, není u entit tabulky žádná horní mez, ke které by bylo možné přistupovat. |
1 Pole signedPermissions
je povinné u identifikátoru URI, pokud není zadané jako součást uložených zásad přístupu.
2 Pole startPk
, startRk
, endPk
a endRk
je možné zadat pouze u prostředků služby Table Storage.
Určení oprávnění
Oprávnění zadaná pro signedPermissions
pole (sp
) v tokenu SAS označují, které operace může klient s prostředkem provádět.
Pokud chcete klientovi povolit provádění více operací se stejným sas, můžete oprávnění kombinovat. Při vytváření SAS musíte zahrnout oprávnění v následujícím pořadí:
racwdxltmeop
Příklady platných nastavení oprávnění pro kontejner: rw
, rd
, rl
, wd
, wl
a rl
. Mezi příklady neplatných nastavení patří wr
, lr
dr
, a dw
. Označení oprávnění nelze zadat více než jednou.
Sas služby nemůže udělit přístup k určitým operacím:
- Kontejnery, fronty a tabulky není možné vytvářet, odstraňovat ani vypisovat.
- Metadata a vlastnosti kontejneru se nedají číst ani zapisovat.
- Fronty se nedají vymazat a jejich metadata se nedají zapsat.
- Kontejnery se nedají zapůjčením.
K vytvoření SAS, který uděluje přístup k těmto operacím, použijte SAS účtu. Další informace najdete v tématu Vytvoření SAS účtu.
Důležité
Sdílené přístupové podpisy jsou klíče, které udělují oprávnění k prostředkům úložiště, a měli byste je chránit stejně jako klíč účtu. Provádějte operace, které používají sdílené přístupové podpisy pouze přes připojení HTTPS, a distribuujte identifikátory URI sdíleného přístupového podpisu pouze na zabezpečeném připojení, jako je například HTTPS.
Oprávnění podporovaná pro jednotlivé typy prostředků jsou popsána v následujících částech.
Oprávnění pro adresář, kontejner nebo objekt blob
Oprávnění podporovaná pro jednotlivé typy prostředků jsou popsána v následující tabulce:
Oprávnění | Symbol identifikátoru URI | Prostředek | Podpora verzí | Povolené operace |
---|---|---|---|---|
Read | r | Kontejner Directory Objekt blob |
Vše | Přečtěte si obsah, seznam blokovaných objektů, vlastnosti a metadata libovolného objektu blob v kontejneru nebo adresáři. Jako zdroj operace kopírování použijte objekt blob. |
Přidání | pro | Kontejner Directory Objekt blob |
Vše | Přidání bloku do doplňovacího objektu blob |
Vytvořit | c | Kontejner Directory Objekt blob |
Vše | Napište nový objekt blob, vytvořte snímek objektu blob nebo zkopírujte objekt blob do nového objektu blob. |
Write | w | Kontejner Directory Objekt blob |
Vše | Vytváření nebo zápis obsahu, vlastností, metadat nebo seznamu blokovaných Vytvoření snímku nebo zapůjčení objektu blob Změňte velikost objektu blob (jenom objekt blob stránky). Použijte objekt blob jako cíl operace kopírování. |
Odstranit | d | Kontejner Directory Objekt blob |
Vše | Odstranění objektu blob Pro verzi 2017-07-29 a novější umožňuje oprávnění k odstranění také přerušení zapůjčení objektu blob. Další informace najdete v tématu Operace Zapůjčení objektu blob . |
Odstranit verzi | x | Kontejner Objekt blob |
12. 12. 2019 a novější | Odstranění verze objektu blob |
Trvalé odstranění | y | Objekt blob | 2020-02-10 a novější | Trvale odstraníte snímek nebo verzi objektu blob. |
Seznam | l | Kontejner Directory |
Vše | Výpis objektů blob nerekurzivně |
Značky | t | Objekt blob | 12. 12. 2019 a novější | Čtení nebo zápis značek v objektu blob |
Vyhledávání | f | Kontejner | 12. 12. 2019 a novější | Vyhledejte objekty blob se značkami indexu. |
Move | m | Kontejner Directory Objekt blob |
2020-02-10 a novější | Přesuňte objekt blob nebo adresář a jeho obsah do nového umístění. Tuto operaci můžete volitelně omezit na vlastníka podřízeného objektu blob, adresáře nebo nadřazeného adresáře, pokud saoid je parametr zahrnutý v tokenu SAS a bit sticky je nastavený v nadřazené adresáři. |
Spuštěním | e | Kontejner Directory Objekt blob |
2020-02-10 a novější | Získejte systémové vlastnosti a pokud je pro účet úložiště povolený hierarchický obor názvů, získejte seznam ACL POSIX objektu blob. Pokud je povolený hierarchický obor názvů a volající je vlastníkem objektu blob, uděluje toto oprávnění možnost nastavit vlastnící skupinu, oprávnění POSIX a seznam ACL POSIX objektu blob. neumožňuje volajícímu číst metadata definovaná uživatelem. |
Vlastnictví | o | Kontejner Directory Objekt blob |
2020-02-10 a novější | Pokud je povolen hierarchický obor názvů, toto oprávnění umožňuje volajícímu nastavit vlastníka nebo vlastnící skupinu nebo jednat jako vlastník při přejmenování nebo odstranění adresáře nebo objektu blob v adresáři, který má nastavený bit sticky. |
Oprávnění | p | Kontejner Directory Objekt blob |
2020-02-10 a novější | Pokud je povolený hierarchický obor názvů, umožňuje toto oprávnění volajícímu nastavit oprávnění a seznamy ACL poSIX pro adresáře a objekty blob. |
Nastavení zásad neměnnosti | Mohu | Kontejner Objekt blob |
12. 6. 2020 a novější | Nastavení nebo odstranění zásad neměnnosti nebo blokování z právních důvodů u objektu blob |
Oprávnění k souboru
Oprávnění | Symbol identifikátoru URI | Povolené operace |
---|---|---|
Read | r | Přečtěte si obsah, vlastnosti a metadata. Soubor použijte jako zdroj operace kopírování. |
Vytvořit | c | Vytvořte nový soubor nebo zkopírujte soubor do nového souboru. |
Write | w | Vytváření nebo zápis obsahu, vlastností a metadat. Změňte velikost souboru. Soubor použijte jako cíl operace kopírování. |
Odstranit | d | Odstraňte soubor. |
Oprávnění ke sdílené složce
Oprávnění | Symbol identifikátoru URI | Povolené operace |
---|---|---|
Read | r | Přečtěte si obsah, vlastnosti nebo metadata libovolného souboru ve sdílené složce. Jako zdroj operace kopírování použijte libovolný soubor ve sdílené složce. |
Vytvořit | c | Vytvořte ve sdílené složce nový soubor nebo zkopírujte soubor do nového souboru ve sdílené složce. |
Write | w | Pro libovolný soubor ve sdílené složce vytvořte nebo zapište obsah, vlastnosti nebo metadata. Změňte velikost souboru. Soubor použijte jako cíl operace kopírování. Poznámka: Pomocí SAS služby nemůžete udělit oprávnění ke čtení nebo zápisu vlastností nebo metadat sdílených složek. Místo toho použijte SAS účtu. |
Odstranit | d | Odstraňte všechny soubory ve sdílené složce. Poznámka: Pomocí sdíleného přístupového podpisu služby nemůžete udělit oprávnění k odstranění sdílené složky. Místo toho použijte SAS účtu. |
Seznam | l | Vypíše soubory a adresáře ve sdílené složce. |
Oprávnění pro frontu
Oprávnění | Symbol identifikátoru URI | Povolené operace |
---|---|---|
Read | r | Čtení metadat a vlastností, včetně počtu zpráv Náhled na zprávy. |
Přidání | pro | Přidejte zprávy do fronty. |
Aktualizace | u | Aktualizujte zprávy ve frontě. Poznámka: Použijte oprávnění Proces s aktualizací, abyste nejprve získali zprávu, kterou chcete aktualizovat. |
Proces | p | Získání a odstranění zpráv z fronty |
Oprávnění pro tabulku
Oprávnění | Symbol identifikátoru URI | Povolené operace |
---|---|---|
Dotaz | r | Získání entit a dotazování entit |
Přidání | pro | Přidejte entity. Poznámka: Pro operace upsert se vyžadují oprávnění přidat a aktualizovat. |
Aktualizace | u | Aktualizujte entity. Poznámka: Pro operace upsert se vyžadují oprávnění přidat a aktualizovat. |
Odstranit | d | Odstraňte entity. |
Zadání IP adresy nebo rozsahu IP adres
Od verze 2015-04-05 určuje pole volitelné signedIp
(sip
) veřejnou IP adresu nebo rozsah veřejných IP adres, ze kterých se mají požadavky přijímat. Pokud IP adresa, ze které požadavek pochází, neodpovídá IP adrese nebo rozsahu adres zadaným v tokenu SAS, požadavek se neautorizuje. Podporují se jenom adresy IPv4.
Když zadáváte rozsah IP adres, mějte na paměti, že rozsah je inkluzivní. Například zadáním sip=168.1.5.65
nebo sip=168.1.5.60-168.1.5.70
v SAS omezíte požadavek na tyto IP adresy.
Následující tabulka popisuje, jestli se má zahrnout signedIp
pole do tokenu SAS pro zadaný scénář v závislosti na prostředí klienta a umístění účtu úložiště.
Klientské prostředí | Umístění účtu úložiště | Doporučení |
---|---|---|
Klient spuštěný v Azure | Ve stejné oblasti jako klient | Sas, který je v tomto scénáři poskytnutý klientovi, by neměl obsahovat odchozí IP adresu pole signedIp . Požadavky vytvořené ze stejné oblasti, které používají SAS se zadanou odchozí IP adresou, selžou.Místo toho použijte virtuální síť Azure ke správě omezení zabezpečení sítě. Požadavky na službu Azure Storage ze stejné oblasti se vždy provádí přes privátní IP adresu. Další informace najdete v tématu Konfigurace virtuálních sítí a bran firewall Azure Storage. |
Klient spuštěný v Azure | V jiné oblasti než klient | Sas, který je v tomto scénáři poskytnutý klientovi, může obsahovat veřejnou IP adresu nebo rozsah adres pro dané signedIp pole. Požadavek vytvořený pomocí sdíleného přístupového podpisu musí pocházet ze zadané IP adresy nebo rozsahu adres. |
Klient spuštěný místně nebo v jiném cloudovém prostředí | V libovolné oblasti Azure | Sas, který je v tomto scénáři poskytnutý klientovi, může obsahovat veřejnou IP adresu nebo rozsah adres pro dané signedIp pole. Požadavek vytvořený pomocí sdíleného přístupového podpisu musí pocházet ze zadané IP adresy nebo rozsahu adres.Pokud požadavek prochází přes proxy server nebo bránu, zadejte do signedIp pole veřejnou odchozí IP adresu tohoto proxy serveru nebo brány. |
Zadání protokolu HTTP
Od verze 2015-04-05 určuje volitelné signedProtocol
pole (spr
) protokol, který je povolený pro požadavek provedený pomocí SAS. Možné hodnoty jsou HTTPS a HTTP (https,http
) nebo pouze HTTPS (https
). Výchozí hodnota je https,http
. Upozorňujeme, že pouze HTTP není povolená hodnota.
Určení rozsahů přístupu k tabulce
Pole startPk
, startRk
, endPk
a endRk
definují rozsah entit tabulky, které jsou přidružené ke sdílenému přístupovém podpisu. Dotazy tabulky vrací pouze výsledky, které jsou v daném rozsahu, a pokusy o použití sdíleného přístupového podpisu k přidání, aktualizaci nebo odstranění entit mimo tento rozsah selžou.
Pokud startPk
se rovná hodnotě endPk
, sdílený přístupový podpis autorizuje přístup k entitám pouze v jednom oddílu tabulky.
Pokud startPk
se endPk
rovná a startRk
rovná endRk
se , může sdílený přístupový podpis přistupovat pouze k jedné entitě v jednom oddílu.
Informace o tom, jak tato pole omezují přístup k entitám v tabulce, najdete v následující tabulce:
Pole jsou k dispozici | Rozsah omezení |
---|---|
startPk |
partitionKey >= startPk |
endPk |
partitionKey <= endPk |
startPk , startRk |
(partitionKey >startPk ) || (partitionKey == startPk && rowKey >= startRk ) |
endPk , endRk |
(partitionKey <endPk ) || (partitionKey == endPk && rowKey <= endRk ) |
Určení hloubky adresáře
Pokud je povolen hierarchický obor názvů a signedResource
pole určuje adresář (sr=d
), musíte také zadat signedDirectoryDepth
pole (sdd
), které označuje počet podadresářů v kořenovém adresáři. Hodnota sdd
pole musí být nezáporné celé číslo.
Například kořenový adresář https://{account}.blob.core.windows.net/{container}/
má hloubku 0. Každý podadresář v kořenovém adresáři přidá do hloubky o 1. https://{account}.blob.core.windows.net/{container}/d1/d2
Adresář má hloubku 2.
Toto pole je podporováno ve verzi 2020-02-10 nebo novější.
Zadání podepsaného identifikátoru
Když zadáte signedIdentifier
pole v identifikátoru URI, provážete zadaný sdílený přístupový podpis s odpovídajícími uloženými zásadami přístupu. Uložené zásady přístupu poskytují další míru kontroly nad jedním nebo několika sdílenými přístupovým podpisy, včetně možnosti v případě potřeby podpis odvolat. Každý kontejner, fronta, tabulka nebo sdílená složka může mít až pět uložených zásad přístupu.
Následující tabulka popisuje, jak odkazovat na podepsaný identifikátor v identifikátoru URI:
Název pole | Parametr dotazu | Popis |
---|---|---|
signedIdentifier |
si |
Nepovinný parametr. Jedinečná hodnota až 64 znaků, která koreluje se zásadami přístupu zadanými pro kontejner, frontu nebo tabulku. |
Uložené zásady přístupu obsahují podepsaný identifikátor, tedy hodnotu až 64 znaků, která je v rámci prostředku jedinečná. Můžete zadat hodnotu tohoto podepsaného identifikátoru signedidentifier
pro pole v identifikátoru URI sdíleného přístupového podpisu. Když v identifikátoru URI zadáte podepsaný identifikátor, přidružíte podpis k uloženým zásadám přístupu. Pokud chcete vytvořit zásady přístupu na úrovni kontejneru pomocí rozhraní REST API, přečtěte si téma Delegování přístupu pomocí sdíleného přístupového podpisu.
Určení oboru šifrování
Pomocí signedEncryptionScope
pole v identifikátoru URI můžete určit obor šifrování, který může klientská aplikace používat. Při nahrávání objektů blob (PUT) s tokenem SAS vynucuje šifrování na straně serveru se zadaným oborem šifrování. Operace GET a HEAD nebudou omezeny a provedeny jako dříve.
Následující tabulka popisuje, jak odkazovat na podepsaný obor šifrování u identifikátoru URI:
Název pole | Parametr dotazu | Popis |
---|---|---|
signedEncryptionScope |
ses |
Nepovinný parametr. Určuje obor šifrování, který se má použít k zašifrování obsahu požadavku. |
Toto pole je podporováno ve verzi 2020-12-06 nebo novější. Pokud přidáte před podporovanou ses
verzi, vrátí služba kód odpovědi na chybu 403 (Zakázáno).
Pokud nastavíte výchozí obor šifrování pro kontejner nebo systém souborů, ses
parametr dotazu respektuje zásady šifrování kontejneru. Pokud dojde k neshodě mezi parametrem ses
dotazu a x-ms-default-encryption-scope
hlavičkou a x-ms-deny-encryption-scope-override
hlavička je nastavená na true
, vrátí služba kód odpovědi na chybu 403 (Zakázáno).
Když v požadavku PUT zadáte x-ms-encryption-scope
hlavičku ses
a parametr dotazu, vrátí služba kód odpovědi na chybu 400 (Chybný požadavek), pokud dojde k neshodě.
Zadání podpisu
Část podpisu identifikátoru URI použijete k autorizaci požadavku vytvořeného se sdíleným přístupovým podpisem. Azure Storage používá k autorizaci SAS služby schéma autorizace sdíleného klíče.
Následující tabulka popisuje, jak zadat podpis v identifikátoru URI:
Název pole | Parametr dotazu | Popis |
---|---|---|
signature |
sig |
Řetězec typu string-to-sign je jedinečný řetězec, který je vytvořený z polí a který se musí ověřit, aby bylo možné žádost autorizovat. Podpis je kód ověřování zpráv založený na hodnotě hash (HMAC), který vypočítáte přes řetězec k podepsání a klíč pomocí algoritmu SHA256 a pak ho kódujete pomocí kódování Base64. |
Vytvoření řetězce podpisu
Pokud chcete vytvořit řetězec podpisu sdíleného přístupového podpisu, nejprve z polí, která tvoří požadavek, vytvořte řetězec k podpisu, zakódujte ho jako UTF-8 a pak podpis vypočítáte pomocí algoritmu HMAC-SHA256. Pole, která jsou součástí řetězce k podpisu, musí být dekódovaná adresa URL.
Verze z 6. 12. 2020 a novější
Verze 2020-12-06 přidává podporu pro pole podepsaného oboru šifrování. K vytvoření řetězce k podepsání prostředků služby Blob Storage použijte následující formát:
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" +
Verze z 9. 11. 2018 a novější
Verze 2018-11-09 přidává podporu pro pole času podepsaného prostředku a podepsaného snímku objektu blob. Tato pole musí být zahrnuta v řetězci k sign. K vytvoření řetězce k podepsání prostředků služby Blob Storage použijte následující formát:
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
Verze 2015-04-05 a novější
Verze 2015-04-05 přidává podporu pro pole podepsané IP adresy a podepsaného protokolu. Tato pole musí být zahrnuta v řetězci k sign. K vytvoření řetězce k podpisu pro službu Blob Storage nebo Azure Files prostředků použijte následující formát:
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
K vytvoření řetězce k podepsání prostředků služby Table Storage použijte následující formát:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion + "\n" +
startingPartitionKey + "\n"
startingRowKey + "\n"
endingPartitionKey + "\n"
endingRowKey
K vytvoření řetězce k podepsání pro prostředky Queue Storage použijte následující formát:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier + "\n" +
signedIP + "\n" +
signedProtocol + "\n" +
signedVersion
Verze 2013-08-15 až 2015-02-21
K vytvoření řetězce k podpisu pro službu Blob Storage nebo Azure Files prostředků pomocí verze 2013-08-15 až 2015-02-21 použijte následující formát. Pro Azure Files se SAS podporuje od verze 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
K vytvoření řetězce k podepsání tabulky použijte následující formát:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier + "\n" +
signedVersion + "\n" +
startPk + "\n" +
startRk + "\n" +
endPk + "\n" +
endRk
K vytvoření řetězce k podepsání pro frontu použijte následující formát:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier + "\n" +
signedVersion
Verze 2012-02-12
K vytvoření řetězce k sign pro prostředky služby Blob Storage pro verzi 2012-02-12 použijte následující formát:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier + "\n" +
signedVersion
Verze starší než 2012-02-12
K vytvoření řetězce k sign pro prostředky služby Blob Storage pro verze starší než 2012-02-12 použijte následující formát:
StringToSign = signedPermissions + "\n" +
signedStart + "\n" +
signedExpiry + "\n" +
canonicalizedResource + "\n" +
signedIdentifier
Při vytváření řetězce, který má být podepsán, mějte na paměti následující:
Pokud je pole volitelné a není zadané jako součást požadavku, zadejte pro toto pole prázdný řetězec. Nezapomeňte za prázdný řetězec přidat znak nového řádku (\n).
Řetězec k podpisu pro tabulku musí obsahovat další parametry, i když se jedná o prázdné řetězce.
Část
signedpermission
řetězce musí obsahovat označení oprávnění v pevném pořadí, které je specifické pro jednotlivé typy prostředků. Jakákoli kombinace těchto oprávnění je přijatelná, ale pořadí písmen oprávnění musí odpovídat pořadí v následující tabulce.Typ prostředku Pořadí oprávnění Objekt blob racwd Kontejner racwdl Fronta raup File Rcwd Sdílení rcwdl Tabulka raud Mezi příklady platných nastavení oprávnění pro kontejner patří
rw
, ,rd
rl
,wd
,wl
arl
. Mezi příklady neplatných nastavení patříwr
,lr
dr
, adw
. Zadání označení oprávnění více než jednou není povolené.Pokud požadavek přidružujete k uloženým zásadám přístupu, zadejte hodnotu
signedIdentifier
pro část řetězce.Sdílený přístupový podpis, který určuje verzi služby úložiště starší než 2012-02-12, může sdílet jenom objekt blob nebo kontejner a musí před ním vynechat
signedVersion
znak nového řádku.Část
canonicalizedResource
řetězce je kanonickou cestou k podepsanému prostředku. Musí obsahovat název služby (Blob Storage, Table Storage, Queue Storage nebo Azure Files) pro verzi 2015-02-21 nebo novější, název účtu úložiště a název prostředku a musí být dekódovaná adresa URL. Názvy objektů blob musí obsahovat kontejner objektu blob. Názvy tabulek musí být malé.
Kanonický řetězec prostředku pro kontejner, frontu, tabulku nebo sdílenou složku musí vynechat koncové lomítko (/) pro SAS, který poskytuje přístup k danému objektu.
Následující příklady ukazují, jak vytvořit canonicalizedResource
část řetězce v závislosti na typu prostředku.
Containers
Verze 2015-02-21 a novější:
URL = https://myaccount.blob.core.windows.net/music
canonicalizedResource = "/blob/myaccount/music"
Verze starší než 21. 2. 2015:
URL = https://myaccount.blob.core.windows.net/music
canonicalizedResource = "/myaccount/music"
Objekty blob
Verze 2015-02-21 a novější:
URL = https://myaccount.blob.core.windows.net/music/intro.mp3
canonicalizedResource = "/blob/myaccount/music/intro.mp3"
Verze starší než 21. 2. 2015:
URL = https://myaccount.blob.core.windows.net/music/intro.mp3
canonicalizedResource = "/myaccount/music/intro.mp3"
Sdílené složky
URL = https://myaccount.file.core.windows.net/music
canonicalizedResource = "/file/myaccount/music"
Soubory
URL = https://myaccount.file.core.windows.net/music/intro.mp3
canonicalizedResource = "/file/myaccount/music/intro.mp3"
Fronty
Verze 2015-02-21 a novější:
URL = https://myaccount.queue.core.windows.net/thumbnails
canonicalizedResource = "/queue/myaccount/thumbnails"
Verze starší než 21. 2. 2015:
URL = https://myaccount.queue.core.windows.net/thumbnails
canonicalizedResource = "/myaccount/thumbnails"
Tabulky
Pokud je podepsaným prostředkem tabulka, ujistěte se, že název tabulky je v kanonickém formátu malými písmeny.
Verze 2015-02-21 a novější:
URL = https://myaccount.table.core.windows.net/Employees(PartitionKey='Jeff',RowKey='Price')
canonicalizedResource = "/table/myaccount/employees"
Verze starší než 21. 2. 2015:
URL = https://myaccount.table.core.windows.net/Employees(PartitionKey='Jeff',RowKey='Price')
canonicalizedResource = "/myaccount/employees"
Životnost a odvolání sdíleného přístupového podpisu
Sdílené přístupové podpisy udělují uživatelům přístupová práva k prostředkům účtu úložiště. Při plánování použití sdíleného přístupového podpisu se zamyslete nad životností sdíleného přístupového podpisu a nad tím, jestli vaše aplikace nemusí za určitých okolností potřebovat odvolat přístupová práva.
Ad hoc SAS versus uložené zásady přístupu
Sas služby může mít jednu ze dvou forem:
Ad hoc SAS: Při vytváření ad hoc sdíleného přístupového podpisu se v identifikátoru URI SAS zadává počáteční čas, čas vypršení platnosti a oprávnění sas (nebo implikuje, pokud je čas spuštění vynechán). Ad hoc sdílený přístupový podpis může být libovolný typ sdíleného přístupového podpisu.
Životnost ad hoc sdíleného přístupového podpisu můžete spravovat pomocí
signedExpiry
pole . Pokud chcete klientovi udělit přístup k prostředku i po uplynutí doby vypršení platnosti, musíte vystavit nový podpis. Doporučujeme, abyste životnost sdíleného přístupového podpisu udržovali krátkou. Před verzí 2012-02-12 sdílený přístupový podpis nepřidružovaný k uloženým zásadám přístupu nemohl mít aktivní období, které přesahuje jednu hodinu.SAS s uloženými zásadami přístupu: Uložené zásady přístupu jsou definované pro kontejner prostředků, kterým může být kontejner objektů blob, tabulka, fronta nebo sdílená složka. Uložené zásady přístupu můžete použít ke správě omezení pro jeden nebo více sdílených přístupových podpisů. Když sas přidružíte k uložené zásadě přístupu, zdědí SAS omezení (tj. čas spuštění, čas vypršení platnosti a oprávnění), která jsou definovaná pro uložené zásady přístupu.
Uložené zásady přístupu jsou reprezentované polem
signedIdentifier
v identifikátoru URI. Uložené zásady přístupu poskytují další míru kontroly nad jedním nebo několika sdílenými přístupovým podpisy, včetně možnosti v případě potřeby podpis odvolat.
Odvolání sdíleného přístupového podpisu (SAS)
Vzhledem k tomu, že identifikátor URI SAS je adresa URL, může ho použít každý, kdo ho získá, bez ohledu na to, kdo ho původně vytvořil. Pokud se sdílený přístupový podpis publikuje veřejně, může ho používat kdokoli na světě. Sas uděluje přístup k prostředkům každému, kdo je vlastní, dokud se nestane jedna ze čtyř věcí:
Dojde k dosažení času vypršení platnosti zadaného u ad hoc sdíleného přístupového podpisu.
Doba vypršení platnosti zadaná u uložených zásad přístupu, na které odkazuje sdílený přístupový podpis, se dosáhne, pokud se odkazuje na uložené zásady přístupu a zásada přístupu určuje čas vypršení platnosti.
Čas vypršení platnosti je možné dosáhnout buď z důvodu uplynulého intervalu, nebo proto, že jste upravili uložené zásady přístupu tak, aby v minulosti měly čas vypršení platnosti, což je jeden ze způsobů, jak sdílený přístupový podpis odvolat.
Uložené zásady přístupu, na které sdílený přístupový podpis odkazuje, se odstraní, což sdílený přístupový podpis odvolá. Pokud Azure Storage nemůže najít uložené zásady přístupu zadané ve sdíleném přístupovém podpisu, klient nebude mít přístup k prostředku označenému identifikátorem URI.
Pokud znovu vytvoříte uložené zásady přístupu s přesně stejným názvem jako odstraněné zásady, budou všechny existující tokeny SAS znovu platné podle oprávnění přidružených k této uložené zásadě přístupu. Předpokládá se, že neuplynula doba vypršení platnosti sas. Pokud máte v úmyslu sdílený přístupový podpis odvolat, nezapomeňte při opětovném vytváření zásad přístupu s časem vypršení platnosti v budoucnu použít jiný název.
Klíč účtu použitý k vytvoření sdíleného přístupového podpisu se vygeneruje znovu. Opětovné vygenerování klíče účtu způsobí, že všechny komponenty aplikace, které tento klíč používají, se nepodaří autorizovat, dokud nebudou aktualizovány tak, aby používaly jiný platný klíč účtu nebo nově vygenerovaný klíč účtu. Opětovné vygenerování klíče účtu je jediný způsob, jak okamžitě odvolat ad hoc sdílený přístupový podpis.
Důležité
Identifikátor URI sdíleného přístupového podpisu je přidružený ke klíči účtu, který se používá k vytvoření podpisu, a přidruženým uloženým zásadám přístupu ( pokud jsou k dispozici). Pokud nejsou zadané žádné uložené zásady přístupu, je jediným způsobem, jak odvolat sdílený přístupový podpis, změna klíče účtu.
Jako osvědčený postup doporučujeme použít uložené zásady přístupu se sdíleným přístupovým podpisem služby. Pokud se rozhodnete nepoužívat uložené zásady přístupu, nezapomeňte zachovat krátkou dobu platnosti ad hoc sdíleného přístupového podpisu. Další informace o přidružení SAS služby k uloženým zásadám přístupu najdete v tématu Definování uložených zásad přístupu.
Příklad SAS služby
Následující příklad ukazuje identifikátor URI objektu blob s připojeným tokenem SAS služby. Token SAS služby poskytuje objektu blob oprávnění ke čtení a zápisu.
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>
Jednotlivé části identifikátoru URI jsou popsané v následující tabulce:
Name | Část SAS | Description |
---|---|---|
Identifikátor URI prostředku | https://myaccount.blob.core.windows.net/sascontainer/blob1.txt |
Adresa objektu blob. Důrazně doporučujeme používat protokol HTTPS. |
Oddělovač | ? |
Oddělovač, který předchází řetězci dotazu. Oddělovač není součástí tokenu SAS. |
Oprávnění | sp=rw |
Mezi oprávnění udělená SAS patří čtení (r) a zápis (w). |
Čas spuštění | st=2023-05-24T01:13:55Z |
Zadané v čase UTC. Pokud chcete, aby sdílený přístupový podpis byl platný okamžitě, vynechte počáteční čas. |
Čas vypršení platnosti | se=2023-05-24T09:13:55Z |
Zadané v čase UTC. |
Rozsah IP adres | sip=168.1.5.60-168.1.5.70 |
Rozsah IP adres, ze kterých bude žádost přijata. |
Protokol | spr=https |
Povolené jsou jenom požadavky, které používají PROTOKOL HTTPS. |
Verze služby Azure Storage | sv=2023-05-24 |
Pro Azure Storage verze 2012-02-12 a novější označuje tento parametr verzi, která se má použít. |
Prostředek | sr=b |
Prostředek je objekt blob. |
Podpis | sig=<signature> |
Slouží k autorizaci přístupu k objektu blob. Podpis je HMAC vypočítaný přes řetězec k podepsání a klíč pomocí algoritmu SHA256 a pak kódovaný pomocí kódování Base64. |