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:
- 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.
- Získejte token OAuth 2.0 z ID Microsoft Entra.
- 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.
- 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:
- přispěvatele
- přispěvatele účtu úložiště
- Přispěvatel dat objektů blob služby Storage
- vlastníka dat objektů blob služby Storage
- čtečka dat objektů blob služby Storage
- delegátoru objektů blob služby
Storage
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
, wl
a rl
. Mezi neplatné nastavení patří wr
, dr
, lr
a 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 | já | 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ů. Polesuoid
je platné pouze pro účty, které mají hierarchický obor názvů. Když je polesuoid
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 polesuoid
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čkoux-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č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
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.