Zdieľať cez


Vytvorenie zdieľaného prístupového podpisu (SAS) v službe OneLake

Môžete vytvoriť podpis zdieľaného prístupu OneLake (SAS) na poskytovanie krátkodobého delegovaného prístupu do priečinka alebo súboru vo OneLake, ktorý podporuje vaše poverenia spoločnosti Microsoft Entra. OneLake SAS môže poskytovať dočasný prístup k aplikáciám, ktoré nepodporujú službu Microsoft Entra, čo im umožňuje načítať údaje alebo slúžiť ako servery proxy medzi ostatnými zákazníckymi aplikáciami alebo nezávislými dodávateľmi softvéru (ISV).

Ak chcete vytvoriť OneLake SAS, najskôr požiadajte o kľúč delegovania používateľa a potom pomocou kľúča podpíšte SAS. Ak chcete požiadať o kľúč delegovania používateľa, zavolajte operáciu Načítať kľúč delegovania používateľa.

OneLake SAS môže udeliť prístup len k súborom a priečinkom, ktoré sú v rámci údajových položiek. Nedá sa použiť na operácie spravovania, ako sú napríklad vytváranie alebo odstraňovanie pracovných priestorov alebo položiek.

Vytvorenie prostredia OneLake SAS sa podobá na vytvorenie sas SAS delegovaného používateľom služby Azure Storage pomocou rovnakých parametrov na kompatibilitu s nástrojmi a aplikáciami, ktoré fungujú so službou Azure Storage.

Požadované povolenia

Požadovanie kľúča delegovania používateľa predstavuje operáciu na úrovni nájomníka v službe Fabric. Ak chcete požiadať o kľúč delegovania používateľa, používateľ alebo subjekt zabezpečenia požadujúci kľúč delegovania používateľa musí mať aspoň povolenia na čítanie v jednom pracovnom priestore v nájomníkovi služby Fabric. Identita žiadajúceho používateľa sa používa na overenie SAS, čo znamená, že používateľ musí mať povolenie k údajom, ku ktorým udelí prístup SAS.

Získanie tokenu OAuth 2.0

Ak chcete získať kľúč delegovania používateľa, najskôr požiadajte o token OAuth 2.0 z identifikátora Microsoft Entra ID. Povoľte volanie operácie Načítať kľúč delegovania používateľa zadaním nosného tokenu. Ďalšie informácie o vyžiadaní tokenu OAuth od spoločnosti Microsoft Entra ID nájdete v téme Postupy overovania a scenáre aplikácie.

Vyžiadanie kľúča na delegovanie používateľa

Volanie operácie Získať kľúč delegovania používateľa vráti kľúč ako množinu hodnôt, ktoré sa používajú ako parametre tokenu SAS delegovania používateľa. Tieto parametre sú popísané v časti Načítať kľúč delegovania používateľov a v ďalšej časti.

Poznámka

Volanie operácie Získať kľúč delegovania používateľov pomocou vyťaženia služby Fabric, ako je napríklad poznámkový blok jazyka Python, vyžaduje regionálny koncový bod pre službu OneLake, ktorý je určený oblasťou kapacity, v opačnom prípade bude prijatá odpoveď 200 Zdravé namiesto kľúča delegovania.

Keď klient požiada o kľúč delegovania používateľa pomocou tokenu OAuth 2.0, oneLake vráti kľúč delegovania používateľa v mene klienta. Sas vytvorené pomocou tohto kľúča delegovania používateľa sa udeľujú na väčšine povolení udelených klientovi, pričom tieto povolenia sú explicitne udelené v SAS.

Počas trvania kľúča delegovania používateľa môžete vytvoriť ľubovoľný počet tokenov OneLake SAS. OneLake SAS a kľúče delegovania používateľa však môžu byť platné maximálne jednu hodinu a nemôžu prekročiť životnosť tokenu, ktorý ich požaduje. Tieto obmedzenia životnosti sú kratšie ako maximálna životnosť delegovaného SAS používateľa služby Azure Storage.

Vytvorenie SAS delegovaia používateľa

V nasledujúcej tabuľke je súhrn polí, ktoré sú podporované pre token SAS OneLake. V nasledujúcich častiach nájdete ďalšie podrobnosti o týchto parametroch a o tom, ako sa líšia od tokenov SAS azure Storage. OneLake nepodporuje každý voliteľný parameter podporovaný službou Azure Storage a rozhranie SAS OneLake vytvorené s nepodporovaným parametrom sa zamietne.

Názov poľa SAS Parameter tokenu SAS Postavenie Popis
signedVersion sv Povinné Označuje verziu služby úložiska použitú na vytvorenie poľa podpisu. OneLake podporuje verzie 2020-02-10 a staršie verzie alebo verzie 2020-12-06 a novšie.
signedResource sr Povinné Určuje, ktoré zdroje sú prístupné prostredníctvom podpisu zdieľaného prístupu. Na službu OneLake možno použiť iba objekt blob (b) a adresár (d).
signedStart st Voliteľné Čas, kedy sa podpis zdieľaného prístupu stane platným. Formát UTC normy ISO 8601.
signedExpiry se Povinné Čas uplynutia platnosti podpisu zdieľaného prístupu.
signedPermissions sp Povinné Udáva, ktoré operácie môže SAS na zdroji vykonávať. Ďalšie informácie nájdete v časti Zadanie povolení .
signedObjectId skoid Povinné Identifikuje subjekt zabezpečenia microsoft Entra.
signedtenantId sktid Povinné Určuje nájomníka Microsoft Entra, v ktorom je definovaný subjekt zabezpečenia.
signedKeyStartTime skt Voliteľné Čas v UTC, keď sa spustí podpisový kľúč. Vráti sa operáciou Načítať kľúč delegovania používateľa.
signedKeyExpiryTime ske Povinné Čas v UTC po skončení podpisového kľúča. Vráti sa operáciou Načítať kľúč delegovania používateľa.
signedKeyVersion skv Povinné Verzia služby úložiska, ktorá sa používa na získanie kľúča delegovania používateľa. Vráti sa operáciou Načítať kľúč delegovania používateľa. OneLake podporuje verzie 2020-02-10 a staršie verzie alebo verzie 2020-12-06 a novšie.
signedKeyService sks Povinné Platná služba pre kľúč delegovania používateľa. OneLake podporuje iba ukladací priestor objektu Blob (sks=b).
signature sig Povinné Podpis je overovací kód správy založený na hash (HMAC) vypočítaný cez reťazec k znamienku a kľúča pomocou algoritmu SHA256 a potom kódovaný s kódovaním Base64.
signedDirectoryDepth sdd Voliteľné Udáva počet adresárov v koreňovom priečinku adresára zadaného v poli canonicalizedResource reťazca na znamienko. Podporované iba vtedy, keď sr=d.
signedProtocol spr Voliteľné OneLake podporuje iba požiadavky https.
signedAuthorizedObjectId saoid Nepodporované OneLake SAS túto funkciu nepodporuje.
signedUnauthorizedObjectId suoid Nepodporované OneLake SAS túto funkciu nepodporuje.
signedCorrelationId suoid Nepodporované OneLake SAS tento parameter nepodporuje.
signedEncryptionScope ses Nepodporované OneLake SAS v súčasnosti nepodporuje vlastné rozsahy šifrovania.
signedIP sip Nepodporované OneLake SAS v súčasnosti nepodporuje filtrovanie IP adries.
Cache-Control hlavička odpovede rscc Nepodporované OneLake SAS tento parameter nepodporuje.
Content-Disposition hlavička odpovede rscd Nepodporované OneLake SAS tento parameter nepodporuje.
Content-Encoding hlavička odpovede rsce Nepodporované OneLake SAS tento parameter nepodporuje.
Content-Language hlavička odpovede rscl Nepodporované OneLake SAS tento parameter nepodporuje.
Content Type hlavička odpovede rsct Nepodporované OneLake SAS tento parameter nepodporuje.

Určenie povolení

Povolenia zadané v poli (signedPermissions) v sp tokene SAS označujú operácie, ktoré môže klient, ktorý má sa nachádzať v sas, vykonávať s prostriedkom.

Povolenia je možné skombinovať tak, aby povoľovali klienta na vykonávanie viacerých operácií v rovnakom prostredí SAS. Pri vytváraní sas musíte zahrnúť povolenia v nasledujúcom poradí: racwdxltmeop.

Príklady platných nastavení povolení zahŕňajú rw, rd, rl, wd, wla rl. Nie je možné zadať povolenie viackrát.

Na zaistenie rovnosti s existujúcimi nástrojmi Azure Storage používa OneLake rovnaký formát povolení ako Azure Storage. OneLake vyhodnotí povolenia udelené SAS v signedPermissions, povolenia na podpísanie identity v službe Fabric a prípadné roly prístupu k údajom OneLake. Pamätajte, že niektoré operácie, ako je napríklad nastavenie povolení alebo odstránenie pracovných priestorov, nie sú vo všeobecnosti povolené vo OneLake cez rozhrania API Azure Storage. Ak udelíte toto povolenie (sp=op) neumožníte sa vykonávať tieto operácie databáze OneLake SAS.

Povolenie Symbol URI Zdroj Povolené operácie
Čítanie r Adresár, Objekt Blob Prečítajte si obsah, zoznam blokovania, vlastnosti a metaúdaje ľubovoľného objektu BLOB v kontajneri alebo adresári. Objekt BLOB použite ako zdroj operácie kopírovania.
Pridať a Adresár, Objekt Blob Pridanie bloku do pripájacieho objektu BLOB.
Vytvoriť C: > Adresár, Objekt Blob Napíšte nový objekt BLOB, vytvorte snímku objektu BLOB alebo skopírujte objekt BLOB do nového objektu BLOB.
Zapisovať w Adresár, Objekt Blob Vytvorte alebo zapíšte obsah, vlastnosti, metaúdaje alebo blokovaný zoznam. Vytvorte snímku objektu alebo nájomníka. Objekt BLOB použite ako cieľ operácie kopírovania.
Odstrániť d Adresár, Objekt Blob Odstráňte objekt BLOB.
Odstrániť verziu x Blob Odstránenie verzie objektu BLOB.
Trvalé odstránenie y Blob Natrvalo odstráňte snímku alebo verziu objektu BLOB.
Zoznam l Adresár List blobs nonrecursively.
Značky t Blob Prečítajte si alebo napíšte značky do objektu BLOB.
Premiestniť m Adresár, Objekt Blob Premiestnite objekt BLOB alebo adresár s jeho obsahom do nového umiestnenia.
Spustiť e Adresár, Objekt Blob Získajte systémové vlastnosti a ak je hierarchický priestor názvov povolený pre konto úložiska, získajte poSIX ACL objektu blob.
Vlastníctvo o Adresár, Objekt Blob Nastavte vlastníka alebo vlastniacu skupinu. Nepodporované vo OneLake.
Povolenia p Adresár, Objekt Blob Nastavte povolenia. Nepodporované vo OneLake.
Nastavenie politiky immutability ja Blob Nastavte alebo odstráňte politiku immutability alebo právne blokovanie objektu BLOB.

Zadanie podpisu

Pole signature (sig) sa používa na autorizáciu žiadosti klienta s podpisom zdieľaného prístupu. Reťazec od prihlásenia je jedinečný reťazec vytvorený z polí, ktoré musia byť overené na overenie žiadosti. Podpis je HMAC, ktorý sa vypočíta cez znamienka reťazca a kľúča pomocou algoritmu SHA256 a potom kódovaný pomocou kódovania bBase65.

Ak chcete vytvoriť reťazec podpisu delegovania používateľa SAS, vytvorte reťazec na prihlásenie z polí vytvorených požiadavkou, zakódujte reťazec ako UTF-8 a potom vypočítajte podpis pomocou algoritmu HMAC-SHA256. Polia zahrnuté v reťazci string-to-sign musia byť dekódované pomocou URL adresy.

Polia vyžadované v reťazci na prihlásenie závisia od verzie služby, ktorá sa používa pre pole oprávnenia (sv). Nasledujúca časť popisuje konfigurácie od reťazca k znamienku pre verzie, ktoré podporujú OneLake SASs.

Verzia 2020-12-06 a novšia

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

Verzia 2020-02-10 a staršia

Táto konfigurácia sa vzťahuje na verziu 2020-02-10 a staršiu, s výnimkou verzie 2020-01-10, ktorá je popísaná v nasledujúcej časti.

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

Verzia 2020-01-10

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

Kanonický zdroj

Časť canonicalizedResource reťazca je kanonická cesta k prostriedku. Musí obsahovať koncový bod OneLake a názov prostriedku a musí byť dekódovaný pomocou URL adresy. Cesta OneLake musí obsahovať jeho pracovný priestor a cesta k adresáru musí obsahovať počet podadresárov, ktoré zodpovedajú parametru sdd .

Nasledujúce príklady ukazujú, ako previesť URL adresu služby OneLake na príslušný kanonický zdroj. Nezabudnite, že OneLake podporuje operácie DFS aj operácie Blob aj koncové body, a že názov konta vašej služby OneLake je vždy onelake.

Súbor objektu BLOB

URL = https://onelake.blob.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/sales.csv
canonicalizedResource = "/blob/onelake/myWorkspace/myLakehouse.Lakehouse/Files/sales.csv"

Adresár DFS

URL = https://onelake.dfs.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/
canonicalizedResource = "/blob/onelake/myWorkspace/myLakehouse.Lakehouse/Files/"

Príklad OneLake SAS

Nasledujúci príklad znázorňuje identifikátor URI OneLake SAS s tokenom SAS OneLake, ktorý je k nemu pripojený. Token SAS poskytuje povolenia na čítanie a zapisovaie do priečinka Files v úlo karte lakehouse.

https://onelake.blob.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/?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&sv=2022-11-02&sr=d&sig=<signature>