Sdílet prostřednictvím


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

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 Microsoft Entra ID a spravovanými identitami poskytuje vynikající zabezpečení a snadné použití oproti autorizaci 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í u prostředků Azure na serverech s podporou Azure Arc.

Token sdíleného přístupového podpisu (SAS) pro přístup ke kontejneru, adresáři nebo objektu blob můžete zabezpečit 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á SAS delegování uživatele. Jako osvědčený postup zabezpečení doporučujeme používat přihlašovací údaje Microsoft Entra, pokud je to možné, místo klíče účtu, který může být snadněji ohrožen. Pokud návrh aplikace vyžaduje sdílené přístupové podpisy, pomocí Microsoft Entra přihlašovacích údajů vytvořte 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 o klíč delegování uživatele, který pak použijete k podepsání SAS. Klíč delegování uživatele je podobný klíči úč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 Microsoft Entra přihlašovací údaje. Pokud chcete požádat o klíč delegování uživatele, zavolejte operaci Získat klíč delegování uživatele . Potom můžete k vytvoření SAS použít klíč delegování uživatele.

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

Upozornění

Sdílené přístupové podpisy jsou klíče, které udělují oprávnění k prostředkům úložiště, a měli byste je chránit stejně jako klíč účtu. Je důležité chránit SAS před škodlivým nebo neúmyslným použitím. Při distribuci sdíleného přístupového podpisu využijte diskrétnost a vytvořte plán pro odvolání ohroženého sas. Operace, které používají sdílené přístupové podpisy, by se měly provádět pouze přes připojení HTTPS a identifikátory URI sdíleného přístupového podpisu by měly být distribuovány pouze na zabezpečeném připojení, jako je https.

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

Podpora SAS delegování uživatele pro přístup s oborem adresářů

Sas delegování uživatele podporuje obor adresáře (sr=d), pokud je verze autorizace (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 tím rozdílem, že přístup je omezený na adresář a všechny soubory a podadresáře v něm. Pokud sr=d je zadaný, vyžaduje se sdd také parametr dotazu.

Formát řetězce k podpisu pro autorizaci verze 2020-02-10 se nezmění.

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

SAS delegování uživatele podporuje volitelný identifikátor objektu uživatele (OID), který se přenáší v parametru saoid nebo suoid , pokud je verze autorizace (sv) 2020-02-10 nebo novější. Tento volitelný parametr poskytuje vylepšený model autorizace pro úlohy clusteru s více uživateli, jako jsou Hadoop a Spark.

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

Autorizace SAS delegování uživatele

Když klient přistupuje k prostředku služby Blob Storage pomocí SAS delegování uživatele, je žádost o službu Azure Storage autorizována pomocí přihlašovacích údajů Microsoft Entra, které se použily k vytvoření SAS. Přístup klienta k prostředku určují oprávnění řízení přístupu na základě role (RBAC), která jsou udělena pro tento účet Microsoft Entra, spolu s oprávněními explicitně udělenými v sas. Tento přístup poskytuje další úroveň zabezpečení a pomáhá vyhnout se ukládání přístupového klíče účtu s kódem aplikace. Z těchto důvodů je vytvoření SAS pomocí přihlašovacích údajů Microsoft Entra osvědčeným postupem zabezpečení.

Oprávnění udělená klientovi, který vlastní SAS, jsou průsečíkem oprávnění udělených objektu zabezpečení, který požadoval klíč delegování uživatele, a oprávnění udělených prostředku k tokenu SAS pomocí signedPermissions pole (sp). Pokud se k tokenu SAS neudělí ani oprávnění udělená objektu zabezpečení prostřednictvím RBAC, neudělí se toto oprávnění 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 RBAC i 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í RBAC udělte požadovaná oprávnění objektu zabezpečení, který si vyžádá klíč delegování uživatele.
  2. Získejte token OAuth 2.0 z Microsoft Entra ID.
  3. Pomocí tokenu požádejte o klíč delegování uživatele voláním operace Získat klíč delegování uživatele .
  4. Klíč delegování uživatele použijte k vytvoření tokenu 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, k tomu musí mít příslušná oprávnění. 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 k objektu zabezpečení přiřadit akci Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey . Mezi následující předdefinované role RBAC patří akce Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey , a to buď explicitně, nebo jako součást definice se zástupnými znaménkami:

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

Pokud má objekt zabezpečení přiřazenou roli, která umožňuje přístup k datům, ale je vymezena na úrovni kontejneru, můžete navíc přiřadit roli Delegovatel objektů blob služby Storage k objektu zabezpečení na úrovni účtu úložiště, skupiny prostředků nebo předplatného. Role Delegovatel objektů blob služby Storage uděluje objektu zabezpečení oprávnění 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 vyžádejte si token OAuth 2.0 ze Microsoft Entra ID. Zadejte token se schématem Bearer pro autorizaci volání operace Získat klíč delegování uživatele . Další informace o vyžádání tokenu OAuth z Microsoft Entra ID najdete v tématu Toky ověřování a scénáře aplikací.

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

Volání operace Získat klíč delegování uživatele vrátí klíč jako sadu hodnot, které se používají jako parametry v tokenu SAS delegování uživatele. Tyto parametry jsou popsané v referenčních informacích k získání klíče delegování uživatele 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živatelů po celou dobu životnosti klíče. Klíč delegování uživatele je nezávislý na tokenu OAuth 2.0, který použijete k jeho získání, takže token není nutné 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ší části obsahují další podrobnosti o tom, jak tyto parametry zadat.

Název pole SAS Parametr tokenu SAS Požadované nebo volitelné Podpora verzí Popis
signedVersion sv Povinné 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 vytvořené pomocí tohoto SAS.
signedResource sr Vyžadováno Vše Určuje, které prostředky objektu blob jsou přístupné prostřednictvím sdíleného přístupového podpisu.
signedStart st Volitelné Vše 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 tato hodnota vynechána, použije se jako počáteční čas aktuální čas UTC. Další informace o přijatých formátech UTC najdete v tématu Formátování hodnot DateTime.
signedExpiry se Vyžadováno Vše Č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 najdete v tématu Formátování hodnot DateTime.
signedPermissions sp Vyžadováno Vše Označuje, které operace může s prostředkem provádět klient, který vlastní SAS. Oprávnění se můžou kombinovat.
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. Když zadáte oblast, mějte na paměti, že oblast je zahrnutá. Podporují se jenom adresy IPv4.

Příkladem je sip=168.1.5.65 nebo sip=168.1.5.60-168.1.5.70.
signedProtocol spr Volitelné 2015-04-05 a novější Určuje protokol, který je povolený pro požadavek provedený pomocí SAS. Toto pole uveďte, aby požadavky vytvořené pomocí tokenu SAS používaly HTTPS.
signedObjectId skoid Vyžadováno 2018-11-09 a novější Identifikuje objekt zabezpečení Microsoft Entra.
signedTenantId sktid Vyžadováno 2018-11-09 a novější Určuje Microsoft Entra tenanta, ve kterém je definovaný objekt zabezpečení.
signedKeyStartTime skt Nepovinný parametr. 2018-11-09 a novější Tato hodnota je vrácena operací Získat klíč 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. Pokud je hodnota vynechána, předpokládá se aktuální čas. Další informace o přijatých formátech UTC najdete v tématu Formátování hodnot DateTime.
signedKeyExpiryTime ske Vyžadováno 2018-11-09 a novější Tato hodnota je vrácena operací Získat klíč 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 najdete v tématu Formátování hodnot DateTime.
signedKeyVersion skv Vyžadováno 2018-11-09 a novější Tato hodnota je vrácena operací Získat klíč 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 Vyžadováno 2018-11-09 a novější Označuje službu, pro kterou je platný klíč delegování uživatele. V současné době se podporuje jenom Blob Storage.
signedAuthorizedObjectId saoid Volitelné 2020-02-10 a novější Určuje ID objektu pro objekt zabezpečení Microsoft Entra, který je vlastníkem klíče delegování uživatele autorizovaný k provedení akce udělené tokenem SAS. V seznamech řízení přístupu (ACL) rozhraní POSIX (Portable Operating System Interface) se neprovádí žádná další kontrola oprávnění.
signedUnauthorizedObjectId suoid Volitelné 2020-02-10 a novější Určuje ID objektu Microsoft Entra objektu zabezpečení, pokud je povolený hierarchický obor názvů. Azure Storage před autorizací operace provede kontrolu seznamu ACL POSIX s ID objektu.
signedCorrelationId scid Volitelné 2020-02-10 a novější Porovnejte protokoly auditu úložiště s protokoly auditu, které používá objekt zabezpečení, který generuje a distribuuje SAS.
signedDirectoryDepth sdd Požadováno, když sr=d 2020-02-10 a novější Určuje počet adresářů v kořenové složce adresáře zadaného canonicalizedResource v poli řetězce k sign.
signedEncryptionScope ses Volitelné 2020-12-06 a novější Označuje rozsah šifrování, který se má použít k šifrování obsahu požadavku.
signature sig Vyžadováno Vše Podpis je kód ověřování zpráv založený na hodnotě hash (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.
Cache-Control hlavička odpovědi rscc Volitelné 2013-08-15 a novější Azure Storage nastaví hlavičku Cache-Control odpovědi na hodnotu zadanou v tokenu SAS.
Content-Disposition hlavička odpovědi rscd Volitelné 2013-08-15 a novější Azure Storage nastaví hlavičku Content-Disposition odpovědi na hodnotu zadanou v tokenu SAS.
Content-Encoding hlavička odpovědi rsce Volitelné 2013-08-15 a novější Azure Storage nastaví hlavičku Content-Encoding odpovědi na hodnotu zadanou v tokenu SAS.
Content-Language hlavička odpovědi rscl Volitelné 2013-08-15 a novější Azure Storage nastaví hlavičku Content-Language odpovědi na hodnotu zadanou v tokenu SAS.
Content-Type hlavička odpovědi rsct Volitelné 2013-08-15 a novější Azure Storage nastaví hlavičku Content-Type odpovědi na hodnotu zadanou v tokenu SAS.

Zadejte pole podepsané verze.

signedVersion Požadované pole (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í signature pole, a určuje verzi služby, která zpracovává požadavek vytvořený pomocí tohoto sdíleného přístupového podpisu. Hodnota sv pole musí být verze 2018-11-09 nebo novější.

Zadejte pole podepsaného zdroje.

signedResource Požadované pole (sr) určuje, které prostředky jsou přístupné prostřednictvím sdíleného přístupového podpisu. Následující tabulka popisuje, jak odkazovat na prostředek objektu blob, kontejneru nebo adresáře 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 v kontejneru.

Zadejte dobu platnosti podpisu.

Pole signedStart (st) a signedExpiry (se) označují počáteční a vypršení platnosti sdíleného přístupového podpisu. Pole signedExpiry je povinné. Pole signedStart je nepovinné. Pokud ho vynecháte, použije se jako počáteční čas aktuální čas UTC.

V případě SAS delegování uživatele by časy začátku 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 je sas samotný stále platný.

Další informace o akceptovaných formátech UTC najdete v tématu Formátování hodnot data a času.

Určení oprávnění

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

Oprávnění je možné kombinovat a umožnit tak klientovi 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

Příklady platných nastavení oprávnění pro kontejner: rw, rd, rl, 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í povolené.

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

  • Kontejnery se nedají vytvořit, odstranit ani vypisovat.
  • Metadata a vlastnosti kontejneru se nedají číst ani zapisovat.
  • Kontejnery se nedají zapůjčením.

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

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

Oprávnění Symbol identifikátoru URI Prostředek Podpora verzí Povolené operace
Read r Kontejner
Directory
Objekt blob
Vše Přečtěte si obsah, seznam blokovaných objektů, vlastnosti a metadata libovolného objektu blob v kontejneru nebo adresáři. Jako zdroj operace kopírování použijte objekt blob.
Přidání pro Kontejner
Directory
Objekt blob
Vše Přidání bloku do doplňovacího objektu blob
Vytvořit c Kontejner
Directory
Objekt blob
Vše Napište nový objekt blob, vytvořte snímek objektu blob nebo zkopírujte objekt blob do nového objektu blob.
Write w Kontejner
Directory
Objekt blob
Vše Create nebo zapište obsah, vlastnosti, metadata nebo seznam blokovaných. Vytvoření snímku nebo zapůjčení objektu blob Změňte velikost objektu blob (jenom objekt blob stránky). Použijte objekt blob jako cíl operace kopírování.
Odstranit d Kontejner
Directory
Objekt blob
Vše Odstranění objektu blob Pro verzi 2017-07-29 a novější umožňuje oprávnění k odstranění také přerušení zapůjčení objektu blob. Další informace najdete v tématu Operace Zapůjčení objektu blob .
Odstranit verzi x Kontejner
Objekt blob
12. 12. 2019 a novější Odstranění verze objektu blob
Trvalé odstranění y Objekt blob 2020-02-10 a novější Trvale odstraníte snímek nebo verzi objektu blob.
Seznam l Kontejner
Directory
Vše 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
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. Neumožňuje 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, když volající přejmenuje nebo odstraní adresář nebo objekt blob v adresáři, který má nastavený rychlý bit.
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

Zadání IP adresy nebo rozsahu IP adres

Volitelné signedIp pole (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 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áte rozsah IP adres, bude rozsah 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á pole zahrnout signedIp do 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 Sas poskytnutý klientovi v tomto scénáři by neměl obsahovat odchozí IP adresu pole signedIp . Požadavky, které vytvoříte ze stejné oblasti pomocí 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 dané signedIp pole. Požadavky, které vytvoříte se 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 dané signedIp pole. Požadavky, které vytvoříte se 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.

signedProtocol Volitelné pole (spr) určuje protokol, který je povolený pro požadavky, které jsou prováděny pomocí SAS. Možné hodnoty jsou HTTPS a HTTP (https,http) nebo pouze HTTPS (https). Výchozí hodnota je https,http.

Poznámka

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

Zadejte ID podepsaného objektu.

Pole signedObjectId (skoid) se vyžaduje pro sas delegování uživatele. Operace Získat klíč 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í v Microsoft identity platform.

Zadejte ID podepsaného tenanta.

Pole signedTenantId (sktid) se vyžaduje pro sas delegování uživatele. Operace Získat klíč delegování uživatele vrátí tuto hodnotu jako součást odpovědi. PODEPSANÉ ID tenanta je hodnota GUID, která představuje Microsoft Entra tenanta, ve kterém je definovaný objekt zabezpečení.

Určení počátečního času podepsaného klíče

Volitelné signedKeyStartTime pole (skt) označuje začátek životnosti klíče delegování uživatele ve formátu DATA ISO. Operace Získat klíč delegování uživatele vrátí tuto hodnotu jako součást odpovědi. Pokud je čas spuštění vynechán, předpokládá se, že čas spuštění podepsaného klíče je aktuální čas.

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

Pole signedKeyExpiryTime (ske) se vyžaduje pro SAS delegování uživatele ve formátu ISO Date. Operace Získat klíč 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.

Určení služby podepsaných klíčů

Pole signedKeyService (sks) se vyžaduje pro sas delegování uživatele. Operace Získat klíč 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 platný klíč delegování uživatele. Hodnota pole služby podepsaného klíče pro Blob Storage je b.

Zadejte verzi podepsaného klíče.

Pole signedkeyversion (skv) se vyžaduje pro sas delegování uživatele. Operace Získat klíč 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 pro objekt zabezpečení

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

  • Pole saoid určuje ID objektu pro Microsoft Entra objekt zabezpečení, který je vlastníkem klíče delegování uživatele autorizovaný k provedení akce udělené tokenem SAS. Azure Storage ověří token SAS a zajistí, aby vlastník klíče delegování uživatele měl požadovaná oprávnění předtím, než Azure Storage udělí přístup. U seznamů ACL POSIX se neprovádí žádná další kontrola oprávnění.
  • Pole suoid určuje ID objektu Microsoft Entra objektu zabezpečení, 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ů. suoid Když je pole zahrnuto v tokenu SAS, Azure Storage před autorizací operace provede kontrolu seznamu ACL POSIX pro ID objektu. Pokud tato kontrola seznamu ACL nebude úspěšná, operace selže. Pokud suoid je pole zahrnuto v tokenu SAS, musí být pro účet úložiště povolený hierarchický obor názvů. V opačném případě kontrola oprávnění selže s chybou autorizace.

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

Zadáním ID objektu v saoid poli 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 ID objektu není zadané, Azure Storage nastaví vlastníka adresáře nebo objektu blob na hodnotu určenou parametrem skoid .
  • Pokud je bit sticky nastaven v nadřazené adresáři a operace odstraní nebo přejmenuje adresář nebo objekt blob, ID objektu vlastníka nadřazeného adresáře nebo vlastníka prostředku se musí shodovat s hodnotou určenou ID objektu.
  • Pokud operace nastaví vlastníka adresáře nebo objektu x-ms-owner blob a je zadána hlavička, hodnota určená ID objektu se musí shodovat s hodnotou určenou hlavičkou x-ms-owner .
  • Pokud operace nastaví skupinu pro adresář nebo objekt blob a x-ms-group je zadána hlavička, 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 (sp) musí kromě oprávnění () obsahovat PermissionsOwnership oprávnění (op).signedPermissions

ID objektu saoid zadané v poli nebo suoid se zahrne do diagnostických protokolů při vytváření požadavků pomocí tokenu SAS.

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

Zadání ID korelace

Pole signedCorrelationId (scid) určuje ID korelace, které lze použít ke korelaci protokolů auditu úložiště s protokoly auditu, které používá objekt zabezpečení, který generuje a distribuuje SAS. Důvěryhodná autorizační služba má například spravovanou identitu, která ověřuje a autorizuje uživatele, generuje SAS, přidává záznam do místního protokolu auditu a vrací ho uživateli, který pak může sas použít pro přístup k prostředkům Služby Azure Storage. Zahrnutím ID korelace do místního protokolu auditu i protokolu auditu úložiště umožníte, aby se tyto události později korelovaly. 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ší.

Určení hloubky adresáře

signedResource Pokud pole určuje adresář (sr=d), musíte zadat také 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 a novější.

Určení 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 rsct=binary parametr dotazu pro token 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ý určuje hlavičky odpovědi jako parametry dotazu, musíte tyto hlavičky odpovědi zahrnout do řetězce pro podepsání, který se používá k vytvoření řetězce podpisu. Další informace najdete v části "Zadání 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, pokud je pole podepsaná verze (sv) v 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í, ses bude pole respektovat 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).

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

Určení podpisu

Pole signature (sig) slouží k autorizaci požadavku klienta se sdíleným přístupovým podpisem. Řetězec typu string-to-sign je jedinečný řetězec vytvořený z polí, která musí být ověřena pro autorizaci požadavku. 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.

Pokud chcete vytvořit podpisový řetězec SAS delegování uživatele, vytvořte řetězec k sign z polí, která tvoří požadavek, zakódujte řetězec jako UTF-8 a potom 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.

Pole, která jsou vyžadována v řetězci k podpisu, závisí na verzi služby, která se používá pro 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 typu string-to-sign 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 typu string-to-sign 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 dřívější než 10.2.2020

Řetězec typu string-to-sign pro verze autorizace, které jsou 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

Kanonický prostředek

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

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

Následující příklady ukazují, jak vytvořit 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 Gen2)
URL = https://myaccount.dfs.core.windows.net/music  
canonicalizedResource = "/blob/myaccount/music"  
Příklad adresáře (Azure Data Lake Storage Gen2)
URL = https://myaccount.dfs.core.windows.net/music/instruments/guitar/  
canonicalizedResource = "/blob/myaccount/music/instruments/guitar/"  
Příklad objektu blob (Azure Data Lake Storage Gen2)
URL = https://myaccount.dfs.core.windows.net/music/intro.mp3  
canonicalizedResource = "/blob/myaccount/music/intro.mp3"  

Volitelná pole

Pokud je pole volitelné a není součástí tokenu SAS, zadejte pro pole prázdný řetězec. 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=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.
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.
Služba klíčů sks=b Pro hodnotu služby je podporována pouze služba Blob Service.
Verze klíče skv=2022-11-02 Verze služby úložiště, která se použila k získání klíče delegování uživatele.
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 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.
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.

Odvolání sas delegování uživatele

Pokud se domníváte, že došlo k ohrožení zabezpečení sas, 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 pro objekt zabezpečení, který se používá k vytvoření sas.

Důležité

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

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

Klíč delegování uživatele můžete odvolat voláním operace Odvolání klíčů delegování uživatele . Když odvoláte klíč delegování uživatele, všechny sdílené přístupové podpisy, které jsou na daném klíči závislé, se stanou neplatnými. Pak můžete znovu zavolat operaci Získat klíč delegování uživatele a pomocí klíče vytvořit nové sdílené přístupové podpisy. Jedná se o nejrychlejší způsob, jak odvolat SAS delegování uživatele.

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

Přiřazení role RBAC pro objekt zabezpečení, který se používá k vytvoření SAS, 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é