Поделиться через


Создание подписанного URL-адреса OneLake (SAS) (предварительная версия)

Вы можете создать SAS OneLake для предоставления краткосрочного делегированного доступа к папке или файлу в OneLake, поддерживаемом учетными данными Microsoft Entra. Sas OneLake может предоставлять временный доступ к приложениям без поддержки Microsoft Entra, позволяя им загружать данные или служить прокси-серверами между другими клиентскими приложениями или независимыми поставщиками программного обеспечения (ISVs).

Чтобы создать SAS OneLake, необходимо сначала запросить ключ делегирования пользователей, который затем используется для подписи SAS. Чтобы запросить ключ делегирования пользователей, вызовите операцию получения ключа делегирования пользователей. SAS OneLake может предоставлять доступ только к файлам и папкам в элементах данных и не может использоваться для операций управления, таких как создание или удаление элементов или рабочих областей.

SAS OneLake может предоставлять доступ только к файлам и папкам в элементах данных и не может использоваться для операций управления, таких как создание рабочих областей или элементов.

SAS OneLake создается аналогично служба хранилища Azure делегированным пользователем SAS, используя те же параметры для совместимости с инструментами и приложениями, совместимыми с служба хранилища Azure.

Внимание

Эта функция доступна в предварительной версии.

Назначение разрешений

Запрос ключа делегирования пользователей — это операция на уровне клиента в Fabric. Чтобы запросить ключ делегирования пользователей, принцип безопасности, запрашивающий ключ делегирования пользователя, должен иметь по крайней мере разрешения на чтение в одной рабочей области в клиенте Fabric. Удостоверение запрашивающего пользователя используется для проверки подлинности SAS, что означает, что у пользователя должно быть разрешение на доступ к данным, которым они предоставляют доступ SAS.

Получение маркера OAuth 2.0

Чтобы получить ключ делегирования пользователей, сначала запросите маркер OAuth 2.0 из идентификатора Microsoft Entra. Авторизация вызова операции получения ключа делегирования пользователей путем предоставления маркера схеме носителя. Дополнительные сведения о запросе маркера OAuth из идентификатора Microsoft Entra см. в разделе "Потоки проверки подлинности" и сценарии приложений.

Запрос ключа делегирования пользователей

Вызов операции получения ключа делегирования пользователей возвращает ключ в виде набора значений, которые используются в качестве параметров маркера SAS делегирования пользователей. Эти параметры описаны в справочнике по ключу делегирования пользователей и в следующем разделе.

Когда клиент запрашивает ключ делегирования пользователей с помощью маркера OAuth 2.0, OneLake возвращает ключ делегирования пользователей от имени клиента. SAS, созданный с помощью этого ключа делегирования пользователей, предоставляется по крайней мере разрешения, предоставленные клиенту, до разрешений, предоставленных явным образом в SAS.

Вы можете создать любое число SAS OneLake для времени существования ключа делегирования пользователей. Однако ключи SAS и делегирования пользователей OneLake могут быть допустимыми не более одного часа и не могут превышать время существования маркера, запрашивающего их. Эти ограничения времени существования короче, чем максимальное время существования делегированного пользователем SAS служба хранилища Azure.

Создание SAS делегирования пользователей

В следующей таблице перечислены поля, поддерживаемые маркером SAS OneLake. В последующих разделах содержатся дополнительные сведения об этих параметрах и отличиях от маркеров SAS служба хранилища Azure. OneLake не поддерживает каждый необязательный параметр, поддерживаемый служба хранилища Azure, и SAS OneLake, созданный с неподдерживаемым параметром, будет отклонен.

Имя поля SAS Параметр маркера SAS Состояние Description
signedVersion sv Обязательное поле Указывает версию службы, используемой для создания поля подписи. OneLake поддерживает версию "2020-02-10", все версии после "2020-12-06" и версии до "2020-02-10".
signedResource sr Обязательное поле Указывает, какие ресурсы доступны с помощью подписанного URL-адреса. Применимо только к OneLake только BLOB-объект (b) и каталог (d).
signedStart st Необязательно Время, когда подпись общего доступа становится допустимой. Формат ISO 8601 UTC.
signedExpiry se Обязательное поле Время истечения срока действия подписанного URL-адреса
signedPermissions sp Обязательное поле Указывает, какие операции SAS могут выполняться в ресурсе. Дополнительные сведения в разделе "Указание разрешений"
signedObjectId skoid Обязательное поле Определяет субъект безопасности Microsoft Entra.
signedtenantId sktid Обязательное поле Указывает клиент Microsoft Entra, в котором определен субъект безопасности.
signedKeyStartTime skt Необязательно Время в формате UTC при запуске ключа подписывания. Возвращается операцией получения ключа делегирования пользователей.
signedKeyExpiryTime ske Обязательное поле Время в формате UTC, когда ключ подписывания заканчивается. Возвращается операцией получения ключа делегирования пользователей.
signedKeyVersion skv Обязательное поле Версия службы хранилища, используемая для получения ключа делегирования пользователей. Возвращается операцией получения ключа делегирования пользователей. OneLake поддерживает версии 2020-02-10 и раньше, а также версии после 2020-12-06
signedKeyService sks Обязательное поле Допустимая служба для ключа делегирования пользователей. OneLake поддерживает только хранилище BLOB-объектов (sks=b).
signature sig Обязательное поле Подпись — это хэш-код проверки подлинности сообщений (HMAC), вычисляемый по строковой подписи и ключу с помощью алгоритма SHA256, а затем закодированный с кодировкой Base64.
signedAuthorizedObjectId saoid Не поддерживается Sas OneLake не поддерживает эту функцию.
signedUnauthorizedObjectId suoid Не поддерживается Sas OneLake не поддерживает эту функцию.
signedCorrelationId suoid Не поддерживается Sas OneLake не поддерживает этот параметр.
signedDirectoryDepth sdd Необязательно Указывает количество каталогов в корневой папке каталога, указанного в каноническом полеResource для входа в строку. Поддерживается только в том случае, если sr=d.
signedEncryptionScope ses Не поддерживается Sas OneLake в настоящее время не поддерживает пользовательские области шифрования.
signedIP sip Не поддерживается Sas OneLake в настоящее время не поддерживает фильтрацию IP-адресов
signedProtocol spr Необязательно OneLake поддерживает только https-запросы.
Cache-Control Заголовок ответа rscc Не поддерживается Sas OneLake не поддерживает этот параметр.
Content-Disposition Заголовок ответа rscd Не поддерживается Sas OneLake не поддерживает этот параметр.
Content-Encoding Заголовок ответа rsce Не поддерживается Sas OneLake не поддерживает этот параметр.
Content-Language Заголовок ответа rscl Не поддерживается Sas OneLake не поддерживает этот параметр.
Content Type Заголовок ответа rsct Не поддерживается Sas OneLake не поддерживает этот параметр.

Укажите разрешения.

Разрешения, указанные в signedPermissions поле (sp) маркера SAS, указывают, какие операции клиент, имеющий SAS, может выполняться в ресурсе.

Разрешения можно объединить, чтобы разрешить клиенту выполнять несколько операций с одинаковым SAS. При создании SAS необходимо включить разрешения в следующем порядке: racwdxltmeop

Примеры допустимых параметров разрешений: rw, rd, rl, wd, wlи rl. Невозможно указать разрешение более одного раза.

Чтобы обеспечить паритетность с существующими средствами служба хранилища Azure, OneLake использует тот же формат разрешений, что и служба хранилища Azure. OneLake оценивает разрешения, предоставленные SAS, signedPermissionsразрешения удостоверения подписывания в Fabric и все роли доступа к данным OneLake, если это применимо. Помните, что некоторые операции, такие как настройка разрешений или удаление рабочих областей, не разрешены в OneLake через API-интерфейсы служба хранилища Azure, поэтому предоставление этого разрешения (sp=op) не позволит SAS OneLake выполнять эти операции.

Разрешение Символ URI Ресурс Разрешенные операции
Читать r Каталог, BLOB-объект Чтение содержимого, списка блоков, свойств и метаданных любого большого двоичного объекта в контейнере или каталоге. Используйте большой двоичный объект в качестве источника операции копирования.
Добавить a Каталог, BLOB-объект Добавьте блок в дополнительный большой двоичный объект.
Создание c Каталог, BLOB-объект Создание нового большого двоичного объекта, моментального снимка большого двоичного объекта или копирование большого двоичного объекта в новый большой двоичный объект.
Write w Каталог, BLOB-объект Создание или запись содержимого, свойств, метаданных или блок-списка. Моментальный снимок или аренда большого двоичного объекта. Используйте большой двоичный объект в качестве назначения операции копирования.
Удаление d Каталог, BLOB-объект Удалить большой двоичный объект.
Удаление версии x BLOB-объект Удалите версию BLOB-объекта.
Безвозвратное удаление г BLOB-объект Окончательно удалите моментальный снимок или версию большого двоичного объекта.
List l Directory Вывод списка больших двоичных объектов, не относящихся кrecursive.
Теги t BLOB-объект Чтение или запись тегов в большом двоичном объекте.
Передвинуть m Каталог, BLOB-объект Переместите большой двоичный объект или каталог и его содержимое в новое расположение.
Выполнить e Каталог, BLOB-объект Получите системные свойства и, если иерархическое пространство имен включено для учетной записи хранения, получите ACL POSIX большого двоичного объекта.
Тип собственности o Каталог, BLOB-объект Задайте владельца или группу владельца. Неподдерживаемый в OneLake
Разрешения п Каталог, BLOB-объект Задайте разрешения. Неподдерживаемый в OneLake
Настройка политики неизменяемости i BLOB-объект Задайте или удалите политику неизменяемости или юридическую удержание большого двоичного объекта.

Указание подписи

Поле signature (sig) используется для авторизации запроса, сделанного клиентом с помощью подписанного URL-адреса. Строка —это уникальная строка, созданная из полей, которые должны быть проверены для авторизации запроса. Сигнатура — это HMAC, вычисляемая по протоколу "строка — подпись" с помощью алгоритма SHA256, а затем закодированная с помощью кодировки bBase65.

Чтобы создать строку подписи SAS делегирования пользователя, создайте строку для входа из полей, сделанных запросом, закодируйте строку как UTF-8, а затем вычислить подпись с помощью алгоритма HMAC-SHA256. Поля, включенные в вход, должны быть декодированы ПО URL-адресу.

Поля, необходимые в строковом входе, зависят от версии службы, используемой для авторизации (sv) поля. В следующем разделе описаны конфигурации подписывания строк для версий, поддерживающих OneLake SAS.

Версия 2020-12-06 и более поздних версий

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

Версия 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

Версии ранее 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

Канонический ресурс

Часть canonicalizedResource строки — это канонический путь к ресурсу. Он должен включать конечную точку OneLake и имя ресурса и должен быть декодирован URL-адресом. Путь OneLake должен включать свою рабочую область, а путь к каталогу должен содержать количество подкаталогов, соответствующих параметру sdd .

В следующих примерах показано, как преобразовать URL-адрес OneLake в соответствующий канонизированный ресурс. Помните, что OneLake поддерживает как операции DFS, так и операции blob-объектов и конечные точки, а имя учетной записи для OneLake всегда является onelake.

BLOB-объект Файл

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

Каталог DFS

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

Пример SAS OneLake

В следующем примере показан универсальный код ресурса (URI) SAS OneLake с маркером SAS OneLake, добавленным к нему. Маркер SAS предоставляет разрешения на чтение и запись в папку "Файлы" в 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>