Partager via


Créer une signature d’accès partagé OneLake (SAP) (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. OneLake SAS 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. OneLake SAS peut accorder l’accès aux fichiers et dossiers au sein des éléments de données uniquement et ne peut pas être utilisé pour les 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 au sein des éléments de données uniquement et ne peut pas être utilisé pour les opérations de gestion telles que la création d’espaces de travail ou d’éléments.

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

Important

Cette fonctionnalité est en version préliminaire.

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 principe de sécurité demandant la clé de délégation d’utilisateur doit disposer d’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 des données auxquelles il accorde l’accès SAS.

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 l’ID Microsoft Entra. 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 les flux d’authentification et les scénarios d’application.

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 est accordée au plus les autorisations accordées au client, limitées aux autorisations explicitement accordées dans la SAP.

Vous pouvez créer n’importe quel nombre 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 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 déléguée Stockage Azure utilisateur.

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

Le tableau suivant récapitule les champs pris en charge pour un jeton SAS OneLake. Les sections suivantes fournissent plus de détails sur ces paramètres et la façon dont ils diffèrent de Stockage Azure jetons SAP. 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 de jeton SAS 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 le répertoire (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. 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 au démarrage de la clé de signature. Retourné par l’opération Obtenir la clé de délégation d’utilisateur.
signedKeyExpiryTime ske Requis Heure UTC lorsque la clé de signature se termine. Retourné 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 utilisateur. Retourné 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 le stockage d’objets 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 à signer et la clé à l’aide de l’algorithme SHA256, puis encodé avec l’encodage Base64.
signedAuthorizedObjectId saoid Non pris en charge OneLake SAS ne prend pas en charge cette fonctionnalité.
signedUnauthorizedObjectId suoid Non pris en charge OneLake SAS ne prend pas en charge cette fonctionnalité.
signedCorrelationId suoid Non pris en charge OneLake SAS 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 à signer. Pris en charge uniquement lorsque sr=d.
signedEncryptionScope ses Non pris en charge OneLake SAS ne prend actuellement pas en charge les étendues de chiffrement personnalisées.
signedIP sip Non pris en charge OneLake SAS ne prend actuellement pas en charge le filtrage IP
signedProtocol spr Facultatif OneLake prend uniquement en charge les requêtes https.
Cache-Control en-tête de réponse rscc Non pris en charge OneLake SAS ne prend pas en charge ce paramètre.
Content-Disposition en-tête de réponse rscd Non pris en charge OneLake SAS ne prend pas en charge ce paramètre.
Content-Encoding en-tête de réponse rsce Non pris en charge OneLake SAS ne prend pas en charge ce paramètre.
Content-Language en-tête de réponse rscl Non pris en charge OneLake SAS ne prend pas en charge ce paramètre.
Content Type en-tête de réponse rsct Non pris en charge OneLake SAS ne prend pas en charge ce paramètre.

Spécifier des autorisations

Les autorisations spécifiées dans le signedPermissions champ (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 des autorisations dans l’ordre suivant : racwdxltmeop.

Exemples de paramètres d’autorisation valides : rw, , rdwdrl, , wlet .rl Vous ne pouvez pas spécifier une autorisation plusieurs fois.

Pour garantir la parité avec les outils de 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 connexion dans Fabric et les 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 pas autorisées sur OneLake via Stockage Azure API généralement, et 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 Lisez le contenu, la liste de blocs, les propriétés et les métadonnées d’un objet blob dans le conteneur ou le répertoire. Utilisez un objet blob comme source d’une opération de copie.
Ajouter a Répertoire, Objet blob Ajoutez un bloc à un objet blob d’ajout.
Créer c Répertoire, Objet blob Écrivez un nouvel objet blob, capturez un objet blob ou copiez un objet blob dans un nouvel objet blob.
Write w Répertoire, Objet blob Créez ou écrivez du contenu, des propriétés, des métadonnées ou une liste de blocs. Instantané ou bail de l’objet blob. Utilisez 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 Supprimez 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 Lisez ou écrivez les balises sur un objet blob.
Déplacer m Répertoire, Objet blob Déplacez un objet blob ou un répertoire et son contenu vers un nouvel emplacement.
Exécuter e Répertoire, Objet blob Obtenez les propriétés système et, si l’espace de noms hiérarchique est activé pour le compte de stockage, obtenez l’ACL POSIX d’un objet blob.
Propriété o Répertoire, Objet blob Définissez 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éfinissez ou supprimez la stratégie d’immuabilité ou la conservation légale sur un objet blob.

Spécifier la signature

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

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

Les champs requis dans la chaîne à signer 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 à signer pour les versions qui prennent en charge les SAP OneLake.

Version 2020-12-06 et ultérieure

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 canonicalizedResource partie de la chaîne est un chemin canonique vers la ressource. Il doit inclure le point de terminaison OneLake et le nom de la ressource, et doit être décodé par URL. Un chemin OneLake doit inclure son espace de travail, et un chemin d’accès au répertoire doit inclure le nombre de sous-répertoires qui correspondent au sdd paramètre.

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 OneLake SAS

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