Udostępnij za pośrednictwem


Tworzenie sygnatury dostępu współdzielonego usługi OneLake (SAS) (wersja zapoznawcza)

Sygnaturę dostępu współdzielonego usługi OneLake można utworzyć w celu zapewnienia krótkoterminowego, delegowanego dostępu do folderu lub pliku w usłudze OneLake wspieranego przez poświadczenia firmy Microsoft Entra. Sygnatura dostępu współdzielonego usługi OneLake może zapewnić tymczasowy dostęp do aplikacji bez obsługi firmy Microsoft Entra, umożliwiając im ładowanie danych lub pełnienie roli serwerów proxy między innymi aplikacjami klienta lub niezależnymi dostawcami oprogramowania (ISV).

Aby utworzyć sygnaturę dostępu współdzielonego usługi OneLake, musisz najpierw zażądać klucza delegowania użytkownika, którego następnie użyjesz do podpisania sygnatury dostępu współdzielonego. Aby zażądać klucza delegowania użytkownika, wywołaj operację Pobierz klucz delegowania użytkownika. Sygnatura dostępu współdzielonego usługi OneLake może udzielać dostępu tylko do plików i folderów w ramach elementów danych i nie może być używana do wykonywania operacji zarządzania, takich jak tworzenie lub usuwanie elementów lub obszarów roboczych.

Sygnatura dostępu współdzielonego usługi OneLake może udzielać dostępu tylko do plików i folderów w ramach elementów danych i nie może być używana do wykonywania operacji zarządzania, takich jak tworzenie obszarów roboczych lub elementów.

Sygnatura dostępu współdzielonego usługi OneLake jest tworzona podobnie do delegowanej przez użytkownika sygnatury dostępu współdzielonego usługi Azure Storage przy użyciu tych samych parametrów w celu zapewnienia zgodności z narzędziami i aplikacjami zgodnymi z usługą Azure Storage.

Ważne

Ta funkcja jest dostępna w wersji zapoznawczej.

Przypisywanie uprawnień użytkowników

Żądanie klucza delegowania użytkownika jest operacją na poziomie dzierżawy w sieci szkieletowej. Aby zażądać klucza delegowania użytkownika, użytkownik lub zasada zabezpieczeń żądającą klucza delegowania użytkownika musi mieć co najmniej uprawnienia do odczytu w jednym obszarze roboczym w dzierżawie sieci szkieletowej. Żądający tożsamość użytkownika jest używany do uwierzytelniania sygnatury dostępu współdzielonego, co oznacza, że użytkownik musi mieć uprawnienia do danych, do których udziela dostępu sygnatury dostępu współdzielonego.

Uzyskiwanie tokenu OAuth 2.0

Aby uzyskać klucz delegowania użytkownika, najpierw zażądaj tokenu OAuth 2.0 z identyfikatora Entra firmy Microsoft. Autoryzuj wywołanie operacji Pobierz klucz delegowania użytkownika, podając token ze schematem elementu nośnego. Aby uzyskać więcej informacji na temat żądania tokenu OAuth z identyfikatora Entra firmy Microsoft, zobacz Przepływy uwierzytelniania i scenariusze aplikacji.

Żądanie klucza delegowania użytkownika

Wywołanie operacji Pobierz klucz delegowania użytkownika zwraca klucz jako zestaw wartości, które są używane jako parametry w tokenie SAS delegowania użytkownika. Te parametry opisano w dokumentacji Uzyskiwanie klucza delegowania użytkownika i w następnej sekcji.

Gdy klient żąda klucza delegowania użytkownika przy użyciu tokenu OAuth 2.0, usługa OneLake zwraca klucz delegowania użytkownika w imieniu klienta. Sygnatura dostępu współdzielonego utworzona przy użyciu tego klucza delegowania użytkownika jest udzielana w większości uprawnień udzielonych klientowi w zakresie uprawnień jawnie przyznanych w sygnaturze dostępu współdzielonego.

Możesz utworzyć dowolną liczbę usług SAS usługi OneLake dla okresu istnienia klucza delegowania użytkownika. Jednak sygnatura dostępu współdzielonego usługi OneLake i klucze delegowania użytkownika mogą być ważne przez co najwyżej godzinę i nie mogą przekraczać okresu istnienia tokenu żądającego. Te ograniczenia okresu istnienia są krótsze niż maksymalny okres istnienia delegowanej sygnatury dostępu współdzielonego użytkownika usługi Azure Storage.

Konstruowanie sygnatury dostępu współdzielonego delegowania użytkownika

Poniższa tabela zawiera podsumowanie pól obsługiwanych dla tokenu SAS usługi OneLake. Kolejne sekcje zawierają więcej szczegółów na temat tych parametrów i różnic między tokenami SAS usługi Azure Storage. Usługa OneLake nie obsługuje każdego opcjonalnego parametru obsługiwanego przez usługę Azure Storage, a sygnatura dostępu współdzielonego OneLake skonstruowana z nieobsługiwanym parametrem zostanie odrzucona.

Nazwa pola sygnatury dostępu współdzielonego Parametr tokenu sygnatury dostępu współdzielonego Stan opis
signedVersion sv Wymagania Wskazuje wersję usługi używanej do konstruowania pola podpisu. Usługa OneLake obsługuje wersję "2020-02-10", wszystkie wersje po "2020-12-06" i wersje przed "2020-02-10".
signedResource sr Wymagania Określa, które zasoby są dostępne za pośrednictwem sygnatury dostępu współdzielonego. Tylko obiekt blob (b) i katalog (d) mają zastosowanie do usługi OneLake.
signedStart st Opcjonalnie Czas ważności sygnatury dostępu współdzielonego. Format ISO 8601 UTC.
signedExpiry se Wymagania Czas wygaśnięcia sygnatury dostępu współdzielonego
signedPermissions sp Wymagania Wskazuje operacje, które sygnatura dostępu współdzielonego może wykonywać w zasobie. Więcej szczegółów znajduje się w sekcji Określanie uprawnień
signedObjectId skoid Wymagania Identyfikuje podmiot zabezpieczeń firmy Microsoft Entra.
signedtenantId sktid Wymagania Określa dzierżawę firmy Microsoft Entra, w której zdefiniowano podmiot zabezpieczeń.
signedKeyStartTime skt Opcjonalnie Czas w formacie UTC podczas uruchamiania klucza podpisywania. Zwrócona przez operację Pobierz klucz delegowania użytkownika.
signedKeyExpiryTime ske Wymagania Czas w formacie UTC po zakończeniu klucza podpisywania. Zwrócona przez operację Pobierz klucz delegowania użytkownika.
signedKeyVersion skv Wymagania Wersja usługi magazynu używana do pobierania klucza delegowania użytkownika. Zwrócona przez operację Pobierz klucz delegowania użytkownika. Usługa OneLake obsługuje wersje 2020-02-10 i wcześniejsze oraz wersje po 2020-12-06
signedKeyService sks Wymagania Prawidłowa usługa klucza delegowania użytkownika. Usługa OneLake obsługuje tylko usługę Blob Storage (sks=b).
signature sig Wymagania Podpis to kod uwierzytelniania komunikatów oparty na skrótach (HMAC) obliczany za pośrednictwem ciągu do podpisania i klucza przy użyciu algorytmu SHA256, a następnie zakodowany przy użyciu kodowania Base64.
signedAuthorizedObjectId saoid Nieobsługiwane Sygnatura dostępu współdzielonego usługi OneLake nie obsługuje tej funkcji.
signedUnauthorizedObjectId suoid Nieobsługiwane Sygnatura dostępu współdzielonego usługi OneLake nie obsługuje tej funkcji.
signedCorrelationId suoid Nieobsługiwane Sygnatura dostępu współdzielonego usługi OneLake nie obsługuje tego parametru.
signedDirectoryDepth sdd Opcjonalnie Wskazuje liczbę katalogów w folderze głównym katalogu określonym w polu canonicalizedResource ciągu do znaku. Obsługiwane tylko wtedy, gdy sr=d.
signedEncryptionScope ses Nieobsługiwane Sygnatura dostępu współdzielonego usługi OneLake obecnie nie obsługuje niestandardowych zakresów szyfrowania.
signedIP sip Nieobsługiwane Usługa OneLake SAS nie obsługuje obecnie filtrowania adresów IP
signedProtocol spr Opcjonalnie Usługa OneLake obsługuje tylko żądania https.
Cache-Control nagłówek odpowiedzi rscc Nieobsługiwane Sygnatura dostępu współdzielonego usługi OneLake nie obsługuje tego parametru.
Content-Disposition nagłówek odpowiedzi rscd Nieobsługiwane Sygnatura dostępu współdzielonego usługi OneLake nie obsługuje tego parametru.
Content-Encoding nagłówek odpowiedzi rsce Nieobsługiwane Sygnatura dostępu współdzielonego usługi OneLake nie obsługuje tego parametru.
Content-Language nagłówek odpowiedzi rscl Nieobsługiwane Sygnatura dostępu współdzielonego usługi OneLake nie obsługuje tego parametru.
Content Type nagłówek odpowiedzi rsct Nieobsługiwane Sygnatura dostępu współdzielonego usługi OneLake nie obsługuje tego parametru.

Określanie uprawnień

Uprawnienia określone w signedPermissions polu (sp) w tokenie SYGNATURy dostępu współdzielonego wskazują operacje, które klient posiadający sygnaturę dostępu współdzielonego może wykonać na zasobie.

Uprawnienia można połączyć, aby umożliwić klientowi wykonywanie wielu operacji przy użyciu tej samej sygnatury dostępu współdzielonego. Podczas konstruowania sygnatury dostępu współdzielonego należy uwzględnić uprawnienia w następującej kolejności: racwdxltmeop.

Przykładami prawidłowych ustawień uprawnień sąrw: , , rdrl, wd, wli rl. Nie można określić uprawnienia więcej niż raz.

Aby zapewnić równoważność z istniejącymi narzędziami usługi Azure Storage, usługa OneLake używa tego samego formatu uprawnień co usługa Azure Storage. Usługa OneLake ocenia uprawnienia przyznane sygnaturze dostępu współdzielonego w signedPermissionsprogramie , uprawnienia tożsamości podpisywania w sieci szkieletowej i wszystkie role dostępu do danych usługi OneLake, jeśli mają zastosowanie. Należy pamiętać, że niektóre operacje, takie jak ustawianie uprawnień lub usuwanie obszarów roboczych, nie są dozwolone w usłudze OneLake za pośrednictwem interfejsów API usługi Azure Storage. W związku z tym przyznanie tego uprawnienia (sp=op) nie zezwala na wykonywanie tych operacji przez sygnaturę dostępu współdzielonego usługi OneLake.

Uprawnienie Symbol identyfikatora URI Zasób Dozwolone operacje
Przeczytaj r Katalog, obiekt blob Odczytaj zawartość, listę bloków, właściwości i metadane dowolnego obiektu blob w kontenerze lub katalogu. Użyj obiektu blob jako źródła operacji kopiowania.
Dodaj a Katalog, obiekt blob Dodaj blok do uzupełnialnych obiektów blob.
Utworzenie c Katalog, obiekt blob Napisz nowy obiekt blob, utwórz migawkę obiektu blob lub skopiuj obiekt blob do nowego obiektu blob.
Write w Katalog, obiekt blob Tworzenie lub zapisywanie zawartości, właściwości, metadanych lub listy zablokowanych. Migawka lub dzierżawa obiektu blob. Użyj obiektu blob jako miejsca docelowego operacji kopiowania.
Delete d Katalog, obiekt blob Usuwanie obiektu blob.
Usuń wersję x Obiekt blob Usuń wersję obiektu blob.
Usuwanie trwałe t Obiekt blob Trwałe usuwanie migawki lub wersji obiektu blob.
List l Katalog Wyświetlanie listy obiektów blob w sposób nierekursywny.
Tagi t Obiekt blob Odczytywanie lub zapisywanie tagów w obiekcie blob.
Przesuń m Katalog, obiekt blob Przenieś obiekt blob lub katalog i jego zawartość do nowej lokalizacji.
Wykonywanie e Katalog, obiekt blob Pobierz właściwości systemu i, jeśli hierarchiczna przestrzeń nazw jest włączona dla konta magazynu, pobierz listę ACL POSIX obiektu blob.
Własność o Katalog, obiekt blob Ustaw właściciela lub grupę będącą właścicielem. Nieobsługiwane w usłudze OneLake
Uprawnienia p Katalog, obiekt blob Ustaw uprawnienia. Nieobsługiwane w usłudze OneLake
Ustawianie zasad niezmienności i Obiekt blob Ustaw lub usuń zasady niezmienności lub archiwizację ze względów prawnych dla obiektu blob.

Określanie podpisu

Pole signature (sig) służy do autoryzowania żądania złożonego przez klienta z sygnaturą dostępu współdzielonego. Ciąg-znak to unikatowy ciąg skonstruowany z pól, które należy zweryfikować, aby autoryzować żądanie. Podpis jest algorytmem HMAC obliczanym za pośrednictwem ciągu do podpisania i klucza przy użyciu algorytmu SHA256, a następnie zakodowanego przy użyciu kodowania bBase65.

Aby utworzyć ciąg podpisu sygnatury dostępu współdzielonego delegowania użytkownika, utwórz ciąg do podpisania z pól wykonanych przez żądanie, zakoduj ciąg jako UTF-8, a następnie oblicz podpis przy użyciu algorytmu HMAC-SHA256. Pola zawarte w znaku ciągu muszą być zdekodowane pod adresem URL.

Pola wymagane w ciągu do podpisania zależą od wersji usługi używanej do autoryzacji (sv). W poniższej sekcji opisano konfiguracje ciąg-znak dla wersji, które obsługują usługi OneLake SASs.

Wersja 2020-12-06 lub nowsza

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

Wersja 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

Wersje starsze niż 2020-02-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" +
                rscc + "\n" +
                rscd + "\n" +  
                rsce + "\n" +  
                rscl + "\n" +  
                rsct

Zasób kanoniczny

Część canonicalizedResource ciągu jest ścieżką kanoniczną do zasobu. Musi zawierać punkt końcowy OneLake i nazwę zasobu i musi być zdekodowany adres URL. Ścieżka oneLake musi zawierać swój obszar roboczy, a ścieżka katalogu musi zawierać liczbę podkatalogów odpowiadających parametrowi sdd .

W poniższych przykładach pokazano, jak przekonwertować adres URL usługi OneLake na odpowiedni zasób kanoniczny. Pamiętaj, że usługa OneLake obsługuje zarówno operacje systemu plików DFS, jak i obiekty blob oraz punkty końcowe, a nazwa konta usługi OneLake jest zawsze onelake.

Plik obiektu blob

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

Katalog systemu plików DFS

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

Przykład sygnatury dostępu współdzielonego usługi OneLake

W poniższym przykładzie pokazano identyfikator URI sygnatury dostępu współdzielonego OneLake z dołączonym do niego tokenem SAS usługi OneLake. Token sygnatury dostępu współdzielonego zapewnia uprawnienia do odczytu i zapisu w folderze Files w usłudze 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>