Partager via


Créer une signature d’accès partagé (SAP) OneLake (préversion)

Vous pouvez créer une SAP OneLake pour fournir un accès délégué à court terme à un dossier ou un fichier dans OneLake soutenu par vos informations d’identification Microsoft Entra. Une SAP OneLake peut fournir un accès temporaire aux applications sans prise en charge de Microsoft Entra, ce qui leur permet de charger des données ou de servir de proxys entre d’autres applications clientes ou éditeurs de logiciels indépendants (ISV).

Pour créer une SAP OneLake, vous devez d’abord demander une clé de délégation d’utilisateur, que vous utilisez ensuite pour signer la SAP. Pour demander une clé de délégation d’utilisateur, appelez l’opération Obtenir la clé de délégation d’utilisateur. Une SAP OneLake peut accorder l’accès aux fichiers et dossiers uniquement au sein des éléments de données, et ne peut pas être utilisée pour des opérations de gestion telles que la création ou la suppression d’éléments ou d’espaces de travail.

Une SAP OneLake peut accorder l’accès aux fichiers et dossiers uniquement au sein des éléments de données, et ne peut pas être utilisée pour des opérations de gestion telles que la création d’éléments ou d’espaces de travail.

Une SAP OneLake est créée de la même façon qu’une SAP Stockage Azure déléguée par l’utilisateur, en utilisant les mêmes paramètres de compatibilité avec des outils et des applications compatibles avec Stockage Azure.

Important

Cette fonctionnalité est en préversion.

Attribuer des autorisations

La demande d’une clé de délégation d’utilisateur est une opération au niveau du locataire dans Fabric. Pour demander une clé de délégation d’utilisateur, l’utilisateur ou le principal de sécurité demandant la clé de délégation d’utilisateur doit disposer au moins des autorisations de lecture dans un espace de travail dans le locataire Fabric. L’identité de l’utilisateur demandeur est utilisée pour authentifier la SAP, ce qui signifie que l’utilisateur doit avoir l’autorisation sur les données auxquelles il accorde l’accès SAP.

Acquérir un jeton OAuth 2.0

Pour obtenir la clé de délégation d’utilisateur, commencez par demander un jeton OAuth 2.0 à partir de Microsoft Entra ID. Autorisez l’appel à l’opération Obtenir la clé de délégation d’utilisateur en fournissant le jeton avec le schéma du porteur. Pour plus d’informations sur la demande d’un jeton OAuth auprès de Microsoft Entra ID, consultez Flux d’authentification et scénarios d’applications.

Demander la clé de délégation d’utilisateur

L’appel de l’opération Obtenir la clé de délégation d’utilisateur retourne la clé sous la forme d’un ensemble de valeurs utilisées comme paramètres sur le jeton SAP de délégation d’utilisateur. Ces paramètres sont décrits dans la référence Obtenir la clé de délégation d’utilisateur et dans la section suivante.

Lorsqu’un client demande une clé de délégation d’utilisateur à l’aide d’un jeton OAuth 2.0, OneLake retourne une clé de délégation d’utilisateur pour le compte du client. À une SAP créée avec cette clé de délégation d’utilisateur sont accordées au plus les autorisations accordées au client, limitées aux autorisations explicitement accordées dans la SAP.

Vous pouvez créer n’importe quelle quantité de SAP OneLake pour la durée de vie de la clé de délégation d’utilisateur. Toutefois, une SAP OneLake et des clés de délégation d’utilisateur peuvent être valides pendant au plus une heure, et ne peuvent pas dépasser la durée de vie du jeton qui les demande. Ces restrictions de durée de vie sont plus courtes que la durée de vie maximale d’une SAP Stockage Azure déléguée par l’utilisateur.

Construire une SAP de délégation d’utilisateur

Le tableau suivant récapitule les champs pris en charge pour un jeton SAP OneLake. Les sections suivantes fournissent plus d’informations sur ces paramètres et sur la façon dont ils diffèrent des jetons SAP Stockage Azure. OneLake ne prend pas en charge chaque paramètre facultatif pris en charge par Stockage Azure, et une SAP OneLake construite avec un paramètre non pris en charge est rejetée.

Nom du champ SAP Paramètre du jeton SAP Statut Description
signedVersion sv Obligatoire Indique la version du service utilisé pour construire le champ de signature. OneLake prend en charge la version « 2020-02-10 », toutes les versions après « 2020-12-06 », et les versions antérieures à « 2020-02-10 ».
signedResource sr Requis Spécifie les ressources accessibles via la signature d'accès partagé. Seuls les objets blob (b) et les répertoires (d) s’appliquent à OneLake.
signedStart st Facultatif Heure à laquelle la signature d’accès partagé devient valide. Format UTC ISO 8601.
signedExpiry se Requis Heure à laquelle la signature d’accès partagé expire.
signedPermissions sp Requis Indique les opérations que la SAP peut effectuer sur la ressource. Vous trouverez plus d’informations dans la section Spécifier les autorisations.
signedObjectId skoid Requis Identifie un principal de sécurité Microsoft Entra.
signedtenantId sktid Requis Spécifie le locataire Microsoft Entra dans lequel un principal de sécurité est défini.
signedKeyStartTime skt Facultatif Heure UTC de démarrage de la clé de signature. Retournée par l’opération Obtenir la clé de délégation d’utilisateur.
signedKeyExpiryTime ske Requis Heure UTC de fin de la clé de signature. Retournée par l’opération Obtenir la clé de délégation d’utilisateur.
signedKeyVersion skv Requis Version du service de stockage utilisée pour obtenir la clé de délégation d’utilisateur. Retournée par l’opération Obtenir la clé de délégation d’utilisateur. OneLake prend en charge les versions 2020-02-10 et antérieures, et les versions postérieures à 2020-12-06
signedKeyService sks Requis Service valide pour la clé de délégation d’utilisateur. OneLake prend uniquement en charge Stockage Blob (sks=b).
signature sig Requis La signature est un code d’authentification de message basé sur le hachage (HMAC) calculé sur la chaîne de signature et la clé à l'aide de l'algorithme SHA256, puis codé avec l’encodage Base64.
signedAuthorizedObjectId saoid Non pris en charge La SAP OneLake ne prend pas en charge cette fonctionnalité.
signedUnauthorizedObjectId suoid Non pris en charge La SAP OneLake ne prend pas en charge cette fonctionnalité.
signedCorrelationId suoid Non pris en charge La SAP OneLake ne prend pas en charge ce paramètre.
signedDirectoryDepth sdd Facultatif Indique le nombre de répertoires dans le dossier racine du répertoire spécifié dans le champ canonicalizedResource de la chaîne de signature. Pris en charge uniquement lorsque sr=d.
signedEncryptionScope ses Non pris en charge La SAP OneLake ne prend actuellement pas en charge les étendues de chiffrement personnalisées.
signedIP sip Non pris en charge La SAP OneLake ne prend actuellement pas en charge le filtrage IP.
signedProtocol spr Facultatif OneLake prend uniquement en charge les requêtes HTTPS.
En-tête de réponse Cache-Control rscc Non pris en charge La SAP OneLake ne prend pas en charge ce paramètre.
En-tête de réponse Content-Disposition rscd Non pris en charge La SAP OneLake ne prend pas en charge ce paramètre.
En-tête de réponse Content-Encoding rsce Non pris en charge La SAP OneLake ne prend pas en charge ce paramètre.
En-tête de réponse Content-Language rscl Non pris en charge La SAP OneLake ne prend pas en charge ce paramètre.
En-tête de réponse Content Type rsct Non pris en charge La SAP OneLake ne prend pas en charge ce paramètre.

Spécifier des autorisations

Les autorisations spécifiées dans le champ signedPermissions (sp) du jeton SAP indiquent les opérations qu’un client possédant la SAP peut effectuer sur la ressource.

Les autorisations peuvent être combinées pour permettre à un client d’effectuer plusieurs opérations avec la même SAP. Lorsque vous construisez la SAP, vous devez inclure les autorisations dans l’ordre suivant : racwdxltmeop.

Voici quelques exemples de paramètres d’autorisation valides : rw, rd, rl, wd, wl, et rl. Vous ne pouvez pas spécifier une autorisation plusieurs fois.

Pour garantir la parité avec les outils Stockage Azure existants, OneLake utilise le même format d’autorisation que Stockage Azure. OneLake évalue les autorisations accordées à une SAP dans signedPermissions, les autorisations de l’identité de signature dans Fabric, et les éventuels rôles d’accès aux données OneLake, le cas échéant. N’oubliez pas que certaines opérations, telles que la définition d’autorisations ou la suppression d’espaces de travail, ne sont en général pas autorisées sur OneLake via les API Stockage Azure, et que par conséquent l’octroi de cette autorisation (sp=op) n’autorise pas une SAP OneLake à effectuer ces opérations.

Autorisation Symbole d’URI Ressource Opérations autorisées
Lire r Répertoire, Objet blob Lire le contenu, la liste de refus, les propriétés et les métadonnées de tout objet blob dans le conteneur ou le répertoire. Utiliser un objet blob comme source d'une opération de copie.
Ajouter a Répertoire, Objet blob Ajouter un bloc à un objet blob d’ajout.
Créer c Répertoire, Objet blob Écrire un nouvel objet blob, capturer un objet blob, ou copier un objet blob dans un nouvel objet blob.
Write w Répertoire, Objet blob Créer ou écrire du contenu, des propriétés, des métadonnées ou une liste de refus. Créer un instantané ou louer l'objet blob. Utiliser l’objet blob comme destination d’une opération de copie.
Supprimer j Répertoire, Objet blob Supprimer un objet blob.
Supprimer la version x Blob Supprimez une version d’objet blob.
Suppression définitive y Blob Supprimer définitivement un instantané ou une version d’objet blob.
Liste l Répertoire Répertorier les objets blob de manière non récursive.
Balises t Blob Lire ou écrire les étiquettes sur un objet blob.
Déplacer m Répertoire, Objet blob Déplacer un objet blob ou un répertoire et son contenu vers un nouvel emplacement.
Exécuter e Répertoire, Objet blob Obtenir les propriétés système et, si l’espace de noms hiérarchique est activé pour le compte de stockage, obtenir la liste ACL POSIX d’un objet blob.
Propriété o Répertoire, Objet blob Définir le propriétaire ou le groupe propriétaire. Non pris en charge dans OneLake
autorisations p Répertoire, Objet blob Définissez les permissions. Non pris en charge dans OneLake
Définir la politique d'immuabilité i Blob Définir ou supprimer la stratégie d’immuabilité ou la conservation légale sur un objet blob.

Spécifier la signature

Le champ signature (sig) est utilisé pour autoriser une requête effectuée par un client avec la signature d’accès partagé. La chaîne de signature est une chaîne unique construite à partir des champs qui doivent être vérifiés afin d'autoriser la requête. La signature est un HMAC calculé sur la chaîne de signature et la clé à l'aide de l'algorithme SHA256, puis encodé en Base64.

Pour construire la chaîne de signature d’une SAP de délégation d’utilisateur, créez la chaîne de signature à partir des champs créés par la requête, encodez la chaîne au format UTF-8, puis calculez la signature à l’aide de l’algorithme HMAC-SHA256. Les champs inclus dans la chaîne de signature doivent être décodés par l’URL.

Les champs requis dans la chaîne de signature dépendent de la version du service utilisée pour le champ d’autorisation (sv). La section suivante décrit les configurations de chaîne de signature pour les versions qui prennent en charge les SAP OneLake.

Version 2020-12-06 et ultérieures

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

Versions antérieures à 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

Ressource rendue canonique

La partie canonicalizedResource de la chaîne est un chemin d'accès canonique à la ressource. Elle doit inclure le point de terminaison OneLake et le nom de la ressource, et doit être décodée par URL. Un chemin d’accès OneLake doit inclure son espace de travail, et un chemin d’accès de répertoire doit inclure le nombre de sous-répertoires qui correspondent au paramètre sdd.

Les exemples suivants montrent comment convertir votre URL OneLake en ressource canonique correspondante. N’oubliez pas que OneLake prend en charge les opérations et points de terminaison DFS et Blob, et que le nom du compte pour votre OneLake est toujours onelake.

Blob Fichier

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

Répertoire DFS

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

Exemple de SAP OneLake

L’exemple suivant montre un URI de SAP OneLake avec un jeton SAP OneLake ajouté. Le jeton SAP fournit des autorisations de lecture et d’écriture sur le dossier Files dans le 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>