Een Shared Access Signature (SAS) voor OneLake maken (preview)
U kunt een OneLake SAS maken om korte, gedelegeerde toegang te bieden tot een map of bestand in OneLake, ondersteund door uw Microsoft Entra-referenties. OneLake SAS kan tijdelijke toegang bieden tot toepassingen zonder ondersteuning voor Microsoft Entra, zodat ze gegevens kunnen laden of als proxy's kunnen fungeren tussen andere klanttoepassingen of onafhankelijke softwareleveranciers (ISV's).
Als u een OneLake SAS wilt maken, moet u eerst een gebruikersdelegeringssleutel aanvragen, die u vervolgens gebruikt om de SAS te ondertekenen. Als u een gebruikersdelegatiesleutel wilt aanvragen, roept u de bewerking Gebruikersdelegeringssleutel ophalen aan. OneLake SAS kan alleen toegang verlenen tot bestanden en mappen binnen gegevensitems en kan niet worden gebruikt voor beheerbewerkingen, zoals het maken of verwijderen van items of werkruimten.
Een OneLake SAS kan alleen toegang verlenen tot bestanden en mappen binnen gegevensitems en kan niet worden gebruikt voor beheerbewerkingen, zoals het maken van werkruimten of items.
Een OneLake SAS wordt op dezelfde manier gemaakt als door de gebruiker gedelegeerde SAS van Azure Storage, met behulp van dezelfde parameters voor compatibiliteit met hulpprogramma's en toepassingen die compatibel zijn met Azure Storage.
Belangrijk
Deze functie is beschikbaar als preview-versie.
Machtigingen toewijzen
Het aanvragen van een gebruikersdelegatiesleutel is een bewerking op tenantniveau in Fabric. Als u een gebruikersdelegatiesleutel wilt aanvragen, moet de gebruiker of het beveiligingsprincipe dat de gebruikersdelegeringssleutel aanvraagt, ten minste leesmachtigingen hebben in één werkruimte in de Fabric-tenant. De identiteit van de gebruiker wordt gebruikt om de SAS te verifiëren. Dit betekent dat de gebruiker toestemming moet hebben voor de gegevens waartoe de gebruiker de SAS-toegang verleent.
Een OAuth 2.0-token verkrijgen
Als u de gebruikersdelegeringssleutel wilt ophalen, vraagt u eerst een OAuth 2.0-token aan bij Microsoft Entra-id. Autoriseren van de aanroep van de bewerking Gebruikersdelegatiesleutel ophalen door het token met het Bearer-schema op te geven. Zie Verificatiestromen en toepassingsscenario's voor meer informatie over het aanvragen van een OAuth-token van Microsoft Entra ID.
De gebruikersdelegeringssleutel aanvragen
Als u de bewerking Sleutel voor gebruikersoverdracht ophalen aanroept, wordt de sleutel geretourneerd als een set waarden die worden gebruikt als parameters voor het SAS-token voor gebruikersdelegatie. Deze parameters worden beschreven in de naslaginformatie over de gebruikersdelegeringssleutel ophalen en in de volgende sectie.
Wanneer een client een gebruikersdelegeringssleutel aanvraagt met behulp van een OAuth 2.0-token, retourneert OneLake een gebruikersdelegatiesleutel namens de client. Een SAS die is gemaakt met deze gebruikersdelegeringssleutel, wordt maximaal de machtigingen verleend die aan de client zijn verleend, beperkt tot de machtigingen die expliciet zijn verleend in de SAS.
U kunt een willekeurig aantal OneLake-SAS's maken voor de levensduur van de gebruikersdelegeringssleutel. Een OneLake SAS en gebruikersdelegatiesleutels kunnen echter maximaal één uur geldig zijn en kunnen de levensduur van het token dat ze aanvraagt, niet overschrijden. Deze levensduurbeperkingen zijn korter dan de maximale levensduur van een gedelegeerde SAS van een Azure Storage-gebruiker.
Een SAS voor gebruikersdelegering maken
De volgende tabel bevat een overzicht van de velden die worden ondersteund voor een OneLake SAS-token. In volgende secties vindt u meer informatie over deze parameters en hoe deze verschillen van AZURE Storage SAS-tokens. OneLake biedt geen ondersteuning voor elke optionele parameter die wordt ondersteund door Azure Storage en een OneLake SAS die is samengesteld met een niet-ondersteunde parameter wordt geweigerd.
SAS-veldnaam | SAS-tokenparameter | -Status | Beschrijving |
---|---|---|---|
signedVersion |
sv |
Vereist | Geeft de versie aan van de service die wordt gebruikt om het handtekeningveld samen te stellen. OneLake ondersteunt versie 2020-02-10, alle versies na '2020-12-06' en versies vóór '2020-02-10'. |
signedResource |
sr |
Vereist | Hiermee geeft u op welke resources toegankelijk zijn via de Shared Access Signature. Alleen blob (b ) en map (d ) zijn van toepassing op OneLake. |
signedStart |
st |
Optioneel | Het tijdstip waarop de handtekening voor gedeelde toegang geldig wordt. ISO 8601 UTC-indeling. |
signedExpiry |
se |
Vereist | Het tijdstip waarop de handtekening voor gedeelde toegang verloopt |
signedPermissions |
sp |
Vereist | Geeft aan welke bewerkingen de SAS op de resource kan uitvoeren. Meer informatie vindt u in de sectie Machtigingen opgeven |
signedObjectId |
skoid |
Vereist | Identificeert een Microsoft Entra-beveiligingsprincipaal. |
signedtenantId |
sktid |
Vereist | Hiermee geeft u de Microsoft Entra-tenant op waarin een beveiligingsprincipaal wordt gedefinieerd. |
signedKeyStartTime |
skt |
Optioneel | Tijd in UTC wanneer de ondertekeningssleutel wordt gestart. Geretourneerd door de bewerking Gebruikersdelegeringssleutel ophalen. |
signedKeyExpiryTime |
ske |
Vereist | Tijd in UTC wanneer de ondertekeningssleutel eindigt. Geretourneerd door de bewerking Gebruikersdelegeringssleutel ophalen. |
signedKeyVersion |
skv |
Vereist | De versie van de opslagservice die wordt gebruikt om de gebruikersdelegeringssleutel op te halen. Geretourneerd door de bewerking Gebruikersdelegeringssleutel ophalen. OneLake ondersteunt versies 2020-02-10 en vóór en versies na 2020-12-06 |
signedKeyService |
sks |
Vereist | De geldige service voor de gebruikersdelegeringssleutel. OneLake ondersteunt alleen Blob Storage (sks=b ). |
signature |
sig |
Vereist | De handtekening is een HMAC (hash-based message authentication code) die wordt berekend via het tekenreeks-naar-teken en de sleutel met behulp van het SHA256-algoritme en vervolgens gecodeerd met Base64-codering. |
signedAuthorizedObjectId |
saoid |
Niet ondersteund | OneLake SAS biedt geen ondersteuning voor deze functie. |
signedUnauthorizedObjectId |
suoid |
Niet ondersteund | OneLake SAS biedt geen ondersteuning voor deze functie. |
signedCorrelationId |
suoid |
Niet ondersteund | OneLake SAS biedt geen ondersteuning voor deze parameter. |
signedDirectoryDepth |
sdd |
Optioneel | Geeft het aantal mappen in de hoofdmap van de map aan die is opgegeven in het veld canonicalizedResource van het tekenreeks-naar-teken. Alleen ondersteund wanneer sr=d . |
signedEncryptionScope |
ses |
Niet ondersteund | OneLake SAS biedt momenteel geen ondersteuning voor aangepaste versleutelingsbereiken. |
signedIP |
sip |
Niet ondersteund | OneLake SAS biedt momenteel geen ondersteuning voor IP-filtering |
signedProtocol |
spr |
Optioneel | OneLake ondersteunt alleen https-aanvragen. |
Cache-Control antwoordheader |
rscc |
Niet ondersteund | OneLake SAS biedt geen ondersteuning voor deze parameter. |
Content-Disposition antwoordheader |
rscd |
Niet ondersteund | OneLake SAS biedt geen ondersteuning voor deze parameter. |
Content-Encoding antwoordheader |
rsce |
Niet ondersteund | OneLake SAS biedt geen ondersteuning voor deze parameter. |
Content-Language antwoordheader |
rscl |
Niet ondersteund | OneLake SAS biedt geen ondersteuning voor deze parameter. |
Content Type antwoordheader |
rsct |
Niet ondersteund | OneLake SAS biedt geen ondersteuning voor deze parameter. |
Machtigingen opgeven
De machtigingen die zijn opgegeven in het signedPermissions
veld (sp
) van het SAS-token geven aan welke bewerkingen een client met de SAS kan uitvoeren op de resource.
Machtigingen kunnen worden gecombineerd om een client in staat te stellen meerdere bewerkingen uit te voeren met dezelfde SAS. Wanneer u de SAS maakt, moet u machtigingen in de volgende volgorde opnemen: racwdxltmeop
Voorbeelden van geldige machtigingsinstellingen zijn onder andere rw
, rd
, rl
, wd
en wl
rl
. U kunt niet meer dan één keer een machtiging opgeven.
Om pariteit met bestaande Azure Storage-hulpprogramma's te garanderen, gebruikt OneLake dezelfde machtigingsindeling als Azure Storage. OneLake evalueert de machtigingen die zijn verleend aan een SAS in signedPermissions
, de machtigingen van de ondertekeningsidentiteit in Fabric en eventuele rollen voor OneLake-gegevenstoegang, indien van toepassing. Houd er rekening mee dat sommige bewerkingen, zoals het instellen van machtigingen of het verwijderen van werkruimten, over het algemeen niet zijn toegestaan op OneLake via Azure Storage-API's, en daarom wordt het verlenen van die machtiging (sp=op
) niet toegestaan dat een OneLake SAS deze bewerkingen uitvoert.
Machtiging | URI-symbool | Bron | Toegestane bewerkingen |
---|---|---|---|
Read | r | Map, blob | Lees de inhoud, bloklijst, eigenschappen en metagegevens van een blob in de container of map. Gebruik een blob als bron van een kopieerbewerking. |
Toevoegen | a | Map, blob | Voeg een blok toe aan een toevoeg-blob. |
Maken | c | Map, blob | Schrijf een nieuwe blob, maak een momentopname van een blob of kopieer een blob naar een nieuwe blob. |
Schrijven | w | Map, blob | Inhoud, eigenschappen, metagegevens of bloklijst maken of schrijven. Momentopname of lease van de blob. Gebruik de blob als de bestemming van een kopieerbewerking. |
Delete | d | Map, blob | Een blob verwijderen. |
Versie verwijderen | x | Blob | Een blobversie verwijderen. |
Permanent verwijderen | y | Blob | Verwijder een blob-momentopname of -versie definitief. |
List | l | Directory | Geef blobs niet-recursief weer. |
Tags | h | Blob | Lees of schrijf de tags op een blob. |
Verplaatsen | m | Map, blob | Verplaats een blob of map en de inhoud ervan naar een nieuwe locatie. |
Uitvoeren | e | Map, blob | Haal de systeemeigenschappen op en haal de POSIX-ACL van een blob op als de hiërarchische naamruimte is ingeschakeld voor het opslagaccount. |
Eigendom | o | Map, blob | Stel de eigenaar of eigenaar van de groep in. Niet ondersteund in OneLake |
Machtigingen | nm | Map, blob | Stel de machtigingen in. Niet ondersteund in OneLake |
Onveranderbaarheidsbeleid instellen | Ik | Blob | Het onveranderbaarheidsbeleid of juridische bewaring voor een blob instellen of verwijderen. |
De handtekening opgeven
Het signature
veld (sig
) wordt gebruikt voor het autoriseren van een aanvraag van een client met de handtekening voor gedeelde toegang. Het tekenreeks-naar-teken is een unieke tekenreeks die is samengesteld uit de velden die moeten worden geverifieerd om de aanvraag te autoriseren. De handtekening is een HMAC die wordt berekend via de tekenreeks-naar-teken en sleutel met behulp van het SHA256-algoritme en vervolgens gecodeerd met behulp van bBase65-codering.
Als u de handtekeningtekenreeks van een SAS voor gebruikersdelegering wilt maken, maakt u de tekenreeks naar teken van de velden die door de aanvraag zijn gemaakt, codeert u de tekenreeks als UTF-8 en berekent u de handtekening met behulp van het HMAC-SHA256-algoritme. De velden die zijn opgenomen in het tekenreeks-naar-teken, moeten url-decoderen.
De velden die vereist zijn in het tekenreeks-naar-teken, zijn afhankelijk van de serviceversie die wordt gebruikt voor het autorisatieveld (sv
). In de volgende sectie worden de configuraties voor tekenreeks-naar-teken beschreven voor versies die Ondersteuning bieden voor OneLake SASs.
Versie 2020-12-06 en hoger
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
Versie 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
Versies ouder dan 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
Canonicalized resource
Het canonicalizedResource
gedeelte van de tekenreeks is een canoniek pad naar de resource. Het moet het OneLake-eindpunt en de resourcenaam bevatten en moet een URL zijn gedecodeerd. Een OneLake-pad moet de werkruimte bevatten en een mappad moet het aantal submappen bevatten dat overeenkomt met de sdd
parameter.
In de volgende voorbeelden ziet u hoe u uw OneLake-URL converteert naar de bijbehorende canonieke resource. Houd er rekening mee dat OneLake zowel DFS- als blobbewerkingen en eindpunten ondersteunt en dat de accountnaam voor uw OneLake altijd onelake is.
Blobbestand
URL = https://onelake.blob.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/sales.csv
canonicalizedResource = "/blob/onelake/myWorkspace/myLakehouse.Lakehouse/Files/sales.csv"
DFS-map
URL = https://onelake.dfs.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/
canonicalizedResource = "/blob/onelake/myWorkspace/myLakehouse.Lakehouse/Files/"
OneLake SAS-voorbeeld
In het volgende voorbeeld ziet u een OneLake SAS-URI met een OneLake SAS-token dat eraan is toegevoegd. Het SAS-token biedt lees- en schrijfmachtigingen voor de map Bestanden in het 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>