Compartir a través de


Creación de una firma de acceso compartido (SAS) de OneLake (versión preliminar)

Puede crear una SAS de OneLake para proporcionar acceso delegado a corto plazo a una carpeta o archivo en OneLake respaldado por sus credenciales de Microsoft Entra. La SAS de OneLake puede proporcionar acceso temporal a las aplicaciones sin soporte técnico para Microsoft Entra, lo que les permite cargar datos o servir como servidores proxy entre otras aplicaciones de cliente o proveedores de software independientes (ISV).

Para crear una SAS de OneLake, primero debe solicitar una clave de delegación de usuario, que después usará para firmar la SAS. Para solicitar una clave de delegación de usuario, llame a la operación Obtener clave de delegación de usuario. La SAS de OneLake solo puede conceder acceso a archivos y carpetas dentro de elementos de datos y no se puede usar para operaciones de administración como crear o eliminar elementos o áreas de trabajo.

Una SAS de OneLake solo puede conceder acceso a archivos y carpetas dentro de elementos de datos y no se puede usar para operaciones de administración como crear áreas de trabajo o elementos.

Una SAS de OneLake se crea de forma similar a la SAS delegada por el usuario de Azure Storage, con los mismos parámetros para la compatibilidad con herramientas y aplicaciones compatibles con Azure Storage.

Importante

Esta característica se encuentra en versión preliminar.

Asignación de permisos

Solicitar una clave de delegación de usuarios es una operación a nivel de inquilino en Fabric. Para solicitar una clave de delegación de usuario, el usuario o el principio de seguridad que solicita la clave de delegación de usuario debe tener al menos permisos de lectura en un área de trabajo del inquilino de Fabric. La identidad del usuario solicitante se utiliza para autenticar la SAS, lo que significa que el usuario debe tener permiso sobre los datos a los que concede acceso a la SAS.

Adquisición de un token de OAuth 2.0

Para obtener la clave de delegación de usuario, primero solicite un token de OAuth 2.0 de Microsoft Entra ID. Autorice la llamada a la operación Obtener clave de delegación de usuario proporcionando el token con el esquema Bearer. Para obtener más información sobre cómo solicitar un token de OAuth desde Microsoft Entra ID, consulte Escenarios de aplicación y flujos de autenticación.

Solicitud de la clave de delegación de usuario

Al llamar a la operación Obtener clave de delegación de usuario, se devuelve la clave como un conjunto de valores que se usan como parámetros en el token de SAS de delegación de usuario. Estos parámetros se describen en la referencia Obtener clave de delegación de usuario y en la siguiente sección.

Cuando un cliente solicita una clave de delegación de usuario mediante un token de OAuth 2.0, OneLake devuelve una clave de delegación de usuario en nombre del cliente. A una SAS creada con esta clave de delegación de usuario se le conceden como máximo los permisos concedidos al cliente, en el ámbito de los permisos concedidos explícitamente en la SAS.

Puede crear cualquier número de SAS de OneLake durante la vigencia de la clave de delegación de usuario. Sin embargo, una SAS de OneLake y las claves de delegación de usuario pueden ser válidas como máximo una hora y no pueden superar la duración del token que las solicita. Estas restricciones de duración son más cortas que la duración máxima de una SAS delegada por el usuario de Azure Storage.

Construcción de una SAS de delegación de usuario

En la siguiente tabla se resumen los campos que se admiten para un token de SAS de OneLake. En las secciones posteriores se proporcionan más detalles sobre estos parámetros y cómo difieren de los tokens de SAS de Azure Storage. OneLake no admite todos los parámetros opcionales admitidos por Azure Storage y se rechazará una SAS de OneLake construida con un parámetro no admitido.

Nombre del campo de SAS Parámetro del token de SAS Estado Descripción
signedVersion sv Obligatorio Indica la versión del servicio que se usa para construir el campo de firma. OneLake admite la versión "2020-02-10", todas las versiones posteriores a "2020-12-06" y versiones anteriores a "2020-02-10".
signedResource sr Obligatorio Especifica qué recursos son accesibles a través de la firma de acceso compartido. Solo el blob (b) y el directorio (d) son aplicables a OneLake.
signedStart st Opcionales Hora en que la firma de acceso compartido es válida. Formato ISO 8601 UTC.
signedExpiry se Obligatorio Hora en que expira la firma de acceso compartido
signedPermissions sp Obligatorio Indica qué operaciones puede realizar la SAS en el recurso. Más detalles en la sección Especificar permisos
signedObjectId skoid Obligatorio Identifica una entidad de seguridad de Microsoft Entra.
signedtenantId sktid Obligatorio Especifica el inquilino de Microsoft Entra en el que se define una entidad de seguridad.
signedKeyStartTime skt Opcionales Hora UTC en la que se inicia la clave de firma. Devuelto por la operación Obtener clave de delegación de usuario.
signedKeyExpiryTime ske Obligatorio Hora UTC en la que finaliza la clave de firma. Devuelto por la operación Obtener clave de delegación de usuario.
signedKeyVersion skv Obligatorio La versión del servicio de almacenamiento que se usa para obtener la clave de delegación de usuarios. Devuelto por la operación Obtener clave de delegación de usuario. OneLake admite las versiones 2020-02-10 y anteriores, y versiones posteriores a 2020-12-06
signedKeyService sks Obligatorio Servicio válido para la clave de delegación de usuario. OneLake solo admite Blob Storage (sks=b).
signature sig Obligatorio La firma es un código de autenticación de mensajes basado en hash (HMAC) calculado sobre la cadena para firmar y la clave con el algoritmo SHA256 y después codificado con Base64.
signedAuthorizedObjectId saoid No compatible La SAS de OneLake no admite esta característica.
signedUnauthorizedObjectId suoid No compatible La SAS de OneLake no admite esta característica.
signedCorrelationId suoid No compatible La SAS de OneLake no admite este parámetro.
signedDirectoryDepth sdd Opcionales Indica el número de directorios dentro de la carpeta raíz del directorio especificado en el campo canonicalizedResource de la cadena para firmar. Solo se admite cuando sr=d.
signedEncryptionScope ses No compatible La SAS de OneLake no admite actualmente ámbitos de cifrado personalizados.
signedIP sip No compatible La SAS de OneLake no admite actualmente el filtrado de IP
signedProtocol spr Opcionales OneLake solo admite solicitudes HTTPS.
Encabezado de respuestaCache-Control rscc No compatible La SAS de OneLake no admite este parámetro.
Encabezado de respuestaContent-Disposition rscd No compatible La SAS de OneLake no admite este parámetro.
Encabezado de respuestaContent-Encoding rsce No compatible La SAS de OneLake no admite este parámetro.
Encabezado de respuestaContent-Language rscl No compatible La SAS de OneLake no admite este parámetro.
Encabezado de respuestaContent Type rsct No compatible La SAS de OneLake no admite este parámetro.

Especifique los permisos

Los permisos especificados en el campo signedPermissions (sp) del token de SAS indican qué operaciones puede realizar un cliente que posee la SAS en el recurso.

Los permisos se pueden combinar para permitir que un cliente realice varias operaciones con la misma SAS. Al construir la SAS, debe incluir permisos en el orden siguiente: racwdxltmeop.

Entre los ejemplos de opciones de permisos válidos se incluyen rw, rd, rl, wd, wl y rl. No se puede especificar un permiso más de una vez.

Para garantizar la paridad con las herramientas de Azure Storage existentes, OneLake usa el mismo formato de permiso que Azure Storage. OneLake evalúa los permisos concedidos a una SAS en signedPermissions, los permisos de la identidad de firma en Fabric y los roles de acceso a datos de OneLake, si procede. Recuerde que algunas operaciones, como establecer permisos o eliminar áreas de trabajo, no se permiten en OneLake a través de las API de Azure Storage por lo general y, por lo tanto, conceder ese permiso (sp=op) no permitirá que una SAS de OneLake realice esas operaciones.

Permiso Símbolo de URI Resource Operaciones permitidas
Lectura r Directorio, Blob Lea el contenido, la lista de bloques, las propiedades y los metadatos de cualquier blob del contenedor o directorio. Use un blob como origen de una operación de copia.
Sumar a Directorio, Blob Agregue un bloque a un blob en anexos.
Crear c Directorio, Blob Escriba un nuevo blob, una instantánea de un blob o copie un blob en un nuevo blob.
Escribir t Directorio, Blob Cree o escriba contenido, propiedades, metadatos o lista de bloqueados. Tome una instantánea o conceda el blob. Use el blob como destino de una operación de copia.
Eliminar d Directorio, Blob Eliminar un blob.
Eliminar versión x Blob Eliminar una versión de un blob
Eliminación permanentemente y Blob Elimine permanentemente una instantánea de blob o una versión.
List l Directorio Enumere los blobs de forma no recursiva.
Etiquetas t Blob Lea o escriba las etiquetas en un blob.
Mover m Directorio, Blob Mueva un blob o un directorio y su contenido a una nueva ubicación.
Ejecutar e Directorio, Blob Obtenga las propiedades del sistema y, si el espacio de nombres jerárquico está habilitado para la cuenta de almacenamiento, obtenga la ACL de POSIX de un blob.
Propiedad o Directorio, Blob Establezca el propietario o el grupo propietario. No admitido en OneLake
Permisos p Directorio, Blob Configure los permisos. No admitido en OneLake
Establecer directiva de inmutabilidad i Blob Establezca o elimine la directiva de inmutabilidad o suspensión legal en un blob.

Especificación de la firma

El campo signature (sig) se usa para autorizar una solicitud realizada por un cliente con la firma de acceso compartido. La cadena para firmar es una cadena única que se construye a partir de los campos que se deben comprobar para autorizar la solicitud. La firma es un HMAC que se calcula sobre la cadena para firmar y una clave con el algoritmo SHA256, y después codificado con bBase65.

Para construir la cadena de firma de una SAS de delegación de usuario, cree la cadena para firmar a partir de los campos realizados por la solicitud, codifique la cadena como UTF-8 y, a continuación, calcule la firma mediante el algoritmo HMAC-SHA256. Los campos que se incluyen en la cadena para firmar deben estar descodificados como una dirección URL.

Los campos necesarios en la cadena para firmar dependen de la versión del servicio que se use para el campo de autorización (sv). En la sección siguiente se describen las configuraciones de cadena para firmar para las versiones que admiten SAS de OneLake.

Versión 2020-12-06 y posteriores

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

Versión 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

Versiones anteriores a 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

Recurso con formato canónico

La parte canonicalizedResource de la cadena es una ruta de acceso canónica al recurso. Debe incluir el punto de conexión de OneLake y el nombre del recurso, y debe ser una dirección URL descodificada. Una ruta de acceso de OneLake debe incluir su área de trabajo y una ruta de acceso de directorio debe incluir el número de subdirectorios que corresponden al parámetro sdd.

En los ejemplos siguientes se muestra cómo convertir la dirección URL de OneLake en el recurso canónico correspondiente. Recuerde que OneLake admite tanto operaciones DFS como puntos de conexión y blobs, y que el nombre de cuenta para OneLake siempre es onelake.

Blob Archivo

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

Directorio DFS

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

Ejemplo de SAS de OneLake

En el ejemplo siguiente se muestra un URI de SAS de OneLake con un token de SAS de OneLake anexado a él. El token de SAS proporciona permisos de lectura y escritura en la carpeta Archivos del almacén de lago de datos.

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>