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>