Erstellen einer gemeinsamen OneLake-SAS (Shared Access Signature) (Vorschau)
Sie können eine OneLake SAS erstellen, um kurzfristigen, delegierten Zugriff auf einen Ordner oder eine Datei in OneLake bereitzustellen, die von Ihren Microsoft Entra-Anmeldeinformationen unterstützt wird. OneLake SAS kann temporären Zugriff auf Anwendungen ohne Unterstützung für Microsoft Entra bieten, sodass sie Daten laden oder als Proxys zwischen anderen Kundenanwendungen oder unabhängigen Softwareanbietern (ISVs) dienen können.
Um ein OneLake SAS zu erstellen, müssen Sie zuerst einen Benutzerdelegierungsschlüssel anfordern, den Sie dann zum Signieren der SAS verwenden. Rufen Sie zum Anfordern eines Benutzerdelegierungsschlüssels den Vorgang Abrufen des Benutzerdelegierungsschlüssels auf. OneLake SAS kann nur Zugriff auf Dateien und Ordner innerhalb von Datenelementen gewähren und kann nicht für Verwaltungsvorgänge wie das Erstellen oder Löschen von Elementen oder Arbeitsbereichen verwendet werden.
Ein OneLake SAS kann nur Zugriff auf Dateien und Ordner innerhalb von Datenelementen gewähren und kann nicht für Verwaltungsvorgänge wie das Erstellen von Arbeitsbereichen oder Elementen verwendet werden.
Ein OneLake SAS wird ähnlich wie Azure Storage-benutzerdelegierte SAS erstellt, wobei die gleichen Parameter für die Kompatibilität mit Tools und Anwendungen verwendet werden, die mit Azure Storage kompatibel sind.
Wichtig
Dieses Feature befindet sich in der Vorschauphase.
Zuweisen von Berechtigungen
Das Anfordern eines Benutzerdelegierungsschlüssels ist ein Vorgang auf Mandantenebene in Fabric. Um einen Benutzerdelegierungsschlüssel anzufordern, muss der Benutzer oder die Sicherheitsrichtlinie, die den Benutzerdelegierungsschlüssel anfordert, mindestens Leseberechtigungen in einem Arbeitsbereich im Fabric-Mandanten besitzen. Die Identität des anfordernden Benutzers wird verwendet, um die SAS zu authentifizieren. Dies bedeutet, dass der Benutzer über die Berechtigung für die Daten verfügen muss, auf die er den SAS-Zugriff gewährt.
Abrufen eines OAuth 2.0-Tokens
Um den Benutzerdelegierungsschlüssel abzurufen, fordern Sie zuerst ein OAuth 2.0-Token von Microsoft Entra ID an. Autorisieren Sie den Aufruf des Vorgangs Abrufen des Benutzerdelegierungsschlüssels, indem Sie das Token mit dem Bearer-Schema bereitstellen. Weitere Informationen zum Anfordern eines OAuth-Tokens von Microsoft Entra ID finden Sie unter Authentifizierungsflüsse und Anwendungsszenarien.
Anfordern des Benutzerdelegierungsschlüssels
Durch Aufrufen des Vorgangs Get User Delegation Key wird der Schlüssel als Wertesatz zurückgegeben, der als Parameter für das SAS-Token der Benutzerdelegierung verwendet wird. Diese Parameter werden in der Referenz Get User Delegation Key und im nächsten Abschnitt beschrieben.
Wenn ein Client einen Benutzerdelegierungsschlüssel mithilfe eines OAuth 2.0-Tokens anfordert, gibt OneLake im Auftrag des Clients einen Benutzerdelegierungsschlüssel zurück. Ein SAS, das mit diesem Benutzerdelegierungsschlüssel erstellt wurde, erhält höchstens die Berechtigungen, die dem Client erteilt wurden, und zwar beschränkt auf die Berechtigungen, die explizit im SAS erteilt wurden.
Sie können eine beliebige Anzahl von OneLake-SASs für die Lebensdauer des Benutzerdelegierungsschlüssels erstellen. Eine OneLake SAS und ein Benutzerdelegierungsschlüssel können jedoch höchstens eine Stunde lang gültig sein und die Lebensdauer des Tokens, das sie anfordert, nicht überschreiten. Diese Lebensdauereinschränkungen sind kürzer als die maximale Lebensdauer eines delegierten Azure Storage-Benutzers SAS.
Erstellen einer SAS für die Benutzerdelegierung
In der folgenden Tabelle sind die Felder zusammengefasst, die für ein OneLake SAS-Token unterstützt werden. In den nachfolgenden Abschnitten werden weitere Details zu diesen Parametern und deren Unterschiede zu Azure Storage SAS-Token zur Verfügung gestellt. OneLake unterstützt nicht jeden optionalen Parameter, der von Azure Storage unterstützt wird, und ein mit einem nicht unterstützten Parameter erstelltes OneLake SAS wird abgelehnt.
SAS-Feldname | SAS-Tokenparameter | Status | Beschreibung |
---|---|---|---|
signedVersion |
sv |
Erforderlich | Gibt die Version des Dienstes an, der zum Erstellen des Signaturfelds verwendet wird. OneLake unterstützt Version '2020-02-10', alle Versionen nach '2020-12-06' und Versionen vor '2020-02-10'. |
signedResource |
sr |
Erforderlich | Gibt an, auf welche Ressourcen über die Signatur für den freigegebenen Zugriff zugegriffen werden kann. Nur Blob (b ) und Verzeichnis (d ) gelten für OneLake. |
signedStart |
st |
Optional | Der Zeitpunkt, zu dem die Signatur des freigegebenen Zugriffs gültig wird. ISO 8601 UTC-Format. |
signedExpiry |
se |
Erforderlich | Der Zeitpunkt, zu dem die Shared Access Signature abläuft |
signedPermissions |
sp |
Erforderlich | Gibt an, welche Vorgänge die SAS für die Ressource ausführen kann. Weitere Details im Abschnitt Angeben von Berechtigungen |
signedObjectId |
skoid |
Erforderlich | Identifiziert einen Microsoft Entra-Sicherheitsprinzipal. |
signedtenantId |
sktid |
Erforderlich | Gibt den Microsoft Entra-Mandanten an, in dem ein Sicherheitsprinzipal definiert ist. |
signedKeyStartTime |
skt |
Optional | Uhrzeit in UTC, wenn der Signaturschlüssel beginnt. Wird vom Vorgang Get User Delegation Key zurückgegeben. |
signedKeyExpiryTime |
ske |
Erforderlich | Uhrzeit in UTC, zu welcher der Signierschlüssel endet. Wird vom Vorgang Get User Delegation Key zurückgegeben. |
signedKeyVersion |
skv |
Erforderlich | Die Speicherdienstversion, die zum Abrufen des Benutzerdelegierungsschlüssels verwendet wird. Wird vom Vorgang Get User Delegation Key zurückgegeben. OneLake unterstützt Versionen 2020-02-10 und frühere und Versionen nach 2020-12-06 |
signedKeyService |
sks |
Erforderlich | Der gültige Dienst für den Benutzerdelegierungsschlüssel. OneLake unterstützt nur Blob Storage (sks=b ). |
signature |
sig |
Erforderlich | Die Signatur ist ein hashbasierter Nachrichtenauthentifizierungscode (HMAC), der mit dem SHA256-Algorithmus über die Zeichenfolge und den Schlüssel berechnet und dann mit Base64-Codierung codiert wird. |
signedAuthorizedObjectId |
saoid |
Nicht unterstützt | OneLake SAS unterstützt dieses Feature nicht. |
signedUnauthorizedObjectId |
suoid |
Nicht unterstützt | OneLake SAS unterstützt dieses Feature nicht. |
signedCorrelationId |
suoid |
Nicht unterstützt | OneLake SAS unterstützt diesen Parameter nicht. |
signedDirectoryDepth |
sdd |
Optional | Gibt die Anzahl der Verzeichnisse innerhalb des Stammordners des Verzeichnisses an, das im Feld canonicalizedResource der Zeichenfolge zum Signieren angegeben ist. Wird nur unterstützt, wenn sr=d . |
signedEncryptionScope |
ses |
Nicht unterstützt | OneLake SAS unterstützt derzeit keine benutzerdefinierten Verschlüsselungsbereiche. |
signedIP |
sip |
Nicht unterstützt | OneLake SAS unterstützt derzeit keine IP-Filterung |
signedProtocol |
spr |
Optional | OneLake unterstützt nur HTTPS-Anforderungen. |
Cache-Control -Antwortheader |
rscc |
Nicht unterstützt | OneLake SAS unterstützt diesen Parameter nicht. |
Content-Disposition -Antwortheader |
rscd |
Nicht unterstützt | OneLake SAS unterstützt diesen Parameter nicht. |
Content-Encoding -Antwortheader |
rsce |
Nicht unterstützt | OneLake SAS unterstützt diesen Parameter nicht. |
Content-Language -Antwortheader |
rscl |
Nicht unterstützt | OneLake SAS unterstützt diesen Parameter nicht. |
Content Type -Antwortheader |
rsct |
Nicht unterstützt | OneLake SAS unterstützt diesen Parameter nicht. |
Angeben von Berechtigungen
Die im Feld signedPermissions
(sp
) für das SAS-Token angegebenen Berechtigungen geben an, welche Vorgänge ein Client mit dem SAS für die Ressource ausführen kann.
Berechtigungen können kombiniert werden, um einem Client zu ermöglichen, mehrere Vorgänge mit demselben SAS auszuführen. Wenn Sie das SAS erstellen, müssen Sie Berechtigungen in der folgenden Reihenfolge einschließen: racwdxltmeop
.
Beispiele für gültige Berechtigungseinstellungen sind rw
, rd
, rl
, wd
, wl
und rl
. Sie können eine Berechtigung nicht mehrmals angeben.
Um die Parität mit vorhandenen Azure Storage-Tools sicherzustellen, verwendet OneLake das gleiche Berechtigungsformat wie Azure Storage. OneLake wertet die Berechtigungen aus, die einer SAS in signedPermissions
erteilt wurden, die Berechtigungen der Signaturidentität in Fabric und alle OneLake-Datenzugriffsrollen, falls zutreffend. Denken Sie daran, dass einige Vorgänge, z. B. das Festlegen von Berechtigungen oder das Löschen von Arbeitsbereichen, in OneLake im Allgemeinen über Azure Storage-APIs nicht zulässig sind und daher die Gewährung dieser Berechtigung (sp=op
) nicht zulässt, dass OneLake SAS diese Vorgänge ausführt.
Berechtigung | URI-Symbol | Resource | Zulässige Vorgänge |
---|---|---|---|
Lesen Sie | r | Directory, Blob | Lesen Sie den Inhalt, die Blockliste, die Eigenschaften und die Metadaten eines beliebigen Blobs im Container oder Verzeichnis. Verwenden Sie ein Blob als die Quelle eines Kopiervorgangs. |
Add (Hinzufügen) | a | Directory, Blob | Fügen Sie einem Anfügeblob einen Block hinzu. |
Erzeugen | c | Directory, Blob | Schreiben Sie ein neues Blob, nehmen Sie eine Momentaufnahme eines Blobs oder kopieren Sie ein Blob in ein neues Blob. |
Schreiben | w | Directory, Blob | Erstellen oder Schreiben von Inhalten, Eigenschaften, Metadaten oder Sperrlisten. Momentaufnahme oder Leasen des Blobs. Verwenden Sie das Blob als Ziel eines Kopiervorgangs. |
Löschen | d | Directory, Blob | Löschen eines Blobs |
Version löschen | x | Blob | Löschen einer Blobversion. |
Permanent delete | j | Blob | Endgültiges Löschen einer Blob-Momentaufnahme oder -Version. |
Liste | l | Verzeichnis | Blobs nicht-rekursiv auflisten. |
Tags | t | Blob | Lesen oder Schreiben der Tags in einen Blob. |
Move | m | Directory, Blob | Verschieben Sie einen Blob oder ein Verzeichnis und dessen Inhalt an einen neuen Speicherort. |
Ausführen | e | Directory, Blob | Rufen Sie die Systemeigenschaften ab, und rufen Sie, wenn der hierarchische Namespace für das Speicherkonto aktiviert ist, die POSIX-ACL eines Blobs ab. |
Besitz | o | Directory, Blob | Legen Sie den Besitzer oder die Besitzergruppe fest. Nicht in OneLake unterstützt |
Berechtigungen | p | Directory, Blob | Festlegen der Berechtigungen. Nicht in OneLake unterstützt |
Unveränderlichkeitsrichtlinie festlegen | i | Blob | Festlegen oder Löschen der Unveränderbarkeitsrichtlinie oder der gesetzlichen Aufbewahrungspflicht für ein Blob. |
Angeben der Signatur
Das Feld signature
(sig
) wird verwendet, um eine Anforderung eines Clients mit der Signatur für den freigegebenen Zugriff zu autorisieren. Die Zeichenfolge zum Signieren ist eine eindeutige Zeichenfolge, die aus den Feldern erstellt wird, die überprüft werden müssen, um die Anforderung zu autorisieren. Bei der Signatur handelt es sich um eine HMAC, die mithilfe des SHA256-Algorithmus über die Zeichenfolge zum Signieren und den Schlüssel berechnet und dann mithilfe der bBase65-Codierung codiert wird.
Um die Signaturzeichenfolge einer Benutzerdelegierungs-SAS zu erstellen, erstellen Sie die Zeichenfolge zum Signieren aus den Feldern der Anforderung, codieren sie die Zeichenfolge als UTF-8, und berechnen Sie dann die Signatur mithilfe des HMAC-SHA256-Algorithmus. Die in der Zeichenfolge zum Signieren enthaltenen Felder sind URL-decodiert.
Die in der Zeichenfolge zum Signieren erforderlichen Felder hängen von der Dienstversion ab, die für das Autorisierungsfeld (sv
) verwendet wird. Im folgenden Abschnitt werden die Konfigurationen der Zeichenfolge zum Signieren für Versionen beschrieben, die OneLake SASs unterstützen.
Ab Version 2020-12-06
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
Version 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
Versionen vor 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
Vereinheitlichte Ressource
Der canonicalizedResource
-Teil der Zeichenfolge ist ein kanonischer Pfad zur Ressource. Er muss den OneLake-Endpunkt und den Ressourcennamen enthalten und URL-dekodiert sein. Ein OneLake-Pfad muss seinen Arbeitsbereich enthalten, und ein Verzeichnispfad muss die Anzahl der Unterverzeichnisse enthalten, die dem sdd
-Parameter entsprechen.
Die folgenden Beispiele zeigen, wie Sie Ihre OneLake-URL in die entsprechende kanonische Ressource konvertieren. Denken Sie daran, dass OneLake sowohl DFS- als auch Blob-Vorgänge und -Endpunkte unterstützt und dass der Kontoname für Ihr OneLake immer onelake ist.
Blob Datei
URL = https://onelake.blob.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/sales.csv
canonicalizedResource = "/blob/onelake/myWorkspace/myLakehouse.Lakehouse/Files/sales.csv"
DFS-Verzeichnis
URL = https://onelake.dfs.fabric.microsoft.com/myWorkspace/myLakehouse.Lakehouse/Files/
canonicalizedResource = "/blob/onelake/myWorkspace/myLakehouse.Lakehouse/Files/"
Beispiel für OneLake SAS
Das folgende Beispiel zeigt einen OneLake SAS-URI mit einem angefügten OneLake SAS-Token. Das SAS-Token bietet Lese- und Schreibberechtigungen für den Ordner „Dateien“ im 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>