Vytvoření SAS delegování uživatele

Důležitý

Pro zajištění optimálního zabezpečení microsoft doporučuje Microsoft Entra ID se spravovanými identitami autorizovat požadavky na data objektů blob, fronty a tabulek, kdykoli je to možné. Autorizace s ID Microsoft Entra a spravovanými identitami poskytuje vynikající zabezpečení a snadné použití prostřednictvím autorizace 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. Aplikace spuštěné na serverech s podporou Azure Arc můžou například používat spravované identity pro připojení ke službám Azure. Další informace najdete v tématu Ověřování prostředků Azure pomocí serverů s podporou Azure Arc.

Token sdíleného přístupového podpisu (SAS) můžete zabezpečit pro přístup ke kontejneru, adresáři nebo objektu blob pomocí přihlašovacích údajů Microsoft Entra nebo klíče účtu. Sas zabezpečený pomocí přihlašovacích údajů Microsoft Entra se nazývá delegování uživatelů SAS. Jako osvědčený postup zabezpečení doporučujeme používat přihlašovací údaje Microsoft Entra, pokud je to možné, a ne klíč účtu, což může být snadněji ohroženo. Když návrh vaší aplikace vyžaduje sdílené přístupové podpisy, vytvořte pomocí přihlašovacích údajů Microsoft Entra SAS delegování uživatele, abyste zajistili lepší zabezpečení.

Každý SAS je podepsaný klíčem. Pokud chcete vytvořit SAS delegování uživatele, musíte nejprve požádat klíč delegování uživatele, který pak použijete k podepsání SAS. Klíč delegování uživatele je podobný klíč účtu, který se používá k podepsání SAS služby nebo SAS účtu, s tím rozdílem, že spoléhá na vaše přihlašovací údaje Microsoft Entra. Pokud chcete požádat o klíč delegování uživatele, zavolejte Získat klíč delegování uživatele operace. Pak můžete pomocí klíče delegování uživatele vytvořit SAS.

Sas delegování uživatele se podporuje pro Azure Blob Storage a Azure Data Lake Storage. Zásady uloženého přístupu nejsou podporované pro SAS delegování uživatele.

Opatrnost

Sdílené přístupové podpisy jsou klíče, které udělují oprávnění k prostředkům úložiště, a měli byste je chránit stejně jako klíč účtu. Je důležité chránit SAS před škodlivým nebo nezamýšleným použitím. Při distribuci sdíleného přístupového podpisu použijte vlastní uvážení 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 jenom přes připojení HTTPS a identifikátory URI sdíleného přístupového podpisu by měly být distribuovány pouze na zabezpečené připojení, jako je HTTPS.

Informace o použití klíče účtu k zabezpečení SAS najdete v tématu Vytvoření sas služby a Vytvoření SAS účtu.

Podpora SAS delegování uživatele pro přístup v oboru adresáře

Sas delegování uživatele podporuje obor adresáře (sr=d), pokud je autorizační verze (sv) 2020–02-10 nebo novější a je povolený hierarchický obor názvů (HNS). Sémantika oboru adresáře (sr=d) se podobá oboru kontejneru (sr=c), s výjimkou toho, že přístup je omezen na adresář a všechny soubory a podadresáře v něm. Při zadání sr=d se vyžaduje také parametr dotazu sdd.

Formát typu string-to-sign pro autorizaci verze 2020-02-10 se nezmění.

Podpora SAS delegování uživatele pro identifikátor uživatele

SAS delegování uživatele podporuje volitelný identifikátor objektu uživatele (OID), který se přenáší buď v saoid, nebo suoid parametr, pokud je autorizační verze (sv) 2020-02-10 nebo novější. Parametry saoid a suoid odpovídají objektu zabezpečení pro koncového uživatele, který používá SAS, a poskytují vylepšený model autorizace pro úlohy clusteru s více uživateli, jako je Hadoop a Spark.

Tokeny SAS můžou být omezené na konkrétní operaci systému souborů a uživatele, což poskytuje méně ohrožený přístupový token, který je bezpečnější distribuovat napříč clusterem s více uživateli. Jedním z případů použití těchto funkcí je integrace ovladače Hadoop ABFS s Apache Ranger.

Další informace o volitelných parametrech saoid a suoid najdete v tématu Určení ID podepsaného objektu uživatele.

Autorizace SAS delegování uživatele

Když klient přistupuje k prostředku služby Blob Storage pomocí SAS delegování uživatele, požadavek na Azure Storage je autorizovaný pomocí přihlašovacích údajů Microsoft Entra, které byly použity k vytvoření SAS. Přístup klienta k prostředku je určen následujícími oprávněními:

  • Oprávnění řízení přístupu na základě role (RBAC) udělená objektu zabezpečení Microsoft Entra, který požadoval klíč delegování uživatele.
  • Oprávnění seznamu řízení přístupu POSIX (ACL), která jsou udělena objektu zabezpečení, který požadoval klíč delegování uživatele. K této další kontrole dochází jenom v případě, že oprávnění RBAC nemůžou udělit přístup a jenom v případě, že je pro účet úložiště povolený hierarchický obor názvů.
  • Oprávnění, která jsou explicitně udělena pro token SAS.

Tento přístup poskytuje další úroveň zabezpečení a pomáhá vyhnout se uložení přístupového klíče účtu s kódem aplikace. Z těchtodůvodůch

Oprávnění udělená klientovi, který má SAS, jsou průnikem oprávnění udělených objektu zabezpečení, který požadoval klíč delegování uživatele, a oprávnění udělená prostředku na tokenu SAS pomocí pole signedPermissions (sp). Pokud oprávnění udělené objektu zabezpečení prostřednictvím seznamů ACL RBAC nebo POSIX není u tokenu SAS také uděleno, není toto oprávnění uděleno klientovi, který se pokusí použít SAS pro přístup k prostředku. Při vytváření SAS delegování uživatele se ujistěte, že oprávnění udělená prostřednictvím seznamů ACL RBAC a POSIX a oprávnění udělená prostřednictvím tokenu SAS odpovídají úrovni přístupu vyžadované klientem.

Pokud chcete vytvořit SAS delegování uživatele, postupujte takto:

  1. Pomocí seznamů ACL RBAC nebo POSIX udělte požadovaným oprávněním objektu zabezpečení, který požádá o klíč delegování uživatele.
  2. Získejte token OAuth 2.0 z ID Microsoft Entra.
  3. Token použijte k vyžádání klíče delegování uživatele voláním Získání klíče delegování uživatele operace.
  4. Pomocí klíče delegování uživatele vytvořte token SAS s příslušnými poli.

Přiřazení oprávnění pomocí RBAC

Objekt zabezpečení, který požaduje klíč delegování uživatele, musí mít příslušná oprávnění k tomu. Objekt zabezpečení Microsoft Entra ID může být uživatel, skupina, instanční objekt nebo spravovaná identita.

Pokud chcete požádat o klíč delegování uživatele, musíte přiřadit objektu zabezpečení Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey akci. Mezi následující předdefinované role RBAC patří Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey akci explicitně nebo jako součást definice se zástupnými znamény:

Vzhledem k tomu, že operace Získání klíče delegování uživatele funguje na úrovni účtu úložiště, musí být akce Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey vymezena na úrovni účtu úložiště, skupiny prostředků nebo předplatného. Pokud je objekt zabezpečení přiřazený některou z dříve uvedených předdefinovaných rolí nebo vlastní role, která zahrnuje Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey akci, na úrovni účtu úložiště, skupiny prostředků nebo předplatného, může objekt zabezpečení požádat klíč delegování uživatele.

Pokud je objekt zabezpečení přiřazený roli, která povoluje přístup k datům, ale má obor na úroveň kontejneru, můžete navíc přiřadit delegátor objektů blob služby storage roli objektu zabezpečení na úrovni účtu úložiště, skupiny prostředků nebo předplatného. Role delegátoru objektů blob služby storage uděluje oprávnění objektu zabezpečení k vyžádání klíče delegování uživatele.

Další informace o rolích RBAC pro Azure Storage najdete v tématu Autorizace pomocí Microsoft Entra.

Získání tokenu OAuth 2.0

Pokud chcete získat klíč delegování uživatele, nejprve požádejte token OAuth 2.0 z ID Microsoft Entra. Poskytněte token schématu Bearer k autorizaci volání Získat klíč delegování uživatele operace. Další informace o vyžádání tokenu OAuth z ID Microsoft Entra najdete v tématu Toky ověřování a scénáře aplikací.

Žádost o klíč delegování uživatele

Volání Získání klíče delegování uživatele vrátí klíč jako sadu hodnot, které se používají jako parametry tokenu SAS delegování uživatele. Tyto parametry jsou popsány v Získání klíče delegování uživatele reference a v další části "Vytvoření SAS delegování uživatele."

Když klient požádá o klíč delegování uživatele pomocí tokenu OAuth 2.0, azure Storage vrátí klíč delegování uživatele jménem objektu zabezpečení. Sas vytvořený pomocí klíče delegování uživatele má udělená oprávnění udělená objektu zabezpečení.

Jakmile budete mít klíč delegování uživatele, můžete ho použít k vytvoření libovolného počtu sdílených přístupových podpisů delegování uživatele v průběhu životnosti klíče. Klíč delegování uživatele je nezávislý na tokenu OAuth 2.0, který používáte k jeho získání, takže token se nemusí obnovovat, dokud je klíč stále platný. Můžete určit, že klíč je platný po dobu až sedmi dnů.

Vytvoření SAS delegování uživatele

Následující tabulka shrnuje pole podporovaná pro token SAS delegování uživatele. Další podrobnosti o tom, jak tyto parametry zadat, najdete v dalších částech.

Název pole SAS Parametr tokenu SAS Povinné nebo volitelné Podpora verzí Popis
signedVersion sv Požadovaný 2018-11-09 a novější Označuje verzi služby, která se používá k vytvoření pole podpisu. Určuje také verzi služby, která zpracovává požadavky provedené pomocí tohoto sdíleného přístupového podpisu.
signedResource sr Požadovaný Všichni Určuje, které prostředky objektů blob jsou přístupné prostřednictvím sdíleného přístupového podpisu.
signedStart st Volitelný Všichni Volitelný. Čas, kdy se sdílený přístupový podpis stane platným, vyjádřený v jednom z přijatých formátů ISO 8601 UTC. Pokud tuto hodnotu vynecháte, použije se jako počáteční čas aktuální čas UTC. Další informace o přijatých formátech UTC naleznete v tématu Formát hodnot DateTime.
signedExpiry se Požadovaný Všichni Č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. Další informace o přijatých formátech UTC naleznete v tématu Formát hodnot DateTime.
signedPermissions sp Požadovaný Všichni Určuje, které operace může s prostředkem provádět klient, který má SAS. Oprávnění se můžou zkombinovat.
signedIp sip Volitelný 2015-04-05 a novější Určuje IP adresu nebo inkluzivní rozsah IP adres, ze kterých se mají přijímat požadavky. Při zadávání rozsahu mějte na paměti, že rozsah je inkluzivní. Podporují se jenom adresy IPv4.

Například sip=198.51.100.0 nebo sip=198.51.100.10-198.51.100.20.
signedProtocol spr Volitelný 2015-04-05 a novější Určuje protokol, který je povolený pro požadavek provedený pomocí SAS. Toto pole zahrňte, pokud chcete, aby požadavky vytvořené pomocí tokenu SAS používaly PROTOKOL HTTPS.
signedObjectId skoid Požadovaný 2018-11-09 a novější Určuje ID objektu pro objekt zabezpečení Microsoft Entra. Toto ID objektu odpovídá objektu zabezpečení, který požadoval klíč delegování uživatele.

Před autorizací operace Azure Storage zkontroluje oprávnění RBAC vůči ID objektu. Pokud oprávnění RBAC nemůžou udělit přístup, Azure Storage zkontroluje oprávnění seznamu ACL pro POSIX vůči ID objektu.
signedTenantId sktid Požadovaný 2018-11-09 a novější Určuje tenanta Microsoft Entra, ve kterém je definován objekt zabezpečení.
signedKeyStartTime skt Požadovaný. 2018-11-09 a novější Hodnotu vrátí operace Získání klíče delegování uživatele. Označuje začátek životnosti klíče delegování uživatele vyjádřený v jednom z přijatých formátů ISO 8601 UTC. Další informace o přijatých formátech UTC naleznete v tématu Formát hodnot DateTime.
signedKeyExpiryTime ske Požadovaný 2018-11-09 a novější Hodnotu vrátí operace Získání klíče delegování uživatele. Označuje konec životnosti klíče delegování uživatele vyjádřený v jednom z přijatých formátů ISO 8601 UTC. Další informace o přijatých formátech UTC naleznete v tématu Formát hodnot DateTime.
signedKeyVersion skv Požadovaný 2018-11-09 a novější Hodnotu vrátí operace Získání klíče delegování uživatele. Určuje verzi služby úložiště, která se použila k získání klíče delegování uživatele. Toto pole musí obsahovat verzi 2018-11-09 nebo novější.
signedKeyService sks Požadovaný 2018-11-09 a novější Označuje službu, pro kterou je klíč delegování uživatele platný. V současné době se podporuje jenom Blob Storage.
signedAuthorizedObjectId saoid Volitelný 2020-02-10 a novější Určuje ID objektu objektu zabezpečení Microsoft Entra autorizovaného vlastníkem klíče delegování uživatele k provedení akce udělené tokenem SAS. Toto ID objektu odpovídá objektu zabezpečení pro koncového uživatele SAS. Neprovádí se žádná další kontrola oprávnění u seznamů řízení přístupu (ACL) POSIX.
signedUnauthorizedObjectId suoid Volitelný 2020-02-10 a novější Určuje ID objektu objektu pro objekt zabezpečení Microsoft Entra objekt zabezpečení, pokud je povolen hierarchický obor názvů. Toto ID objektu odpovídá objektu zabezpečení pro koncového uživatele SAS. Azure Storage před autorizaci operace provede kontrolu seznamu ACL POSIX s ID objektu.
signedCorrelationId scid Volitelný 2020-02-10 a novější Korelujte protokoly auditu úložiště s protokoly auditu, které používá objekt zabezpečení, který generuje a distribuuje SAS.
signedDirectoryDepth sdd Požadováno při sr=d 2020-02-10 a novější Určuje počet adresářů v kořenové složce adresáře zadaného v poli canonicalizedResource řetězce k podpisu.
signedEncryptionScope ses Volitelný 2020-12-06 a novější Označuje obor šifrování, který se má použít k šifrování obsahu požadavku.
signature sig Požadovaný Všichni Podpis je kód ověřování zpráv založený na hodnotě hash (HMAC), který se vypočítá přes řetězec k podpisu a klíč pomocí algoritmu SHA256 a pak kóduje pomocí kódování Base64.
hlavička odpovědi Cache-Control rscc Volitelný 2013-08-15 a novější Azure Storage nastaví hlavičku Cache-Control odpovědi na hodnotu zadanou v tokenu SAS.
hlavička odpovědi Content-Disposition rscd Volitelný 2013-08-15 a novější Azure Storage nastaví hlavičku Content-Disposition odpovědi na hodnotu zadanou v tokenu SAS.
hlavička odpovědi Content-Encoding rsce Volitelný 2013-08-15 a novější Azure Storage nastaví hlavičku Content-Encoding odpovědi na hodnotu zadanou v tokenu SAS.
hlavička odpovědi Content-Language rscl Volitelný 2013-08-15 a novější Azure Storage nastaví hlavičku Content-Language odpovědi na hodnotu zadanou v tokenu SAS.
hlavička odpovědi Content-Type rsct Volitelný 2013-08-15 a novější Azure Storage nastaví hlavičku Content-Type odpovědi na hodnotu zadanou v tokenu SAS.

Zadání pole podepsané verze

Požadované pole signedVersion (sv) určuje verzi služby pro sdílený přístupový podpis. Tato hodnota označuje verzi služby, která se používá k vytvoření pole signature, a určuje verzi služby, která zpracovává požadavek provedený tímto sdíleným přístupovým podpisem. Hodnota pole sv musí být verze 2018-11-09 nebo novější.

Zadání pole podepsaného zdroje

Požadované pole 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, kontejneru nebo adresáře v tokenu SAS:

Zdroj Hodnota parametru Podporované verze Popis
Kapka b Všichni Uděluje přístup k obsahu a metadatům objektu blob.
Verze objektu blob Bv 2018-11-09 a novější Uděluje přístup k obsahu a metadatům verze objektu blob, ale ne k základnímu objektu blob.
Snímek objektu blob Bs 2018-11-09 a novější Uděluje přístup k obsahu a metadatům snímku objektu blob, ale ne k základnímu objektu blob.
Kontejner c Všichni Uděluje přístup k obsahu a metadatům libovolného objektu blob v kontejneru a k seznamu objektů blob v kontejneru.
Adresář d 2020-02-10 a novější Uděluje 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 pole signedResource zadaný adresář, je vyžadován také parametr signedDirectoryDepth (sdd). Adresář je vždy v kontejneru.

Zadejte dobu platnosti podpisu.

Pole signedStart (st) a signedExpiry (se) označují čas zahájení a vypršení platnosti sas. Pole signedExpiry je povinné. Pole signedStart je volitelné. Pokud je vynechán, použije se jako čas zahájení aktuální čas UTC.

U SAS delegování uživatele by časy spuštění a vypršení platnosti sas měly být v intervalu definovaném pro klíč delegování uživatele. Pokud se klient pokusí použít SAS po vypršení platnosti klíče delegování uživatele, sas selže s chybou autorizace bez ohledu na to, jestli samotný SAS je stále platný.

Další informace o přijatých formátech UTC naleznete v tématu Formát hodnot DateTime.

Zadání oprávnění

Oprávnění zadaná pro pole signedPermissions (sp) v tokenu SAS označují, které operace může s prostředkem provádět klient, který má sas.

Oprávnění je možné kombinovat, aby klient mohl provádět více operací se stejným SAS. Při vytváření sdíleného přístupového podpisu musíte zahrnout oprávnění v následujícím pořadí:

racwdxltmeop

Příklady platných nastavení oprávnění pro kontejner zahrnují rw, rd, rl, wd, wla rl. Mezi neplatné nastavení patří wr, dr, lra dw. Určení označení oprávnění více než jednou není povoleno.

Sas delegování uživatele nemůže udělit přístup k určitým operacím:

  • Kontejnery nelze vytvářet, odstraňovat ani vypisovat.
  • Metadata a vlastnosti kontejneru nelze číst ani zapisovat.
  • Kontejnery nelze zapůjčením.

Pokud chcete vytvořit SAS, který uděluje přístup k těmto operacím, použijte SAS účtu. Další informace najdete v tématu Vytvoření sas účtu.

Oprávnění podporovaná pro jednotlivé typy prostředků jsou popsaná v následující tabulce:

Povolení Symbol identifikátoru URI Zdroj Podpora verzí Povolené operace
Číst r Kontejner
Adresář
Kapka
Všichni Přečtěte si obsah, seznam bloků, vlastnosti a metadata libovolného objektu blob v kontejneru nebo adresáři. Jako zdroj operace kopírování použijte objekt blob.
Přidat a Kontejner
Adresář
Kapka
Všichni Přidání bloku do doplňovacího objektu blob
Vytvářet c Kontejner
Adresář
Kapka
Všichni Napište nový objekt blob, vytvořte snímek objektu blob nebo zkopírujte objekt blob do nového objektu blob.
Psát w Kontejner
Adresář
Kapka
Všichni Umožňuje vytvářet nebo zapisovat obsah, vlastnosti, metadata nebo seznam blokovaných položek. Snímek nebo zapůjčení objektu blob Změna velikosti objektu blob (pouze objekt blob stránky) Jako cíl operace kopírování použijte objekt blob.
Vymazat d Kontejner
Adresář
Kapka
Všichni 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 operaci Zapůjčení objektu blob.
Odstranit verzi x Kontejner
Kapka
12. 12. 2019 a novější Odstranění verze objektu blob
Trvalé odstranění y Kapka 2020-02-10 a novější Trvale odstraňte snímek nebo verzi objektu blob.
Seznam l Kontejner
Adresář
Všichni Výpis objektů blob, které nejsou rekurzivní.
Visačky t Kapka 12. 12. 2019 a novější Čtení nebo zápis značek do objektu blob
Pohnout m Kontejner
Adresář
Kapka
2020-02-10 a novější Přesuňte objekt blob nebo adresář a jeho obsah do nového umístění. Tato operace může být volitelně omezena na vlastníka podřízeného objektu blob, adresáře nebo nadřazeného adresáře, pokud je parametr saoid součástí tokenu SAS a bit sticky je nastavený v nadřazené adresáři.
Provést e Kontejner
Adresář
Kapka
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 POSIX ACL objektu blob. Pokud je hierarchický obor názvů povolený 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 POSIX ACL objektu blob. Volajícímu neumožňuje číst uživatelsky definovaná metadata.
Vlastnictví o Kontejner
Adresář
Kapka
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á nastavenou rychlou bitovou sadu.
Dovolení p Kontejner
Adresář
Kapka
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 Kontejner
Kapka
2020-06-12 a novější Nastavte nebo odstraňte zásady neměnnosti nebo blokování z právních důvodů objektu blob.

Zadání IP adresy nebo rozsahu IP adres

Volitelné pole signedIp (sip) určuje veřejnou IP adresu nebo rozsah veřejných IP adres, ze kterých se mají přijímat požadavky. Pokud SE IP adresa, ze které požadavek pochází, neshoduje s IP adresou nebo rozsahem adres zadaným v tokenu SAS, není požadavek autorizovaný. Podporují se jenom adresy IPv4.

Když zadáte rozsah IP adres, rozsah je inkluzivní. Například zadání sip=198.51.100.0 nebo sip=198.51.100.10-198.51.100.20 sas omezí požadavek na tyto IP adresy.

Následující tabulka popisuje, jestli zahrnout pole signedIp v tokenu SAS pro daný scénář na základě klientského prostředí 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 Sdílený přístupový podpis poskytnutý klientovi v tomto scénáři by neměl obsahovat odchozí IP adresu pro pole signedIp. Požadavky, které provedete ze stejné oblasti, pomocí sdíleného přístupového podpisu se zadanou odchozí IP adresou nezdaří.

Místo toho ke správě omezení zabezpečení sítě použijte virtuální síť Azure. Požadavky na Azure Storage ze stejné oblasti se vždy provádí přes privátní IP adresu. Další informace najdete v tématu Konfigurace bran firewall služby Azure Storage a virtuálních sítí.
Klient spuštěný v Azure V jiné oblasti než klient Sas poskytnutý klientovi v tomto scénáři může zahrnovat veřejnou IP adresu nebo rozsah adres pro pole signedIp. Požadavky, které provedete 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 zahrnovat veřejnou IP adresu nebo rozsah adres pro pole signedIp. Požadavky, které provedete 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 veřejnou odchozí IP adresu tohoto proxy serveru nebo brány pro pole signedIp.

Zadání protokolu HTTP

Volitelné pole signedProtocol (spr) určuje protokol, který je povolený pro požadavky vytvořené pomocí sdíleného přístupového podpisu ( SAS). Možné hodnoty jsou HTTPS i HTTP (https,http) nebo pouze HTTPS (https). Výchozí hodnota je https,http.

Poznámka

Pro pole spr není možné zadat protokol HTTP.

Zadejte ID podepsaného objektu.

Pole signedObjectId (skoid) je vyžadováno pro SAS delegování uživatele. Operace Získání klíče delegování uživatele vrátí tuto hodnotu jako součást odpovědi. ID podepsaného objektu je hodnota GUID, která obsluhuje neměnný identifikátor objektu zabezpečení na platformě Microsoft Identity Platform.

Zadání podepsaného ID tenanta

Pole signedTenantId (sktid) je vyžadováno pro SAS delegování uživatele. Operace Získání klíče delegování uživatele vrátí tuto hodnotu jako součást odpovědi. Podepsané ID tenanta je hodnota GUID, která představuje tenanta Microsoft Entra, ve kterém je definován objekt zabezpečení.

Zadejte počáteční čas podepsaného klíče.

Požadované pole signedKeyStartTime (skt) označuje začátek životnosti klíče delegování uživatele ve formátu ISO Date. Operace Získání klíče delegování uživatele vrátí tuto hodnotu jako součást odpovědi.

Zadejte čas vypršení platnosti podepsaného klíče.

Pole signedKeyExpiryTime (ske) je vyžadováno pro SAS delegování uživatele ve formátu ISO Date. Operace Získání klíče delegování uživatele vrátí tuto hodnotu jako součást odpovědi. Čas vypršení platnosti podepsaného klíče označuje konec životnosti klíče delegování uživatele. Hodnota doby vypršení platnosti může být maximálně sedm dnů od počátečního času SAS.

Zadání služby podepsaného klíče

Pole signedKeyService (sks) je vyžadováno pro SAS delegování uživatele. Operace Získání klíče delegování uživatele vrátí tuto hodnotu jako součást odpovědi. Pole služby podepsaného klíče označuje službu, pro kterou je klíč delegování uživatele platný. Hodnota pole služby podepsaného klíče pro Blob Storage je b.

Zadání verze podepsaného klíče

Pole signedkeyversion (skv) je vyžadováno pro SAS delegování uživatele. Operace Získání klíče delegování uživatele vrátí tuto hodnotu jako součást odpovědi. Pole signedkeyversion určuje verzi služby úložiště, která se používá k získání klíče delegování uživatele. Toto pole musí obsahovat verzi 2018-11-09 nebo novější.

Zadání ID podepsaného objektu uživatele pro objekt zabezpečení

Volitelná pole signedAuthorizedObjectId (saoid) a signedUnauthorizedObjectId (suoid) umožňují integraci s úlohami Apache Hadoop a Apache Ranger pro úlohy Azure Data Lake Storage. Pomocí jednoho z těchto polí v tokenu SAS zadejte ID objektu pro objekt zabezpečení:

  • Pole saoid určuje ID objektu objektu pro objekt zabezpečení Microsoft Entra, který je autorizovaný vlastníkem klíče delegování uživatele k provedení akce udělené tokenem SAS. Azure Storage ověří token SAS a zajistí, že vlastník klíče delegování uživatele má požadovaná oprávnění před tím, než Azure Storage udělí přístup. Neprovádí se žádná další kontrola oprávnění u seznamů ACL pro POSIX.
  • Pole suoid určuje ID objektu objektu pro objekt zabezpečení Microsoft Entra, pokud je pro účet úložiště povolený hierarchický obor názvů. Pole suoid je platné pouze pro účty, které mají hierarchický obor názvů. Když je pole suoid součástí tokenu SAS, Azure Storage před autorizaci operace provede kontrolu seznamu ACL poSIX s ID objektu. Pokud tato kontrola seznamu ACL není úspěšná, operace selže. Pokud je pole suoid součástí tokenu SAS, musí být pro účet úložiště povolený hierarchický obor názvů. Jinak kontrola oprávnění selže s chybou autorizace.

ID objektu objektu pro objekt zabezpečení, který požaduje klíč delegování uživatele, se zachytí v požadovaném poli skoid. Pokud chcete zadat ID objektu v tokenu SAS pomocí pole saoid nebo suoid, Objekt zabezpečení, který je identifikován v poli skoid, musí mít přiřazenou roli RBAC, která zahrnuje Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action nebo Microsoft.Storage/storageAccounts/blobServices/containers/blobs/manageOwnership/action. Další informace o těchto akcích najdete v tématu operace poskytovatele prostředků Azure.

Zadáním ID objektu do pole saoid nebo suoid také omezíte operace, které souvisejí s vlastnictvím adresáře nebo objektu blob, následujícími způsoby:

  • Pokud operace vytvoří adresář nebo objekt blob, Azure Storage nastaví vlastníka adresáře nebo objektu blob na hodnotu určenou ID objektu. Pokud není zadané ID objektu, Azure Storage nastaví vlastníka adresáře nebo objektu blob na hodnotu určenou parametrem skoid.
  • Pokud je bit sticky nastaven na nadřazený adresář a operace odstraní nebo přejmenuje adresář nebo objekt blob, ID objektu vlastníka nadřazeného adresáře nebo vlastníka prostředku musí odpovídat hodnotě zadané ID objektu.
  • Pokud operace nastaví vlastníka adresáře nebo objektu blob a je zadána hlavička x-ms-owner, hodnota zadaná ID objektu se musí shodovat s hodnotou zadanou hlavičkou x-ms-owner.
  • Pokud operace nastaví skupinu pro adresář nebo objekt blob a je zadána hlavička x-ms-group, hodnota zadaná ID objektu musí být členem skupiny určené hlavičkou x-ms-group.
  • Pokud operace nastaví oprávnění nebo seznam ACL pro adresář nebo objekt blob, musí být splněna také jedna z následujících dvou podmínek:
    • Hodnota zadaná pro ID objektu musí být vlastníkem adresáře nebo objektu blob.
    • Hodnota pole signedPermissions (sp) musí kromě oprávnění Ownership (o) obsahovat oprávnění Permissions (p).

ID objektu zadané v poli saoid nebo suoid je součástí diagnostických protokolů při provádění požadavků pomocí tokenu SAS.

Pole saoid nebo suoid je podporováno pouze v případě, že je pole signedVersion (sv) nastaveno na verzi 2020-02-10 nebo novější. Token SAS může obsahovat pouze jedno z těchto polí.

Zadání ID korelace

Pole signedCorrelationId (scid) určuje ID korelace, které se dá použít ke korelaci protokolů auditu úložiště s protokoly auditu, které používá objekt zabezpečení, který generuje a distribuuje SAS. Například důvěryhodná autorizační služba má obvykle spravovanou identitu, která ověřuje a autorizuje uživatele, generuje SAS, přidává položku do místního protokolu auditu a vrací SAS uživateli, který pak může použít SAS pro přístup k prostředkům Azure Storage. Zahrnutím ID korelace do místního protokolu auditu i protokolu auditu úložiště povolíte pozdější korelaci těchto událostí. Hodnota je IDENTIFIKÁTOR GUID bez závorek a s malými písmeny.

Toto pole je podporováno ve verzi 2020-02-10 a novější.

Zadejte hloubku adresáře.

Pokud pole signedResource určuje adresář (sr=d), musíte také zadat pole signedDirectoryDepth (sdd), které určuje počet podadresářů v kořenovém adresáři. Hodnota pole sdd 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 a novější.

Zadání parametrů dotazu pro přepsání hlaviček odpovědí

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. Hlavičky odpovědi a odpovídající parametry dotazu jsou následující:

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 parametr dotazu rsct=binary tokenu SAS, 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 pouze pomocí tohoto sdíleného přístupového podpisu.

Pokud vytvoříte sdílený přístupový podpis, který jako parametry dotazu určuje hlavičky odpovědi, musíte tyto hlavičky odpovědi zahrnout do řetězce k podpisu, který se používá k vytvoření řetězce podpisu. Další informace najdete v části "Určení podpisu".

Určení rozsahu šifrování

Pole signed encryption scope (ses) určuje obor šifrování, který klientská aplikace používá při nahrávání objektů blob pomocí tokenu SAS prostřednictvím operace Put Blob. Pole signed encryption scope se podporuje, když je pole podepsané verze (sv) tokenu SAS verze 2020–12-06 nebo novější. Pokud pole podepsané verze určuje verzi, která je starší než podporovaná verze, vrátí služba kód odpovědi na chybu 403 (Zakázáno).

Pokud je pro kontejner nebo systém souborů nastavený výchozí obor šifrování, bude pole ses respektovat zásady šifrování kontejneru. Pokud došlo k neshodě mezi parametrem dotazu ses a hlavičkou x-ms-default-encryption-scope a hlavička x-ms-deny-encryption-scope-override je nastavená na true, vrátí služba kód chybové odpovědi 403 (Zakázáno).

Pokud je v požadavku PUT k dispozici hlavička x-ms-encryption-scope a parametr dotazu ses i neshoda, vrátí služba kód odpovědi na chybu 400 (Chybný požadavek).

Zadání podpisu

Pole signature (sig) slouží k autorizaci požadavku provedeného klientem se sdíleným přístupovým podpisem. Řetězec na znaménko je jedinečný řetězec vytvořený z polí, která musí být ověřena k autorizaci požadavku. Podpis je HMAC vypočítaný přes řetězec-znaménko a klíč pomocí algoritmu SHA256 a pak kódovaný pomocí kódování Base64.

Pokud chcete vytvořit řetězec podpisu SAS delegování uživatele, vytvořte z polí, která tvoří požadavek, zakódujte řetězec jako UTF-8 a potom podpis vypočítáte pomocí algoritmu HMAC-SHA256. Pole zahrnutá v řetězci na znaménko musí být dekódovaná adresou URL.

Pole požadovaná v řetězcovém podpisu závisí na verzi služby, která se používá k autorizaci (sv pole). Následující části popisují konfiguraci typu string-to-sign pro verze, které podporují SAS delegování uživatele.

Verze 2020-12-06 a novější

Řetězec-podpis pro autorizaci verze 2020-12-06 a novější má následující formát:

StringToSign =  signedPermissions + "\n" +
                signedStart + "\n" +
                signedExpiry + "\n" +
                canonicalizedResource + "\n" +
                signedKeyObjectId + "\n" +
                signedKeyTenantId + "\n" +
                signedKeyStart + "\n" +
                signedKeyExpiry  + "\n" +
                signedKeyService + "\n" +
                signedKeyVersion + "\n" +
                signedAuthorizedUserObjectId + "\n" +
                signedUnauthorizedUserObjectId + "\n" +
                signedCorrelationId + "\n" +
                signedIP + "\n" +
                signedProtocol + "\n" +
                signedVersion + "\n" +
                signedResource + "\n" +
                signedSnapshotTime + "\n" +
                signedEncryptionScope + "\n" +
                rscc + "\n" +
                rscd + "\n" +
                rsce + "\n" +
                rscl + "\n" +
                rsct

Verze 2020-02-10

Řetězec pro autorizaci verze 2020-02-10 má následující formát:

StringToSign =  signedPermissions + "\n" +
                signedStart + "\n" +
                signedExpiry + "\n" +
                canonicalizedResource + "\n" +
                signedKeyObjectId + "\n" +
                signedKeyTenantId + "\n" +
                signedKeyStart + "\n" +
                signedKeyExpiry  + "\n" +
                signedKeyService + "\n" +
                signedKeyVersion + "\n" +
                signedAuthorizedUserObjectId + "\n" +
                signedUnauthorizedUserObjectId + "\n" +
                signedCorrelationId + "\n" +
                signedIP + "\n" +
                signedProtocol + "\n" +
                signedVersion + "\n" +
                signedResource + "\n" +
                signedSnapshotTime + "\n" +
                rscc + "\n" +
                rscd + "\n" +
                rsce + "\n" +
                rscl + "\n" +
                rsct

Verze starší než 2020-02-10

Podpis řetězce pro autorizační verze starší než 2020-02-10 má následující formát:

StringToSign =  signedPermissions + "\n" +  
                signedStart + "\n" +  
                signedExpiry + "\n" +  
                canonicalizedResource + "\n" +  
                signedKeyObjectId + "\n" +
                signedKeyTenantId + "\n" +
                signedKeyStart + "\n" +
                signedKeyExpiry  + "\n" +
                signedKeyService + "\n" +
                signedKeyVersion + "\n" +
                signedAuthorizedUserObjectId + "\n" +
                signedUnauthorizedUserObjectId + "\n" +
                signedCorrelationId + "\n" +
                signedIP + "\n" +  
                signedProtocol + "\n" +  
                signedVersion + "\n" +  
                signedResource + "\n" +
                rscc + "\n" +
                rscd + "\n" +  
                rsce + "\n" +  
                rscl + "\n" +  
                rsct

Kanonizovaný prostředek

canonicalizedResource část řetězce je kanonická cesta k podepsanému prostředku. Musí obsahovat koncový bod služby Blob Storage a název prostředku a musí být dekódovaný adresou URL. Cesta k objektu blob musí obsahovat svůj kontejner. Cesta k adresáři musí obsahovat počet podadresářů, které odpovídají parametru sdd.

Kanonický řetězec prostředku pro kontejner musí vynechat koncové lomítko (/) pro SAS, který poskytuje přístup k ho kontejneru.

Následující příklady ukazují, jak sestavit canonicalizedResource část řetězce v závislosti na typu prostředku.

Příklad kontejneru (Azure Blob Storage)
URL = https://myaccount.blob.core.windows.net/music  
canonicalizedResource = "/blob/myaccount/music"  
Příklad objektu blob (Azure Blob Storage)
URL = https://myaccount.blob.core.windows.net/music/intro.mp3  
canonicalizedResource = "/blob/myaccount/music/intro.mp3"  
Příklad kontejneru (Azure Data Lake Storage)
URL = https://myaccount.dfs.core.windows.net/music  
canonicalizedResource = "/blob/myaccount/music"  
Příklad adresáře (Azure Data Lake Storage)
URL = https://myaccount.dfs.core.windows.net/music/instruments/guitar/  
canonicalizedResource = "/blob/myaccount/music/instruments/guitar/"  
Příklad objektu blob (Azure Data Lake Storage)
URL = https://myaccount.dfs.core.windows.net/music/intro.mp3  
canonicalizedResource = "/blob/myaccount/music/intro.mp3"  

Volitelná pole

Pokud je pole volitelné a nezadá se jako součást tokenu SAS, zadejte prázdný řetězec pole. Nezapomeňte za prázdný řetězec zahrnout znak nového řádku (\n).

Příklad SAS delegování uživatele

Následující příklad ukazuje identifikátor URI objektu blob s připojeným tokenem SAS delegování uživatele. Token SAS delegování uživatele 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&skoid=<object-id>&sktid=<tenant-id>&skt=2023-05-24T01:13:55Z&ske=2023-05-24T09:13:55Z&sks=b&skv=2022-11-02&sip=198.51.100.10-198.51.100.20&spr=https&sv=2022-11-02&sr=b&sig=<signature>

Každá část identifikátoru URI je popsaná v následující tabulce:

Jméno Část SAS Popis
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.
Dovolení sp=rw Oprávnění udělená SAS zahrnují čtení (r) a zápis (w).
Čas zahájení st=2023-05-24T01:13:55Z Zadané v čase UTC. Pokud chcete, aby byl SAS platný okamžitě, vynechejte čas zahájení.
Čas vypršení platnosti se=2023-05-24T09:13:55Z Zadané v čase UTC.
ID objektu skoid=<object-id> Objekt zabezpečení Microsoft Entra.
ID tenanta sktid=<tenant-id> Tenant Microsoft Entra, ve kterém je zaregistrovaný objekt zabezpečení.
Počáteční čas klíče skt=2023-05-24T01:13:55Z Začátek životnosti klíče delegování uživatele.
Doba vypršení platnosti klíče ske=2023-05-24T09:13:55Z Konec životnosti klíče delegování uživatele.
Klíčová služba sks=b Pro hodnotu služby se podporuje pouze služba Blob Service.
Verze klíče skv=2022-11-02 Verze služby úložiště, která byla použita k získání klíče delegování uživatele.
Rozsah IP adres sip=198.51.100.10-198.51.100.20 Rozsah IP adres, ze kterých bude požadavek přijat.
Protokol spr=https Jsou povoleny pouze požadavky, které používají PROTOKOL HTTPS.
Verze služby Blob Service sv=2022-11-02 Pro Azure Storage verze 2012-02-12 a novější označuje tento parametr verzi, která se má použít.
Zdroj sr=b Prostředek je objekt blob.
Podpis sig=<signature> Slouží k autorizaci přístupu k objektu blob. Podpis je HMAC vypočítaný přes řetězec-znaménko a klíč pomocí algoritmu SHA256 a pak kódovaný pomocí kódování Base64.

Odvolání sdíleného přístupového podpisu delegování uživatele

Pokud se domníváte, že došlo k ohrožení sdíleného přístupového podpisu, měli byste ho odvolat. Sas delegování uživatele můžete odvolat odvoláním klíče delegování uživatele nebo změnou nebo odebráním přiřazení rolí RBAC a seznamů ACL POSIX pro objekt zabezpečení, který se používá k vytvoření SAS.

Důležitý

Azure Storage ukládá klíč delegování uživatele i přiřazení rolí RBAC do mezipaměti, takže mezi zahájením procesu odvolání a neplatným sas delegování uživatele může dojít ke zpoždění.

Odvolání klíče delegování uživatele

Klíč delegování uživatele můžete odvolat voláním odvolat klíče delegování uživatele operace. Když odvoláte klíč delegování uživatele, všechny sdílené přístupové podpisy, které na daném klíči spoléhají, se stanou neplatnými. Potom můžete znovu volat Získat klíč delegování uživatele operace a pomocí klíče vytvořit nové sdílené přístupové podpisy. Jedná se o nejrychlejší způsob odvolání sdíleného přístupového podpisu delegování uživatele.

Změna nebo odebrání přiřazení rolí nebo seznamů ACL

Přiřazení role RBAC a seznamy ACL poSIX pro objekt zabezpečení, který se používá k vytvoření sdíleného přístupového podpisu, můžete změnit nebo odebrat. Když klient používá SAS pro přístup k prostředku, Azure Storage ověří, že objekt zabezpečení, jehož přihlašovací údaje byly použity k zabezpečení SAS, má požadovaná oprávnění k prostředku.

Viz také