Impor uma versão mínima necessária do Transport Layer Security (TLS) para pedidos a uma conta de armazenamento
A comunicação entre uma aplicação cliente e uma conta de Armazenamento do Azure é encriptada com o Transport Layer Security (TLS). O TLS é um protocolo criptográfico padrão que garante a privacidade e a integridade dos dados entre clientes e serviços através da Internet. Para obter mais informações sobre o TLS, veja Transport Layer Security (Transport Layer Security).
Atualmente, o Armazenamento do Azure suporta três versões do protocolo TLS: 1.0, 1.1 e 1.2. O Armazenamento do Azure utiliza o TLS 1.2 em pontos finais HTTPS públicos, mas o TLS 1.0 e o TLS 1.1 ainda são suportados para retrocompatibilidade.
As contas de Armazenamento do Azure permitem que os clientes enviem e recebam dados com a versão mais antiga do TLS, TLS 1.0 e posterior. Para impor medidas de segurança mais rigorosas, pode configurar a sua conta de armazenamento para exigir que os clientes enviem e recebam dados com uma versão mais recente do TLS. Se uma conta de armazenamento precisar de uma versão mínima do TLS, todos os pedidos feitos com uma versão mais antiga falharão.
Este artigo descreve como utilizar uma arquitetura DRAG (Detection-Remediation-Audit-Governance) para gerir continuamente o TLS seguro para as suas contas de armazenamento.
Para obter informações sobre como especificar uma versão específica do TLS ao enviar um pedido de uma aplicação cliente, veja Configurar o Transport Layer Security (TLS) para uma aplicação cliente.
Nota
O conjunto de cifras utilizado quando os clientes enviam dados para e recebem dados de uma conta de armazenamento depende da versão do TLS utilizada. Não é possível configurar uma conta de armazenamento para bloquear a utilização de cifras específicas, para além de exigir uma versão mínima do TLS. Se precisar da capacidade de permitir apenas conjuntos de cifras específicos ao ligar à sua conta de armazenamento, considere utilizar Gateway de Aplicação do Azure. Para obter mais informações sobre como utilizar Gateway de Aplicação para esta finalidade, veja Configurar versões de políticas TLS e conjuntos de cifras no Gateway de Aplicação do Azure.
Detetar a versão do TLS utilizada pelas aplicações cliente
Quando impõe uma versão mínima do TLS para a sua conta de armazenamento, arrisca-se a rejeitar pedidos de clientes que estão a enviar dados com uma versão mais antiga do TLS. Para compreender como a configuração da versão mínima do TLS pode afetar as aplicações cliente, a Microsoft recomenda que ative o registo da sua conta de Armazenamento do Azure e analise os registos após um intervalo de tempo para detetar que versões das aplicações cliente TLS estão a utilizar.
Para registar pedidos na sua conta de Armazenamento do Azure e determinar a versão do TLS utilizada pelo cliente, pode utilizar o registo do Armazenamento do Azure no Azure Monitor. Para obter mais informações, veja Monitorizar 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 registos, pode utilizar uma área de trabalho do Log Analytics do Azure. Para saber mais sobre as consultas de registo, veja Tutorial: Introdução às consultas do Log Analytics.
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 que tipos de pedidos e para que serviços de armazenamento pretende registar dados. Para criar uma definição de diagnóstico no portal do Azure, siga estes passos:
Crie uma nova área de trabalho do Log Analytics na subscrição que contém a sua conta de Armazenamento do Azure. Depois de configurar o registo para a sua conta de armazenamento, os registos estarão disponíveis na área de trabalho do Log Analytics. Para obter mais informações, veja Criar uma área de trabalho do Log Analytics no portal do Azure.
Navegue para a sua conta de armazenamento no portal do Azure.
Na secção Monitorização, selecione Definições de diagnóstico.
Selecione o serviço de Armazenamento do Azure para o qual pretende registar pedidos. Por exemplo, selecione Blob para registar pedidos no Armazenamento de blobs.
Selecione Adicionar definição de diagnóstico.
Indique um nome para a definição de diagnóstico.
Em Detalhes da categoria, na secção de registo , escolha os tipos de pedidos a registar. Pode registar pedidos de leitura, escrita e eliminação. Por exemplo, selecionar StorageRead e StorageWrite irá registar pedidos de leitura e escrita no serviço selecionado.
Em Detalhes de destino, selecione Enviar para o Log Analytics. Selecione a sua subscrição e a área de trabalho do Log Analytics que criou anteriormente, conforme mostrado na imagem seguinte.
Depois de criar a definição de diagnóstico, os pedidos à conta de armazenamento são subsequentemente registados de acordo com essa definição. Para obter mais informações, veja Criar definição de diagnóstico para recolher registos de recursos e métricas no Azure.
Para obter uma referência dos campos disponíveis nos registos do Armazenamento do Azure no Azure Monitor, veja Registos de recursos.
Pedidos registados de consulta por versão do TLS
Os registos do Armazenamento do Azure no Azure Monitor incluem a versão do TLS utilizada para enviar um pedido para uma conta de armazenamento. Utilize a propriedade TlsVersion para verificar a versão TLS de um pedido registado.
Para determinar quantos pedidos foram feitos no armazenamento de Blobs com versões diferentes do TLS nos últimos sete dias, abra a área de trabalho do Log Analytics. Em seguida, cole a seguinte consulta numa nova consulta de registo e execute-a. Lembre-se de substituir os valores do marcador de posição entre parênteses pelos seus próprios valores:
StorageBlobLogs
| where TimeGenerated > ago(7d) and AccountName == "<account-name>"
| summarize count() by TlsVersion
Os resultados mostram a contagem do número de pedidos feitos com cada versão do TLS:
Consultar pedidos registados pelo endereço IP do autor da chamada e pelo cabeçalho do agente do utilizador
Os registos do Armazenamento do Azure no Azure Monitor também incluem o endereço IP do autor da chamada e o cabeçalho do agente do utilizador para o ajudar a avaliar as aplicações cliente que acederam à conta de armazenamento. Pode analisar estes valores para decidir se as aplicações cliente têm de ser atualizadas para utilizar uma versão mais recente do TLS ou se é aceitável falhar o pedido de um cliente se não forem enviadas com a versão mínima do TLS.
Para determinar que clientes fizeram pedidos com uma versão do TLS anterior ao TLS 1.2 nos últimos sete dias, cole a seguinte consulta numa nova consulta de registo e execute-a. Lembre-se de substituir os valores do marcador de posição entre parênteses pelos seus próprios valores:
StorageBlobLogs
| where TimeGenerated > ago(7d) and AccountName == "<account-name>" and TlsVersion != "TLS 1.2"
| project TlsVersion, CallerIpAddress, UserAgentHeader
Remediar riscos de segurança com uma versão mínima do TLS
Quando estiver confiante de que o tráfego de clientes que utilizam versões mais antigas do TLS é mínimo ou que é aceitável que os pedidos de falha efetuados com uma versão mais antiga do TLS sejam executados, pode começar a imposição de uma versão mínima do TLS na sua conta de armazenamento. Exigir que os clientes utilizem uma versão mínima do TLS para fazer pedidos numa conta de armazenamento faz parte de uma estratégia para minimizar os riscos de segurança para os seus dados.
Importante
Se estiver a utilizar um serviço que se liga ao Armazenamento do Azure, certifique-se de que esse serviço está a utilizar a versão adequada do TLS para enviar pedidos para o Armazenamento do Azure antes de definir a versão mínima necessária para uma conta de armazenamento.
Configurar a versão mínima do TLS para uma conta de armazenamento
Para configurar a versão mínima do TLS para uma conta de armazenamento, defina a versão MinimumTlsVersion para a conta. Esta propriedade está disponível para todas as contas de armazenamento criadas com o modelo de implementação do Azure Resource Manager. Para obter mais informações sobre o modelo de implementação do Azure Resource Manager, veja Descrição geral da conta de armazenamento.
O valor predefinido da propriedade MinimumTlsVersion é diferente consoante a forma como o definiu. Quando cria uma conta de armazenamento com o portal do Azure, a versão mínima do TLS está definida como 1,2 por predefinição. Quando cria uma conta de armazenamento com o PowerShell, a CLI do Azure ou um modelo de Resource Manager do Azure, a propriedade MinimumTlsVersion não é definida por predefinição e não devolve um valor até o definir explicitamente.
Quando a propriedade MinimumTlsVersion não está definida, o respetivo valor pode ser apresentado como nulo ou uma cadeia vazia, dependendo do contexto. A conta de armazenamento permitirá pedidos enviados com a versão 1.0 ou superior do TLS se a propriedade não estiver definida.
Quando cria uma conta de armazenamento com o portal do Azure, a versão mínima do TLS está definida como 1,2 por predefinição.
Para configurar a versão mínima do TLS para uma conta de armazenamento existente com o portal do Azure, siga estes passos:
Nota
Depois de atualizar a versão mínima do TLS para a conta de armazenamento, poderá demorar até 30 segundos até que a alteração seja totalmente propagada.
Configurar a versão mínima do TLS requer a versão 2019-04-01 ou posterior do fornecedor de recursos do Armazenamento do Azure. Para obter mais informações, veja API REST do Fornecedor de Recursos de Armazenamento do Azure.
Verificar a versão mínima do TLS necessária para várias contas
Para verificar a versão mínima do TLS necessária num conjunto de contas de armazenamento com um desempenho ideal, pode utilizar o Explorador de Resource Graph do Azure no portal do Azure. Para saber mais sobre como utilizar o Explorador de Resource Graph, veja Início Rápido: Executar a sua primeira consulta Resource Graph com o Explorador de Resource Graph do Azure.
Executar a seguinte consulta no Resource Graph Explorer devolve uma lista de contas de armazenamento e apresenta a versão mínima do TLS para cada conta:
resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| extend minimumTlsVersion = parse_json(properties).minimumTlsVersion
| project subscriptionId, resourceGroup, name, minimumTlsVersion
Testar a versão mínima do TLS a partir de um cliente
Para testar que a versão mínima do TLS necessária para uma conta de armazenamento proíbe chamadas efetuadas com uma versão mais antiga, pode configurar um cliente para utilizar uma versão mais antiga do TLS. Para obter mais informações sobre como configurar um cliente para utilizar uma versão específica do TLS, veja Configurar o Transport Layer Security (TLS) para uma aplicação cliente.
Quando um cliente acede a uma conta de armazenamento com uma versão TLS que não cumpre a versão mínima do TLS configurada para a conta, o Armazenamento do Azure devolve o erro 400 do código de erro (Pedido Incorreto) e uma mensagem a indicar que a versão do TLS utilizada não é permitida para fazer pedidos nesta conta de armazenamento.
Nota
Quando configura uma versão mínima do TLS para uma conta de armazenamento, essa versão mínima é imposta na camada da aplicação. As ferramentas que tentam determinar o suporte do TLS na camada de protocolo podem devolver versões TLS para além da versão mínima necessária quando executadas diretamente no ponto final da conta de armazenamento.
Utilizar Azure Policy para auditar a conformidade
Se tiver um grande número de contas de armazenamento, poderá querer efetuar uma auditoria para se certificar de que todas as contas estão configuradas para a versão mínima do TLS de que a sua organização necessita. Para auditar um conjunto de contas de armazenamento relativamente à respetiva conformidade, utilize Azure Policy. Azure Policy é um serviço que pode utilizar para criar, atribuir e gerir políticas que aplicam regras aos recursos do Azure. Azure Policy ajuda-o a manter esses recursos em conformidade com as normas empresariais e os contratos de nível de serviço. Para obter mais informações, veja Descrição geral de Azure Policy.
Criar uma política com um efeito auditoria
Azure Policy suporta efeitos que determinam o que acontece quando uma regra de política é avaliada relativamente a um recurso. O efeito Auditoria cria um aviso quando um recurso não está em conformidade, mas não para o pedido. Para obter mais informações sobre efeitos, veja Compreender Azure Policy efeitos.
Para criar uma política com um efeito auditoria para a versão mínima do TLS com o portal do Azure, siga estes passos:
No portal do Azure, navegue para o serviço Azure Policy.
Na secção Criação , selecione Definições.
Selecione Adicionar definição de política para criar uma nova definição de política.
Para o campo Localização da definição , selecione o botão Mais para especificar onde está localizado o recurso de política de auditoria.
Especifique um nome para a política. Opcionalmente, pode especificar uma descrição e uma categoria.
Em Regra de política, adicione a seguinte definição de política à secção policyRule .
{ "policyRule": { "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Storage/storageAccounts" }, { "anyOf": [ { "field": "Microsoft.Storage/storageAccounts/minimumTlsVersion", "notEquals": "TLS1_2" }, { "field": "Microsoft.Storage/storageAccounts/minimumTlsVersion", "exists": "false" } ] } ] }, "then": { "effect": "audit" } } }
Guarde a política.
Atribuir a política
Em seguida, atribua a política a um recurso. O âmbito da política corresponde a esse recurso e a quaisquer recursos abaixo do mesmo. Para obter mais informações sobre a atribuição de políticas, veja Azure Policy estrutura de atribuição.
Para atribuir a política ao portal do Azure, siga estes passos:
- No portal do Azure, navegue para o serviço Azure Policy.
- Na secção Criação , selecione Atribuições.
- Selecione Atribuir política para criar uma nova atribuição de política.
- Para o campo Âmbito , selecione o âmbito da atribuição de política.
- Para o campo Definição de política , selecione o botão Mais e, em seguida, selecione a política que definiu na secção anterior da lista.
- Indique um nome para a atribuição de política. A descrição é opcional.
- Deixe a imposição da política definida como Ativada. Esta definição não tem qualquer efeito na política de auditoria.
- Selecione Rever + criar para criar a atribuição.
Ver relatório de conformidade
Depois de atribuir a política, pode ver o relatório de conformidade. O relatório de conformidade de uma política de auditoria fornece informações sobre as contas de armazenamento que não estão em conformidade com a política. Para obter mais informações, veja Obter dados de conformidade de políticas.
O relatório de conformidade pode demorar vários minutos a ficar disponível após a criação da atribuição de políticas.
Para ver o relatório de conformidade no portal do Azure, siga estes passos:
No portal do Azure, navegue para o serviço Azure Policy.
Selecione Conformidade.
Filtre os resultados para o nome da atribuição de política que criou no passo anterior. O relatório mostra quantos recursos não estão em conformidade com a política.
Pode desagregar o relatório para obter detalhes adicionais, incluindo uma lista de contas de armazenamento que não estão em conformidade.
Utilizar Azure Policy para impor a versão mínima do TLS
Azure Policy suporta a governação da cloud ao garantir que os recursos do Azure cumprem os requisitos e as normas. Para impor um requisito mínimo de versão do TLS para as contas de armazenamento na sua organização, pode criar uma política que impeça a criação de uma nova conta de armazenamento que defina o requisito mínimo de TLS para uma versão mais antiga do TLS do que a que é ditada pela política. Esta política também impedirá todas as alterações de configuração a uma conta existente se a definição de versão mínima do TLS para essa conta não estiver em conformidade com a política.
A política de imposição utiliza o efeito Negar para impedir um pedido que crie ou modifique uma conta de armazenamento para que a versão mínima do TLS deixe de cumprir as normas da sua organização. Para obter mais informações sobre efeitos, veja Compreender Azure Policy efeitos.
Para criar uma política com um efeito Negar para uma versão mínima do TLS inferior ao TLS 1.2, siga os mesmos passos descritos em Utilizar Azure Policy para auditar a conformidade, mas forneça o seguinte JSON na secção policyRule da definição de política:
{
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Storage/storageAccounts"
},
{
"anyOf": [
{
"field": "Microsoft.Storage/storageAccounts/minimumTlsVersion",
"notEquals": "TLS1_2"
},
{
"field": "Microsoft.Storage/storageAccounts/minimumTlsVersion",
"exists": "false"
}
]
}
]
},
"then": {
"effect": "deny"
}
}
}
Depois de criar a política com o efeito Negar e atribuí-la a um âmbito, um utilizador não pode criar uma conta de armazenamento com uma versão mínima do TLS anterior a 1.2. Nem um utilizador pode efetuar alterações de configuração a uma conta de armazenamento existente que atualmente exija uma versão mínima do TLS anterior a 1.2. Tentar fazê-lo resulta num erro. A versão mínima do TLS necessária para a conta de armazenamento tem de ser definida como 1.2 para prosseguir com a criação ou configuração da conta.
A imagem seguinte mostra o erro que ocorre se tentar criar uma conta de armazenamento com a versão mínima do TLS definida como TLS 1.0 (a predefinição para uma nova conta) quando uma política com um efeito Negar requer que a versão mínima do TLS esteja definida como TLS 1.2.
Permissões necessárias para exigir uma versão mínima do TLS
Para definir a propriedade MinimumTlsVersion para a conta de armazenamento, um utilizador tem de ter permissões para criar e gerir contas de armazenamento. As funções de controlo de acesso baseado em funções do Azure (RBAC do Azure) que fornecem estas 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 proprietário do Azure Resource Manager
- A função contribuidor do Azure Resource Manager
- A função Contribuidor da Conta de Armazenamento
Estas funções não fornecem acesso a dados numa conta de armazenamento através do Azure Active Directory (Azure AD). No entanto, incluem microsoft.Storage/storageAccounts/listkeys/action, que concede acesso às chaves de acesso da conta. Com esta permissão, um utilizador pode utilizar as chaves de acesso da conta para aceder a todos os dados numa conta de armazenamento.
As atribuições de funções têm de estar no âmbito do nível da conta de armazenamento ou superior para permitir que um utilizador exija uma versão mínima do TLS para a conta de armazenamento. Para obter mais informações sobre o âmbito da função, veja Compreender o âmbito do RBAC do Azure.
Tenha cuidado para restringir a atribuição destas funções apenas àqueles que necessitam da capacidade de criar uma conta de armazenamento ou atualizar as respetivas propriedades. Utilize o princípio do menor privilégio para garantir que os utilizadores têm menos permissões necessárias para realizar as suas tarefas. Para obter mais informações sobre como gerir o acesso com o RBAC do Azure, veja Melhores práticas para o RBAC do Azure.
Nota
As funções de administrador de subscrição clássicas Administrador de Serviços e Co-Administrator incluem o equivalente à função proprietário do Azure Resource Manager. A função Proprietário inclui todas as ações, pelo que um utilizador com uma destas funções administrativas também pode criar e gerir contas de armazenamento. Para obter mais informações, veja Funções do Azure, funções de Azure AD e funções de administrador de subscrições clássicas.
Considerações de rede
Quando um cliente envia um pedido para a conta de armazenamento, o cliente estabelece primeiro uma ligação com o ponto final público da conta de armazenamento, antes de processar quaisquer pedidos. A definição de versão mínima do TLS é verificada após a ligação ser estabelecida. Se o pedido utilizar uma versão anterior do TLS do que a especificada pela definição, a ligação continuará a ser bem-sucedida, mas o pedido irá eventualmente falhar. Para obter mais informações sobre pontos finais públicos para o Armazenamento do Azure, veja Sintaxe do URI de Recursos.