Vytvoření SAS služby
Důležité
Pro zajištění optimálního zabezpečení Microsoft doporučuje používat Microsoft Entra ID se spravovanými identitami k autorizaci požadavků na data objektů blob, front a tabulek, kdykoli je to možné. Autorizace s využitím Microsoft Entra ID a spravovaných identit poskytuje vynikající zabezpečení a snadné použití oproti autorizaci pomocí sdíleného klíče. Další informace najdete v tématu Autorizace pomocí Microsoft Entra ID. Další informace o spravovaných identitách najdete v tématu Co jsou spravované identity pro prostředky Azure.
Pro prostředky hostované mimo Azure, jako jsou místní aplikace, můžete použít spravované identity prostřednictvím služby Azure Arc. Například aplikace spuštěné na serverech s podporou Azure Arc můžou používat spravované identity pro připojení ke službám Azure. Další informace najdete v tématu Ověřování prostředků Azure na serverech s podporou Azure Arc.
Pro scénáře, ve kterých se používají sdílené přístupové podpisy (SAS), Microsoft doporučuje použít SAS delegování uživatele. SAS delegování uživatele je zabezpečené pomocí přihlašovacích údajů Microsoft Entra místo klíče účtu. Informace o sdílených přístupových podpisech najdete v tématu Create SAS delegování uživatele.
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 pro SAS na úrovni služby se skládá z identifikátoru URI prostředku, ke kterému bude SAS delegovat přístup, následovaného tokenem 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á klient přístup, udělená oprávnění a časové období platnosti podpisu.
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 přidružený k požadavku.
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 sdílený přístupový podpis před škodlivým nebo nezamýšlený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 sdíleného přístupového podpisu. 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 se zabezpečuje pomocí klíče účtu úložiště. Když vytvoříte SAS účtu, klientská aplikace musí mít 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 verze autorizace (sv
) 2020-02-10 nebo novější a je povolený hierarchický obor názvů. Sémantika oboru adresáře (sr=d
) je podobná sémantice 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ý parametr dotazu, sdd
vyžaduje se také parametr dotazu.
Formát řetězce k podpisu pro autorizaci verze 2020-02-10 se nezměnil.
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.
signedVersion
Zadání pole
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 pomocí tohoto sdíleného přístupového podpisu.
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ších. Verze služby úložiště, která se použije 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 služba Blob Storage nepoužívá, použije 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 měl záviset na verzích, kterým rozumí klientský software, který vytváří požadavky služby úložiště.
Zadejte podepsaný prostředek (jenom Blob Storage).
Pole Povinné signedResource
(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 | 9. 11. 2018 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 | 9. 11. 2018 a novější | Udělí přístup k obsahu a metadatům snímku objektu blob, ale ne základnímu objektu blob. |
Kontejner | c | Vše | Uděluje 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 zadán adresář, vyžaduje se signedDirectoryDepth také parametr (sdd ). Adresář je vždy vnořený do 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 sdílený prostředek 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 získá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 získáte 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. |
Zadání parametrů dotazu pro přepsání hlaviček odpovědi (pouze 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. |
Určení zásad přístupu
Část identifikátoru URI zásad přístupu označuje časové období, během kterého je sdílený přístupový podpis platný, a oprávnění, která se mají udělit uživateli. Čá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 je tento parametr vynechán, použije se jako čas zahájení aktuální čas UTC. Ve verzích starších než 2012-02-12 může doba trvání mezi signedStart a signedExpiry překročit jednu hodinu, pokud se nepoužije zásada kontejneru. Další informace o přijatých formátech UTC najdete v tématu Formátování hodnot data a času. |
signedExpiry |
se |
Povinná hodnota. Čas, kdy se sdílený přístupový podpis stane neplatným, vyjádřený v jednom z přijatých formátů ISO 8601 UTC. Toto pole musíte vynechat, pokud je zadané v přidružených uložených zásadách přístupu. Další informace o přijatých formátech UTC najdete v tématu Formátování hodnot data a času. |
signedPermissions
1 |
sp |
Povinná hodnota. Oprávnění přidružená 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 je zadané v přidružených uložených zásadách přístupu. |
startPk
2startRk
2 |
spk srk |
Pouze table Storage. Nepovinný, ale startPk musí doprovázet startRk . Minimální klíče oddílů a řádků, které jsou přístupné pomocí tohoto sdíleného přístupového podpisu. Klíčové hodnoty jsou inkluzivní. Pokud jsou vynechány, není v entitách tabulky, ke kterým je možné přistupovat, žádná dolní mez. |
endPk
2endRk
2 |
epk erk |
Pouze table Storage. Nepovinný, 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 jsou vynechány, není v entitách tabulky žádná horní mez, ke které je možné přistupovat. |
1 Pole signedPermissions
se vyžaduje v 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.
Můžete zkombinovat oprávnění, která klientovi umožní provádět více operací se stejným SAS. Při vytváření SAS musíte zahrnout oprávnění v následujícím pořadí:
racwdxltmeop
Mezi příklady platných nastavení oprávnění pro kontejner patří rw
, rd
, rl
, wd
, wl
a rl
. Mezi příklady neplatných nastavení patří wr
, lr
dr
, a dw
. Označení oprávnění není možné zadat více než jednou.
Sas služby nemůže udělit přístup k určitým operacím:
- Kontejnery, fronty a tabulky se nedají 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í pronajmout.
K vytvoření SAS, který uděluje přístup k těmto operacím, použijte SAS účtu. Další informace najdete v tématu Create 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 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 každý typ prostředku jsou popsaná 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 | Create nebo zapište obsah, vlastnosti, metadata nebo seznam blokovaných. Snímek nebo zapůjčení objektu blob Změna velikosti objektu blob (jenom objekt blob stránky) Jako cíl operace kopírování použijte objekt blob. |
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í odstranit 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 |
2019-12-12 a novější | Odstranění verze objektu blob |
Trvalé odstranění | y | Objekt blob | 2020-02-10 a novější | Trvale odstraňte snímek nebo verzi objektu blob. |
Seznam | l | Kontejner Directory |
Vše | Vypíše objekty blob bez rekurzivního zobrazení. |
Značky | t | Objekt blob | 2019-12-12 a novější | Čtení nebo zápis značek v objektu blob |
Vyhledávání | f | Kontejner | 2019-12-12 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 lze 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ělí toto oprávnění možnost nastavit vlastnící skupinu, oprávnění POSIX a seznam ACL POSIX objektu blob. nepovoluje volajícímu číst uživatelem definovaná metadata. |
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ů, toto oprávnění umožňuje 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 |
2020-06-12 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 | Create nový soubor nebo zkopírujte soubor do nového souboru. |
Write | w | Create nebo psát obsah, vlastnosti, metadata. Změňte velikost souboru. Jako cíl operace kopírování použijte soubor. |
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 | Create nový soubor ve sdílené složce 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. Jako cíl operace kopírování použijte soubor. 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í SAS 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 | Výpis souborů a adresářů 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 ve zprávách. |
Přidání | pro | Přidejte zprávy do fronty. |
Aktualizace | u | Aktualizujte zprávy ve frontě. Poznámka: Použijte oprávnění Pro zpracování 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 volitelné signedIp
pole (sip
) veřejnou IP adresu nebo rozsah veřejných IP adres, ze kterých se mají přijímat požadavky. Pokud IP adresa, ze které požadavek pochází, neodpovídá IP adrese nebo rozsahu adres zadaným v tokenu SAS, požadavek není autorizovaný. Podporují se jenom adresy IPv4.
Když zadáváte rozsah IP adres, všimněte si, že rozsah je včetně. Například zadáním sip=168.1.5.65
nebo sip=168.1.5.60-168.1.5.70
na 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 poskytnutý klientovi v tomto scénáři 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 Azure Storage ze stejné oblasti vždy probíhají 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 poskytnutý klientovi v tomto scénáři může obsahovat veřejnou IP adresu nebo rozsah adres pro pole signedIp . Požadavek vytvořený pomocí SAS 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 poskytnutý klientovi v tomto scénáři může obsahovat veřejnou IP adresu nebo rozsah adres pro pole signedIp . Požadavek vytvořený pomocí SAS musí pocházet ze zadané IP adresy nebo rozsahu adres.Pokud požadavek prochází přes proxy server nebo bránu, zadejte pro pole veřejnou odchozí IP adresu tohoto proxy serveru nebo brány signedIp . |
Zadejte protokol 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
. Všimněte si, ž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ženy ke sdílenému přístupovém podpisu. Dotazy tabulek vrací pouze výsledky, které jsou v daném rozsahu, a pokusy o přidání, aktualizaci nebo odstranění entit mimo tento rozsah pomocí sdíleného přístupového podpisu selžou.
Pokud startPk
se rovná endPk
, sdílený přístupový podpis autorizuje přístup k entitám pouze v jednom oddílu tabulky.
Pokud startPk
se rovná endPk
a startRk
rovná endRk
se , má sdílený přístupový podpis přístup pouze k jedné entitě v jednom oddílu.
Informace o tom, jak tato pole omezují přístup k entitě 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. Adresář https://{account}.blob.core.windows.net/{container}/d1/d2
má hloubku 2.
Toto pole je podporováno ve verzi 2020-02-10 nebo novější.
Určení 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 více 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ůžou mít až pět uložených zásad přístupu.
Následující tabulka popisuje, jak odkazovat na podepsaný identifikátor 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, které jsou zadané pro kontejner, frontu nebo tabulku. |
Uložené zásady přístupu obsahují podepsaný identifikátor, 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 ho 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í rozsahu šifrování
Pomocí signedEncryptionScope
pole v identifikátoru URI můžete zadat obor šifrování, který může klientská aplikace používat. Při nahrávání objektů blob (PUT) pomocí tokenu SAS vynucuje šifrování na straně serveru se zadaným oborem šifrování. Operace GET a HEAD nebudou omezeny a provedeny jako předtím.
Následující tabulka popisuje, jak odkazovat na podepsaný obor šifrování na identifikátoru URI:
Název pole | Parametr dotazu | Popis |
---|---|---|
signedEncryptionScope |
ses |
Nepovinný parametr. Označuje rozsah šifrování, který se má použít k š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 x-ms-deny-encryption-scope-override
a 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ě.
Určení podpisu
Část identifikátoru URI podpisu použijete k autorizaci požadavku vytvořeného se sdíleným přístupovým podpisem. Azure Storage k autorizaci SAS služby používá 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 podpisu a klíč pomocí algoritmu SHA256 a pak 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, zakódujte řetězec jako UTF-8 a pak vypočítáte podpis pomocí algoritmu HMAC-SHA256. Pole, která jsou zahrnutá v řetězci k podpisu, musí být dekódována adresou URL.
Verze 2020-12-06 a novější
Verze 2020-12-06 přidává podporu pro pole podepsaného oboru šifrování. K vytvoření řetězce k podpisu pro prostředky 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 2018-11-09 a novější
Verze 2018-11-09 přidává podporu pro pole s časem podepsaného prostředku a podepsaného snímku objektu blob. Tato pole musí být zahrnuta v řetězci typu string-to-sign. K vytvoření řetězce k podpisu pro prostředky 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 typu string-to-sign. K vytvoření řetězce k podpisu pro prostředky Blob Storage nebo Azure Files 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 sign pro prostředky 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 podpisu 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
Pokud chcete vytvořit řetězec-to-sign pro Blob Storage nebo Azure Files prostředky 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 podpisu pro tabulku 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 sign 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 podpisu pro prostředky 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ž 12. 2012
Pokud chcete vytvořit řetězec k podpisu 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ý se má podepsat, mějte na paměti následující:
Pokud je pole volitelné a není součástí požadavku, zadejte pro toto pole prázdný řetězec. Nezapomeňte za prázdný řetězec zahrnout znak nového řádku (\n).
Řetězec-znak pro tabulku musí obsahovat další parametry, i když se jednat 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 každý typ prostředku. 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í povoleno.Pokud žádost přidružujete k uloženým zásadám přístupu, zadejte hodnotu pro
signedIdentifier
čá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é.
Řetězec kanonalizovaného 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
Pro verzi 2015-02-21 a novější:
URL = https://myaccount.blob.core.windows.net/music
canonicalizedResource = "/blob/myaccount/music"
Verze starší než 21. 2015:
URL = https://myaccount.blob.core.windows.net/music
canonicalizedResource = "/myaccount/music"
Objekty blob
Pro verzi 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. 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
Pro verzi 2015-02-21 a novější:
URL = https://myaccount.queue.core.windows.net/thumbnails
canonicalizedResource = "/queue/myaccount/thumbnails"
Verze starší než 21. 2015:
URL = https://myaccount.queue.core.windows.net/thumbnails
canonicalizedResource = "/myaccount/thumbnails"
Tabulky
Pokud je podepsaným zdrojem tabulka, ujistěte se, že je název tabulky malými písmeny v kanonizovaném formátu.
Pro verzi 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. 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ě. Když plánujete používat SAS, zamyslete se nad životností sas a o tom, jestli vaše aplikace nemusí za určitých okolností odvolávat 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: Když vytvoříte ad hoc SAS, čas zahájení, čas vypršení platnosti a oprávnění pro SAS jsou zadány v identifikátoru URI SAS (nebo implicitně, pokud je čas spuštění vynechán). Libovolný typ SAS může být ad hoc SAS.
Životnost ad hoc SAS můžete spravovat pomocí
signedExpiry
pole. Pokud chcete klientovi udělit přístup k prostředku i po vypršení platnosti, musíte vydat nový podpis. Doporučujeme, abyste měli krátkou životnost sdíleného přístupového podpisu. Před verzí 2012-02-12 nemohl sdílený přístupový podpis, který není přidružený k uloženým zásadám přístupu, mít aktivní období, které přesáhlo 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ž přidružíte SAS k uložené zásadě přístupu, zdědí SAS omezení (tj. čas zahájení, čas vypršení platnosti a oprávnění), která jsou definována pro uložené zásady přístupu.
Uložené zásady přístupu jsou reprezentovány polem
signedIdentifier
v identifikátoru URI. Uložené zásady přístupu poskytují další míru kontroly nad jedním nebo více sdílenými přístupovým podpisy, včetně možnosti v případě potřeby podpis odvolat.
Odvolání 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 je sdílený přístupový podpis publikovaný veřejně, může ho používat kdokoli na světě. Sas uděluje přístup k prostředkům komukoli, kdo ho vlastní, dokud se nestane jedna ze čtyř věcí:
Dosáhne se č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 sas, se dosáhne, pokud se odkazuje na uloženou zásadu přístupu a zásada přístupu určuje čas vypršení platnosti.
Doba vypršení platnosti může být dosažena 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 jedním ze způsobů odvolání sdíleného přístupového podpisu.
Uložená zásada přístupu, na kterou odkazuje SAS, se odstraní, což ho odvolá. Pokud Azure Storage nemůže najít uložené zásady přístupu, které jsou zadané ve sdíleném přístupovém podpisu, klient nebude mít přístup k prostředku, který je označen 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 chcete sdílený přístupový podpis odvolat, nezapomeňte při opětovném vytvoření zásad přístupu s časem vypršení platnosti v budoucnu použít jiný název.
Klíč účtu, který byl použit k vytvoření SAS, se vygeneruje. 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ým způsobem, jak okamžitě odvolat ad hoc sas.
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, jediným způsobem, jak odvolat sdílený přístupový podpis, je změnit klíč účtu.
Jako osvědčený postup doporučujeme použít uložené zásady přístupu se sas služby. Pokud se rozhodnete nepoužívat uložené zásady přístupu, nezapomeňte zachovat krátkou dobu platnosti ad hoc SAS. 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 oprávnění ke čtení a zápisu objektu blob.
https://myaccount.blob.core.windows.net/sascontainer/blob1.txt?sp=rw&st=2023-05-24T01:13:55Z&se=2023-05-24T09:13:55Z&sip=168.1.5.60-168.1.5.70&spr=https&sv=2022-11-02&sr=b&sig=<signature>
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 HTTPS. |
Oddělovač | ? |
Oddělovač, který předchází řetězci dotazu. Oddělovač není součástí tokenu SAS. |
Oprávnění | sp=rw |
Oprávnění udělená SAS zahrnují čtení (r) a zápis (w). |
Čas spuštění | st=2023-05-24T01:13:55Z |
Zadané v čase UTC. Pokud chcete, aby byl SAS 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 požadavek přijat. |
Protokol | spr=https |
Povolené jsou jenom požadavky, které používají 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, který se vypočítává přes řetězec k podpisu a klíč pomocí algoritmu SHA256 a pak se kóduje pomocí kódování Base64. |