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:
- Pomocí RBAC udělte požadovaná oprávnění objektu zabezpečení, který si vyžádá klíč delegování uživatele.
- Získejte token OAuth 2.0 z Microsoft Entra ID.
- Pomocí tokenu požádejte o klíč delegování uživatele voláním operace Získat klíč delegování uživatele .
- 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:
- Přispěvatel
- Přispěvatel účtů úložiště
- Přispěvatel dat v objektech blob služby Storage
- Vlastník dat v objektech blob služby Storage
- Čtenář dat v objektech blob služby Storage
- Delegátor objektů blob služby Storage
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
, wl
a rl
. Mezi příklady neplatných nastavení patří wr
, lr
dr
, 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ů. Polesuoid
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. Pokudsuoid
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.suoid
saoid
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čkoux-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čkoux-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í () obsahovatPermissions
Ownership
oprávnění (o
p
).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.