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>