Del via


Opprette en OneLake-signatur for delt tilgang (SAS) (forhåndsvisning)

Du kan opprette en OneLake SAS for å gi kortsiktig, delegert tilgang til en mappe eller fil i OneLake støttet av Microsoft Entra-legitimasjonen. OneLake SAS kan gi midlertidig tilgang til programmer uten støtte for Microsoft Entra, slik at de kan laste inn data eller tjene som proxyer mellom andre kundeprogrammer eller uavhengige programvareleverandører (ISV-er).

Hvis du vil opprette en OneLake SAS, må du først be om en brukerdelegeringsnøkkel, som du deretter bruker til å signere SAS. Hvis du vil be om en brukerdelegeringsnøkkel, kaller du operasjonen Hent brukerdelegeringsnøkkel . OneLake SAS kan bare gi tilgang til filer og mapper i dataelementer, og kan ikke brukes til administrasjonsoperasjoner som å opprette eller slette elementer eller arbeidsområder.

En OneLake SAS kan bare gi tilgang til filer og mapper i dataelementer, og kan ikke brukes til administrasjonsoperasjoner, for eksempel oppretting av arbeidsområder eller elementer.

En OneLake SAS opprettes på samme måte som Azure Storage brukerdelegerte SAS, ved hjelp av de samme parameterne for kompatibilitet med verktøy og programmer som er kompatible med Azure Storage.

Viktig

Denne funksjonen er i forhåndsvisning.

Tildel tillatelser

Å be om en brukerdelegeringsnøkkel er en operasjon på leiernivå i Fabric. Hvis du vil be om en brukerdelegeringsnøkkel, må brukeren eller sikkerhetsprinsippet som ber om brukerdelegeringsnøkkelen, ha minst lesetillatelser i ett arbeidsområde i Fabric-leieren. Den forespurte brukerens identitet brukes til å godkjenne SAS, noe som betyr at brukeren må ha tillatelse til dataene de gir SAS-tilgang til.

Hent et OAuth 2.0-token

Hvis du vil ha brukerdelegeringsnøkkelen, må du først be om et OAuth 2.0-token fra Microsoft Entra ID. Godkjenn kallet til operasjonen Hent brukerdelegeringsnøkkel ved å gi tokenet bæreroppsettet. Hvis du vil ha mer informasjon om å be om et OAuth-token fra Microsoft Entra ID, kan du se Godkjenningsflyter og programscenarioer.

Be om brukerdelegeringsnøkkelen

Kall til operasjonen Hent brukerdelegeringsnøkkel returnerer nøkkelen som et sett med verdier som brukes som parametere på sas-tokenet for brukerdelegering. Disse parameterne er beskrevet i referansen Hent brukerdelegeringsnøkkel og i neste del.

Når en klient ber om en brukerdelegeringsnøkkel ved hjelp av et OAuth 2.0-token, returnerer OneLake en brukerdelegeringsnøkkel på vegne av klienten. En SAS som er opprettet med denne brukerdelegeringsnøkkelen, gis på det meste tillatelsene som gis til klienten, begrenset ned til tillatelsene som eksplisitt er gitt i SAS.

Du kan opprette et hvilket som helst antall OneLake SASs for levetiden til brukerdelegeringsnøkkelen. En OneLake SAS- og brukerdelegeringsnøkler kan imidlertid være gyldige i maksimalt én time, og kan ikke overskride levetiden til tokenet som ber om dem. Disse livstidsbegrensningene er kortere enn den maksimale levetiden til en Azure Storage-bruker delegert SAS.

Konstruere en sas for brukerdelegering

Tabellen nedenfor oppsummerer feltene som støttes for et OneLake SAS-token. Etterfølgende inndelinger gir mer informasjon om disse parameterne og hvordan de skiller seg fra Azure Storage SAS-tokener. OneLake støtter ikke alle valgfrie parametere som støttes av Azure Storage, og en OneLake SAS konstruert med en parameter som ikke støttes, blir avvist.

SAS-feltnavn Parameter for SAS-token Status Bekrivelse
signedVersion sv Kreves Angir hvilken versjon av tjenesten som brukes til å konstruere signaturfeltet. OneLake støtter versjon '2020-02-10', alle versjoner etter '2020-12-06', og versjoner før '2020-02-10'.
signedResource sr Kreves Angir hvilke ressurser som er tilgjengelige via signaturen for delt tilgang. Bare blob (b) og katalog (d) gjelder for OneLake.
signedStart st Valgfritt Tidspunktet da signaturen for delt tilgang blir gyldig. ISO 8601 UTC-format.
signedExpiry se Kreves Tidspunktet da signaturen for delt tilgang utløper
signedPermissions sp Kreves Angir hvilke operasjoner SAS kan utføre på ressursen. Flere detaljer i inndelingen Angi tillatelser
signedObjectId skoid Kreves Identifiserer en sikkerhetskontohaver for Microsoft Entra.
signedtenantId sktid Kreves Angir Microsoft Entra-leieren der en sikkerhetskontohaver er definert.
signedKeyStartTime skt Valgfritt Tid i UTC når signeringsnøkkelen starter. Returnert av operasjonen Hent brukerdelegeringsnøkkel .
signedKeyExpiryTime ske Kreves Tid i UTC når signeringsnøkkelen avsluttes. Returnert av operasjonen Hent brukerdelegeringsnøkkel .
signedKeyVersion skv Kreves Lagringstjenesteversjonen som brukes til å hente brukerdelegeringsnøkkelen. Returnert av operasjonen Hent brukerdelegeringsnøkkel . OneLake støtter versjoner 2020-02-10 og før, og versjoner etter 2020-12-06
signedKeyService sks Kreves Gyldig tjeneste for brukerdelegeringsnøkkelen. OneLake støtter bare Blob Storage (sks=b).
signature sig Kreves Signaturen er en hash-basert meldingsgodkjenningskode (HMAC) beregnet over streng-til-tegn og -tasten ved hjelp av SHA256-algoritmen, og deretter kodet med Base64-koding.
signedAuthorizedObjectId saoid Støttes ikke OneLake SAS støtter ikke denne funksjonen.
signedUnauthorizedObjectId suoid Støttes ikke OneLake SAS støtter ikke denne funksjonen.
signedCorrelationId suoid Støttes ikke OneLake SAS støtter ikke denne parameteren.
signedDirectoryDepth sdd Valgfritt Angir antall kataloger i rotmappen i katalogen som er angitt i canonicalizedResource-feltet for streng-til-for-tegn. Støttes bare når sr=d.
signedEncryptionScope ses Støttes ikke OneLake SAS støtter for øyeblikket ikke egendefinerte krypteringsomfang.
signedIP sip Støttes ikke OneLake SAS støtter for øyeblikket ikke IP-filtrering
signedProtocol spr Valgfritt OneLake støtter bare https-forespørsler.
Cache-Control svarhode rscc Støttes ikke OneLake SAS støtter ikke denne parameteren.
Content-Disposition svarhode rscd Støttes ikke OneLake SAS støtter ikke denne parameteren.
Content-Encoding svarhode rsce Støttes ikke OneLake SAS støtter ikke denne parameteren.
Content-Language svarhode rscl Støttes ikke OneLake SAS støtter ikke denne parameteren.
Content Type svarhode rsct Støttes ikke OneLake SAS støtter ikke denne parameteren.

Angi tillatelser

Tillatelsene som er angitt i signedPermissions (sp)-feltet på SAS-tokenet, angir hvilke operasjoner en klient som har SAS kan utføre på ressursen.

Tillatelser kan kombineres slik at en klient kan utføre flere operasjoner med samme SAS. Når du konstruerer SAS, må du inkludere tillatelser i følgende rekkefølge: racwdxltmeop.

Eksempler på gyldige tillatelsesinnstillinger inkluderer rw, , rd, rlwd, wlog rl. Du kan ikke angi en tillatelse mer enn én gang.

OneLake bruker samme tillatelsesformat som Azure Storage for å sikre paritet med eksisterende Azure Storage-verktøy. OneLake evaluerer tillatelsene som gis til en SAS i signedPermissions, tillatelsene til signeringsidentiteten i Fabric og eventuelle OneLake-datatilgangsroller, hvis aktuelt. Husk at noen operasjoner, for eksempel innstilling av tillatelser eller sletting av arbeidsområder, ikke er tillatt på OneLake via Azure Storage-API-er generelt, og derfor tillater ikke det å gi denne tillatelsen (sp=op) en OneLake SAS til å utføre disse operasjonene.

Tillatelse URI-symbol Ressurs Tillatte operasjoner
Lest r Katalog, Blob Les innholdet, blokklisten, egenskapene og metadataene til en blob i beholderen eller katalogen. Bruk en blob som kilde for en kopioperasjon.
Legg til a Katalog, Blob Legg til en blokk i en tilføyingsblob.
Create c Katalog, Blob Skriv en ny blob, øyeblikksbilde av en blob eller kopier en blob til en ny blob.
Skriv a Katalog, Blob Opprett eller skriv innhold, egenskaper, metadata eller blokkliste. Øyeblikksbilde eller leie ut bloben. Bruk bloben som mål for en kopioperasjon.
Delete d Katalog, Blob Slette en blob.
Slett versjon x Blob Slett en BLOB-versjon.
Permanent sletting y Blob Slett et blob-øyeblikksbilde eller en versjon permanent.
List l Directory Liste blobs ikke-rekursivt.
Merker d Blob Lese eller skrive kodene på en blob.
Flytt m Katalog, Blob Flytt en blob eller en katalog og innholdet til en ny plassering.
Utfør e Katalog, Blob Hent systemegenskapene, og hvis det hierarkiske navneområdet er aktivert for lagringskontoen, får du POSIX ACL for en blob.
Eierskap o Katalog, Blob Angi eieren eller eiergruppen. Støttes ikke i OneLake
Tillatelser p Katalog, Blob Angi tillatelsene. Støttes ikke i OneLake
Angi uforanderlighetspolicy jeg Blob Angi eller slette policyen for uforanderlighet eller juridisk sperring på en blob.

Angi signaturen

signature (sig)-feltet brukes til å godkjenne en forespørsel fra en klient med den delte tilgangssignaturen. Streng-til-for-tegn er en unik streng som er konstruert fra feltene som må bekreftes for å godkjenne forespørselen. Signaturen er en HMAC som beregnes over streng-til-tegn og -tasten ved hjelp av SHA256-algoritmen, og deretter kodes ved hjelp av bBase65-koding.

Hvis du vil konstruere signaturstrengen for en brukerdelegering av SAS, oppretter du strengen for å signere fra feltene som er gjort av forespørselen, koder strengen som UTF-8, og deretter beregner du signaturen ved hjelp av HMAC-SHA256-algoritmen. Feltene som er inkludert i streng-til-for-tegnet, må være URL-dekodet.

Feltene som kreves i strengen for å signere, avhenger av tjenesteversjonen som brukes til autorisasjonsfelt (sv). Den følgende delen beskriver konfigurasjonene for streng-til-signering for versjoner som støtter OneLake SASs.

Versjon 2020-12-06 og nyere

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

Versjon 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

Tidligere versjoner enn 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

Kanonisert ressurs

Delen canonicalizedResource av strengen er en kanonisk bane til ressursen. Det må inneholde OneLake-endepunktet og ressursnavnet, og må være url-dekodet. En OneLake-bane må inneholde arbeidsområdet, og en katalogbane må inneholde antall underkataloger som tilsvarer parameteren sdd .

Eksemplene nedenfor viser hvordan du konverterer Nettadressen for OneLake til den tilsvarende kanoniske ressursen. Husk at OneLake støtter både DFS- og Blob-operasjoner og endepunkter, og at kontonavnet for OneLake alltid er onelake.

Blob-fil

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

DFS-katalog

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

Eksempel på OneLake SAS

Eksemplet nedenfor viser en OneLake SAS URI med et OneLake SAS-token lagt til. SAS-tokenet gir lese- og skrivetillatelser til Filer-mappen i 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>