Partilhar via


Criar uma assinatura de acesso compartilhado (SAS) do OneLake (Visualização)

Você pode criar um OneLake SAS para fornecer acesso delegado de curto prazo a uma pasta ou arquivo no OneLake apoiado por suas credenciais do Microsoft Entra. O OneLake SAS pode fornecer acesso temporário a aplicativos sem suporte para o Microsoft Entra, permitindo que eles carreguem dados ou sirvam como proxies entre outros aplicativos de clientes ou ISVs (Fornecedores Independentes de Software).

Para criar uma SAS OneLake, você deve primeiro solicitar uma chave de delegação de usuário, que você usa para assinar a SAS. Para solicitar uma chave de delegação de usuário, chame a operação Obter chave de delegação de usuário. O OneLake SAS pode conceder acesso a arquivos e pastas apenas em itens de dados e não pode ser usado para operações de gerenciamento, como criar ou excluir itens ou espaços de trabalho.

Uma SAS OneLake pode conceder acesso a arquivos e pastas apenas em itens de dados e não pode ser usada para operações de gerenciamento, como a criação de espaços de trabalho ou itens.

Uma SAS OneLake é criada de forma semelhante à SAS delegada pelo usuário do Armazenamento do Azure, usando os mesmos parâmetros para compatibilidade com ferramentas e aplicativos compatíveis com o Armazenamento do Azure.

Importante

Este recurso está em pré-visualização.

Atribuir permissões

Solicitar uma chave de delegação de usuário é uma operação de nível de locatário no Fabric. Para solicitar uma chave de delegação de usuário, o usuário ou o princípio de segurança que solicita a chave de delegação do usuário deve ter pelo menos permissões de leitura em um espaço de trabalho no locatário da Malha. A identidade do usuário solicitante é usada para autenticar o SAS, o que significa que o usuário deve ter permissão para os dados aos quais concede acesso ao SAS.

Adquira um token OAuth 2.0

Para obter a chave de delegação do usuário, primeiro solicite um token OAuth 2.0 do Microsoft Entra ID. Autorize a chamada para a operação Obter Chave de Delegação de Usuário fornecendo o token com o esquema de Portador. Para obter mais informações sobre como solicitar um token OAuth do Microsoft Entra ID, consulte Fluxos de autenticação e cenários de aplicativos.

Solicitar a chave de delegação do usuário

Chamar a operação Obter Chave de Delegação de Usuário retorna a chave como um conjunto de valores que são usados como parâmetros no token SAS de delegação de usuário. Esses parâmetros são descritos na referência Obter chave de delegação de usuário e na próxima seção.

Quando um cliente solicita uma chave de delegação de usuário usando um token OAuth 2.0, o OneLake retorna uma chave de delegação de usuário em nome do cliente. Uma SAS criada com essa chave de delegação de usuário recebe no máximo as permissões concedidas ao cliente, com escopo até as permissões explicitamente concedidas na SAS.

Você pode criar qualquer número de SASs OneLake para o tempo de vida da chave de delegação do usuário. No entanto, um OneLake SAS e chaves de delegação de usuário podem ser válidos por no máximo uma hora e não podem exceder o tempo de vida do token que as solicita. Essas restrições de tempo de vida são mais curtas do que o tempo de vida máximo de uma SAS delegada de um usuário do Armazenamento do Azure.

Construir uma SAS de delegação de usuário

A tabela a seguir resume os campos suportados para um token SAS OneLake. As seções subsequentes fornecem mais detalhes sobre esses parâmetros e como eles diferem dos tokens SAS do Armazenamento do Azure. O OneLake não oferece suporte a todos os parâmetros opcionais suportados pelo Armazenamento do Azure, e um OneLake SAS construído com um parâmetro sem suporte será rejeitado.

Nome do campo SAS Parâmetro de token SAS Status Description
signedVersion sv Obrigatório Indica a versão do serviço usada para construir o campo de assinatura. O OneLake suporta a versão '2020-02-10', todas as versões após '2020-12-06' e versões anteriores a '2020-02-10'.
signedResource sr Necessário Especifica quais recursos podem ser acessados por meio da assinatura de acesso compartilhado. Apenas blob (b) e diretório (d) são aplicáveis ao OneLake.
signedStart st Opcional A hora em que a assinatura de acesso compartilhado se torna válida. Formato ISO 8601 UTC.
signedExpiry se Necessário A hora em que a assinatura de acesso compartilhado expira
signedPermissions sp Necessário Indica quais operações o SAS pode executar no recurso. Mais detalhes na seção Especificar permissões
signedObjectId skoid Necessário Identifica uma entidade de segurança do Microsoft Entra.
signedtenantId sktid Necessário Especifica o locatário do Microsoft Entra no qual uma entidade de segurança é definida.
signedKeyStartTime skt Opcional Hora em UTC quando a chave de assinatura é iniciada. Retornado pela operação Obter chave de delegação de usuário.
signedKeyExpiryTime ske Necessário Hora em UTC quando a chave de assinatura termina. Retornado pela operação Obter chave de delegação de usuário.
signedKeyVersion skv Necessário A versão do serviço de armazenamento usada para obter a chave de delegação do usuário. Retornado pela operação Obter chave de delegação de usuário. O OneLake suporta versões 2020-02-10 e anteriores, e versões posteriores a 2020-12-06
signedKeyService sks Necessário O serviço válido para a chave de delegação do usuário. O OneLake suporta apenas o armazenamento de Blob (sks=b).
signature sig Necessário A assinatura é um código de autenticação de mensagem baseado em hash (HMAC) calculado sobre a cadeia de caracteres para assinar e chave usando o algoritmo SHA256 e, em seguida, codificado com codificação Base64.
signedAuthorizedObjectId saoid Não suportado O OneLake SAS não suporta esse recurso.
signedUnauthorizedObjectId suoid Não suportado O OneLake SAS não suporta esse recurso.
signedCorrelationId suoid Não suportado OneLake SAS não suporta este parâmetro.
signedDirectoryDepth sdd Opcional Indica o número de diretórios dentro da pasta raiz do diretório especificado no campo canonicalizedResource da string-to-sign. Suportado apenas quando sr=d.
signedEncryptionScope ses Não suportado Atualmente, o OneLake SAS não oferece suporte a escopos de criptografia personalizados.
signedIP sip Não suportado Atualmente, o OneLake SAS não suporta filtragem de IP
signedProtocol spr Opcional O OneLake suporta apenas solicitações https.
Cache-Control cabeçalho de resposta rscc Não suportado OneLake SAS não suporta este parâmetro.
Content-Disposition cabeçalho de resposta rscd Não suportado OneLake SAS não suporta este parâmetro.
Content-Encoding cabeçalho de resposta rsce Não suportado OneLake SAS não suporta este parâmetro.
Content-Language cabeçalho de resposta rscl Não suportado OneLake SAS não suporta este parâmetro.
Content Type cabeçalho de resposta rsct Não suportado OneLake SAS não suporta este parâmetro.

Especificar permissões

As permissões especificadas no signedPermissions campo (sp) no token SAS indicam quais operações um cliente que possui o SAS pode executar no recurso.

As permissões podem ser combinadas para permitir que um cliente execute várias operações com a mesma SAS. Ao construir a SAS, você deve incluir permissões na seguinte ordem: racwdxltmeop.

Exemplos de configurações de permissão válidas incluem rw, rd, rl, wd, wle rl. Não é possível especificar uma permissão mais de uma vez.

Para garantir a paridade com as ferramentas de Armazenamento do Azure existentes, o OneLake usa o mesmo formato de permissão que o Armazenamento do Azure. O OneLake avalia as permissões concedidas a uma SAS no signedPermissions, as permissões da identidade de assinatura na Malha e quaisquer funções de acesso a dados do OneLake, se aplicável. Lembre-se de que algumas operações, como definir permissões ou excluir espaços de trabalho, não são permitidas no OneLake por meio de APIs de Armazenamento do Azure em geral e, portanto, conceder essa permissão (sp=op) não permitirá que um SAS OneLake execute essas operações.

Permissão Símbolo URI Recurso Operações permitidas
Lida r Diretório, Blob Leia o conteúdo, a lista de bloqueios, as propriedades e os metadados de qualquer blob no contêiner ou diretório. Use um blob como a origem de uma operação de cópia.
Adicionar a Diretório, Blob Adicione um bloco a um blob de acréscimo.
Criar c Diretório, Blob Escreva um novo blob, crie um snapshot de um blob ou copie um blob para um novo blob.
Escrita w Diretório, Blob Crie ou escreva conteúdo, propriedades, metadados ou lista de bloqueio. Snapshot ou lease o blob. Use o blob como o destino de uma operação de cópia.
Delete d Diretório, Blob Exclua um blob.
Excluir versão x Blob Exclua uma versão de blob.
Eliminar de forma permanente S Blob Exclua permanentemente um instantâneo ou versão de blob.
Listagem l Diretório Listar blobs de forma não recursiva.
Etiquetas t Blob Leia ou escreva as tags em um blob.
Mover m Diretório, Blob Mova um blob ou um diretório e seu conteúdo para um novo local.
Executar e Diretório, Blob Obtenha as propriedades do sistema e, se o namespace hierárquico estiver habilitado para a conta de armazenamento, obtenha a ACL POSIX de um blob.
Propriedade o Diretório, Blob Defina o proprietário ou o grupo proprietário. Sem suporte no OneLake
Permissões p Diretório, Blob Defina as permissões. Sem suporte no OneLake
Definir política de imutabilidade posso Blob Defina ou exclua a política de imutabilidade ou a retenção legal em um blob.

Especifique a assinatura

O signature campo (sig) é usado para autorizar uma solicitação feita por um cliente com a assinatura de acesso compartilhado. A cadeia de caracteres para sinal é uma cadeia de caracteres exclusiva construída a partir dos campos que devem ser verificados para autorizar a solicitação. A assinatura é um HMAC que é calculado sobre a cadeia de caracteres para assinar e a chave usando o algoritmo SHA256 e, em seguida, codificado usando a codificação bBase65.

Para construir a cadeia de caracteres de assinatura de uma SAS de delegação de usuário, crie a cadeia de caracteres para assinar a partir dos campos feitos pela solicitação, codifique a cadeia de caracteres como UTF-8 e, em seguida, calcule a assinatura usando o algoritmo HMAC-SHA256. Os campos incluídos na cadeia de caracteres para assinar devem ser decodificados por URL.

Os campos obrigatórios na cadeia de caracteres para assinar dependem da versão do serviço usada para o campo de autorização (sv). A seção a seguir descreve as configurações de cadeia de caracteres para assinar para versões que suportam SASs OneLake.

Versão 2020-12-06 e posterior

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

Versão 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

Versões 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 canonicalizado

A canonicalizedResource parte da cadeia de caracteres é um caminho canônico para o recurso. Ele deve incluir o ponto de extremidade OneLake e o nome do recurso, e deve ser decodificado por URL. Um caminho OneLake deve incluir seu espaço de trabalho e um caminho de diretório deve incluir o número de subdiretórios que correspondem ao sdd parâmetro.

Os exemplos a seguir mostram como converter sua URL do OneLake para o recurso canonicalizado correspondente. Lembre-se de que o OneLake suporta operações e pontos de extremidade DFS e Blob e que o nome da conta do seu OneLake é sempre onelake.

Arquivo Blob

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

Diretório DFS

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

Exemplo de OneLake SAS

O exemplo a seguir mostra um URI SAS OneLake com um token SAS OneLake anexado a ele. O token SAS fornece permissões de leitura e gravação para a pasta Files na 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>