Impedir a autorização de Chave Partilhada para uma Conta de Armazenamento do Azure
Todos os pedidos seguros feitos a uma conta de Armazenamento do Azure têm de ser autorizados. Por padrão, as solicitações podem ser autorizadas com credenciais do Microsoft Entra ou usando a chave de acesso da conta para autorização de Chave Compartilhada. Desses dois tipos de autorização, o Microsoft Entra ID oferece segurança superior e facilidade de uso em relação à Chave Compartilhada e é recomendado pela Microsoft. Para exigir que os clientes usem a ID do Microsoft Entra para autorizar solicitações, você pode não permitir solicitações para a conta de armazenamento autorizadas com a Chave Compartilhada.
Quando você não permite a autorização de Chave Compartilhada para uma conta de armazenamento, o Armazenamento do Azure rejeita todas as solicitações subsequentes a essa conta que são autorizadas com as chaves de acesso da conta. Somente solicitações seguras autorizadas com o Microsoft Entra ID serão bem-sucedidas. Para obter mais informações sobre como usar o Microsoft Entra ID, consulte Autorizar o acesso a dados no Armazenamento do Azure.
A propriedade AllowSharedKeyAccess de uma conta de armazenamento não é definida por padrão e não retorna um valor até que você o defina explicitamente. A conta de armazenamento permite solicitações autorizadas com Chave Compartilhada quando o valor da propriedade é nulo ou quando é verdadeiro.
Este artigo descreve como usar uma estrutura DRAG (Detection-Remediation-Audit-Governance) para gerenciar continuamente a autorização de chave compartilhada para sua conta de armazenamento.
Pré-requisitos
Antes de proibir o acesso à Chave Partilhada em qualquer uma das suas contas de armazenamento:
- Entenda como a desativação da Chave Compartilhada afeta os tokens SAS
- Considere a compatibilidade com outras ferramentas e serviços do Azure
- Considere a necessidade de não permitir a autorização de Chave Compartilhada para usar o Acesso Condicional do Microsoft Entra
- Autorizar o acesso a dados de arquivo ou fazer a transição de cargas de trabalho do Azure Files
Entenda como a desativação da Chave Compartilhada afeta os tokens SAS
Quando o acesso à Chave Compartilhada não é permitido para a conta de armazenamento, o Armazenamento do Azure lida com tokens SAS com base no tipo de SAS e no serviço direcionado pela solicitação. A tabela a seguir mostra como cada tipo de SAS é autorizado e como o Armazenamento do Azure manipulará essa SAS quando a propriedade AllowSharedKeyAccess da conta de armazenamento for false.
Tipo de SAS | Tipo de autorização | Comportamento quando AllowSharedKeyAccess é falso |
---|---|---|
Delegação de usuário SAS (somente armazenamento de Blob) | Microsoft Entra ID | O pedido é permitido. A Microsoft recomenda o uso de uma SAS de delegação de usuário quando possível para segurança superior. |
Serviço SAS | Chave Partilhada | A solicitação é negada para todos os serviços de Armazenamento do Azure. |
Conta SAS | Chave Partilhada | A solicitação é negada para todos os serviços de Armazenamento do Azure. |
As métricas do Azure e o registo no Azure Monitor não distinguem entre diferentes tipos de assinaturas de acesso partilhado. O filtro SAS no Azure Metrics Explorer e o campo SAS no log do Armazenamento do Azure no Azure Monitor ambas as solicitações de relatório autorizadas com qualquer tipo de SAS. No entanto, diferentes tipos de assinaturas de acesso compartilhado são autorizados de forma diferente e se comportam de forma diferente quando o acesso à Chave Compartilhada não é permitido:
- Um token SAS de serviço ou um token SAS de conta é autorizado com Chave Compartilhada e não será permitido em uma solicitação para armazenamento de Blob quando a propriedade AllowSharedKeyAccess estiver definida como false.
- Uma SAS de delegação de usuário é autorizada com o ID do Microsoft Entra e será permitida em uma solicitação para armazenamento de Blob quando a propriedade AllowSharedKeyAccess estiver definida como false.
Ao avaliar o tráfego para sua conta de armazenamento, lembre-se de que as métricas e os logs, conforme descrito em Detetar o tipo de autorização usado por aplicativos cliente, podem incluir solicitações feitas com uma SAS de delegação de usuário.
Para obter mais informações sobre assinaturas de acesso compartilhado, consulte Conceder acesso limitado aos recursos do Armazenamento do Azure usando assinaturas de acesso compartilhado (SAS).
Considere a compatibilidade com outras ferramentas e serviços do Azure
Vários serviços do Azure utilizam a autorização de Chave Partilhada para comunicar com o Armazenamento do Azure. Se não permitir a autorização de Chave Partilhada para uma conta de armazenamento, estes serviços não conseguirão aceder aos dados nessa conta e as suas aplicações poderão ser afetadas negativamente.
Algumas ferramentas do Azure oferecem a opção de usar a autorização do Microsoft Entra para acessar o Armazenamento do Azure. A tabela a seguir lista algumas ferramentas populares do Azure e observa se elas podem usar a ID do Microsoft Entra para autorizar solicitações ao Armazenamento do Azure.
Ferramenta do Azure | Autorização do Microsoft Entra para o Armazenamento do Azure |
---|---|
Portal do Azure | Suportado. Para obter informações sobre como autorizar com sua conta do Microsoft Entra no portal do Azure, consulte Escolher como autorizar o acesso a dados de blob no portal do Azure. |
AzCopy | Suportado para armazenamento de Blob. Para obter informações sobre como autorizar operações AzCopy, consulte Escolha como você fornecerá credenciais de autorização na documentação do AzCopy. |
Explorador de Armazenamento do Azure | Com suporte para Armazenamento de Blob, Armazenamento de Filas, Armazenamento de Tabela e Armazenamento Azure Data Lake. O acesso do Microsoft Entra ID ao armazenamento de arquivos não é suportado. Certifique-se de selecionar o locatário correto do Microsoft Entra. Para obter mais informações, consulte Introdução ao Storage Explorer |
Azure PowerShell | Suportado. Para obter informações sobre como autorizar comandos do PowerShell para operações de blob ou fila com o Microsoft Entra ID, consulte Executar comandos do PowerShell com credenciais do Microsoft Entra para acessar dados de blob ou Executar comandos do PowerShell com credenciais do Microsoft Entra para acessar dados da fila. |
CLI do Azure | Suportado. Para obter informações sobre como autorizar comandos da CLI do Azure com a ID do Microsoft Entra para acesso a dados de blob e fila, consulte Executar comandos da CLI do Azure com credenciais do Microsoft Entra para acessar dados de blob ou fila. |
Hub IoT do Azure | Suportado. Para obter mais informações, consulte Suporte do Hub IoT para redes virtuais. |
Azure Cloud Shell | O Azure Cloud Shell é um shell integrado no portal do Azure. O Azure Cloud Shell hospeda arquivos para persistência em um compartilhamento de arquivos do Azure em uma conta de armazenamento. Esses arquivos ficarão inacessíveis se a autorização de chave compartilhada não for permitida para essa conta de armazenamento. Para obter mais informações, consulte Persistir arquivos no Azure Cloud Shell. Para executar comandos no Azure Cloud Shell para gerenciar contas de armazenamento para as quais o acesso à Chave Compartilhada não é permitido, primeiro verifique se você recebeu as permissões necessárias para essas contas por meio do RBAC do Azure. Para obter mais informações, consulte O que é o controle de acesso baseado em função do Azure (Azure RBAC)?. |
Não permitir autorização de Chave Compartilhada para usar o Acesso Condicional do Microsoft Entra
Para proteger uma conta de Armazenamento do Azure com políticas de Acesso Condicional do Microsoft Entra, você deve não permitir a autorização de Chave Compartilhada para a conta de armazenamento.
Autorizar o acesso a dados de arquivo ou fazer a transição de cargas de trabalho do Azure Files
O Armazenamento do Azure dá suporte à autorização do Microsoft Entra para solicitações para Arquivos do Azure, Armazenamento de Blobs, Armazenamento de Filas e Armazenamento de Tabelas. No entanto, por padrão, o portal do Azure usa a autorização de Chave Compartilhada para acessar compartilhamentos de arquivos do Azure. Se você não permitir a autorização de Chave Compartilhada para uma conta de armazenamento que não esteja configurada com as atribuições RBAC adequadas, as solicitações aos Arquivos do Azure falharão e você não poderá acessar os compartilhamentos de arquivos do Azure no portal do Azure.
Para atenuar esta situação, recomendamos a adoção de uma de três abordagens:
- Siga estas etapas para autorizar o acesso aos dados do arquivo usando sua conta do Microsoft Entra ou
- Migrar quaisquer dados dos Arquivos do Azure para uma conta de armazenamento separada antes de impedir o acesso a uma conta por meio da Chave Compartilhada ou
- Não aplique essa configuração a contas de armazenamento que dão suporte a cargas de trabalho do Arquivos do Azure.
Identificar contas de armazenamento que permitem o acesso à Chave Compartilhada
Há duas maneiras de identificar contas de armazenamento que permitem o acesso à Chave Compartilhada:
- Verifique a configuração de acesso à Chave Compartilhada para várias contas
- Configurar a Política do Azure para acesso à Chave Compartilhada no modo de auditoria
Verifique a configuração de acesso à Chave Compartilhada para várias contas
Para verificar a configuração de acesso à Chave Compartilhada em um conjunto de contas de armazenamento com desempenho ideal, você pode usar o Gerenciador do Gráfico de Recursos do Azure no portal do Azure. Para saber mais sobre como usar o Gerenciador de Gráficos de Recursos, consulte Guia de início rápido: executar sua primeira consulta do Gráfico de Recursos usando o Azure Resource Graph Explorer.
A execução da seguinte consulta no Resource Graph Explorer retorna uma lista de contas de armazenamento e exibe a configuração de acesso à Chave Compartilhada para cada conta:
resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| extend allowSharedKeyAccess = parse_json(properties).allowSharedKeyAccess
| project subscriptionId, resourceGroup, name, allowSharedKeyAccess
Configurar a Política do Azure para acesso à Chave Compartilhada no modo de auditoria
As contas de Armazenamento de Política do Azure devem impedir que o acesso à chave compartilhada impeça que usuários com permissões apropriadas configurem contas de armazenamento novas ou existentes para permitir a autorização de Chave Compartilhada. Configure essa política no modo de auditoria para identificar contas de armazenamento onde a autorização de Chave Compartilhada é permitida. Depois de alterar os aplicativos para usar o Microsoft Entra em vez da Chave Compartilhada para autorização, você pode atualizar a política para impedir que seja permitido o acesso à Chave Compartilhada.
Para obter mais informações sobre a política interna, consulte Contas de armazenamento devem impedir o acesso de chave compartilhada em Lista de definições de política internas.
Atribuir a política interna para um escopo de recurso
Siga estas etapas para atribuir a política interna para o escopo apropriado no portal do Azure:
No portal do Azure, procure Política para exibir o painel Política do Azure.
Na seção Criação, selecione Atribuições.
Escolha Atribuir política.
Na guia Noções básicas da página Atribuir política, na seção Escopo, especifique o escopo da atribuição de política. Selecione o botão Mais (...) para escolher a subscrição e o grupo de recursos opcionais.
Para o campo Definição de política, selecione o botão Mais (...) e insira acesso à chave compartilhada no campo Pesquisar. Selecione a definição de política chamada Contas de armazenamento devem impedir o acesso à chave compartilhada.
Selecione Rever + criar.
No separador Rever + criar, reveja a atribuição de política e, em seguida, selecione Criar para atribuir a definição de política ao âmbito especificado.
Monitorar a conformidade com a política
Para monitorar suas contas de armazenamento quanto à conformidade com a política de acesso de chave compartilhada, siga estas etapas:
No painel Política do Azure, em Criação, selecione Atribuições.
Localize e selecione a atribuição de política que você criou na seção anterior.
Selecione a guia Exibir conformidade .
Todas as contas de armazenamento dentro do escopo da atribuição de política que não atendem aos requisitos da política aparecem no relatório de conformidade.
Para obter mais informações sobre por que uma conta de armazenamento não está em conformidade, selecione Detalhes em Motivo de conformidade.
Detetar o tipo de autorização usado por aplicativos cliente
Para entender como não permitir a autorização de Chave Compartilhada pode afetar os aplicativos cliente antes de fazer essa alteração, habilite o registro em log e as métricas para a conta de armazenamento. Em seguida, você pode analisar padrões de solicitações para sua conta durante um período de tempo para determinar como as solicitações estão sendo autorizadas.
Use métricas para determinar quantas solicitações a conta de armazenamento está recebendo que são autorizadas com Chave Compartilhada ou uma assinatura de acesso compartilhado (SAS). Use logs para determinar quais clientes estão enviando essas solicitações.
Uma SAS pode ser autorizada com Chave Compartilhada ou ID do Microsoft Entra. Para obter mais informações sobre como interpretar solicitações feitas com uma assinatura de acesso compartilhado, consulte Entender como a desativação da Chave Compartilhada afeta os tokens SAS.
Determinar o número e a frequência de solicitações autorizadas com a Chave Compartilhada
Para controlar como as solicitações para uma conta de armazenamento estão sendo autorizadas, use o Azure Metrics Explorer no portal do Azure. Para obter mais informações sobre o Metrics Explorer, consulte Analisar métricas com o explorador de métricas do Azure Monitor.
Siga estas etapas para criar uma métrica que rastreie solicitações feitas com Chave Compartilhada ou SAS:
Navegue para a sua conta de armazenamento no portal do Azure. Na secção Monitorização, selecione Métricas.
A nova caixa métrica deve aparecer:
Caso contrário, selecione Adicionar métrica.
Na caixa de diálogo Métrica, especifique os seguintes valores:
- Deixe o campo Escopo definido como o nome da conta de armazenamento.
- Defina o namespace da métrica como Account. Essa métrica informará todas as solicitações na conta de armazenamento.
- Defina o campo Métrica como Transações.
- Defina o campo Agregação como Soma.
A nova métrica exibirá a soma do número de transações na conta de armazenamento em um determinado intervalo de tempo. A métrica resultante aparece como mostrado na imagem a seguir:
Em seguida, selecione o botão Adicionar filtro para criar um filtro na métrica para o tipo de autorização.
Na caixa de diálogo Filtro, especifique os seguintes valores:
- Defina o valor Property como Authentication.
- Defina o campo Operador como o sinal de igual (=).
- No campo Valores, selecione Chave de Conta e SAS.
No canto superior direito, selecione o intervalo de tempo para o qual você deseja exibir a métrica. Você também pode indicar o quão granular deve ser a agregação de solicitações, especificando intervalos de 1 minuto a 1 mês. Por exemplo, defina o intervalo de tempo como 30 dias e a granularidade de tempo como 1 dia para ver as solicitações agregadas por dia nos últimos 30 dias.
Depois de configurar a métrica, as solicitações para sua conta de armazenamento começarão a aparecer no gráfico. A imagem a seguir mostra solicitações que foram autorizadas com a Chave Compartilhada ou feitas com um token SAS. Os pedidos são agregados por dia nos últimos trinta dias.
Você também pode configurar uma regra de alerta para notificá-lo quando um determinado número de solicitações autorizadas com a Chave Compartilhada for feito em relação à sua conta de armazenamento. Para obter mais informações, consulte Criar, exibir e gerenciar alertas métricos usando o Azure Monitor.
Analise logs para identificar clientes que estão autorizando solicitações com Chave Compartilhada ou SAS
Os logs do Armazenamento do Azure capturam detalhes sobre solicitações feitas na conta de armazenamento, incluindo como uma solicitação foi autorizada. Você pode analisar os logs para determinar quais clientes estão autorizando solicitações com Chave Compartilhada ou um token SAS.
Para registrar solicitações em sua conta de Armazenamento do Azure para avaliar como elas são autorizadas, você pode usar o log do Armazenamento do Azure no Azure Monitor. Para obter mais informações, consulte Monitorar o Armazenamento do Azure.
O registo do Armazenamento do Azure no Azure Monitor suporta a utilização de consultas de registo para analisar dados de registo. Para consultar logs, você pode usar um espaço de trabalho do Azure Log Analytics. Para saber mais sobre consultas de log, consulte Tutorial: Introdução às consultas do Log Analytics.
Criar uma configuração de diagnóstico no portal do Azure
Para registar dados do Armazenamento do Azure com o Azure Monitor e analisá-los com o Azure Log Analytics, primeiro tem de criar uma definição de diagnóstico que indique quais os tipos de pedidos e para quais serviços de armazenamento pretende registar os dados. Depois de configurar o registo para a sua conta de armazenamento, os registos ficam disponíveis na área de trabalho do Log Analytics. Para criar um espaço de trabalho, consulte Criar um espaço de trabalho do Log Analytics no portal do Azure.
Para saber como criar uma configuração de diagnóstico no portal do Azure, consulte Criar configurações de diagnóstico no Azure Monitor.
Para obter uma referência de campos disponíveis nos logs de Armazenamento do Azure no Azure Monitor, consulte Logs de recursos.
Logs de consulta para solicitações feitas com Chave Compartilhada ou SAS
Os logs do Armazenamento do Azure no Azure Monitor incluem o tipo de autorização que foi usado para fazer uma solicitação a uma conta de armazenamento. Para recuperar logs de solicitações feitas nos últimos sete dias que foram autorizadas com Chave Compartilhada ou SAS, abra seu espaço de trabalho do Log Analytics. Em seguida, cole a consulta a seguir em uma nova consulta de log e execute-a. Esta consulta apresenta os dez endereços IP que enviaram pedidos mais frequentemente autorizados com Chave Partilhada ou SAS:
StorageBlobLogs
| where AuthenticationType in ("AccountKey", "SAS") and TimeGenerated > ago(7d)
| summarize count() by CallerIpAddress, UserAgentHeader, AccountName
| top 10 by count_ desc
Você também pode configurar uma regra de alerta com base nessa consulta para notificá-lo sobre solicitações autorizadas com Chave Compartilhada ou SAS. Para obter mais informações, consulte Criar, exibir e gerenciar alertas de log usando o Azure Monitor.
Remediar a autorização via chave compartilhada
Depois de analisar como as solicitações para sua conta de armazenamento estão sendo autorizadas, você pode tomar medidas para impedir o acesso por meio da Chave Compartilhada. Mas primeiro, você precisa atualizar todos os aplicativos que estão usando a autorização de Chave Compartilhada para usar o Microsoft Entra ID. Você pode monitorar logs e métricas conforme descrito em Detetar o tipo de autorização usado por aplicativos cliente para acompanhar a transição. Para obter mais informações sobre como usar a ID do Microsoft Entra para acessar dados em uma conta de armazenamento, consulte Autorizar o acesso a dados no Armazenamento do Azure.
Quando tiver certeza de que pode rejeitar com segurança solicitações autorizadas com Chave Compartilhada, você poderá definir a propriedade AllowSharedKeyAccess da conta de armazenamento como false.
Aviso
Se algum cliente estiver acessando dados em sua conta de armazenamento com Chave Compartilhada, a Microsoft recomenda que você migre esses clientes para a ID do Microsoft Entra antes de não permitir o acesso de Chave Compartilhada à conta de armazenamento.
Permissões para permitir ou não o acesso à Chave Compartilhada
Para definir a propriedade AllowSharedKeyAccess para a conta de armazenamento, um usuário deve ter permissões para criar e gerenciar contas de armazenamento. As funções de controle de acesso baseado em função do Azure (Azure RBAC) que fornecem essas permissões incluem a ação Microsoft.Storage/storageAccounts/write ou Microsoft.Storage/storageAccounts/* . As funções incorporadas com esta ação incluem:
- A função de Proprietário do Azure Resource Manager
- A função de Contribuidor do Azure Resource Manager
- A função de Contribuidor de Conta de Armazenamento
Essas funções não fornecem acesso a dados em uma conta de armazenamento por meio do Microsoft Entra ID. No entanto, eles incluem Microsoft.Storage /storageAccounts/listkeys/action, que concede acesso às chaves de acesso da conta. Com essa permissão, um usuário pode usar as chaves de acesso da conta para acessar todos os dados em uma conta de armazenamento.
As atribuições de função devem ter o escopo definido no nível da conta de armazenamento ou superior para permitir que um usuário permita ou não o acesso à Chave Compartilhada para a conta de armazenamento. Para obter mais informações sobre o escopo da função, consulte Entender o escopo do RBAC do Azure.
Tenha cuidado para restringir a atribuição dessas funções apenas àqueles que exigem a capacidade de criar uma conta de armazenamento ou atualizar suas propriedades. Use o princípio do menor privilégio para garantir que os usuários tenham o menor número de permissões de que precisam para realizar suas tarefas. Para obter mais informações sobre como gerenciar o acesso com o RBAC do Azure, consulte Práticas recomendadas para o RBAC do Azure.
Nota
As funções clássicas de administrador de subscrição Administrador de Serviços e Coadministrador incluem o equivalente à função de Proprietário do Azure Resource Manager. A função Proprietário inclui todas as ações, para que um usuário com uma dessas funções administrativas também possa criar e gerenciar contas de armazenamento. Para obter mais informações, consulte Funções do Azure, Funções do Microsoft Entra e funções clássicas de administrador de assinatura.
Desativar autorização de chave compartilhada
Usando uma conta que tenha as permissões necessárias, desabilite a autorização de Chave Compartilhada no portal do Azure, com o PowerShell ou usando a CLI do Azure.
Para não permitir a autorização de Chave Partilhada para uma conta de armazenamento no portal do Azure, siga estes passos:
Depois de não permitir a autorização de Chave Compartilhada, fazer uma solicitação para a conta de armazenamento com autorização de Chave Compartilhada falhará com o código de erro 403 (Proibido). O Armazenamento do Azure apresenta um erro a indicar que a autorização baseada em chave não é permitida na conta de armazenamento.
A propriedade AllowSharedKeyAccess tem suporte para contas de armazenamento que usam apenas o modelo de implantação do Azure Resource Manager. Para obter informações sobre quais contas de armazenamento usam o modelo de implantação do Azure Resource Manager, consulte Tipos de contas de armazenamento.
Verifique se o acesso à Chave Compartilhada não é permitido
Para verificar se a autorização de Chave Compartilhada não é mais permitida, você pode consultar as configurações da Conta de Armazenamento do Azure com o comando a seguir. Substitua os valores de espaço reservado entre colchetes pelos seus próprios valores.
az storage account show \
--name <storage-account-name> \
--resource-group <resource-group-name> \
--query "allowSharedKeyAccess"
O comando retornará false se a autorização de Chave Compartilhada não for permitida para a conta de armazenamento.
Nota
As solicitações anônimas não são autorizadas e continuarão se você tiver configurado a conta de armazenamento e o contêiner para acesso de leitura anônimo. Para obter mais informações, consulte Configurar acesso de leitura anônimo para contêineres e blobs.
Monitorar a Política do Azure para fins de conformidade
Depois de não permitir o acesso à Chave Compartilhada nas contas de armazenamento desejadas, continue monitorando a política criada anteriormente para conformidade contínua. Com base nos resultados do monitoramento, tome as medidas apropriadas conforme necessário, incluindo alterar o escopo da política, impedir o acesso à Chave Compartilhada em mais contas ou permitir isso para contas em que seja necessário mais tempo para correção.
Atualizar a Política do Azure para impedir que seja permitido o acesso à Chave Partilhada
Para começar a aplicar a atribuição de Política do Azure que você criou anteriormente para a política As contas de armazenamento devem impedir o acesso à chave compartilhada, altere o Efeito da atribuição de política para Negar para impedir que usuários autorizados permitam o acesso à Chave Compartilhada em contas de armazenamento. Para alterar o efeito da política, execute as seguintes etapas:
No painel Política do Azure, localize e selecione a atribuição de política que você criou anteriormente.
Selecione Editar atribuição.
Vá para a guia Parâmetros .
Desmarque a caixa de seleção Mostrar apenas parâmetros que precisam de entrada ou revisão .
Na lista suspensa Efeito, altere Auditoria para Negar e selecione Revisar + salvar.
No separador Rever + Guardar, reveja as alterações e, em seguida, selecione Guardar.
Nota
Pode levar até 30 minutos para que a alteração de política entre em vigor.