Selecionar e configurar um método apropriado para acessar os Blobs do Azure

Concluído

O Armazenamento do Azure dá suporte ao uso do Microsoft Entra ID para autorizar solicitações para dados de blob. Com o Microsoft Entra ID, pode usar o controlo de acesso baseado em função do Azure (Azure RBAC) para conceder permissões a um principal de segurança, que pode ser um utilizador, grupo ou principal de serviço de aplicativo. A entidade de segurança é autenticada pelo Microsoft Entra ID para retornar um token OAuth 2.0. O token pode ser usado para autorizar uma solicitação contra o serviço Blob.

A autorização com o Microsoft Entra ID está disponível para todas as contas de armazenamento em Blob e de uso geral em todas as regiões públicas e nuvens nacionais. Apenas as contas de armazenamento criadas com o modelo de implementação do Azure Resource Manager suportam a autorização do Microsoft Entra.

Para uma segurança ideal, a Microsoft recomenda o uso do Microsoft Entra ID com identidades geridas para autorizar pedidos relativos a dados de blobs, filas e tabelas, sempre que possível. A autorização com ID do Microsoft Entra e identidades gerenciadas oferece segurança superior e facilidade de uso em relação à autorização de chave compartilhada. Para saber mais sobre identidades gerenciadas, consulte O que são identidades gerenciadas para recursos do Azure. Para obter um exemplo de como habilitar e usar uma identidade gerenciada para um aplicativo .NET, consulte Autenticando aplicativos hospedados pelo Azure em recursos do Azure com .NET.

Para recursos hospedados fora do Azure, como aplicativos locais, você pode usar identidades gerenciadas por meio do Azure Arc. Por exemplo, os aplicativos executados em servidores habilitados para Azure Arc podem usar identidades gerenciadas para se conectar aos serviços do Azure. Para saber mais, consulte Autenticar em recursos do Azure com servidores habilitados para Azure Arc.

Para cenários em que as assinaturas de acesso compartilhado (SAS) são usadas, a Microsoft recomenda o uso de uma SAS de delegação de usuário. Uma SAS de delegação de usuário é protegida com credenciais do Microsoft Entra em vez da chave da conta. Para saber mais sobre assinaturas de acesso compartilhado, consulte Conceder acesso limitado a dados com assinaturas de acesso compartilhado. Para obter um exemplo de como criar e usar uma SAS de delegação de usuário com .NET, consulte Criar uma SAS de delegação de usuário para um blob com .NET.

Visão geral do Microsoft Entra ID para blobs

Quando uma entidade de segurança (um usuário, grupo ou aplicativo) tenta acessar um recurso de blob, a solicitação deve ser autorizada, a menos que seja um blob disponível para acesso anônimo. Com o Microsoft Entra ID, o acesso a um recurso é um processo de duas etapas:

  • Autenticação: A identidade do principal de segurança é autenticada e um token OAuth 2.0 é devolvido. A etapa de autenticação requer que um aplicativo solicite um token de acesso OAuth 2.0 em tempo de execução. Se um aplicativo estiver sendo executado de dentro de uma entidade do Azure, como uma VM do Azure, um conjunto de dimensionamento de máquina virtual ou um aplicativo do Azure Functions, ele poderá usar uma identidade gerenciada para acessar dados de blob.

  • Autorização: O token é passado como parte de um pedido ao serviço Blob e utilizado pelo serviço para autorizar o acesso ao recurso especificado com base nas permissões concedidas ao principal de segurança.

Usar uma conta Microsoft Entra no portal, PowerShell ou CLI do Azure

Para saber como acessar dados no portal do Azure com uma conta do Microsoft Entra, consulte Acesso a dados do portal do Azure. Para saber como chamar comandos do Azure PowerShell ou da CLI do Azure com uma conta do Microsoft Entra, consulte Acesso a dados do PowerShell ou da CLI do Azure.

Use o Microsoft Entra ID para autorizar o acesso no código do aplicativo

Para autorizar o acesso ao Armazenamento do Azure com o Microsoft Entra ID, você pode usar uma das seguintes bibliotecas de cliente para adquirir um token OAuth 2.0:

  • A biblioteca de cliente do Azure Identity é recomendada para a maioria dos cenários de desenvolvimento.
  • O Microsoft Authentication Library (MSAL) pode ser adequado para determinados cenários avançados.

Biblioteca de cliente do Azure Identity

A biblioteca de cliente do Azure Identity simplifica o processo de obtenção de um token de acesso OAuth 2.0 para a autorização com o Microsoft Entra ID via o SDK Azure . As versões mais recentes das bibliotecas de cliente do Armazenamento do Azure para .NET, Java, Python, JavaScript e Go integram-se com as bibliotecas de Identidade do Azure para cada uma dessas linguagens para fornecer um meio simples e seguro de adquirir um token de acesso para autorização de solicitações de Armazenamento do Azure.

Uma vantagem da biblioteca de cliente do Azure Identity é que ela permite que você use o mesmo código para adquirir o token de acesso, independentemente de seu aplicativo estar sendo executado no ambiente de desenvolvimento ou no Azure. A biblioteca cliente do Azure Identity retorna um token de acesso para uma entidade de segurança. Quando seu código está sendo executado no Azure, a entidade de segurança pode ser uma identidade gerenciada para recursos do Azure, uma entidade de serviço ou um usuário ou grupo. No ambiente de desenvolvimento, a biblioteca de cliente fornece um token de acesso para um usuário ou uma entidade de serviço para fins de teste.

O token de acesso retornado pela biblioteca de cliente do Azure Identity é encapsulado em uma credencial de token. Em seguida, você pode usar a credencial de token para obter um objeto de cliente de serviço para usar na execução de operações autorizadas no Armazenamento do Azure. Uma maneira simples de obter o token de acesso e a credencial de token é usar a classe DefaultAzureCredential fornecida pela biblioteca de cliente do Azure Identity. DefaultAzureCredential tenta obter a credencial de token tentando sequencialmente vários tipos de credenciais diferentes. DefaultAzureCredential funciona no ambiente de desenvolvimento e no Azure.

A tabela a seguir aponta para informações adicionais para autorizar o acesso a dados em vários cenários:

Idioma .NET Java Javascript Píton Ir
Visão geral da autenticação com o Microsoft Entra ID Como autenticar aplicativos .NET com os serviços do Azure Autenticação do Azure com Java e Azure Identity Autenticar aplicativos JavaScript no Azure usando o SDK do Azure Autenticar aplicativos Python no Azure usando o SDK do Azure N/A
Autenticação usando entidades de serviço do desenvolvedor Autenticar aplicativos .NET nos serviços do Azure durante o desenvolvimento local usando entidades de serviço Autenticação do Azure com entidade de serviço Transferir aplicativos JS para serviços do Azure com entidade de serviço Autenticar aplicativos Python nos serviços do Azure durante o desenvolvimento local usando entidades de serviço Autenticação do SDK do Azure para Go com um Principal de Serviço
Autenticação usando contas de desenvolvedor ou de usuário Autenticar aplicativos .NET nos serviços do Azure durante o desenvolvimento local usando contas de desenvolvedor Autenticação do Azure com credenciais de usuário Autenticar aplicações JS em serviços do Azure com contas de desenvolvimento Autenticar aplicativos Python nos serviços do Azure durante o desenvolvimento local usando contas de desenvolvedor Autenticação do Azure com o SDK do Azure para Go
Autenticação de aplicativos hospedados no Azure Autenticando aplicativos hospedados no Azure em recursos do Azure com o SDK do Azure para .NET Autenticar aplicativos Java hospedados no Azure Autenticando aplicativos JavaScript hospedados no Azure em recursos do Azure com o SDK do Azure para JavaScript Autenticando aplicativos hospedados no Azure em recursos do Azure com o SDK do Azure para Python Autenticação com o SDK do Azure para Go usando uma identidade gerenciada
Autenticação a partir de aplicações locais Autenticar recursos do Azure a partir de aplicativos .NET hospedados no local N/A Autenticar aplicativos JavaScript locais em recursos do Azure Autenticar recursos do Azure a partir de aplicativos Python hospedados no local N/A
Visão geral da biblioteca de cliente de identidade Biblioteca de cliente do Azure Identity para .NET Biblioteca de cliente do Azure Identity para Java Biblioteca de cliente do Azure Identity para JavaScript Biblioteca de cliente do Azure Identity para Python Biblioteca de cliente do Azure Identity para Go

Biblioteca de Autenticação da Microsoft (MSAL)

Embora a Microsoft recomende o uso da biblioteca de cliente do Azure Identity quando possível, a biblioteca MSAL pode ser apropriada para uso em determinados cenários avançados. Para obter mais informações, consulte Saiba mais sobre o MSAL.

Ao usar o MSAL para adquirir um token OAuth para acessar o Armazenamento do Azure, você precisa fornecer uma ID de recurso do Microsoft Entra. A ID do recurso Microsoft Entra indica a audiência para a qual um token emitido pode ser usado para fornecer acesso a um recurso do Azure. No caso do Armazenamento do Azure, a ID do recurso pode ser específica para uma única conta de armazenamento ou pode se aplicar a qualquer conta de armazenamento.

Quando você fornece uma ID de recurso específica para uma única conta de armazenamento e serviço, a ID de recurso é usada para adquirir um token para autorizar solicitações somente para a conta e o serviço especificados. A tabela a seguir lista exemplos de valores a serem usados para a ID do recurso, com base na nuvem com a qual você está trabalhando. Substitua <account-name> pelo nome da sua conta de armazenamento.

Nuvem ID do recurso
Azure Global https://<account-name>.blob.core.windows.net
Azure Government https://<account-name>.blob.core.usgovcloudapi.net
Azure China 21Vianet https://<account-name>.blob.core.chinacloudapi.cn

Você também pode fornecer uma ID de recurso que se aplica a qualquer conta de armazenamento, conforme mostrado na tabela a seguir. Esse ID de recurso é o mesmo para todas as nuvens públicas e soberanas e é usado para adquirir um token para autorizar solicitações para qualquer conta de armazenamento.

Nuvem ID do recurso
Azure Global
Azure Government
Azure China 21Vianet
https://storage.azure.com

Atribuir funções do Azure para direitos de acesso

O Microsoft Entra autoriza direitos de acesso a recursos protegidos através do Azure RBAC. O Armazenamento do Azure define um conjunto de funções RBAC internas que englobam conjuntos comuns de permissões usadas para aceder aos dados de armazenamento em blocos. Você também pode definir funções personalizadas para acesso a dados de blob. Para saber mais sobre como atribuir funções do Azure para acesso de blob, consulte Atribuir uma função do Azure para acesso a dados de blob.

Uma entidade de segurança do Microsoft Entra pode ser um usuário, um grupo, uma entidade de serviço de aplicativo ou uma identidade gerenciada para recursos do Azure. As funções RBAC atribuídas a um principal de segurança determinam as permissões que este tem para o recurso especificado. Para saber mais sobre como atribuir funções do Azure para acesso de blob, consulte Atribuir uma função do Azure para acesso a dados de blob

Em alguns casos, talvez seja necessário habilitar o acesso refinado a recursos de blob ou simplificar as permissões quando tiver um grande número de atribuições de função para um recurso de armazenamento. Você pode usar o controle de acesso baseado em atributos do Azure (Azure ABAC) para configurar condições em atribuições de função. Você pode usar condições com uma função personalizada ou selecionar funções internas. Para obter mais informações sobre como configurar condições para recursos de armazenamento do Azure com ABAC, consulte Autorizar acesso a blobs usando condições de atribuição de função do Azure (visualização). Para obter detalhes sobre as condições suportadas para operações de dados de blob, consulte Ações e atributos para condições de atribuição de função do Azure no Armazenamento do Azure (visualização).

Quando cria uma conta de Armazenamento do Azure, não lhe são atribuídas automaticamente permissões para aceder a dados através do Microsoft Entra ID. Você deve atribuir explicitamente a si mesmo uma função do Azure para acessar o Armazenamento de Blobs. Você pode atribuí-lo no nível de sua assinatura, grupo de recursos, conta de armazenamento ou contêiner.

Âmbito do recurso

Antes de atribuir uma função RBAC do Azure a uma entidade de segurança, determine o escopo de acesso que a entidade de segurança deve ter. Conceda sempre apenas o âmbito mais restrito possível necessário para que o principal de segurança desempenhe as suas tarefas. Isto segue o princípio do menor privilégio e minimiza os riscos de segurança. As funções do RBAC do Azure definidas num âmbito mais abrangente são herdadas pelos recursos subjacentes a elas.

Pode aceder aos recursos blob do Azure nos seguintes níveis, começando pelo âmbito mais restrito (mais restritivo):

  • Um contentor individual. Neste escopo, uma atribuição de função se aplica a todos os blobs no contêiner e às propriedades e metadados do contêiner.
  • A conta de armazenamento. Neste escopo, uma atribuição de função se aplica a todos os contêineres e seus blobs.
  • O grupo de recursos. Neste escopo, uma atribuição de função se aplica a todos os contêineres em todas as contas de armazenamento no grupo de recursos.
  • A assinatura. Neste escopo, uma atribuição de função se aplica a todos os contêineres em todas as contas de armazenamento em todos os grupos de recursos da assinatura.
  • Um grupo de gestão. Neste escopo, uma atribuição de função se aplica a todos os contêineres em todas as contas de armazenamento em todos os grupos de recursos em todas as assinaturas no grupo de gerenciamento.

Perfis predefinidos do Azure para blobs

O RBAC do Azure fornece várias funções internas para autorizar o acesso a dados de blob usando o Microsoft Entra ID e OAuth. Alguns exemplos de funções que fornecem permissões para recursos de dados no Armazenamento do Azure incluem:

  • Especificador de Blob de Armazenamento: Fornece acesso total a recipientes e dados de blobs, incluindo a capacidade de definir propriedade e gerir o controlo de acesso POSIX para o Azure Data Lake Storage Gen2. Use este papel quando os utilizadores precisam de controlo total sobre os recursos do blob. Para obter mais informações, consulte Controle de acesso no Azure Data Lake Storage Gen2.
  • Contribuidor de Dados de Armazenamento Blob: Concede permissões de leitura, escrita e eliminação a recursos de armazenamento Blob. Este é o papel apropriado para utilizadores que precisam de modificar dados de blobs, mas que não requerem capacidades de propriedade ou gestão de ACL.
  • Leitor de Dados de Blob de Armazenamento: Permite acesso apenas para leitura aos recursos de armazenamento Blob. Use este papel para utilizadores ou aplicações que apenas precisam de visualizar ou descarregar dados de blob sem direitos de modificação.
  • Storage Blob Delegator: Permite obter uma chave de delegação de utilizador para criar uma assinatura de acesso partilhada assinada com credenciais Microsoft Entra. Esta função é útil em cenários onde é preciso delegar acesso limitado a recursos BLOB sem compartilhar chaves de conta.

Para saber como proceder para atribuir uma função interna do Azure a uma entidade de segurança, consulte Atribuir uma função do Azure para acesso a dados Blob. Para saber como listar funções do RBAC do Azure e suas permissões, consulte Listar definições de função do Azure.

Para obter mais informações sobre como as funções internas são definidas para o Armazenamento do Azure, consulte Compreender as definições de função. Para obter informações sobre como criar funções personalizadas do Azure, consulte Funções personalizadas do Azure.

Somente papéis explicitamente definidos para acesso a dados permitem que uma entidade de segurança aceda a dados blob. Funções internas, como Proprietário, Colaborador e Colaborador da Conta de Armazenamento , permitem que uma entidade de segurança gerencie uma conta de armazenamento, mas não fornecem acesso aos dados de blob dentro dessa conta por meio da ID do Microsoft Entra. No entanto, se uma função incluir Microsoft.Storage/storageAccounts/listKeys/action, um usuário ao qual essa função é atribuída poderá acessar dados na conta de armazenamento por meio da autorização de Chave Compartilhada com as chaves de acesso da conta. Para obter mais informações, consulte Escolher como autorizar o acesso a dados de blob no portal do Azure.

Para obter informações detalhadas sobre as funções internas do Azure para o Armazenamento do Azure para os serviços de dados e o serviço de gerenciamento, consulte a seção Armazenamento em Funções internas do Azure para o Azure RBAC. Além disso, para obter informações sobre os diferentes tipos de funções que fornecem permissões no Azure, consulte Funções do Azure, Funções do Microsoft Entra e funções de administrador de assinatura clássicas.

As atribuições de função do Azure podem levar até 30 minutos para se propagar.

Permissões de acesso para operações de dados

Para obter detalhes sobre as permissões necessárias para executar operações específicas do serviço de Blob, consulte Permissões para chamar operações de dados.

Aceder a dados com uma conta Microsoft Entra

O acesso a dados de blob por meio do portal do Azure, PowerShell ou CLI do Azure pode ser autorizado usando a conta Microsoft Entra do usuário ou usando as chaves de acesso da conta (autorização de Chave Compartilhada).

Recomendações de segurança:

  • Evite a autorização por Chave Partilhada: A autorização com Chave Partilhada não é recomendada, pois proporciona acesso total à conta de armazenamento e não suporta funcionalidades avançadas de segurança como acesso condicional ou autenticação multifator. Para uma segurança ideal, desative a autorização através da Chave Partilhada para a sua conta de armazenamento, conforme descrito em Impedir autorização de Chave Partilhada para uma conta de Armazenamento do Azure.
  • Limitar o uso de chaves de acesso: A utilização de chaves de acesso e cadeias de ligação deve ser limitada a aplicações iniciais de prova de conceito ou protótipos de desenvolvimento que não acedam a dados de produção ou sensíveis. Para cargas de trabalho de produção, utilize sempre as classes de autenticação baseadas em tokens disponíveis no Azure SDK.
  • Prefira o Microsoft Entra ID: A Microsoft recomenda que os clientes usem o Microsoft Entra ID como método de autorização mais seguro. Quando for necessária delegação de acesso direto do utilizador, utilize um SAS de delegação de utilizador protegido com credenciais Microsoft Entra em vez de um SAS de conta. Para obter mais informações, consulte Autorizar operações para acesso a dados.

Acesso a dados a partir do portal do Azure

O portal do Azure pode usar a sua conta do Microsoft Entra ou as chaves de acesso da conta para aceder aos dados de blobs numa conta de armazenamento Azure. O esquema de autorização que o portal do Azure usa depende das funções do Azure atribuídas a você.

Quando o utilizador tenta aceder a dados de blob, o portal do Azure primeiro verifica se lhe foi atribuída uma função do Azure com Microsoft.Storage/storageAccounts/listkeys/action. Se você recebeu uma função com essa ação, o portal do Azure usa a chave da conta para acessar dados de blob por meio da autorização de Chave Compartilhada. Se você não tiver recebido uma função com essa ação, o portal do Azure tentará acessar os dados usando sua conta do Microsoft Entra.

Para acessar dados de blob do portal do Azure usando sua conta do Microsoft Entra, você precisa de permissões para acessar dados de blob e também precisa de permissões para navegar pelos recursos da conta de armazenamento no portal do Azure. As funções integradas fornecidas pelo Armazenamento do Azure concedem acesso aos recursos de blob, mas não concedem permissões aos recursos da conta de armazenamento. Por este motivo, o acesso ao portal também requer a atribuição de uma função do Gestor de Recursos do Azure, como a função Leitor de , abrangendo o nível da conta de armazenamento ou superior. A função Leitor concede as permissões mais restritas, mas outra função do Gerenciador de Recursos do Azure que concede acesso aos recursos de gerenciamento de conta de armazenamento também é aceitável. Para saber mais sobre como atribuir permissões a usuários para acesso a dados no portal do Azure com uma conta do Microsoft Entra, consulte Atribuir uma função do Azure para acesso a dados de blob.

O portal do Azure indica qual esquema de autorização está em uso quando você navega para um contêiner. Para obter mais informações sobre o acesso a dados no portal, consulte Escolher como autorizar o acesso a dados de blob no portal do Azure.

Acesso a dados do PowerShell ou da CLI do Azure

A CLI do Azure e o PowerShell dão suporte à entrada com credenciais do Microsoft Entra. Após iniciar sessão, a sessão da sua conta é executada com essas credenciais.

Suporte de funcionalidades

O suporte para esse recurso pode ser afetado pela habilitação do Data Lake Storage Gen2, do protocolo NFS (Network File System) 3.0 ou do SSH File Transfer Protocol (SFTP).

Melhores práticas para autorizar o acesso a blobs

Ao implementar a autorização Microsoft Entra ID para armazenamento de blobs, siga estas melhores práticas de segurança:

  • Use identidades geridas: Para aplicações em execução no Azure (VMs, App Service, Functions, AKS), use sempre identidades geridas em vez de principais de serviço com credenciais armazenadas.
  • Implementar o privilégio mínimo: Atribuir o papel mais restritivo que cumpra os requisitos. Utilize Storage Blob Data Reader para cenários de apenas leitura em vez de funções mais permissivas.
  • Atribuição de âmbito adequada: Aplicar atribuições de funções ao nível do contentor sempre que possível, em vez de ao nível da conta de armazenamento ou subscrição.
  • Aproveite o Azure ABAC: Use condições de controlo de acesso baseado em atributos (ABAC) para um controlo de acesso detalhado quando precisar de restringir o acesso com base em atributos de recursos como nome do contentor, caminho do blob ou etiquetas.
  • Desativar a autorização de Chave Partilhada: Depois de migrar para a autenticação do ID Microsoft Entra, desative a autorização de Chave Partilhada ao nível da conta de armazenamento para evitar acessos não autorizados através de chaves de conta.
  • Use SAS de delegação de utilizadores: Quando precisar de fornecer acesso temporário, prefira SAS de delegação de utilizadores em vez de SAS de conta ou SAS de serviços, pois estão protegidos com credenciais Microsoft Entra.
  • Monitorizar acesso: Ative o registo de diagnóstico e revise regularmente os registos do Azure Monitor para rastrear quem está a aceder aos seus dados do blob e identificar qualquer atividade suspeita.
  • Aplicar o acesso condicional: Use as políticas de Acesso Condicional do Microsoft Entra para impor requisitos de segurança adicionais, como autenticação multifator, conformidade com dispositivos ou controlos de acesso baseados na localização.