Criar uma SAS de delegação de utilizador

Um símbolo SAS para acesso a um contentor, diretório ou bolha pode ser protegido utilizando credenciais AD ou uma chave de conta. Um SAS protegido com credenciais AD Azure é chamado de delegação de utilizadores SAS. A Microsoft recomenda que utilize credenciais AZure AD quando possível como uma melhor prática de segurança, em vez de usar a chave de conta, que pode ser mais facilmente comprometida. Quando o design da sua aplicação necessitar de assinaturas de acesso partilhado, utilize credenciais Azure AD para criar uma delegação de utilizador SAS para uma segurança superior.

Todos os SAS são assinados com uma chave. Para criar uma delegação de utilizadores SAS, deve primeiro solicitar uma chave de delegação de utilizador, que é depois usada para assinar o SAS. A chave da delegação do utilizador é análoga à chave de conta utilizada para assinar um serviço SAS ou uma conta SAS, exceto que se baseia nas suas credenciais AZure AD. Para solicitar a chave da delegação do utilizador, ligue para a operação 'Chave' 'Obter' (Chave de Delegação de Utilizador). Em seguida, pode utilizar a chave da delegação do utilizador para criar o SAS.

A SAS de delegação de utilizador é suportada para o Armazenamento de Blobs do Azure e o Azure Data Lake Storage Gen2. As políticas de acesso armazenadas não são apoiadas para uma delegação de utilizadores SAS.

Atenção

A assinatura de acesso partilhado são chaves que concedem permissões aos recursos de armazenamento, e devem ser protegidas da mesma forma que uma chave de conta. É importante proteger um SAS de uso malicioso ou não intencional. Use discrição na distribuição de um SAS, e tenha um plano em vigor para revogar um SAS comprometido. As operações que utilizam assinaturas de acesso partilhado só devem ser realizadas por uma ligação HTTPS, e os URIs de assinatura de acesso partilhado só devem ser distribuídos numa ligação segura, como HTTPS.

Para obter informações sobre a utilização da chave da sua conta para garantir um SAS, consulte Criar um serviço SAS e criar uma conta SAS.

Apoio à delegação de utilizadores SAS para acesso ao diretório

Uma delegação de utilizadores SAS suporta o âmbito do diretório sr=d ( ) quando a versão de autenticação é sv 2020-02-10 ou superior e um espaço hierárquico de nomes (HNS) está ativado. A semântica para o âmbito do sr=d diretório () é semelhante ao âmbito do contentor , sr=c exceto que o acesso é restrito a um diretório e quaisquer ficheiros e subdireções por baixo do mesmo. Quando sr=d especificado, o sdd parâmetro de consulta também é necessário.

O formato de corda a sinal para a versão de autenticação 2020-02-10 permanece inalterado.

Apoio SAS da delegação de utilizadores para o utilizador OID

A Delegação do Utilizador SAS suporta um OID de utilizador opcional transportado no saoid ou parâmetro quando a versão de suoid autenticação é sv 2020-02-10 ou superior. Este parâmetro opcional fornece um modelo de autorização melhorado para cargas de trabalho de cluster multiutilizador como Hadoop e Spark. Os tokens SAS podem ser limitados a uma operação específica do sistema de ficheiros e ao utilizador, proporcionando um token de acesso menos vulnerável que é mais seguro para o propósito de distribuir por um cluster multiutilizador. Um caso de uso para estas funcionalidades é a integração do piloto Hadoop ABFS com Apache Ranger.

Autorização de uma delegação de utilizadores SAS

Quando um cliente acede a um recurso de armazenamento Blob com uma delegação de utilizador SAS, o pedido à Azure Armazenamento é autorizado com as credenciais AD AZure que foram usadas para criar o SAS. As permissões de controlo de acesso baseadas em funções (RBAC) concedidas para essa conta Azure AD, juntamente com as permissões explicitamente concedidas no SAS, determinam o acesso do cliente ao recurso. Esta abordagem proporciona um nível adicional de segurança e evita a necessidade de armazenar a chave de acesso à sua conta com o seu código de aplicação. Por estas razões, a criação de um SAS utilizando credenciais Azure AD é uma boa prática de segurança.

As permissões concedidas a um cliente que possui o SAS são a intersecção das permissões concedidas ao principal de segurança que solicitou a chave da delegação do utilizador e as permissões concedidas ao recurso no token SAS utilizando o signedPermissions campo ( sp ) campo. Se uma autorização concedida ao principal de segurança via RBAC também não for concedida no token SAS, então essa permissão não é concedida ao cliente que tenta usar o SAS para aceder ao recurso. Ao criar uma delegação de utilizador SAS, certifique-se de que as permissões concedidas através do RBAC e as permissões concedidas através do token SAS se alinham ao nível de acesso exigido pelo cliente.

Para criar uma delegação de utilizadores SAS, siga estes passos:

  1. Utilize o RBAC para conceder as permissões desejadas ao diretor de segurança que solicitará a chave da delegação do utilizador.
  2. Adquira um símbolo OAuth 2.0 da Azure AD.
  3. Utilize o token para solicitar a chave da delegação do utilizador, ligando para a operação "Obter a Chave da Delegação do Utilizador".
  4. Utilize a chave da delegação do utilizador para construir o token SAS com os campos apropriados.

Atribuir permissões com o RBAC

O diretor de segurança que solicita a chave da delegação do utilizador tem de ter as permissões adequadas para o fazer. Um diretor de segurança Azure AD pode ser um utilizador, um grupo, um diretor de serviço ou uma identidade gerida.

Para solicitar a chave da delegação do utilizador, deve ser atribuído um princípio de segurança à ação Microsoft.Armazenamento/storageAccounts/blobServices/generateUserDelegationKey. As seguintes funções incorporadas no RBAC incluem a ação Microsoft.Armazenamento/storageAccounts/blobServices/generateUserDelegationKey, quer explicitamente quer como parte de uma definição de wildcard:

Uma vez que a operação "Get User Delegation Key" atua ao nível da conta de armazenamento, a ação Microsoft.Armazenamento/storageAccounts/blobServices/generateUserDelegationKey deve ser avaliada ao nível da conta de armazenamento, do grupo de recursos ou da subscrição. Se o diretor de segurança for atribuído a qualquer uma das funções incorporadas acima referidas, ou uma função personalizada que inclua a ação Microsoft.Armazenamento/storageAccounts/blobServices/generateUserDelegationKey, ao nível da conta de armazenamento, do grupo de recursos ou da subscrição, o responsável de segurança poderá solicitar a chave da delegação do utilizador.

No caso de o principal de segurança ser atribuído a uma função que permite o acesso aos dados mas que é alargado ao nível de um contentor, pode ainda atribuir a função Armazenamento Blob Delegator a esse principal de segurança ao nível da conta de armazenamento, grupo de recursos ou subscrição. A função Armazenamento Blob Delegator concede às autorizações principais de segurança para solicitar a chave da delegação do utilizador.

Para obter mais informações sobre as funções do RBAC para a Azure Armazenamento, consulte Autorizar com Azure Ative Directory.

Adquirir um símbolo OAuth 2.0

Para obter a chave da delegação do utilizador, solicite primeiro um token OAuth 2.0 da Azure AD. Forneça o símbolo com o esquema Do Portador para autorizar a chamada para a operação "Get User Delegation Key". Para obter mais informações sobre a solicitação de um token OAuth da Ad AD, consulte fluxos de autenticação e cenários de aplicação.

Solicite a chave da delegação do utilizador

Uma chamada para a operação 'Chave' 'Get User' retorna a chave como um conjunto de valores que são utilizados como parâmetros no token da delegação do utilizador SAS. Estes parâmetros são descritos na referência chave da delegação do utilizador e na secção intitulada Construa uma delegação de utilizadores SAS.

Quando um cliente solicita uma chave de delegação de utilizador utilizando um token OAuth 2.0, a Azure Armazenamento devolve a chave da delegação do utilizador em nome do principal de segurança. A SAS criada com a chave da delegação do utilizador é concedida as permissões que foram concedidas ao diretor de segurança.

Uma vez que tenha a chave da delegação do utilizador, pode usar essa chave para criar qualquer número de assinaturas de acesso partilhadas da delegação do utilizador, ao longo do tempo de vida da chave. A chave da delegação do utilizador é independente do símbolo OAuth 2.0 utilizado para adquiri-lo, pelo que o símbolo não precisa de ser renovado enquanto a chave ainda for válida. Pode especificar que a chave é válida por um período de até sete dias.

Construa uma delegação de utilizadores SAS

O quadro seguinte resume os campos suportados para uma lista de nomes de utilizadores SAS. As secções subsequentes fornecem detalhes adicionais sobre como especificar estes parâmetros.

Nome de campo SAS Parâmetro de token SAS Obrigatório ou opcional Suporte de versão Descrição
signedVersion sv Obrigatório 2018-11-09 ou mais tarde Indica a versão do serviço utilizado para construir o campo de assinatura, e especifica também a versão de serviço que trata de um pedido feito com esta assinatura de acesso partilhado.
signedResource sr Necessário Todos Especifica quais os recursos blob acessíveis através da assinatura de acesso partilhado.
signedStart st Opcional Todos Opcional. O momento em que a assinatura de acesso partilhado se torna válida, expressa num dos formatos ACEITES ISO 8601 UTC. Se omitido, o tempo UTC atual é utilizado como a hora de início. Para obter mais informações sobre os formatos UTC aceites, consulte os valores de Hora de Data de Formatação.
signedExpiry se Necessário Todos O momento em que a assinatura de acesso partilhado se torna inválida, expressa num dos formatos ACEITES ISO 8601 UTC. Para obter mais informações sobre os formatos UTC aceites, consulte os valores de Hora de Data de Formatação.
signedPermissions sp Necessário Todos Indica quais as operações que um cliente que possui o SAS pode realizar no recurso. As permissões podem ser combinadas.
signedIp sip Opcional 2015-04-05 ou mais tarde Especifica um endereço IP ou uma gama inclusiva de endereços IP a partir dos quais aceitar pedidos.
signedProtocol spr Opcional 2015-04-05 ou mais tarde Especifica o protocolo permitido para um pedido feito com o SAS. Inclua este campo para exigir que os pedidos feitos com o token SAS use HTTPS.
signedObjectId skoid Necessário 2018-11-09 ou mais tarde Identifica um diretor de segurança da AD Azure.
signedTenantId sktid Necessário 2018-11-09 ou mais tarde Especifica o inquilino Azure AD no qual é definido um principal de segurança.
signedKeyStartTime skt Opcional. 2018-11-09 ou mais tarde O valor é devolvido pela operação "Obter Ação Delegação" da Chave. Indica o início da vida útil da chave da delegação do utilizador, expressa num dos formatos ACEITES ISO 8601 UTC. Se omitido, o tempo atual é assumido. Para obter mais informações sobre os formatos UTC aceites, consulte os valores de Hora de Data de Formatação.
signedKeyExpiryTime ske Necessário 2018-11-09 ou mais tarde O valor é devolvido pela operação "Obter Ação Delegação" da Chave. Indica o fim da vida útil da chave da delegação do utilizador, expressa num dos formatos ACEITES ISO 8601 UTC. Para obter mais informações sobre os formatos UTC aceites, consulte os valores de Hora de Data de Formatação.
signedKeyService sks Necessário 2018-11-09 ou mais tarde Indica o serviço para o qual a chave da delegação do utilizador é válida. Atualmente apenas o serviço Blob é suportado.
signedAuthorizedObjectId saoid Opcional 2020-02-10 ou mais tarde Especifica o ID do objeto para um principal de segurança Azure AD que é autorizado pelo proprietário da chave da delegação do utilizador para executar a ação concedida pelo token SAS. Não é efetuada qualquer verificação adicional de permissão nos ACLs POSIX.
signedUnauthorizedObjectId suoid Opcional 2020-02-10 ou mais tarde Especifica o ID do objeto para um principal de segurança Azure AD quando um espaço hierárquico de nomes está ativado. A Azure Armazenamento executa uma verificação POSIX ACL contra o ID do objeto antes de autorizar a operação.
signedCorrelationId scid Opcional 2020-02-10 ou mais tarde Correlacionar os registos de auditoria de armazenamento com os registos de auditoria utilizados pelo principal gerador e distribuição de SAS.
signedDirectoryDepth sdd Exigido quando sr=d 2020-02-10 ou mais tarde Indica o número de diretórios por baixo da pasta raiz do diretório especificado no canonicalizedResource campo do string-to-sign.
signature sig Necessário Todos A assinatura é um HMAC calculado sobre a corda-a-sinal e chave usando o algoritmo SHA256, e, em seguida, codificado usando codificação Base64.
Cache-Control cabeçalho de resposta rscc Opcional 2013-08-15 ou mais tarde A Azure Armazenamento define o Cache-Control cabeçalho de resposta para o valor especificado no token SAS.
Content-Disposition cabeçalho de resposta rscd Opcional 2013-08-15 ou mais tarde A Azure Armazenamento define o Content-Disposition cabeçalho de resposta para o valor especificado no token SAS.
Content-Encoding cabeçalho de resposta rsce Opcional 2013-08-15 ou mais tarde A Azure Armazenamento define o Content-Encoding cabeçalho de resposta para o valor especificado no token SAS.
Content-Language cabeçalho de resposta rscl Opcional 2013-08-15 ou mais tarde A Azure Armazenamento define o Content-Language cabeçalho de resposta para o valor especificado no token SAS.
Content-Type cabeçalho de resposta rsct Opcional 2013-08-15 ou mais tarde A Azure Armazenamento define o Content-Type cabeçalho de resposta para o valor especificado no token SAS.

Especificar o campo de versão assinado

O signedVersion campo sv requerido () especifica a versão de serviço para a assinatura de acesso partilhado. Este valor indica a versão do serviço utilizado para a construção do signature campo, e especifica também a versão de serviço que trata de um pedido feito com esta assinatura de acesso partilhado. O valor do campo deve ser a sv versão 2018-11-09 ou posterior.

Especificar o campo de recursos assinado

O campo necessário signedResource sr () especifica quais os recursos acessíveis através da assinatura de acesso partilhado. A tabela a seguir descreve como se referir a uma bolha, recipiente ou recurso de diretório no token SAS.

Recurso Valor do parâmetro Versões suportadas Descrição
Blobs b Todos Concede acesso ao conteúdo e metadados da bolha.
Versão blob bv Versão 2018-11-09 e mais tarde Concede acesso ao conteúdo e metadados da versão blob, mas não à bolha base.
Snapshot blob bs Versão 2018-11-09 e mais tarde Concede acesso ao conteúdo e metadados do instantâneo blob, mas não à bolha de base.
Contentor c Todos Concede acesso ao conteúdo e metadados de qualquer bolha no recipiente e à lista de bolhas no recipiente.
Diretório d Versão 2020-02-10 e mais tarde Concede acesso ao conteúdo e metadados de qualquer bolha no diretório, e à lista de bolhas no diretório, numa conta de armazenamento com um espaço hierárquico habilitado. Se um diretório for especificado para o signedResource campo, então o signedDirectoryDepth parâmetro ( ) também é sdd necessário. Um diretório está sempre debaixo de um contentor.

Especificar o intervalo de validade da assinatura

Os signedStart campos ( ) e ( ) indicam a hora de início e o prazo de st signedExpiry se validade para o SAS. O campo signedExpiry é obrigatório. O signedStart campo é opcional; se omitido, o tempo UTC atual é usado como a hora de início.

Para uma delegação de utilizadores SAS, o tempo de início e o prazo de validade do SAS devem estar dentro do intervalo definido para a chave da delegação do utilizador. Se um cliente tentar utilizar um SAS após a expiração da chave da delegação do utilizador, o SAS falhará com um erro de autorização, independentemente de o próprio SAS ainda ser válido.

Para obter mais informações sobre os formatos UTC aceites, consulte os valores de Hora de Data de Formatação.

Especificar permissões

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

As permissões podem ser combinadas para permitir que um cliente realize múltiplas operações com o mesmo SAS. Ao construir o SAS, deve incluir permissões na seguinte ordem:

racwdxltmeop

Exemplos de permissões válidas para um recipiente rw incluem, , , , , e rd rl wd wl rl . Exemplos de configurações inválidas wr dr incluem, , e lr dw . Especificar uma designação de permissão mais de uma vez não é permitido.

Uma delegação utilizadora SAS não pode conceder acesso a determinadas operações:

  • Os contentores não podem ser criados, eliminados ou listados.
  • Os metadados e propriedades do contentor não podem ser lidos ou escritos.
  • Os contentores não podem ser alugados.

Para construir um SAS que conceda acesso a estas operações, utilize uma conta SAS. Para mais informações, consulte Criar uma conta SAS.

A tabela a seguir mostra as permissões suportadas para cada tipo de recurso.

Permissão Símbolo URI Recurso Suporte de versão Operações permitidas
Ler r Contentor
Diretório
Blobs
Todos Leia o conteúdo, lista de blocos, propriedades e metadados de qualquer bolha no recipiente ou diretório. Utilize uma bolha como fonte de uma operação de cópia.
Adicionar um Contentor
Diretório
Blobs
Todos Adicione um bloco a uma bolha de apêndice.
Criar c Contentor
Diretório
Blobs
Todos Escreva uma nova bolha, fotografe uma bolha ou copie uma bolha para uma nova bolha.
Escrita w Contentor
Diretório
Blobs
Todos Criar ou escrever conteúdo, propriedades, metadados ou lista de blocos. Snapshot ou arrendar a bolha. Redimensione a bolha (apenas bolha de página). Utilize a bolha como destino de uma operação de cópia.
Eliminar d Contentor
Diretório
Blobs
Todos Apague uma bolha. Para a versão 2017-07-29 e mais tarde, a permissão Delete também permite quebrar um arrendamento em uma bolha. Para mais informações, consulte a operação Lease Blob.
Eliminar versão x Contentor
Blobs
Versão 2019-12-12 ou posterior Apague uma versão blob.
Eliminação Permanente y Blobs Versão 2020-02-10 ou posterior Elimine permanentemente uma imagem ou versão blob.
Lista l Contentor
Diretório
Todos Listar bolhas não recursivamente.
Etiquetas t Blobs Versão 2019-12-12 ou posterior Leia ou escreva as etiquetas numa bolha.
Mover m Contentor
Diretório
Blobs
Versão 2020-02-10 ou posterior Mova uma bolha ou um diretório e o seu conteúdo para um novo local. Esta operação pode ser opcionalmente restrita ao proprietário da bolha da criança, diretório ou diretório de pais se o saoid parâmetro estiver incluído no token SAS e a broca pegajosa for definida no diretório dos pais.
Executar e Contentor
Diretório
Blobs
Versão 2020-02-10 ou posterior Obtenha as propriedades do sistema e, se o espaço hierárquico estiver ativado para a conta de armazenamento, obtenha o POSIX ACL de uma bolha. Se o espaço hierárquico estiver ativado e o autor da chamada for o proprietário de uma bolha, esta permissão confere a capacidade de definir o grupo proprietário, permissões POSIX e POSIX ACL da bolha. Não permite que o chamador leia metadados definidos pelo utilizador.
Propriedade o Contentor
Diretório
Blobs
Versão 2020-02-10 ou posterior Quando o espaço hierárquico está ativado, esta permissão permite ao autor da chamada definir o proprietário ou o grupo proprietário, ou agir como proprietário ao renomear ou apagar um diretório ou bolha dentro de um diretório que tenha o conjunto de bits pegajosos.
Permissões p Contentor
Diretório
Blobs
Versão 2020-02-10 ou posterior Quando o espaço hierárquico está ativado, esta permissão permite que o chamador descreva permissões e ACLs POSIX em diretórios e bolhas.

Especificar um endereço IP ou intervalo de IP

O campo opcional signedIp sip () especifica um endereço IP ou uma gama de endereços IP a partir dos quais aceitar pedidos. Se o endereço IP de onde o pedido é originário não corresponder ao endereço IP ou intervalo de endereços especificado no token SAS, o pedido não é autorizado.

Quando especifica uma gama de endereços IP, o intervalo é inclusivo. Por exemplo, especificar sip=168.1.5.65 ou sip=168.1.5.60-168.1.5.70 no SAS restringe o pedido a esses endereços IP.

A tabela seguinte descreve se deve incluir o signedIp campo num token SAS para um determinado cenário, com base no ambiente do cliente e na localização da conta de armazenamento.

Ambiente de cliente Localização da conta de armazenamento Recomendação
Cliente correndo em Azure Na mesma região que o cliente Um SAS fornecido ao cliente neste cenário não deve incluir um endereço IP de saída para o signedIp campo. Os pedidos feitos na mesma região utilizando um SAS com um endereço IP de saída especificado falharão.

Em vez disso, utilize uma Rede Virtual Azure (VNet) para gerir as restrições de segurança da rede. Os pedidos ao Azure Armazenamento de dentro da mesma região têm sempre lugar num endereço IP privado. Para obter mais informações, veja Configurar firewalls e redes virtuais do Armazenamento do Microsoft Azure.
Cliente correndo em Azure Em diferentes regiões do cliente Um SAS fornecido ao cliente neste cenário pode incluir um endereço IP público ou um leque de endereços para o signedIp campo. Um pedido feito com o SAS deve ter origem no endereço IP especificado ou no intervalo de endereços.
Cliente correndo no local ou em um ambiente de nuvem diferente Em qualquer região de Azure Um SAS fornecido ao cliente neste cenário pode incluir um endereço IP público ou um leque de endereços para o signedIp campo. Um pedido feito com o SAS deve ter origem no endereço IP especificado ou no intervalo de endereços.

Se o pedido passar por um proxy ou gateway, em seguida, forneça o endereço IP de saída pública desse proxy ou gateway para o signedIp campo.

Especificar o protocolo HTTP

O campo opcional signedProtocol especifica o protocolo permitido para um pedido feito com o spr SAS. Os valores possíveis são apenas HTTPS e https,http HTTPS () ou HTTPS https (). O valor predefinido é https,http.

Nota

Não é possível especificar HTTP para o spr campo.

Especificar o ID do objeto assinado

O signedObjectId campo ( ) é necessário para uma skoid delegação de utilizador SAS. A operação 'Chave' 'Obter' (Chave de Utilização) devolve este valor como parte da resposta. O ID do objeto assinado é um valor GUID que serve o identificador imutável para um principal de segurança no plataforma de identidades da Microsoft.

Especificar a ID do inquilino assinado

O signedTenantId campo ( ) é necessário para uma sktid delegação de utilizador SAS. A operação 'Chave' 'Obter' (Chave de Utilização) devolve este valor como parte da resposta. O ID do inquilino assinado é um valor GUID que representa o inquilino AZure AD no qual um diretor de segurança é definido.

Especificar a hora de início da chave assinada

O campo opcional signedKeyStartTime indica o início da vida útil da chave da skt delegação do utilizador no formato ISO Date. A operação 'Chave' 'Obter' (Chave de Utilização) devolve este valor como parte da resposta. Se omitido, presume-se que a hora de início da chave assinada seja a hora atual.

Especificar o prazo de validade da chave assinada

O signedKeyExpiryTime campo ( ) é necessário para uma ske delegação de utilizador SAS no formato ISO Date. A operação 'Chave' 'Obter' (Chave de Utilização) devolve este valor como parte da resposta. O prazo de validade da chave assinada indica o fim da vida útil da chave da delegação do utilizador. O valor do prazo de validade pode ser no máximo de sete dias a partir da hora de início do SAS.

Especificar o serviço de chave assinado

O signedKeyService campo ( ) é necessário para uma sks delegação de utilizador SAS. A operação 'Chave' 'Obter' (Chave de Utilização) devolve este valor como parte da resposta. O campo de serviço de chaves assinado indica o serviço para o qual a chave da delegação do utilizador é válida. O valor para o campo de serviço chave assinado para o serviço Blob é b .

Especificar a versão chave assinada

O signedkeyversion campo ( ) é necessário para uma skv delegação de utilizador SAS. A operação 'Chave' 'Obter' (Chave de Utilização) devolve este valor como parte da resposta. O campo da versão chave assinada especifica a versão de serviço de armazenamento utilizada para obter a chave da delegação do utilizador. Este campo deve especificar a versão 2018-11-09 ou posterior.

Especifique um ID de objeto assinado para um diretor de segurança

Os campos opcionais signedAuthorizedObjectId saoid () e signedUnauthorizedObjectId ( ) permitem suoid a integração com Apache Hadoop e Apache Ranger para Azure Data Lake Armazenamento cargas de trabalho gen2. Utilize um destes campos no token SAS para especificar o ID do objeto para um principal de segurança:

  • O saoid campo especifica o ID do objeto para um principal de segurança Azure que é autorizado pelo proprietário da chave da delegação do utilizador para executar a ação concedida pelo token SAS. O Azure Armazenamento valida o token SAS e garante que o proprietário da chave da delegação do utilizador tem as permissões necessárias antes de conceder acesso. Não é efetuada qualquer verificação adicional de permissão nos ACLs POSIX.
  • O suoid campo especifica o ID do objeto para um principal de segurança Azure AD quando um espaço hierárquico de nomes está ativado para uma conta de armazenamento. O suoid campo é válido apenas para contas que tenham um espaço hierárquico. Quando o suoid campo está incluído no token SAS, o Azure Armazenamento efetua uma verificação POSIX ACL contra o ID do objeto antes de autorizar a operação. Se esta verificação ACL não for bem sucedida, a operação falha. Um espaço hierárquico deve ser ativado para a conta de armazenamento se o suoid campo estiver incluído no token SAS. Caso contrário, a verificação de permissão falhará com um erro de autorização.

A identificação do objeto para o principal de segurança que solicita a chave da delegação do utilizador é capturada no skoid campo exigido. Para especificar um ID de objeto no token SAS com o saoid ou suoid campo, o principal de segurança identificado no skoid campo deve ser atribuído a uma função RBAC que inclua o Microsoft.Armazenamento/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action ou Microsoft.Armazenamento/storageAccounts/blobServices/containers/blobs/manageOwner/action. Para obter mais informações sobre estas ações, consulte as operações do fornecedor de recursos Azure.

Especificar o ID do objeto no saoid ou campo também restringe as suoid operações relacionadas com a propriedade do diretório ou do blob:

  • Se uma operação criar um diretório ou uma bolha, então o Azure Armazenamento define o proprietário do diretório ou bolha para o valor especificado pelo ID do objeto. Se o ID do objeto não for especificado, então o Azure Armazenamento define o proprietário do diretório ou bolha para o valor especificado pelo skoid parâmetro.
  • Se a broca pegajosa for definida no diretório dos pais e a operação eliminar ou renomear um diretório ou bolha, então o ID do objeto do diretório principal ou o proprietário do recurso deve corresponder ao valor especificado pelo ID do objeto.
  • Se uma operação definir o proprietário para um diretório ou bolha e o x-ms-owner cabeçalho for especificado, então o valor especificado pelo ID do objeto deve corresponder ao valor especificado pelo x-ms-owner cabeçalho.
  • Se uma operação definir o grupo para um diretório ou bolha e o x-ms-group cabeçalho for especificado, então o valor especificado pelo ID do objeto deve ser um membro do grupo especificado pelo x-ms-group cabeçalho.
  • Se uma operação definir as permissões ou ACL para um diretório ou bolha, então uma das duas condições seguintes também deve ser cumprida:
    • O valor especificado para o ID do objeto deve ser o proprietário do diretório ou bolha.
    • O valor do signedPermissions campo deve incluir a sp Ownership permissão para o além da Permissions p permissão ( ).

O ID do objeto especificado no saoid ou campo é incluído em suoid registos de diagnóstico quando um pedido é feito usando o token SAS.

O saoid suoid ou campo só é suportado se o signedVersion campo ( ) estiver definido para a versão sv 2020-02-10 ou posterior. Apenas um destes campos pode ser incluído no token SAS.

Especificar um ID de correlação

O signedCorrelationId campo ( ) especifica um scid ID de correlação que pode ser usado para correlacionar os registos de auditoria de armazenamento com os registos de auditoria utilizados pelo principal que gera e distribui o SAS. Por exemplo, um serviço de autorização de confiança normalmente terá uma identidade gerida que autentica e autoriza os utilizadores, gera um SAS, adiciona uma entrada no registo de auditoria local e devolve o SAS a um utilizador, que pode então usar o SAS para aceder a recursos Armazenamento Azure. A inclusão de um ID de correlação no registo de auditoria local e no registo de auditoria de armazenamento permite que estes eventos sejam posteriormente correlacionados. O valor é um GUID sem aparelho em minúsculas.

Este campo é suportado com a versão 2020-02-10 ou posterior.

Especificar a profundidade do diretório

Se o signedResource campo especificar um diretório sr=d (), então também deve especificar o signedDirectoryDepth campo ( ) para indicar o número de sdd subdireções no diretório de raiz. O valor do sdd campo deve ser um número inteiro não negativo.

Por exemplo, o diretório de raiz https://{account}.blob.core.windows.net/{container}/ tem uma profundidade de 0. Cada subdiretório por baixo do diretório de raiz aumenta a profundidade por um. O diretório https://{account}.blob.core.windows.net/{container}/d1/d2 tem uma profundidade de dois.

Este campo é suportado com a versão 2020-02-10 ou posterior.

Especificar parâmetros de consulta para anular cabeçalhos de resposta

Para definir valores para certos cabeçalhos de resposta a serem devolvidos quando a assinatura de acesso partilhado for utilizada num pedido, pode especificar cabeçalhos de resposta em parâmetros de consulta. Os cabeçalhos de resposta e os parâmetros de consulta correspondentes são os seguintes:

Nome do cabeçalho de resposta Parâmetro de consulta SAS correspondente
Cache-Control rscc
Content-Disposition rscd
Content-Encoding rsce
Content-Language rscl
Content-Type rsct

Por exemplo, se especificar o rsct=binary parâmetro de consulta num token SAS, o Content-Type cabeçalho de resposta é definido para binary . Este valor sobrepõe-se ao valor do Content-Type cabeçalho armazenado para a bolha para um pedido utilizando apenas esta assinatura de acesso partilhado.

Se criar uma assinatura de acesso partilhado que especifique os cabeçalhos de resposta como parâmetros de consulta, deve incluir os cabeçalhos de resposta no string-to-sign que é usado para construir a corda de assinatura. Consulte a secção "Construir a Corda de Assinatura" abaixo para obter mais detalhes.

Especificar o utilizador OID

A Delegação do Utilizador SAS suporta um OID do utilizador opcional transportado no parâmetro de Id de Objeto de Utilizador Autorizado Assinado ( saoid ou Assinado ) ou Identificado O Id do Objeto de Utilizador Não Autorizado quando a versão de suoid autenticação (sv) é 2020-02-10 ou superior:

  • O utilizador que delega o acesso (skoid) deve ter Microsoft.Armazenamento/storageAcounts/blobServices/containers/blobs/runAsSuperUser/action ou Microsoft.Armazenamento/storageAcounts/blobServices/containers/blobs/manageOwnership/action RBAC permissão quando utilizar um SAS com um OID de utilizador opcional.
  • Se a broca pegajosa estiver definida na pasta dos pais e a operação for apagar ou mudar de nome, então o proprietário da pasta principal ou o proprietário do recurso devem corresponder ao valor especificado pelo OID do utilizador opcional.
  • Se a operação for o SetAccessControl e estiver a ser definido x-ms-proprietário, o valor do x-ms-proprietário deve corresponder ao valor especificado pelo OID do utilizador opcional.
  • Se a operação for o SetAccessControl e o grupo x-ms estiver a ser definido, então o valor especificado pelo utilizador opcional OID deve ser um membro do grupo especificado pelo grupo x-ms-ms.

Especificar o ID de correlação

A Delegação de Utilizador SAS suporta um ID de correlação opcional transportado no parâmetro scid quando a versão de autenticação (sv) é 2020-02-10 ou superior. Este é um valor GUID que será registado nos registos de diagnóstico de armazenamento e pode ser usado para correlacionar a geração SAS com o acesso a recursos de armazenamento.

Especificar a assinatura

O signature campo ( ) é utilizado para autorizar um pedido feito por um cliente com a assinatura de acesso sig partilhado. O string-to-sign é uma corda única construída a partir dos campos que deve ser verificada para autorizar o pedido. A assinatura é um HMAC calculado sobre a corda-a-sinal e chave usando o algoritmo SHA256, e, em seguida, codificado usando codificação Base64.

Para construir a cadeia de assinatura de uma delegação de utilizador SAS, primeiro criar o string-to-sign a partir dos campos que compõem o pedido, em seguida, codificar a cadeia como UTF-8 e calcular a assinatura usando o algoritmo HMAC-SHA256. Os campos incluídos no string-to-sign devem ser descodificados por URL. Utilize o seguinte formato para o string-to-sign:

StringToSign = sp + "\n" +  
 st + "\n" +  
 se + "\n" +  
 canonicalizedResource + "\n" +  
 skoid + "\n" +
 sktid + "\n" +
 skt + "\n" +
 ske  + "\n" +
 sks + "\n" +
 skv + "\n" +
 saoid + "\n" +
 suoid + "\n" +
 scid + "\n" +
 sip + "\n" +  
 spr + "\n" +  
 sv + "\n" +  
 sr + "\n" +
 rscc + "\n" +
 rscd + "\n" +  
 rsce + "\n" +  
 rscl + "\n" +  
 rsct

O string-to-sign para a versão de autenticação 2020-02-10 ou superior tem o seguinte formato:

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

Recurso canónico

A canonicalizedresouce parte da corda é um caminho canónico para o recurso assinado. Deve incluir o ponto final de serviço Blob e o nome do recurso, e deve ser descodificado por URL. Um caminho de bolha deve incluir o seu recipiente. Um percurso de diretório deve incluir o número de subdiretas correspondentes ao sdd parâmetro.

A cadeia de recursos canonizada para um recipiente deve omitir o corte de fuga ('/') para um SAS que dê acesso a esse recipiente.

Os exemplos a seguir mostram como construir a canonicalizedResource parte da cadeia, dependendo do tipo de recurso.

Exemplo do contentor (armazenamento Azure Blob)
URL = https://myaccount.blob.core.windows.net/music  
canonicalizedResource = "/blob/myaccount/music"  
Exemplo blob (armazenamento Azure Blob)
URL = https://myaccount.blob.core.windows.net/music/intro.mp3  
canonicalizedResource = "/blob/myaccount/music/intro.mp3"  
Exemplo de recipiente (Azure Data Lake Armazenamento Gen2)
URL = https://myaccount.dfs.core.windows.net/music  
canonicalizedResource = "/blob/myaccount/music"  
Exemplo do diretório (Azure Data Lake Armazenamento Gen2)
URL = https://myaccount.dfs.core.windows.net/music/instruments/guitar/  
canonicalizedResource = "/blob/myaccount/music/instruments/guitar/"  
Exemplo blob (Azure Data Lake Armazenamento Gen2)
URL = https://myaccount.dfs.core.windows.net/music/intro.mp3  
canonicalizedResource = "/blob/myaccount/music/intro.mp3"  

Campos opcionais

Se um campo for opcional e não for fornecido como parte do token SAS, especifique uma corda vazia para esse campo. Certifique-se de que inclui o carácter da nova linha (\n) após a corda vazia.

Revogar uma delegação de utilizadores SAS

Se acredita que um SAS foi comprometido, então deve revogar o SAS. Pode revogar uma delegação de utilizadores SAS revogando a chave da delegação de utilizadores, ou alterando ou removendo atribuições de funções RBAC para o principal de segurança utilizado para criar o SAS.

Importante

Tanto a chave da delegação de utilizadores como as atribuições de funções rbac são colocadas em cache pela Azure Armazenamento, pelo que pode haver um atraso entre quando inicia o processo de revogação e quando uma delegação de utilizadores existente SAS se torna inválida.

Revogar a chave da delegação de utilizadores

Pode revogar a chave da delegação do utilizador, ligando para a operação "Revogar as Chaves da Delegação do Utilizador". Quando revoga a chave da delegação do utilizador, quaisquer assinaturas de acesso partilhadas que dependam dessa chave tornam-se inválidas. Em seguida, pode voltar a ligar para a operação 'Obter Manual de Utilização' e utilizar a chave para criar novas assinaturas de acesso partilhado. Esta abordagem é a forma mais rápida de revogar uma delegação de utilizadores SAS.

Alterar ou remover atribuições de funções

Pode alterar ou remover a atribuição de funções RBAC para o principal de segurança utilizado para criar o SAS. Quando um cliente utiliza o SAS para aceder a um recurso, o Azure Armazenamento verifica que o principal de segurança cujas credenciais foram utilizadas para proteger o SAS tem as permissões especificadas para o recurso.

Ver também