Sdílet prostřednictvím


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.

Diagram prvků parametru adresy URL sdíleného přístupového podpisu

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 2

startRk 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 2

endRk 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, endPka 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, wla rl. Mezi příklady neplatných nastavení patří wr, lrdr, 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, endPka 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á endRkse , 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, rdrl, , wd, wla rl. Mezi příklady neplatných nastavení patří wr, lrdr, a dw. 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.

Viz také