Udělení omezeného přístupu k prostředkům Azure Storage pomocí sdílených přístupových podpisů

Sdílený přístupový podpis (SAS) poskytuje zabezpečený delegovaný přístup k prostředkům ve vašem účtu úložiště. Pomocí sdíleného přístupového podpisu máte podrobnou kontrolu nad tím, jak může klient přistupovat k vašim datům. Příklad:

  • K jakým prostředkům má klient přístup.

  • Jaká oprávnění k těmto prostředkům mají.

  • Jak dlouho je SAS platný.

Typy sdílených přístupových podpisů

Azure Storage podporuje tři typy sdílených přístupových podpisů:

  • SAS delegování uživatele

  • SAS služby

  • SAS účtu

SAS delegování uživatele

SAS delegování uživatele je zabezpečen pomocí přihlašovacích údajů Microsoft Entra a také oprávněními zadanými pro SAS. SAS delegování uživatele se vztahuje pouze na úložiště objektů blob.

Další informace o SAS delegování uživatele najdete v tématu Vytvoření SAS delegování uživatele (REST API).

SAS služby

Sas služby je zabezpečený pomocí klíče účtu úložiště. SAS služby deleguje přístup k prostředku pouze v jedné ze služeb Azure Storage: Blob Storage, Queue Storage, Table Storage nebo Azure Files.

Další informace o SAS služby najdete v tématu Vytvoření SAS služby (REST API).

SAS účtu

Sdílený přístupový podpis účtu je zabezpečený pomocí klíče účtu úložiště. SAS účtu deleguje přístup k prostředkům v jedné nebo více službách úložiště. Všechny operace dostupné prostřednictvím SAS delegování služby nebo uživatele jsou dostupné také prostřednictvím sdíleného přístupového podpisu účtu.

Můžete také delegovat přístup k následujícímu:

  • Operace na úrovni služby (například operace Get/Set Service Properties a Get Service Stats ).

  • Operace čtení, zápisu a odstranění, které nejsou povolené pomocí sdíleného přístupového podpisu služby

Další informace o SAS účtu potřebujete vytvořit SAS účtu (REST API).

Poznámka:

Microsoft doporučuje používat přihlašovací údaje Microsoft Entra, pokud je to možné jako osvědčený postup zabezpečení, a ne používat klíč účtu, který může být snadněji ohrožen. Když návrh aplikace vyžaduje sdílený přístupový podpis pro přístup k úložišti objektů blob, použijte přihlašovací údaje Microsoft Entra k vytvoření SAS delegování uživatele, pokud je to možné pro zajištění vyššího zabezpečení. Další informace najdete v tématu Autorizace přístupu k datům ve službě Azure Storage.

Sdílený přístupový podpis může mít jeden z následujících dvou formulářů:

  • Ad hoc SAS. Při vytváření jednorázového sdíleného přístupového podpisu se v identifikátoru URI SAS zadává počáteční čas, doba vypršení platnosti a oprávnění. Libovolný typ SAS může být ad hoc SAS.

  • Sas služby s uloženými zásadami přístupu Uložené zásady přístupu se definují v kontejneru prostředků, což může být kontejner objektů blob, tabulka, fronta nebo sdílená složka. Uložené zásady přístupu se dají použít ke správě omezení pro jeden nebo více sdílených přístupových podpisů služby. Když přidružíte SAS služby k uloženým zásadám přístupu, sas dědí omezení – čas spuštění, čas vypršení platnosti a oprávnění – definované pro uložené zásady přístupu.

Poznámka:

SAS delegování uživatele nebo SAS účtu musí být sdílený přístupový podpis ad hoc. Uložené zásady přístupu nejsou podporovány pro SAS delegování uživatele nebo SAS účtu.

Jak funguje sdílený přístupový podpis

Sdílený přístupový podpis je token, který se připojí k identifikátoru URI prostředku služby Azure Storage. Token, který obsahuje speciální sadu parametrů dotazu, které označují, jak mohou být prostředky přístupné klientem. Jeden z parametrů dotazu, podpis, je vytvořen z parametrů SAS a podepsán pomocí klíče, který byl použit k vytvoření SAS. Tento podpis používá Azure Storage k autorizaci přístupu k prostředku úložiště.

Poznámka:

Není možné auditovat generování tokenů SAS. Každý uživatel, který má oprávnění k vygenerování tokenu SAS buď pomocí klíče účtu, nebo prostřednictvím přiřazení role Azure, to může udělat bez znalosti vlastníka účtu úložiště. Dávejte pozor, abyste omezili oprávnění, která uživatelům umožňují generovat tokeny SAS. Pokud chcete uživatelům zabránit v generování sdíleného přístupového podpisu podepsaného klíčem účtu pro úlohy objektů blob a front, můžete zakázat přístup ke sdílenému klíči k účtu úložiště. Další informace naleznete v tématu Zabránění autorizaci pomocí sdíleného klíče.

Podpis a autorizace SAS

Token SAS můžete podepsat pomocí klíče delegování uživatele nebo pomocí klíče účtu úložiště (sdílený klíč).

Podepsání tokenu SAS pomocí klíče delegování uživatele

Token SAS můžete podepsat pomocí klíče delegování uživatele, který byl vytvořen pomocí přihlašovacích údajů Microsoft Entra. Sas delegování uživatele je podepsaný klíčem delegování uživatele.

Pokud chcete získat klíč a pak vytvořit SAS, musí být instančnímu objektu zabezpečení Microsoft Entra přiřazena role Azure, která zahrnuje danou Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey akci. Další informace najdete v tématu Vytvoření SAS delegování uživatele (REST API).

Podepsání tokenu SAS pomocí klíče účtu

Sas služby i SAS účtu jsou podepsané klíčem účtu úložiště. Pokud chcete vytvořit SAS, který je podepsaný pomocí klíče účtu, musí mít aplikace přístup k klíči účtu.

Pokud požadavek obsahuje token SAS, je tento požadavek autorizovaný na základě způsobu podepsání tokenu SAS. Azure Storage také používá přístupový klíč nebo přihlašovací údaje, které používáte k vytvoření tokenu SAS, k udělení přístupu klientovi, který má SAS.

Následující tabulka shrnuje, jak je každý typ tokenu SAS autorizovaný.

Typ SAS Typ autorizace
SAS delegování uživatele (pouze úložiště objektů blob) Microsoft Entra ID
SAS služby Sdílený klíč
SAS účtu Sdílený klíč

Microsoft doporučuje používat SAS delegování uživatele, pokud je to možné pro zajištění vyššího zabezpečení.

Token SAS

Token SAS je řetězec, který vygenerujete na straně klienta, například pomocí jedné z klientských knihoven Azure Storage. Token SAS není žádným způsobem sledován službou Azure Storage. Na straně klienta můžete vytvořit neomezený počet tokenů SAS. Po vytvoření sdíleného přístupového podpisu ho můžete distribuovat klientským aplikacím, které vyžadují přístup k prostředkům ve vašem účtu úložiště.

Klientské aplikace poskytují identifikátor URI SAS službě Azure Storage jako součást požadavku. Pak služba zkontroluje parametry SAS a podpis, aby ověřila, že je platná. Pokud služba ověří, že podpis je platný, je žádost autorizována. V opačném případě se požadavek odmítne s kódem chyby 403 (Zakázáno).

Tady je příklad identifikátoru URI SAS služby, který zobrazuje identifikátor URI prostředku, znak oddělovače (?) a token SAS.

Diagram showing the components of a resource URI with SAS token.

Poznámka:

Znak oddělovače (?) řetězce dotazu není součástí tokenu SAS. Pokud vygenerujete token SAS z portálu, PowerShellu, Azure CLI nebo některé ze sad SDK služby Azure Storage, budete možná muset k adrese URL prostředku připojit znak oddělovače.

Kdy použít sdílený přístupový podpis

Pomocí sdíleného přístupového podpisu získáte zabezpečený přístup k prostředkům ve vašem účtu úložiště všem klientům, kteří k těmto prostředkům jinak nemají oprávnění.

Běžným scénářem, kdy je sdílený přístupový podpis užitečný, je služba, ve které uživatelé čtou a zapisují vlastní data do vašeho účtu úložiště. Ve scénáři, kde účet úložiště ukládá data uživatelů, existují dva typické modely návrhu:

  1. Klienti nahrávají a stahují data přes front-endovou proxy službu, která provádí ověřování. Tato front-endová služba proxy umožňuje ověřování obchodních pravidel. U velkých objemů dat nebo transakcí s velkým objemem však může být vytvoření služby, která se může škálovat tak, aby odpovídala poptávce, nákladná nebo obtížná.

    Scenario diagram: Front-end proxy service

  2. Zjednodušená služba podle potřeby ověří klienta a potom vygeneruje sdílený přístupový podpis. Jakmile klientská aplikace obdrží SAS, může přistupovat k prostředkům účtu úložiště přímo. Přístupová oprávnění jsou definována sdíleným přístupovým podpisem a pro interval povolený sas. Sdílený přístupový podpis snižuje potřebu směrování všech dat přes front-endovou proxy službu.

    Scenario diagram: SAS provider service

Mnoho reálných služeb může používat hybridní z těchto dvou přístupů. Některá data se například můžou zpracovávat a ověřovat prostřednictvím front-endového proxy serveru. Jiná data se ukládají nebo čtou přímo pomocí SAS.

Kromě toho se vyžaduje sas pro autorizaci přístupu ke zdrojovému objektu v operaci kopírování v určitých scénářích:

  • Když zkopírujete objekt blob do jiného objektu blob, který se nachází v jiném účtu úložiště.

    Volitelně můžete použít SAS k autorizaci přístupu k cílovému objektu blob.

  • Když zkopírujete soubor do jiného souboru, který se nachází v jiném účtu úložiště.

    Volitelně můžete použít SAS k autorizaci přístupu k cílovému souboru.

  • Při kopírování objektu blob do souboru nebo souboru do objektu blob.

    Sdílený přístupový podpis musíte použít i v případě, že se zdrojové a cílové objekty nacházejí ve stejném účtu úložiště.

Osvědčené postupy při používání SAS

Když ve svých aplikacích používáte sdílené přístupové podpisy, musíte mít na paměti dvě potenciální rizika:

  • Pokud dojde k úniku sdíleného přístupového podpisu, může ho použít kdokoli, kdo ho získá, což může potenciálně ohrozit váš účet úložiště.

  • Pokud vyprší platnost sdíleného přístupového podpisu poskytnutého klientské aplikaci a aplikace nemůže z vaší služby načíst nový SAS, může to bránit funkce aplikace.

Následující doporučení pro používání sdílených přístupových podpisů vám můžou pomoct zmírnit tato rizika:

  • K vytvoření nebo distribuci sdíleného přístupového podpisu vždy používejte HTTPS . Pokud se SAS předává přes protokol HTTP a zachytí se, útočník provádějící útok typu man-in-the-middle dokáže sas přečíst. Pak můžou tento SAS použít stejně jako zamýšlený uživatel. To může potenciálně ohrozit citlivá data nebo umožnit poškození dat uživatelem se zlými úmysly.

  • Pokud je to možné, použijte SAS delegování uživatele. SAS delegování uživatele poskytuje vynikající zabezpečení sas služby nebo sdíleného přístupového podpisu účtu. SAS delegování uživatele je zabezpečen pomocí přihlašovacích údajů Microsoft Entra, takže klíč účtu nemusíte ukládat s kódem.

  • Máte pro SDÍLENÝ přístupový podpis zavedený plán odvolání. Ujistěte se, že jste připraveni reagovat, pokud dojde k ohrožení sdíleného přístupového podpisu.

  • Nakonfigurujte zásadu vypršení platnosti SAS pro účet úložiště. Zásada vypršení platnosti SAS určuje doporučený interval, ve kterém je SAS platný. Zásady vypršení platnosti SAS se vztahují na SAS služby nebo SAS účtu. Když uživatel vygeneruje SAS služby nebo SAS účtu s intervalem platnosti, který je větší než doporučený interval, zobrazí se mu upozornění. Pokud je povolené protokolování služby Azure Storage pomocí služby Azure Monitor, zapíše se položka do protokolů služby Azure Storage. Další informace najdete v tématu Vytvoření zásady vypršení platnosti pro sdílené přístupové podpisy.

  • Vytvořte uložené zásady přístupu pro SAS služby. Uložené zásady přístupu umožňují odvolat oprávnění pro sdílený přístupový podpis služby, aniž byste museli znovu vygenerovat klíče účtu úložiště. Nastavte vypršení platnosti těchto velmi daleko v budoucnu (nebo nekonečné) a ujistěte se, že je pravidelně aktualizován, aby se přesunul dál do budoucnosti. Pro každý kontejner platí limit pěti uložených zásad přístupu.

  • U sdíleného přístupového podpisu nebo sdíleného přístupového podpisu účtu účtu nebo sas služby AD hoc používejte časy vypršení platnosti v blízké době. Tímto způsobem platí i v případě ohrožení sdíleného přístupového podpisu ( SAS) jen na krátkou dobu. Tento postup je zvlášť důležitý, pokud nemůžete odkazovat na uložené zásady přístupu. Doba vypršení platnosti v blízké době také omezuje množství dat, která se dají zapsat do objektu blob, tím, že omezíte dobu dostupnou k nahrání do objektu blob.

  • Pokud je to potřeba, požádejte klienty, aby sas automaticky obnovili. Klienti by měli sas prodloužit před vypršením platnosti, aby umožnili dobu opakování, pokud služba poskytující SAS není k dispozici. Vněkterýchch Můžete například chtít, aby se sdílený přístupový podpis používal pro malý počet okamžitých krátkodobých operací. Očekává se, že se tyto operace dokončí během období vypršení platnosti. V důsledku toho neočekáváte obnovení sdíleného přístupového podpisu. Pokud ale máte klienta, který pravidelně provádí požadavky prostřednictvím SAS, může do hry dojít k vypršení platnosti.

  • Buďte opatrní při počátečním čase SAS. Pokud nastavíte čas spuštění sas na aktuální čas, může k selháním dojít přerušovaně po dobu prvních několika minut. Důvodem je to, že různé počítače mají mírně odlišné aktuální časy (označované jako nerovnoměrná distribuce hodin). Obecně platí, že počáteční čas bude v minulosti alespoň 15 minut. Nebo ho vůbec nenastavujte, aby byl platný okamžitě ve všech případech. Totéž obecně platí i pro dobu vypršení platnosti – pamatujte si, že v libovolné žádosti můžete pozorovat až 15 minut nerovnoměrné distribuce hodin v obou směrech. Pro klienty používající verzi REST starší než 2012-02-12 je maximální doba trvání sas, která neodkazuje na uložené zásady přístupu, 1 hodinu. Všechny zásady, které určují delší dobu než 1 hodinu, selžou.

  • Buďte opatrní s formátem data a času SAS. U některých nástrojů (například AzCopy) musí být hodnoty data a času formátované jako +%Y-%m-%dT%H:%M:%SZ. Tento formát obsahuje konkrétně sekundy.

  • Udělte nejnižší možná oprávnění sas. Osvědčeným postupem zabezpečení je poskytnout uživateli minimální požadovaná oprávnění k nejmenším možným prostředkům. Pokud je to možné, použijte SAS jen pro čtení. Pokud uživatel potřebuje přístup jen pro čtení k jednomu objektu, udělte mu přístup pro čtení k danému jedinému objektu, a ne ke čtení, zápisu nebo odstranění přístupu ke všem objektům. To také pomáhá zmenšit poškození v případě ohrožení sdíleného přístupového podpisu, protože sas má v rukou útočníka méně výkonu.

    Neexistuje žádný přímý způsob, jak identifikovat, kteří klienti přistupovali k prostředku. Ke sledování přístupu ale můžete použít jedinečná pole v SAS, podepsanou IP adresu (sip), začátek podpisu (st) a pole s vypršenou platností (se). Můžete například vygenerovat token SAS s jedinečnou dobou vypršení platnosti, kterou pak můžete korelovat s klientem, kterému byl vydán.

  • Uvědomte si, že váš účet se bude účtovat za jakékoli využití, včetně prostřednictvím sdíleného přístupového podpisu( SAS). Pokud zadáte přístup k zápisu k objektu blob, uživatel se může rozhodnout nahrát objekt blob o velikosti 200 GB. Pokud jste jim dali také přístup pro čtení, můžou se rozhodnout, že si ho 10krát stáhne, takže za vás budou 2 TB platit poplatky za výchozí přenos dat. Opět poskytněte omezená oprávnění, která vám pomůžou zmírnit potenciální akce uživatelů se zlými úmysly. Pomocí krátkodobého sdíleného přístupového podpisu můžete tuto hrozbu snížit (ale mějte na paměti nerovnoměrnou distribuci hodin na koncovém čase).

  • Ověřte data zapsaná pomocí SAS. Když klientská aplikace zapisuje data do účtu úložiště, mějte na paměti, že s daty můžou být problémy. Pokud plánujete ověřit data, proveďte ověření po zápisu dat a před tím, než je vaše aplikace použije. Tento postup také chrání před zápisem poškozených nebo škodlivých dat do vašeho účtu, a to buď uživatelem, který sas řádně získal, nebo uživatelem zneužívaného sdíleného přístupového podpisu.

  • Zjistěte, kdy nepoužíváte SAS. V některých případech rizika spojená s konkrétní operací vůči vašemu účtu úložiště převáží výhody použití sdíleného přístupového podpisu. Pro takové operace vytvořte službu střední vrstvy, která zapisuje do účtu úložiště po provedení ověření, ověřování a auditování obchodních pravidel. Někdy je také jednodušší spravovat přístup jinými způsoby. Pokud například chcete, aby všechny objekty blob v kontejneru byly veřejně čitelné, můžete kontejner nastavit jako veřejný, a nikoli poskytnout SAS každému klientovi pro přístup.

  • K monitorování aplikace použijte protokoly Azure Monitoru a Azure Storage. K selhání autorizace může dojít kvůli výpadku ve vaší službě poskytovatele SAS. K nim může dojít také z neúmyslného odebrání uložených zásad přístupu. Protokolování analýzy úložiště a Azure Monitoru můžete použít ke sledování špičky v těchto typech selhání autorizace. Další informace najdete v tématu Metriky služby Azure Storage ve službě Azure Monitor a protokolování Analýza úložiště Azure.

  • Nakonfigurujte zásadu vypršení platnosti SAS pro účet úložiště. Osvědčené postupy doporučují omezit interval sdíleného přístupového podpisu v případě ohrožení zabezpečení. Nastavením zásad vypršení platnosti SAS pro účty úložiště můžete zadat doporučený horní limit vypršení platnosti, když uživatel vytvoří SAS služby nebo SAS účtu. Další informace najdete v tématu Vytvoření zásady vypršení platnosti pro sdílené přístupové podpisy.

Poznámka:

Úložiště nesleduje počet sdílených přístupových podpisů generovaných pro účet úložiště a žádné rozhraní API nemůže tyto podrobnosti poskytnout. Pokud potřebujete znát počet sdílených přístupových podpisů generovaných pro účet úložiště, musíte číslo sledovat ručně.

Začínáme se SAS

Pokud chcete začít se sdílenými přístupovými podpisy, přečtěte si následující články pro každý typ SAS.

SAS delegování uživatele

SAS služby

SAS účtu

Další kroky