Guia de segurança do Armazenamento do AzureAzure Storage security guide

O armazenamento do Azure fornece um conjunto abrangente de recursos de segurança que juntos permitem que as organizações criem e implantem aplicativos seguros:Azure Storage provides a comprehensive set of security capabilities that together enable organizations to build and deploy secure applications:

Este artigo apresenta uma visão geral de cada um desses recursos de segurança que podem ser usados com o Armazenamento do Microsoft Azure.This article provides an overview of each of these security features that can be used with Azure Storage. Os links são fornecidos aos artigos para fornecer detalhes adicionais sobre cada recurso.Links are provided to articles provide additional details on each capability.

Aqui estão as áreas abordadas neste artigo:Here are the areas covered in this article:

  • Segurança do plano de gerenciamento – protegendo o acesso em nível de recurso à sua conta de armazenamentoManagement Plane Security – Securing resource-level access to your Storage Account

    O plano de gerenciamento consiste nas operações usadas para gerenciar sua conta de armazenamento.The management plane consists of the operations used to manage your storage account. Esta seção trata do Modelo de implantação do Azure Resource Manager e de como usar o RBAC (Controle de Acesso Baseado em Função) para controlar o acesso às contas de armazenamento.This section covers the Azure Resource Manager deployment model and how to use Role-Based Access Control (RBAC) to control access to your storage accounts. Também trata de como gerenciar as chaves da conta de armazenamento e como regenerá-las.It also addresses managing your storage account keys and how to regenerate them.

  • Segurança de rede -protegendo o acesso em nível de rede à sua conta de armazenamentoNetwork Security - Securing network-level access to your Storage Account

    Esta seção aborda como você pode proteger o acesso em nível de rede aos pontos de extremidade dos serviços de armazenamento.This section covers how you can secure the network-level access to the storage services endpoints. Ele discute como você pode usar o firewall de armazenamento para permitir o acesso aos seus dados de redes virtuais ou intervalos de endereços IP específicos.It discusses how you can use the storage firewall to allow access to your data from specific virtual networks or IP address ranges. Ele também aborda o uso de pontos de extremidade de serviço e pontos de extremidade privados com contas de armazenamento.It also covers the use of service endpoints and private endpoints with storage accounts.

  • Autorização – autorizando o acesso aos seus dadosAuthorization – Authorizing access to your data

    Esta seção descreve o acesso aos objetos de dados em sua conta de armazenamento, como BLOBs, arquivos, filas e tabelas, usando assinaturas de acesso compartilhado e políticas de acesso armazenadas.This section describes access to the data objects in your Storage account, such as blobs, files, queues, and tables, using Shared Access Signatures and Stored Access Policies. Vamos abordar a SAS de nível de serviço e de nível de conta.We will cover both service-level SAS and account-level SAS. Também veremos como limitar o acesso a um endereço IP específico (ou a um intervalo de endereços IP), como limitar o protocolo usado para HTTPS e como revogar uma Assinatura de Acesso Compartilhado sem esperar que ela expire.We'll also see how to limit access to a specific IP address (or range of IP addresses), how to limit the protocol used to HTTPS, and how to revoke a Shared Access Signature without waiting for it to expire.

  • Criptografia em trânsitoEncryption in Transit

    Esta seção ensina a proteger os dados quando você os transfere para dentro ou para fora do Armazenamento do Microsoft Azure.This section discusses how to secure data when you transfer it into or out of Azure Storage. Falaremos sobre o uso recomendado de HTTPS e a criptografia usada pelo SMB 3.0 para compartilhamentos de arquivos do Azure.We'll talk about the recommended use of HTTPS and the encryption used by SMB 3.0 for Azure file shares. Também discutiremos a criptografia do lado do cliente, que permite que você criptografe os dados antes da transferência para o armazenamento e descriptografe os dados depois que eles são transferidos para fora do armazenamento.We will also discuss Client-side Encryption, which enables you to encrypt data before transfer into Storage, and to decrypt the data after it is transferred out of Storage.

  • Criptografia em repousoEncryption at Rest

    Trataremos da SSE (Criptografia do Serviço de Armazenamento), que agora é habilitada automaticamente para as contas de armazenamento novas e existentes.We will talk about Storage Service Encryption (SSE), which is now automatically enabled for new and existing storage accounts. Também veremos como você pode usar o Azure Disk Encryption e explorar as diferenças básicas e os casos do Disk Encryption em relação à SSE e à Criptografia do cliente.We will also look at how you can use Azure Disk Encryption and explore the basic differences and cases of Disk Encryption versus SSE versus Client-Side Encryption. Examinaremos rapidamente a compatibilidade de FIPS com os computadores do governo norte-americano.We will briefly look at FIPS compliance for U.S. Government computers.

  • Uso da Análise de Armazenamento para auditar o acesso do Armazenamento do AzureUsing Storage Analytics to audit access of Azure Storage

    Esta seção descreve como encontrar informações nos logs de análise de armazenamento de uma solicitação.This section discusses how to find information in the storage analytics logs for a request. Analisaremos dados reais do log de análise de armazenamento para saber como diferenciar uma solicitação que foi feita com a chave de conta de Armazenamento, com uma Assinatura de Acesso Compartilhado ou anonimamente e se ela foi bem-sucedida ou se falhou.We'll take a look at real storage analytics log data and see how to discern whether a request is made with the Storage account key, with a Shared Access signature, or anonymously, and whether it succeeded or failed.

  • Habilitando clientes com base no navegador usando CORSEnabling Browser-Based Clients using CORS

    Esta seção trata de como permitir o CORS (compartilhamento de recursos entre origens).This section talks about how to allow cross-origin resource sharing (CORS). Falaremos sobre acesso entre domínios e como lidar com ele usando os recursos do CORS incorporados no Armazenamento do Microsoft Azure.We'll talk about cross-domain access, and how to handle it with the CORS capabilities built into Azure Storage.

Segurança do plano de gerenciamentoManagement Plane Security

O plano de gerenciamento consiste em operações que afetam a conta de armazenamento em si.The management plane consists of operations that affect the storage account itself. Por exemplo, você pode criar ou excluir uma conta de armazenamento, obter uma lista de contas de armazenamento em uma assinatura, recuperar as chaves da conta de armazenamento ou regenerar as chaves da conta de armazenamento.For example, you can create or delete a storage account, get a list of storage accounts in a subscription, retrieve the storage account keys, or regenerate the storage account keys.

Ao criar uma nova conta de armazenamento, você seleciona um modelo de implantação: Clássico ou Resource Manager.When you create a new storage account, you select a deployment model of Classic or Resource Manager. O modelo Clássico de criação de recursos no Azure permite apenas acesso tudo ou nada à assinatura e, por sua vez, à conta de armazenamento.The Classic model of creating resources in Azure only allows all-or-nothing access to the subscription, and in turn, the storage account.

Este guia se concentra no modelo Gerenciador de Recursos, que é o meio recomendado para a criação de contas de armazenamento.This guide focuses on the Resource Manager model that is the recommended means for creating storage accounts. Com as contas de armazenamento do Gerenciador de Recursos, em vez de fornecer acesso à toda a assinatura, você pode controlar o acesso em um nível mais limitado no plano de gerenciamento usando o RBAC (Controle de Acesso Baseado em Função).With the Resource Manager storage accounts, rather than giving access to the entire subscription, you can control access on a more finite level to the management plane using Role-Based Access Control (RBAC).

Como proteger a conta de armazenamento com o RBAC (Controle de Acesso Baseado em Função)How to secure your storage account with Role-Based Access Control (RBAC)

Vamos falar sobre o que é o RBAC e como você pode usá-lo.Let's talk about what RBAC is, and how you can use it. Cada assinatura do Azure tem um Azure Active Directory.Each Azure subscription has an Azure Active Directory. Os usuários, grupos e aplicativos desse diretório podem receber acesso para gerenciar recursos na assinatura do Azure que usam o modelo de implantação Resource Manager.Users, groups, and applications from that directory can be granted access to manage resources in the Azure subscription that use the Resource Manager deployment model. Esse tipo de segurança é chamado de Controle de Acesso Baseado em função (RBAC).This type of security is referred to as Role-Based Access Control (RBAC). Para gerenciar esse acesso, é possível usar o Portal do Azure, as ferramentas da CLI do Azure, o PowerShell ou as APIs REST do Provedor de Recursos de Armazenamento do Azure.To manage this access, you can use the Azure portal, the Azure CLI tools, PowerShell, or the Azure Storage Resource Provider REST APIs.

Com o modelo Resource Manager, você coloca a conta de armazenamento em um grupo de recursos e controla o acesso ao plano de gerenciamento dessa conta de armazenamento específica usando o Azure Active Directory.With the Resource Manager model, you put the storage account in a resource group and control access to the management plane of that specific storage account using Azure Active Directory. Por exemplo, é possível permitir que usuários específicos acessem as chaves da conta de armazenamento, enquanto outros usuários podem exibir informações sobre a conta de armazenamento, mas não podem acessar suas chaves.For example, you can give specific users the ability to access the storage account keys, while other users can view information about the storage account, but cannot access the storage account keys.

Concessão de acessoGranting Access

O acesso é concedido atribuindo-se a função RBAC apropriada a usuários, grupos e aplicativos no escopo correto.Access is granted by assigning the appropriate RBAC role to users, groups, and applications, at the right scope. Para conceder acesso à assinatura inteira, você atribui uma função no nível de assinatura.To grant access to the entire subscription, you assign a role at the subscription level. É possível conceder acesso a todos os recursos em um grupo de recursos concedendo permissões ao próprio grupo de recursos.You can grant access to all of the resources in a resource group by granting permissions to the resource group itself. Você também pode atribuir funções específicas a recursos específicos, como contas de armazenamento.You can also assign specific roles to specific resources, such as storage accounts.

Veja os principais pontos que você precisa saber sobre como usar o RBAC para acessar as operações de gerenciamento de uma conta de armazenamento do Azure:Here are the main points that you need to know about using RBAC to access the management operations of an Azure Storage account:

  • Ao atribuir acesso, você basicamente atribui uma função à conta que você quer ter acesso.When you assign access, you basically assign a role to the account that you want to have access. Você pode controlar o acesso às operações usadas para gerenciar essa conta de armazenamento, mas não aos objetos de dados da conta.You can control access to the operations used to manage that storage account, but not to the data objects in the account. Por exemplo, é possível conceder permissão para recuperar as propriedades da conta de armazenamento (como a redundância), mas não a um contêiner ou dados dentro de um contêiner no Armazenamento de Blobs.For example, you can grant permission to retrieve the properties of the storage account (such as redundancy), but not to a container or data within a container inside Blob Storage.

  • Para que alguém tenha permissão para acessar os objetos de dados na conta de armazenamento, você pode conceder a ele permissão para ler as chaves da conta de armazenamento, e esse usuário poderá então usar essas chaves para acessar os blobs, as filas, as tabelas e os arquivos.For someone to have permission to access the data objects in the storage account, you can give them permission to read the storage account keys, and that user can then use those keys to access the blobs, queues, tables, and files.

  • As funções podem ser atribuídas a uma conta de usuário específica, a um grupo de usuários ou a um aplicativo específico.Roles can be assigned to a specific user account, a group of users, or to a specific application.

  • Cada função tem uma lista de Ações e de Não Ações.Each role has a list of Actions and Not Actions. Por exemplo, a função Colaborador de Máquina Virtual tem uma Ação de "listKeys" que permite que as chaves da conta de armazenamento sejam lidas.For example, the Virtual Machine Contributor role has an Action of "listKeys" that allows the storage account keys to be read. O Colaborador tem "Não Ações", tais como atualizar o acesso de usuários no Active Directory.The Contributor has "Not Actions" such as updating the access for users in the Active Directory.

  • As funções de armazenamento incluem (entre outras):Roles for storage include (but are not limited to) the following roles:

    • Proprietário – ele pode gerenciar tudo, inclusive o acesso.Owner – They can manage everything, including access.

    • Colaborador – ele pode fazer tudo que o proprietário pode fazer, menos atribuir acesso.Contributor – They can do anything the owner can do except assign access. Alguém com essa função pode exibir e regenerar as chaves da conta de armazenamento.Someone with this role can view and regenerate the storage account keys. Com as chaves da conta de armazenamento, ele pode acessar os objetos de dados.With the storage account keys, they can access the data objects.

    • Leitor – ele pode exibir informações sobre a conta de armazenamento, exceto os segredos.Reader – They can view information about the storage account, except secrets. Por exemplo, se você atribuir a alguém uma função com permissões de leitor na conta de armazenamento, ele poderá exibir as propriedades da conta de armazenamento, mas não poderá fazer alterações nas propriedades nem exibir as chaves da conta de armazenamento.For example, if you assign a role with reader permissions on the storage account to someone, they can view the properties of the storage account, but they can't make any changes to the properties or view the storage account keys.

    • Colaborador da Conta de Armazenamento – ele pode gerenciar a conta de armazenamento; ele pode ler os grupos de recursos e os recursos da assinatura, bem como criar e gerenciar implantações de grupo de recursos da assinatura.Storage Account Contributor – They can manage the storage account – they can read the subscription's resource groups and resources, and create and manage subscription resource group deployments. Eles também podem acessar as chaves da conta de armazenamento que, por sua vez, significa que eles podem acessar o plano de dados.They can also access the storage account keys, which in turn means they can access the data plane.

    • Administrador de Acesso do Usuário – ele pode gerenciar o acesso do usuário à conta de armazenamento.User Access Administrator – They can manage user access to the storage account. Por exemplo, ele pode conceder acesso de Leitor a um usuário específico.For example, they can grant Reader access to a specific user.

    • Colaborador de Máquina Virtual – ele pode gerenciar máquinas virtuais, mas não a conta de armazenamento à qual ele está conectado.Virtual Machine Contributor – They can manage virtual machines but not the storage account to which they are connected. Essa função pode listar as chaves da conta de armazenamento, o que significa que o usuário a quem você atribui essa função pode atualizar o plano de dados.This role can list the storage account keys, which means that the user to whom you assign this role can update the data plane.

      Para que um usuário crie uma máquina virtual, ele deve poder criar o arquivo VHD correspondente em uma conta de armazenamento.In order for a user to create a virtual machine, they have to be able to create the corresponding VHD file in a storage account. Para fazer isso, ele precisa poder recuperar a chave da conta de armazenamento e passá-la à API que está criando a VM.To do that, they need to be able to retrieve the storage account key and pass it to the API creating the VM. Portanto, ele deve ter essa permissão para que possa listar as chaves da conta de armazenamento.Therefore, they must have this permission so they can list the storage account keys.

  • A capacidade de definir funções personalizadas é um recurso que permite compor um conjunto de ações usando uma lista de ações disponíveis que podem ser executadas nos recursos do Azure.The ability to define custom roles is a feature that allows you to compose a set of actions from a list of available actions that can be performed on Azure resources.

  • O usuário deve ser configurado no Azure Active Directory antes de você atribuir uma função a ele.The user must be set up in your Azure Active Directory before you can assign a role to them.

  • Usando o PowerShell ou a CLI do Azure, você pode criar um relatório de quem concedeu/revogou que tipo de acesso a/de quem e em que escopo.You can create a report of who granted/revoked what kind of access to/from whom and on what scope using PowerShell or the Azure CLI.

ImplanteResources

Gerenciando as chaves da conta de armazenamentoManaging Your Storage Account Keys

As chaves da conta de armazenamento são cadeias de caracteres de 512 bits criadas pelo Azure que, com o nome da conta de armazenamento, podem ser usadas para acessar os objetos de dados armazenados na conta de armazenamento, por exemplo, blobs, entidades em uma tabela, mensagens na fila e arquivos em um compartilhamento de arquivos do Azure.Storage account keys are 512-bit strings created by Azure that, along with the storage account name, can be used to access the data objects stored in the storage account, for example, blobs, entities within a table, queue messages, and files on an Azure file share. O controle do acesso às chaves da conta de armazenamento controla o acesso ao plano de dados dessa conta de armazenamento.Controlling access to the storage account keys controls access to the data plane for that storage account.

Cada conta de armazenamento tem duas chaves, conhecidas como "Chave 1" e "Chave 2" no Portal do Azure e nos cmdlets do PowerShell.Each storage account has two keys referred to as "Key 1" and "Key 2" in the Azure portal and in the PowerShell cmdlets. Elas podem ser regeneradas manualmente usando um dos vários métodos, incluindo, entre outros, o Portal do Azure, o PowerShell, a CLI do Azure ou, de modo programático, a Biblioteca de Cliente de Armazenamento .NET ou a API REST dos Serviços de Armazenamento do Microsoft Azure.These can be regenerated manually using one of several methods, including, but not limited to using the Azure portal, PowerShell, the Azure CLI, or programmatically using the .NET Storage Client Library or the Azure Storage Services REST API.

Há vários motivos para gerar novamente as chaves da conta de armazenamento.There are various reasons to regenerate your storage account keys.

  • Você pode gerá-los periodicamente para segurança.You may regenerate them periodically for security.
  • Você poderá regenerar as chaves da conta de armazenamento se o aplicativo ou a segurança de rede estiver comprometida.You might regenerate your storage account keys if your application or network security is compromised.
  • Outra instância para regeneração de chave é quando os membros da equipe com acesso às chaves saem.Another instance for key regeneration is when team members with access to the keys leave. As assinaturas de acesso compartilhado foram projetadas principalmente para resolver esse cenário – você deve compartilhar uma cadeia de conexão SAS no nível da conta ou um token, em vez de compartilhar chaves de acesso, com a maioria dos indivíduos ou aplicativos.Shared Access Signatures were designed primarily to address this scenario – you should share an account-level SAS connection string or token, instead of sharing access keys, with most individuals or applications.

Plano de nova geração de chaveKey regeneration plan

Você não deve regenerar uma chave de acesso em uso sem planejamento.You should not regenerate an access key in use without planning. A regeneração de chave abrupta pode bloquear o acesso a uma conta de armazenamento para aplicativos existentes, causando grande interrupção.Abrupt key regeneration can block access to a storage account for existing applications, causing major disruption. As contas de armazenamento do Azure fornecem duas chaves, para que você possa regenerar uma chave por vez.Azure Storage accounts provide two keys, so that you can regenerate one key at a time.

Antes de regenerar suas chaves, verifique se você tem uma lista de todos os aplicativos dependentes da conta de armazenamento, bem como quaisquer outros serviços que você esteja usando no Azure.Before you regenerate your keys, be sure you have a list of all applications dependent on the storage account, as well as any other services you are using in Azure. Por exemplo, se você estiver usando os serviços de mídia do Azure, use sua conta de armazenamento, você deverá ressincronizar as chaves de acesso com o serviço de mídia depois de regenerar a chave.For example, if you are using Azure Media Services use your storage account, you must resync the access keys with your media service after you regenerate the key. Se você estiver usando um aplicativo como um Gerenciador de armazenamento, também precisará fornecer novas chaves para esses aplicativos.If you are using an application such as a storage explorer, you will need to provide new keys to those applications as well. Se você tiver VMs cujos arquivos VHD são armazenados na conta de armazenamento, eles não serão afetados pela regeneração das chaves da conta de armazenamento.If you have VMs whose VHD files are stored in the storage account, they will not be affected by regenerating the storage account keys.

É possível regenerar suas chaves no Portal do Azure.You can regenerate your keys in the Azure portal. Depois que as chaves forem regeneradas, pode levar até 10 minutos até serem sincronizadas entre os Serviços de Armazenamento.Once keys are regenerated, they can take up to 10 minutes to be synchronized across Storage Services.

Quando você estiver pronto, aqui está o processo geral que detalha como você deve alterar sua chave.When you're ready, here's the general process detailing how you should change your key. Nesse caso, a suposição é a de que você esteja usando no momento a Chave 1 e que vai mudar tudo para usar a Chave 2 no lugar.In this case, the assumption is that you are currently using Key 1 and you are going to change everything to use Key 2 instead.

  1. Regenere a Chave 2 para garantir que ela seja protegida.Regenerate Key 2 to ensure that it is secure. Você pode fazer isso no Portal do Azure.You can do this in the Azure portal.
  2. Em todos os aplicativos em que a chave de armazenamento é armazenada, altere a chave de armazenamento para usar o novo valor da Chave 2.In all of the applications where the storage key is stored, change the storage key to use Key 2's new value. Teste e publique o aplicativo.Test and publish the application.
  3. Depois que todos os aplicativos e serviços estiverem funcionando perfeitamente, regenere a Chave 1.After all of the applications and services are up and running successfully, regenerate Key 1. Isso garante que qualquer pessoa a quem você não concedeu expressamente a nova chave não terá mais acesso à conta de armazenamento.This ensures that anybody to whom you have not expressly given the new key will no longer have access to the storage account.

Se, no momento, você estiver usando a Chave 2, será possível usar o mesmo processo, mas inverta os nomes das chaves.If you are currently using Key 2, you can use the same process, but reverse the key names.

É possível fazer a migração em dois dias, alterando cada aplicativo para usar a nova chave e publicando-o.You can migrate over a couple of days, changing each application to use the new key and publishing it. Depois de fazer isso com todos, você deverá voltar e regenerar a chave antiga, pois ela não funciona mais.After all of them are done, you should then go back and regenerate the old key so it no longer works.

Outra opção é colocar a chave de conta de armazenamento em um Cofre de Chaves do Azure como um segredo e fazer com que os aplicativos recuperam a chave de lá.Another option is to put the storage account key in an Azure Key Vault as a secret and have your applications retrieve the key from there. Assim, quando você regenerar a chave e atualizar o Cofre de Chaves do Azure, os aplicativos não precisarão ser reimplantados porque eles selecionarão a nova chave no Cofre de Chaves do Azure automaticamente.Then when you regenerate the key and update the Azure Key Vault, the applications will not need to be redeployed because they will pick up the new key from the Azure Key Vault automatically. Você pode fazer com que o aplicativo Leia a chave cada vez que precisar dela, ou o aplicativo possa armazená-la em cache na memória e se ela falhar ao usá-la, recuperar a chave novamente do Azure Key Vault.You can have the application read the key each time it needs it, or the application can cache it in memory and if it fails when using it, retrieve the key again from the Azure Key Vault.

Usar o Cofre de Chaves do Azure também acrescenta outro nível de segurança para suas chaves de armazenamento.Using Azure Key Vault also adds another level of security for your storage keys. Usando o Key Vault, o permite evitar a gravação de chaves de armazenamento em arquivos de configuração do aplicativo.Using the Key Vault, enables you to avoid writing storage keys in application configuration files. Ele também impede a exposição de chaves a todos com acesso a esses arquivos de configuração.It also prevents exposure of keys to everyone with access to those configuration files.

Azure Key Vault também tem a vantagem de usar o Azure AD para controlar o acesso às suas chaves.Azure Key Vault also has the advantage of using Azure AD to control access to your keys. Você pode conceder acesso aos aplicativos específicos que precisam recuperar as chaves de Key Vault, sem expô-las a outros aplicativos que não precisam de acesso às chaves.You can grant access to the specific applications that need to retrieve the keys from Key Vault, without exposing them to other applications that do not need access to the keys.

Observação

A Microsoft recomenda usar apenas uma das chaves em todos os aplicativos ao mesmo tempo.Microsoft recommends using only one of the keys in all of your applications at the same time. Se você usar a Chave 1 em alguns lugares e a Chave 2 em outros, nãos será possível alternar as chaves sem que algum aplicativo perca o acesso.If you use Key 1 in some places and Key 2 in others, you will not be able to rotate your keys without some application losing access.

ImplanteResources

Segurança de RedeNetwork Security

A segurança de rede permite restringir o acesso aos dados em uma conta de armazenamento do Azure de redes selecionadas.Network Security enables you to restrict access to the data in an Azure Storage Account from select networks. Você pode usar o Firewall do armazenamento do Azure para restringir o acesso a clientes de intervalos de endereços IP públicos específicos, selecionar redes virtuais (VNets) no Azure ou para recursos específicos do Azure.You can use the Azure Storage firewall to restrict access to clients from specific public IP address ranges, select virtual networks (VNets) on Azure, or to specific Azure resources. Você também tem a opção de criar um ponto de extremidade privado para sua conta de armazenamento na VNet que precisa de acesso e bloquear todo o acesso por meio do ponto de extremidade público.You also have the option to create a Private Endpoint for your storage account in the VNet that needs access, and blocking all access through the public endpoint.

Você pode configurar as regras de acesso à rede para sua conta de armazenamento por meio da guia firewalls e redes virtuais no portal do Azure.You can configure the network access rules for your storage account through the Firewalls and Virtual Networks tab in the Azure portal. Usando o firewall de armazenamento, você pode negar o acesso ao tráfego de Internet público e conceder acesso a clientes selecionados com base nas regras de rede configuradas.Using the storage firewall, you can deny access for public internet traffic, and grant access to select clients based on the configured network rules.

Você também pode usar pontos de extremidade privados para se conectar de forma privada e segura a uma conta de armazenamento de uma VNet usando links privados.You can also use Private Endpoints to privately and securely connect to a storage account from a VNet using Private Links.

As regras de firewall de armazenamento se aplicam somente ao ponto de extremidade público da conta de armazenamento.Storage firewall rules only apply to the public endpoint for the storage account. A sub-rede que hospeda um ponto de extremidade privado para uma conta de armazenamento obtém acesso implícito à conta quando você aprova a criação desse ponto de extremidade privado.The subnet that hosts a private endpoint for a storage account gets implicit access to the account when you approve the creation of that private endpoint.

Observação

As regras de firewall de armazenamento não são aplicáveis às operações de gerenciamento de armazenamento realizadas por meio do portal do Azure e da API de gerenciamento de armazenamento do Azure.The storage firewall rules are not applicable to storage management operations conducted through the Azure portal and the Azure Storage Management API.

Regras de acesso para intervalos de endereços IP públicosAccess rules for public IP address ranges

O Firewall do armazenamento do Azure pode ser usado para restringir o acesso a uma conta de armazenamento de intervalos de endereços IP públicos específicos.The Azure Storage firewall can be used to restrict access to a storage account from specific public IP address ranges. Você pode usar regras de endereço IP para restringir o acesso a serviços específicos baseados na Internet que se comunicam em um ponto de extremidade IP público fixo ou para selecionar redes locais.You can use IP address rules to restrict access to specific internet-based services communicating on a fixed public IP endpoint, or to select on-premises networks.

Regras de acesso para redes virtuais do AzureAccess rules for Azure virtual networks

Por padrão, as contas de armazenamento aceitam conexões de clientes em qualquer rede.Storage accounts, by default, accept connections from clients on any network. Você pode restringir o acesso do cliente aos dados em uma conta de armazenamento para redes selecionadas usando o firewall de armazenamento.You can restrict the client access to the data in a storage account to selected networks using the storage firewall. Os pontos de extremidade de serviço permitem o roteamento de tráfego de uma rede virtual do Azure para a conta de armazenamento.Service endpoints enable routing of traffic from an Azure virtual network to the storage account.

Concedendo acesso a instâncias específicas de recursos confiáveisGranting access to specific trusted resource instances

Você pode permitir que um subconjunto de serviços confiáveis do Azure acesse a conta de armazenamento por meio do firewall com autenticação forte com base no tipo de recurso de serviço ou em uma instância de recurso.You can allow a subset of Azure trusted services to access the storage account through the firewall with strong authentication based on the service resource type, or a resource instance.

Para os serviços que dão suporte ao acesso baseado em instância de recurso por meio do firewall de armazenamento, somente a instância selecionada pode acessar os dados na conta de armazenamento.For the services that support resource instance-based access through the storage firewall, only the selected instance can access the data in the storage account. Nesse caso, o serviço deve oferecer suporte à autenticação de instância de recurso usando identidades gerenciadasatribuídas pelo sistema.In this case, the service must support resource-instance authentication using system-assigned managed identities.

Usando pontos de extremidade privados para proteger conexõesUsing private endpoints for securing connections

O armazenamento do Azure dá suporte a pontos de extremidade privados, que permitem o acesso seguro da conta de armazenamento de uma rede virtual do Azure.Azure Storage supports private endpoints, which enable secure access of storage account from an Azure virtual network. Pontos de extremidade privados atribuem um endereço IP privado do espaço de endereço da VNet ao serviço de armazenamento.Private endpoints assign a private IP address from your VNet's address space to the storage service. Ao usar pontos de extremidade privados, a cadeia de conexão de armazenamento redireciona o tráfego destinado à conta de armazenamento para o endereço IP privado.When using private endpoints, the storage connection string redirects traffic destined for the storage account to the private IP address. A conexão entre o ponto de extremidade privado e a conta de armazenamento usa um link privado.The connection between the private endpoint and the storage account uses a private link. Usando pontos de extremidade privados, você pode bloquear vazamento de dados de sua VNet.Using private endpoints you can block exfiltration of data from your VNet.

Redes locais conectadas por meio de emparelhamento privado VPN ou expressroute ao qual e outras redes virtuais emparelhadas também podem acessar a conta de armazenamento por meio do ponto de extremidade privado.On-premises networks connected over VPN or ExpressRoutes private peering and other peered virtual networks can also access the storage account over the private endpoint. O ponto de extremidade privado para suas contas de armazenamento pode ser criado em uma VNet em qualquer região, permitindo um alcance global seguro.Private endpoint for your storage accounts can be created in a VNet in any region, enabling a secure global reach. Você também pode criar pontos de extremidade privados para contas de armazenamento em outros locatários Azure Active Directory .You may also create private endpoints for storage accounts in other Azure Active Directory tenants.

AutorizaçãoAuthorization

A Segurança do Plano de Dados refere-se aos métodos usados para proteger os objetos de dados armazenados no Armazenamento do Azure – blobs, filas, tabelas e arquivos.Data Plane Security refers to the methods used to secure the data objects stored in Azure Storage – the blobs, queues, tables, and files. Já vimos métodos para criptografar os dados e a segurança durante a transferência de dados. Mas e quanto a controlar o acesso aos objetos?We've seen methods to encrypt the data and security during transit of the data, but how do you go about controlling access to the objects?

Você tem três opções para autorizar o acesso a objetos de dados no Armazenamento do Azure, incluindo:You have three options for authorizing access to data objects in Azure Storage, including:

  • Usando o Azure AD para autorizar o acesso a contêineres e filas.Using Azure AD to authorize access to containers and queues. O Azure AD oferece vantagens em relação a outras abordagens para autorização, incluindo a eliminação da necessidade de armazenar segredos em seu código.Azure AD provides advantages over other approaches to authorization, including removing the need to store secrets in your code. Para saber mais, confira Autenticar o acesso ao Armazenamento do Azure usando o Azure Active Directory.For more information, see Authenticate access to Azure Storage using Azure Active Directory.
  • Usar as chaves da conta de armazenamento para autorizar o acesso via Chave Compartilhada.Using your storage account keys to authorize access via Shared Key. A autorização via Chave Compartilhada requer o armazenamento das chaves da conta de armazenamento em seu aplicativo e, portanto, a Microsoft recomenda usar o Azure AD sempre que possível.Authorizing via Shared Key requires storing your storage account keys in your application, so Microsoft recommends using Azure AD instead where possible.
  • Usar Assinaturas de Acesso Compartilhado para conceder permissões controladas a objetos de dados específicos por um determinado período de tempo.Using Shared Access Signatures to grant controlled permissions to specific data objects for a specific amount of time.

Além disso, para o Armazenamento de Blobs, você pode permitir o acesso público aos blobs configurando o nível de acesso para o contêiner que contém os blobs de acordo.In addition, for Blob Storage, you can allow public access to your blobs by setting the access level for the container that holds the blobs accordingly. Se você definir o acesso de um contêiner para Blob ou Contêiner, isso permitirá acesso público de leitura para os blobs desse contêiner.If you set access for a container to Blob or Container, it will allow public read access for the blobs in that container. Isso significa que qualquer pessoa com uma URL apontando para um blob nesse contêiner poderá abri-lo em um navegador sem usar uma Assinatura de Acesso Compartilhado ou sem ter as chaves da conta de armazenamento.This means anyone with a URL pointing to a blob in that container can open it in a browser without using a Shared Access Signature or having the storage account keys.

Chaves de conta de armazenamentoStorage Account Keys

As chaves da conta de armazenamento são cadeias de caracteres de 512 bits criadas pelo Azure que, com o nome da conta de armazenamento, podem ser usadas para acessar os objetos de dados armazenados na conta de armazenamento.Storage account keys are 512-bit strings created by Azure that, along with the storage account name, can be used to access the data objects stored in the storage account.

Por exemplo, você pode ler blobs, gravar nas filas, criar tabelas e modificar arquivos.For example, you can read blobs, write to queues, create tables, and modify files. Muitas dessas ações podem ser executadas no Portal do Azure ou usando um dos muitos aplicativos do Gerenciador de Armazenamento.Many of these actions can be performed through the Azure portal, or using one of many Storage Explorer applications. Você também pode escrever código para usar a API REST ou uma das Bibliotecas de Cliente de Armazenamento para executar essas operações.You can also write code to use the REST API or one of the Storage Client Libraries to perform these operations.

Conforme discutido na seção sobre Segurança do plano de gerenciamento, o acesso às chaves de armazenamento para uma conta de armazenamento Clássica pode ser concedido dando acesso completo à assinatura do Azure.As discussed in the section on the Management Plane Security, access to the storage keys for a Classic storage account can be granted by giving full access to the Azure subscription. O acesso às chaves de armazenamento para uma conta de armazenamento usando o modelo Azure Resource Manager pode ser controlado por meio do RBAC (Controle de Acesso Baseado em Função).Access to the storage keys for a storage account using the Azure Resource Manager model can be controlled through Role-Based Access Control (RBAC).

Como delegar acesso a objetos em sua conta usando Assinaturas de Acesso Compartilhado e Políticas de Acesso ArmazenadoHow to delegate access to objects in your account using Shared Access Signatures and Stored Access Policies

Uma Assinatura de Acesso Compartilhado é uma cadeia de caracteres que contém um token de segurança que pode ser anexado a um URI que permite delegar acesso aos objetos de armazenamento e especificar restrições, como as permissões e o intervalo de data/hora de acesso.A Shared Access Signature is a string containing a security token that can be attached to a URI that allows you to delegate access to storage objects and specify constraints such as the permissions and the date/time range of access.

Você pode conceder acesso a blobs, contêineres, mensagens de fila, arquivos e tabelas.You can grant access to blobs, containers, queue messages, files, and tables. Com tabelas, na verdade, você pode conceder permissão para acessar um intervalo de entidades na tabela especificando os intervalos de chaves de linha e partição ao quais você quer que o usuário tenha acesso.With tables, you can actually grant permission to access a range of entities in the table by specifying the partition and row key ranges to which you want the user to have access. Por exemplo, se você tiver dados armazenados com uma chave de partição de estado geográfico, será possível conceder a alguém acesso apenas aos dados da Califórnia.For example, if you have data stored with a partition key of geographical state, you could give someone access to just the data for California.

Em outro exemplo, você pode fornecer a um aplicativo Web um token SAS que o permita gravar entradas em uma fila, bem como fornecer a um aplicativo de função de trabalho um token SAS para obter mensagens da fila e processá-las.In another example, you might give a web application a SAS token that enables it to write entries to a queue, and give a worker role application a SAS token to get messages from the queue and process them. Ou você pode fornecer a um cliente um token SAS que ele pode usar para carregar imagens em um contêiner no Armazenamento de Blobs, bem como fornecer a um aplicativo Web permissão para ler essas imagens.Or you could give one customer a SAS token they can use to upload pictures to a container in Blob Storage, and give a web application permission to read those pictures. Em ambos os casos, há uma separação de interesses – cada aplicativo pode receber apenas o acesso que eles precisam para realizar as respectivas tarefas.In both cases, there is a separation of concerns – each application can be given just the access that they require in order to perform their task. Isso é possível graças às Assinaturas de Acesso Compartilhado.This is possible through the use of Shared Access Signatures.

Por que usar as Assinaturas de Acesso CompartilhadoWhy you want to use Shared Access Signatures

Por que você ia querer usar uma SAS em vez de apenas fornecer sua chave da conta de armazenamento, o que é muito mais fácil?Why would you want to use an SAS instead of just giving out your storage account key, which is so much easier? Fornecer a chave da conta de armazenamento é como compartilhar as chaves do seu reino de armazenamento.Giving out your storage account key is like sharing the keys of your storage kingdom. Isto é, ela concede acesso a tudo.It grants complete access. Um indivíduo poderia usar as chaves e carregar toda a biblioteca de músicas dele na sua conta de armazenamento.Someone could use your keys and upload their entire music library to your storage account. Ele também poderia substituir seus arquivos por versões infectadas por vírus ou até mesmo roubar seus dados.They could also replace your files with virus-infected versions, or steal your data. Dar acesso ilimitado à sua conta de armazenamento é algo que não se pode fazer de modo leviano.Giving away unlimited access to your storage account is something that should not be taken lightly.

Com as Assinaturas de Acesso Compartilhado, você pode dar a um cliente apenas as permissões necessárias por um período limitado.With Shared Access Signatures, you can give a client just the permissions required for a limited amount of time. Por exemplo, se uma pessoa estiver carregando um blob em sua conta, você poderá conceder acesso de gravação a ela apenas pelo tempo suficiente para carregar o blob (dependendo do tamanho do blob, é claro).For example, if someone is uploading a blob to your account, you can grant them write access for just enough time to upload the blob (depending on the size of the blob, of course). E se você mudar de ideia, poderá revogar esse acesso.And if you change your mind, you can revoke that access.

Além disso, você pode especificar que as solicitações feitas usando uma SAS sejam restritas a um determinado endereço IP ou intervalo de endereços IP fora do Azure.Additionally, you can specify that requests made using a SAS are restricted to a certain IP address or IP address range external to Azure. Você também pode exigir que as solicitações sejam feitas usando um protocolo específico (HTTPS ou HTTP/HTTPS).You can also require that requests are made using a specific protocol (HTTPS or HTTP/HTTPS). Isso significa que se você deseja permitir apenas o tráfego HTTPS, será possível definir o protocolo necessário para apenas HTTPS, e o tráfego HTTP será bloqueado.This means if you only want to allow HTTPS traffic, you can set the required protocol to HTTPS only, and HTTP traffic will be blocked.

Definição de uma Assinatura de Acesso CompartilhadoDefinition of a Shared Access Signature

Uma Assinatura de Acesso Compartilhado é um conjunto de parâmetros de consulta acrescentado à URL que aponta para o recursoA Shared Access Signature is a set of query parameters appended to the URL pointing at the resource

que fornece informações sobre o acesso permitido e por quanto tempo o acesso é permitido.that provides information about the access allowed and the length of time for which the access is permitted. Veja um exemplo; este URI fornece acesso de leitura a um blob por cinco minutos.Here is an example; this URI provides read access to a blob for five minutes. Observe que os parâmetros de consulta SAS devem ser Codificados pela URL, como %3A para dois-pontos (:) e %20 para um espaço.Note that SAS query parameters must be URL Encoded, such as %3A for colon (:) or %20 for a space.

http://mystorage.blob.core.windows.net/mycontainer/myblob.txt (URL to the blob)
?sv=2015-04-05 (storage service version)
&st=2015-12-10T22%3A18%3A26Z (start time, in UTC time and URL encoded)
&se=2015-12-10T22%3A23%3A26Z (end time, in UTC time and URL encoded)
&sr=b (resource is a blob)
&sp=r (read access)
&sip=168.1.5.60-168.1.5.70 (requests can only come from this range of IP addresses)
&spr=https (only allow HTTPS requests)
&sig=Z%2FRHIX5Xcg0Mq2rqI3OlWTjEg2tYkboXr1P9ZUXDtkk%3D (signature used for the authentication of the SAS)

Como a Assinatura de Acesso Compartilhado é autorizada pelo Serviço de Armazenamento do AzureHow the Shared Access Signature is authorized by the Azure Storage Service

Quando o serviço de armazenamento recebe a solicitação, ele usa os parâmetros de consulta de entrada e cria uma assinatura usando o mesmo método que o programa de chamada.When the storage service receives the request, it takes the input query parameters and creates a signature using the same method as the calling program. Ele então compara as duas assinaturas.It then compares the two signatures. Se elas coincidirem, o serviço de armazenamento poderá verificar a versão do serviço de armazenamento para garantir que ele seja válido, verificar se a data e a hora atuais estão dentro da janela especificada, ter certeza de que o acesso solicitado corresponde à solicitação feita, etc.If they agree, then the storage service can check the storage service version to make sure it's valid, verify that the current date and time are within the specified window, make sure the access requested corresponds to the request made, etc.

Por exemplo, se a URL acima estivesse apontando para um arquivo em vez de para um blob, essa solicitação falharia, pois ela especifica que a Assinatura de Acesso Compartilhado é para um blob.For example, with our URL above, if the URL was pointing to a file instead of a blob, this request would fail because it specifies that the Shared Access Signature is for a blob. Se o comando REST que está sendo chamado fosse para atualizar um blob, ele falharia, pois a Assinatura de Acesso Compartilhado especifica que somente o acesso de leitura é permitido.If the REST command being called was to update a blob, it would fail because the Shared Access Signature specifies that only read access is permitted.

Tipos de Assinatura de Acesso CompartilhadoTypes of Shared Access Signatures

  • Uma SAS de nível de serviço pode ser usada para acessar recursos específicos em uma conta de armazenamento.A service-level SAS can be used to access specific resources in a storage account. Alguns exemplos disso são a recuperação de uma lista de blobs em um contêiner, o download de um blob, a atualização de uma entidade em uma tabela, a adição de mensagens a uma fila ou o carregamento de um arquivo em um compartilhamento de arquivos.Some examples of this are retrieving a list of blobs in a container, downloading a blob, updating an entity in a table, adding messages to a queue, or uploading a file to a file share.
  • Uma SAS de nível de conta pode ser usada para acessar tudo aquilo para o que ela pode ser usada.An account-level SAS can be used to access anything that a service-level SAS can be used for. Além disso, ela pode fornecer opções para recursos que não são permitidas com uma SAS de nível de serviço, como a capacidade de criar contêineres, tabelas, filas e compartilhamentos de arquivo.Additionally, it can give options to resources that are not permitted with a service-level SAS, such as the ability to create containers, tables, queues, and file shares. Você também pode especificar acesso a vários serviços ao mesmo tempo.You can also specify access to multiple services at once. Por exemplo, você pode conceder a uma pessoa acesso aos blobs e aos arquivos na sua conta de armazenamento.For example, you might give someone access to both blobs and files in your storage account.

Criar um URI de SASCreating a SAS URI

  1. Você pode criar um URI sob demanda, definindo todos os parâmetros de consulta todas as vezes.You can create a URI on demand, defining all of the query parameters each time.

    Essa abordagem é flexível, mas se você tiver um conjunto lógico de parâmetros que sempre são semelhantes, usar uma Política de Acesso Armazenado é uma opção mais adequada.This approach is flexible, but if you have a logical set of parameters that are similar each time, using a Stored Access Policy is a better idea.

  2. É possível criar uma Política de Acesso Armazenado para um contêiner inteiro, um compartilhamento de arquivos, uma tabela ou uma fila.You can create a Stored Access Policy for an entire container, file share, table, or queue. Desse modo, você pode usar isso como a base para os URIs SAS que cria.Then you can use this as the basis for the SAS URIs you create. As permissões com base em Políticas de Acesso Armazenado podem ser facilmente revogadas.Permissions based on Stored Access Policies can be easily revoked. Você pode ter até cinco políticas definidas em cada contêiner, fila, tabela ou compartilhamento de arquivos.You can have up to five policies defined on each container, queue, table, or file share.

    Por exemplo, se muitas pessoas lessem os blobs em um contêiner específico, você poderia criar uma Política de Acesso Armazenado que informasse "fornecer acesso de leitura" e todas as outras configurações que seriam as mesmas todas as vezes.For example, if you were going to have many people read the blobs in a specific container, you could create a Stored Access Policy that says "give read access" and any other settings that will be the same each time. Assim, você poderia criar um URI de SAS usando as configurações da Política de Acesso Armazenado e especificando a data/hora de expiração.Then you can create an SAS URI using the settings of the Stored Access Policy and specifying the expiration date/time. A vantagem disso é que você não precisa especificar todos os parâmetros de consulta todas as vezes.The advantage of this is that you don't have to specify all of the query parameters every time.

RevogaçãoRevocation

Suponha que a SAS foi comprometida ou que você queira alterá-la devido a requisitos de conformidade normativa ou segurança corporativa.Suppose your SAS has been compromised, or you want to change it because of corporate security or regulatory compliance requirements. Como você revoga o acesso a um recurso usando essa SAS?How do you revoke access to a resource using that SAS? Depende de como você criou o URI da SAS.It depends on how you created the SAS URI.

Se estiver usando URIs ad hoc, você terá três opções.If you are using ad hoc URIs, you have three options. Você pode emitir tokens SAS com políticas de expiração curta e aguardar a SAS expirar.You can issue SAS tokens with short expiration policies and wait for the SAS to expire. Você pode renomear ou excluir o recurso (supondo que o escopo do token fosse para um único objeto).You can rename or delete the resource (assuming the token was scoped to a single object). Você pode alterar as chaves da conta de armazenamento.You can change the storage account keys. Essa última opção pode ter um impacto significativo dependendo de quantos serviços estão usando essa conta de armazenamento, o que provavelmente não é algo que você queira fazer sem planejamento.This last option can have a significant impact, depending on how many services are using that storage account, and probably isn't something you want to do without some planning.

Se estiver usando uma SAS derivada de uma Política de Acesso Armazenado, você poderá remover o acesso revogando a Política de Acesso Armazenado. Basta alterá-la para que ela expire ou removê-la completamente.If you are using a SAS derived from a Stored Access Policy, you can remove access by revoking the Stored Access Policy – you can just change it so it has already expired, or you can remove it altogether. Isso entra em vigor imediatamente e invalida cada SAS criada usando essa Política de Acesso Armazenado.This takes effect immediately, and invalidates every SAS created using that Stored Access Policy. Atualizar ou remover a Política de Acesso Armazenado pode afetar pessoas que estão acessando um contêiner, um compartilhamento de arquivos, uma tabela ou uma fila específicos por meio de SAS, mas se os clientes estiverem gravando, eles solicitam uma nova SAS quando a antiga se tornar inválida; isso funciona sem problemas.Updating or removing the Stored Access Policy may impact people accessing that specific container, file share, table, or queue via SAS, but if the clients are written so they request a new SAS when the old one becomes invalid, this will work fine.

Como usar uma SAS derivada de uma Política de Acesso Armazenado dá a possibilidade de revogar essa SAS imediatamente, a prática recomendada é, sempre que possível, usar Políticas de Acesso Armazenado.Because using a SAS derived from a Stored Access Policy gives you the ability to revoke that SAS immediately, it is the recommended best practice to always use Stored Access Policies when possible.

ImplanteResources

Obtenha informações mais detalhadas sobre como usar as Assinatura de Acesso Compartilhado e as Políticas de Acesso Armazenado, com exemplos, nos artigos a seguir:For more detailed information on using Shared Access Signatures and Stored Access Policies, complete with examples, refer to the following articles:

Criptografia em trânsitoEncryption in Transit

Criptografia no nível de transporte – usando HTTPSTransport-Level Encryption – Using HTTPS

Outra etapa que você deve executar para garantir a segurança dos dados do Armazenamento do Azure é criptografá-los entre o cliente e o Armazenamento do Microsoft Azure.Another step you should take to ensure the security of your Azure Storage data is to encrypt the data between the client and Azure Storage. A primeira recomendação é sempre usar o protocolo HTTPS , que garante a comunicação segura na Internet pública.The first recommendation is to always use the HTTPS protocol, which ensures secure communication over the public Internet.

Para ter um canal de comunicação seguro, você sempre deve usar o HTTPS ao chamar as APIs REST ou acessar objetos no armazenamento.To have a secure communication channel, you should always use HTTPS when calling the REST APIs or accessing objects in storage. Além disso, as Assinaturas de Acesso Compartilhado, que podem ser usadas para delegar acesso a objetos do Armazenamento do Azure, incluem uma opção para especificar que apenas o protocolo HTTPS pode ser utilizado ao usar as Assinaturas de Acesso Compartilhado, garantindo que qualquer pessoa que envie links com tokens SAS usará o protocolo adequado.Also, Shared Access Signatures, which can be used to delegate access to Azure Storage objects, include an option to specify that only the HTTPS protocol can be used when using Shared Access Signatures, ensuring that anybody sending out links with SAS tokens will use the proper protocol.

É possível impor o uso de HTTPS ao chamar as APIs REST para acessar objetos em contas de armazenamento habilitando a opção Transferência segura necessária na conta de armazenamento.You can enforce the use of HTTPS when calling the REST APIs to access objects in storage accounts by enabling Secure transfer required for the storage account. As conexões que usam HTTP serão recusadas depois que essa opção for habilitada.Connections using HTTP will be refused once this is enabled.

Usando criptografia durante a transferência com compartilhamentos de arquivos do AzureUsing encryption during transit with Azure file shares

Os Arquivos do Azure dão suporte à criptografia com SMB 3.0 e com HTTPS ao usar a API REST do arquivo.Azure Files supports encryption via SMB 3.0 and with HTTPS when using the File REST API. Ao montar fora da região do Azure em que está o compartilhamento de arquivos do Azure, como localmente ou em outra região do Azure, o SMB 3.0 com criptografia será sempre exigido.When mounting outside of the Azure region the Azure file share is located in, such as on-premises or in another Azure region, SMB 3.0 with encryption is always required. O SMB 2.1 não dá suporte a criptografia e, portanto, por padrão, as conexões só são permitidas dentro da mesma região no Azure, mas no SMB 3.0 com criptografia, elas podem ser impostas pela exigência de transferência segura para a conta de armazenamento.SMB 2.1 does not support encryption, so by default connections are only allowed within the same region in Azure, but SMB 3.0 with encryption can be enforced by requiring secure transfer for the storage account.

O SMB 3.0 com criptografia está disponível em todos os sistemas operacionais Windows e Windows Server com suporte, exceto o Windows 7 e o Windows Server 2008 R2, que só dão suporte a SMB 2.1.SMB 3.0 with encryption is available in all supported Windows and Windows Server operating systems except Windows 7 and Windows Server 2008 R2, which only support SMB 2.1. Também há suporte para SMB 3.0 no macOS e nas distribuições de Linux usando o kernel do Linux 4.11 e superiores.SMB 3.0 is also supported on macOS and on distributions of Linux using Linux kernel 4.11 and above. O suporte à criptografia para SMB 3.0 também teve backport para versões mais antigas do kernel do Linux por várias distribuições do Linux; confira Noções básicas de requisitos do cliente SMB.Encryption support for SMB 3.0 has also been backported to older versions of the Linux kernel by several Linux distributions, consult Understanding SMB client requirements.

Uso da criptografia do cliente para proteger os dados enviados para o armazenamentoUsing Client-side encryption to secure data that you send to storage

Outra opção que ajuda a garantir que os dados sejam protegidos enquanto estão sendo transferidos entre um aplicativo cliente e o Armazenamento é a Criptografia do Cliente.Another option that helps you ensure that your data is secure while being transferred between a client application and Storage is Client-side Encryption. Os dados são criptografados antes de serem transferidos para o Armazenamento do Microsoft Azure.The data is encrypted before being transferred into Azure Storage. Na recuperação dos dados do Armazenamento do Azure, os dados são descriptografados depois que são recebidos no cliente.When retrieving the data from Azure Storage, the data is decrypted after it is received on the client side. Mesmo que os dados estejam criptografados durante a transferência, é recomendável usar também o HTTPS, pois ele tem as verificações de integridade de dados internas que ajudam a reduzir os erros de rede que afetam a integridade dos dados.Even though the data is encrypted going across the wire, we recommend that you also use HTTPS, as it has data integrity checks built in which help mitigate network errors affecting the integrity of the data.

A criptografia do cliente também é um método para criptografar os dados em repouso, já que os dados são armazenados em sua forma criptografada.Client-side encryption is also a method for encrypting your data at rest, as the data is stored in its encrypted form. Falaremos sobre isso mais detalhadamente na seção sobre Criptografia em repouso.We'll talk about this in more detail in the section on Encryption at Rest.

Criptografia em repousoEncryption at Rest

Há três recursos do Azure que fornecem criptografia em repouso.There are three Azure features that provide encryption at rest. O Azure Disk Encryption é usado para criptografar os discos de dados e do sistema operacional em Máquinas Virtuais IaaS.Azure Disk Encryption is used to encrypt the OS and data disks in IaaS Virtual Machines. A Criptografia do Cliente e a SSE são usadas para criptografar dados no Armazenamento do Microsoft Azure.Client-side Encryption and SSE are both used to encrypt data in Azure Storage.

Embora seja possível usar a Criptografia do Cliente para criptografar os dados em trânsito (que também são armazenados em sua forma criptografada no Armazenamento), talvez você prefira usar HTTPS durante a transferência e que os dados sejam criptografados automaticamente de alguma maneira quando são armazenados.While you can use Client-side Encryption to encrypt the data in transit (which is also stored in its encrypted form in Storage), you may prefer to use HTTPS during the transfer, and have some way for the data to be automatically encrypted when it is stored. Há duas maneiras de fazer isso: com o Azure Disk Encryption e com a SSE.There are two ways to do this -- Azure Disk Encryption and SSE. Uma é usada para criptografar os dados diretamente nos discos de dados e do sistema operacional usados pelas VMs e a outra é usada para criptografar os dados gravados no Armazenamento de Blobs do Azure.One is used to directly encrypt the data on OS and data disks used by VMs, and the other is used to encrypt data written to Azure Blob Storage.

SSE (Criptografia do Serviço de Armazenamento)Storage Service Encryption (SSE)

A SSE é habilitada para todas as contas de armazenamento e não pode ser desabilitada.SSE is enabled for all storage accounts and cannot be disabled. Ela criptografa automaticamente seus dados ao gravá-los no Armazenamento do Azure.SSE automatically encrypts your data when writing it to Azure Storage. Quando você faz a leitura de dados do Armazenamento do Azure, eles são descriptografados pelo armazenamento do Azure antes de serem retornados.When you read data from Azure Storage, it is decrypted by Azure Storage before being returned. A SSE permite proteger os dados sem precisar modificar código nem adicionar código a nenhum aplicativo.SSE enables you to secure your data without having to modify code or add code to any applications.

Você pode usar chaves gerenciadas pela Microsoft ou suas próprias chaves personalizadas.You can use either Microsoft-managed keys or your own custom keys. A Microsoft gera as chaves gerenciadas e administra o armazenamento seguro delas, bem como sua rotatividade regular, conforme definido pela política interna da Microsoft.Microsoft generates managed keys and handles their secure storage as well as their regular rotation, as defined by internal Microsoft policy. Para obter mais informações sobre como usar chaves personalizadas, consulte Criptografia do Serviço de Armazenamento usando chaves gerenciadas pelo cliente no Azure Key Vault.For more information about using custom keys, see Storage Service Encryption using customer-managed keys in Azure Key Vault.

O SSE criptografa automaticamente os dados em todos os níveis de desempenho (Standard e Premium), em todos os modelos de implantação (Azure Resource Manager e Clássico) e em todos os serviços do Armazenamento do Azure (Blobs, Filas, Tabelas e Arquivos).SSE automatically encrypts data in all performance tiers (Standard and Premium), all deployment models (Azure Resource Manager and Classic), and all of the Azure Storage services (Blob, Queue, Table, and File).

Criptografia do clienteClient-side Encryption

Mencionamos a criptografia do cliente ao abordar a criptografia dos dados em trânsito.We mentioned client-side encryption when discussing the encryption of the data in transit. Esse recurso permite criptografar os dados de modo programático em um aplicativo cliente antes de enviá-los para serem gravados no Armazenamento do Microsoft Azure, assim como descriptografá-los de modo programático depois de recuperá-los no Armazenamento do Microsoft Azure.This feature allows you to programmatically encrypt your data in a client application before sending it across the wire to be written to Azure Storage, and to programmatically decrypt your data after retrieving it from Azure Storage.

Ele fornece criptografia em trânsito, mas também fornece o recurso de Criptografia em Repouso.This does provide encryption in transit, but it also provides the feature of Encryption at Rest. Embora os dados sejam criptografados em trânsito, ainda é aconselhável usar HTTPS para aproveitar as verificações de integridade de dados internas que ajudam a reduzir os erros de rede que afetam a integridade dos dados.Although the data is encrypted in transit, we still recommend using HTTPS to take advantage of the built-in data integrity checks that help mitigate network errors affecting the integrity of the data.

Um exemplo de onde é possível usar esse recurso é quando você tiver um aplicativo Web que armazene blobs e recupere blobs, e quando você quiser que o aplicativo e os dados sejam protegidos ao máximo.An example of where you might use this is if you have a web application that stores blobs and retrieves blobs, and you want the application and data to be as secure as possible. Nesse caso, você usa a criptografia do cliente.In that case, you would use client-side encryption. O tráfego entre o cliente e o Serviço Blob do Azure contém o recurso criptografado, e ninguém pode interpretar os dados em trânsito e reconstitui-los em seus blobs privados.The traffic between the client and the Azure Blob Service contains the encrypted resource, and nobody can interpret the data in transit and reconstitute it into your private blobs.

A criptografia do cliente é incorporada no Java e nas bibliotecas de cliente de armazenamento .NET que, por sua vez, usam as APIs do Azure Key Vault, o que facilita a implementação.Client-side encryption is built into the Java and the .NET storage client libraries, which in turn use the Azure Key Vault APIs, making it easy for you to implement. O processo de criptografia e descriptografia de dados usa a técnica de envelope e armazena os metadados usados pela criptografia em cada objeto de armazenamento.The process of encrypting and decrypting the data uses the envelope technique, and stores metadata used by the encryption in each storage object. Por exemplo, no caso de blobs, ele os armazena nos metadados do blob e, no caso de filas, ele os adiciona a cada mensagem da fila.For example, for blobs, it stores it in the blob metadata, while for queues, it adds it to each queue message.

Para a criptografia em si, você pode gerar e gerenciar suas próprias chaves de criptografia.For the encryption itself, you can generate and manage your own encryption keys. Você também pode usar as chaves geradas pela Biblioteca de Cliente de Armazenamento do Azure ou fazer com que o Cofre de Chaves do Azure as gere.You can also use keys generated by the Azure Storage Client Library, or you can have the Azure Key Vault generate the keys. É possível armazenar as chaves de criptografia em seu armazenamento de chaves local ou armazená-las no Cofre de Chaves do Azure.You can store your encryption keys in your on-premises key storage, or you can store them in an Azure Key Vault. O Cofre de Chaves do Azure permite conceder a usuários específicos acesso aos segredos do Cofre de Chaves do Azure usando o Azure Active Directory.Azure Key Vault allows you to grant access to the secrets in Azure Key Vault to specific users using Azure Active Directory. Isso significa que não é qualquer pessoa que pode ler o Azure Key Vault e recuperar as chaves que você está usando para criptografia do lado do cliente.This means that not just anybody can read the Azure Key Vault and retrieve the keys you're using for client-side encryption.

ImplanteResources

Usando o Azure Disk Encryption para criptografar discos usados pelas máquinas virtuaisUsing Azure Disk Encryption to encrypt disks used by your virtual machines

Azure Disk Encryption permite criptografar os discos do sistema operacional e os discos de dados usados por uma máquina virtual IaaS.Azure Disk Encryption allows you to encrypt the OS disks and Data disks used by an IaaS Virtual Machine. No Windows, as unidades são criptografadas usando a tecnologia de criptografia BitLocker padrão do setor.For Windows, the drives are encrypted using industry-standard BitLocker encryption technology. No Linux, os discos são criptografados usando a tecnologia DM-Crypt.For Linux, the disks are encrypted using the DM-Crypt technology. Esse recurso é integrado ao Cofre de Chaves do Azure para permitir que você controle e gerencie as chaves de criptografia de disco.This is integrated with Azure Key Vault to allow you to control and manage the disk encryption keys.

A solução dá suporte aos seguintes cenários para VMs IaaS quando habilitados no Microsoft Azure:The solution supports the following scenarios for IaaS VMs when they are enabled in Microsoft Azure:

  • Integração com o Cofre da Chave do AzureIntegration with Azure Key Vault
  • VMs da camada Standard: VMs IaaS das séries A, D, DS, G, GS e assim por dianteStandard tier VMs: A, D, DS, G, GS, and so forth series IaaS VMs
  • Como habilitar a criptografia em VMs IaaS Windows e LinuxEnabling encryption on Windows and Linux IaaS VMs
  • Como desabilitar a criptografia em unidades do sistema operacional e de dados para VMs IaaS do WindowsDisabling encryption on OS and data drives for Windows IaaS VMs
  • Como desabilitar a criptografia em unidades de dados para VMs IaaS do LinuxDisabling encryption on data drives for Linux IaaS VMs
  • Ativando a criptografia em VMs IaaS que estão executando o sistema operacional cliente WindowsEnabling encryption on IaaS VMs that are running Windows client OS
  • Como habilitar a criptografia em volumes com caminhos de montagemEnabling encryption on volumes with mount paths
  • Habilitação da criptografia em VMs do Linux que estão configuradas com distribuição de discos (RAID) usando o mdadmEnabling encryption on Linux VMs that are configured with disk striping (RAID) by using mdadm
  • Como habilitar a criptografia em VMs do Linux usando LVM para discos de dadosEnabling encryption on Linux VMs by using LVM for data disks
  • Ativando a criptografia em VMs do Windows que são configurados usando espaços de armazenamentoEnabling encryption on Windows VMs that are configured by using storage spaces
  • Há suporte para todas as regiões públicas do AzureAll Azure public regions are supported

A solução não dá suporte aos seguintes cenários, recursos e tecnologia na versão:The solution does not support the following scenarios, features, and technology in the release:

  • VMs IaaS da camada BásicaBasic tier IaaS VMs
  • Como desabilitar a criptografia em unidades do sistema operacional para VMs IaaS do LinuxDisabling encryption on an OS drive for Linux IaaS VMs
  • VMs de IaaS que são criadas usando o método de criação de VM clássicoIaaS VMs that are created by using the classic VM creation method
  • Integração com o Serviço de Gerenciamento de Chaves no localIntegration with your on-premises Key Management Service
  • Arquivos do Azure (sistema de arquivos compartilhados), NFS (Network File System), volumes dinâmicos e VMs do Windows configuradas com Sistemas RAID baseados em softwareAzure Files (shared file system), Network File System (NFS), dynamic volumes, and Windows VMs that are configured with software-based RAID systems

Observação

No momento, há suporte para a criptografia de disco do sistema operacional Linux nas seguintes distribuições Linux: RHEL 7.2, CentOS 7.2n e Ubuntu 16.04.Linux OS disk encryption is currently supported on the following Linux distributions: RHEL 7.2, CentOS 7.2n, and Ubuntu 16.04.

Esse recurso garante que todos os dados nos discos da máquina virtual sejam criptografados em repouso no Armazenamento do Microsoft Azure.This feature ensures that all data on your virtual machine disks is encrypted at rest in Azure Storage.

ImplanteResources

Comparação do Azure Disk Encryption, da SSE e da Criptografia do ClienteComparison of Azure Disk Encryption, SSE, and Client-Side Encryption

VMs IaaS e seus arquivos VHDIaaS VMs and their VHD files

Para discos de dados usados por VMs IaaS, recomenda-se a Azure Disk Encryption.For data disks used by IaaS VMs, Azure Disk Encryption is recommended. Se você criar uma VM com discos não gerenciados usando uma imagem do Azure Marketplace, o Azure realizara uma cópia superficial da imagem na sua conta de armazenamento no Armazenamento do Microsoft Azure e ela não será criptografada mesmo que você tenha habilitado a SSE.If you create a VM with unmanaged disks using an image from the Azure Marketplace, Azure performs a shallow copy of the image to your storage account in Azure Storage, and it is not encrypted even if you have SSE enabled. Depois de criar a VM e iniciar a atualização da imagem, a SSE começará a criptografia dos dados.After it creates the VM and starts updating the image, SSE will start encrypting the data. Por esse motivo, é recomendável utilizar o Azure Disk Encryption em VMs com discos não gerenciados criados a partir de imagens no Azure Marketplace, caso queira que sejam totalmente criptografadas.For this reason, it's best to use Azure Disk Encryption on VMs with unmanaged disks created from images in the Azure Marketplace if you want them fully encrypted. Se você criar uma VM com discos gerenciados, a SSE criptografará todos os dados por padrão usando as chaves gerenciadas por plataforma.If you create a VM with Managed Disks, SSE encrypts all the data by default using platform managed keys.

Ao transferir uma VM local previamente criptografada para o Azure, você pode carregar as chaves de criptografia no Cofre de Chaves do Azure e continuar usando a criptografia que estava usando no local para essa VM.If you bring a pre-encrypted VM into Azure from on-premises, you will be able to upload the encryption keys to Azure Key Vault, and continue using the encryption for that VM that you were using on-premises. O Azure Disk Encryption está habilitado para lidar com esse cenário.Azure Disk Encryption is enabled to handle this scenario.

Caso você tenha um VHD não criptografado no local, será possível carregá-lo na galeria como uma imagem personalizada e provisionar uma VM dela.If you have non-encrypted VHD from on-premises, you can upload it into the gallery as a custom image and provision a VM from it. Se fizer isso usando os modelos do Gerenciador de Recursos, você poderá pedir para ativar o Azure Disk Encryption quando a VM for inicializada.If you do this using the Resource Manager templates, you can ask it to turn on Azure Disk Encryption when it boots up the VM.

Ao adicionar um disco de dados e montá-lo na VM, você pode ativar o Azure Disk Encryption nesse disco de dados.When you add a data disk and mount it on the VM, you can turn on Azure Disk Encryption on that data disk. Ele criptografará primeiro esse disco de dados localmente e depois a camada de modelo de implantação clássica fará uma gravação lenta no armazenamento para que o conteúdo do armazenamento seja criptografado.It will encrypt that data disk locally first, and then the classic deployment model layer will do a lazy write against storage so the storage content is encrypted.

Criptografia do clienteClient-side encryption

A criptografia do lado do cliente é o método mais seguro de criptografar seus dados, porque faz isso antes da transmissão.Client-side encryption is the most secure method of encrypting your data, because it encrypts data prior to transit. No entanto, ela exige a adição de código aos aplicativos usando armazenamento, o que talvez não seja conveniente.However, it does require that you add code to your applications using storage, which you may not want to do. Nesses casos, você pode usar HTTPS para proteger os dados em trânsito.In those cases, you can use HTTPS to secure your data in transit. Quando os dados alcançam o Armazenamento do Microsoft Azure, são criptografados por SSE.Once data reaches Azure Storage, it is encrypted by SSE.

Com a criptografia do cliente, você pode criptografar entidades de tabela, mensagens da fila e blobs.With client-side encryption, you can encrypt table entities, queue messages, and blobs.

A criptografia do cliente é totalmente gerenciada pelo aplicativo.Client-side encryption is managed entirely by the application. Essa é a abordagem mais segura, mas exige que você faça alterações programáticas no aplicativo e implemente processos de gerenciamento de chaves.This is the most secure approach, but does require you to make programmatic changes to your application and put key management processes in place. Você a usa quando deseja segurança extra durante a transferência e que os dados armazenados sejam criptografados.You would use this when you want the extra security during transit, and you want your stored data to be encrypted.

A criptografia do cliente significa mais carga no cliente, e você deve levar isso em conta em seus planos de escalabilidade, especialmente se estiver criptografando e transferindo uma enorme quantidade de dados.Client-side encryption is more load on the client, and you have to account for this in your scalability plans, especially if you are encrypting and transferring a large amount of data.

SSE (Criptografia do Serviço de Armazenamento)Storage Service Encryption (SSE)

A SSE é gerenciada pelo Armazenamento do Microsoft Azure.SSE is managed by Azure Storage. A SSE não fornece segurança aos dados em trânsito, mas ela criptografa os dados conforme eles são gravados no Armazenamento do Microsoft Azure.SSE does not provide for the security of the data in transit, but it does encrypt the data as it is written to Azure Storage. A SSE não afeta o desempenho do Armazenamento do Microsoft Azure.SSE does not affect Azure Storage performance.

Você pode criptografar qualquer tipo de dados da conta de armazenamento usando SSE (blobs de blocos, blobs de acréscimo, blobs de página, dados de tabela, dados da fila e arquivos).You can encrypt any kind of data of the storage account using SSE (block blobs, append blobs, page blobs, table data, queue data, and files).

Se tiver um arquivo ou uma biblioteca de arquivos VHD que usa como base para a criação de novas máquinas virtuais, você poderá criar uma nova conta de armazenamento e carregar os arquivos VHD nessa conta.If you have an archive or library of VHD files that you use as a basis for creating new virtual machines, you can create a new storage account and then upload the VHD files to that account. Esses arquivos VHD serão criptografados pelo Armazenamento do Microsoft Azure.Those VHD files will be encrypted by Azure Storage.

Se você tiver habilitado o Azure Disk Encryption para os discos em uma VM, todos os dados recém-gravados serão criptografados tanto pela SSE como pela Azure Disk Encryption.If you have Azure Disk Encryption enabled for the disks in a VM, then any newly written data is encrypted both by SSE and by Azure Disk Encryption.

Análise de ArmazenamentoStorage Analytics

Usando a Análise de Armazenamento para monitorar o tipo de autorizaçãoUsing Storage Analytics to monitor authorization type

Para cada conta de armazenamento, você pode habilitar a Análise de Armazenamento do Azure para realizar o registro em log e armazenar dados de métricas.For each storage account, you can enable Azure Storage Analytics to perform logging and store metrics data. Essa é uma excelente ferramenta a ser usada quando você quiser verificar as métricas de desempenho de uma conta de armazenamento ou quando precisar solucionar problemas de uma conta de armazenamento porque está tendo problemas de desempenho.This is a great tool to use when you want to check the performance metrics of a storage account, or need to troubleshoot a storage account because you are having performance problems.

Outra parte dos dados que você pode ver nos logs da análise de armazenamento é o método de autenticação usado por uma pessoa quando ela acessa o armazenamento.Another piece of data you can see in the storage analytics logs is the authentication method used by someone when they access storage. Por exemplo, no Armazenamento de Blobs, você pode ver se a pessoa usou uma Assinatura de Acesso Compartilhado ou as chaves da conta de armazenamento, ou se o blob acessado era público.For example, with Blob Storage, you can see if they used a Shared Access Signature or the storage account keys, or if the blob accessed was public.

Isso pode ser útil se você estiver protegendo rigorosamente o acesso ao armazenamento.This can be helpful if you are tightly guarding access to storage. Por exemplo, no Armazenamento de Blobs, é possível definir todos os contêineres para privado e implementar o uso de um serviço SAS em todos os aplicativos.For example, in Blob Storage you can set all of the containers to private and implement the use of an SAS service throughout your applications. Desse modo, você pode verificar os logs regularmente para ver se seus blobs são acessados usando as chaves da conta de armazenamento, que pode indicar uma violação de segurança ou se os blobs são públicos, mas não deveriam ser.Then you can check the logs regularly to see if your blobs are accessed using the storage account keys, which may indicate a breach of security, or if the blobs are public but they shouldn't be.

Como os logs devem ser?What do the logs look like?

Depois de habilitar o registro em log e as métricas da conta de armazenamento usando o Portal do Azure, os dados de análise começarão a se acumular rapidamente.After you enable the storage account metrics and logging through the Azure portal, analytics data will start to accumulate quickly. O registro em log e as métricas para cada serviço são distintos; o registro em log é feito apenas quando há atividade na conta de armazenamento, enquanto as métricas são registradas a cada minuto, de hora em hora, ou todos os dias, de acordo com a configuração.The logging and metrics for each service is separate; the logging is only written when there is activity in that storage account, while the metrics will be logged every minute, every hour, or every day, depending on how you configure it.

Os logs são armazenados em blobs de blocos em um contêiner chamado $logs na conta de armazenamento.The logs are stored in block blobs in a container named $logs in the storage account. Esse contêiner é criado automaticamente quando a Análise de Armazenamento é habilitada.This container is automatically created when Storage Analytics is enabled. Uma vez criado, esse contêiner não pode ser excluído, embora você possa excluir seu conteúdo.Once this container is created, you can't delete it, although you can delete its contents.

No contêiner $logs, há uma pasta para cada serviço e há subpastas para ano/mês/dia/hora.Under the $logs container, there is a folder for each service, and then there are subfolders for the year/month/day/hour. Em hora, os logs são numerados.Under hour, the logs are numbered. Esta é a aparência da estrutura do diretório:This is what the directory structure will look like:

Exibição dos arquivos de log

Cada solicitação no Armazenamento do Azure é registrada.Every request to Azure Storage is logged. Veja um instantâneo de um arquivo de log, mostrando os primeiros campos.Here's a snapshot of a log file, showing the first few fields.

Instantâneo de um arquivo de log

É possível ver que você pode usar os logs para rastrear qualquer tipo de chamada para uma conta de armazenamento.You can see that you can use the logs to track any kind of calls to a storage account.

Para que servem todos esses campos?What are all of those fields for?

Há um artigo listado nos recursos abaixo que fornece a lista dos muitos campos nos logs e para que eles são usados.There is an article listed in the resources below that provides the list of the many fields in the logs and what they are used for. Veja a lista de campos na ordem:Here is the list of fields in order:

Instantâneo de campos em um arquivo de log

Estamos interessados nas entradas para GetBlob e em como elas são autorizadas, de modo que precisamos procurar entradas com operation-type "Get-Blob" e verificar request-status (quarta coluna) e authorization-type (oitava coluna).We're interested in the entries for GetBlob, and how they are authorized, so we need to look for entries with operation-type "Get-Blob", and check the request-status (fourth column) and the authorization-type (eighth column).

Por exemplo, nas primeiras linhas na lista acima, request-status é "Success" e authorization-type é "authenticated".For example, in the first few rows in the listing above, the request-status is "Success" and the authorization-type is "authenticated". Isso significa que a solicitação foi autorizada usando a chave da conta de armazenamento.This means the request was authorized using the storage account key.

Como o acesso aos meus blobs está sendo autorizado?How is access to my blobs being authorized?

Temos três casos que nos interessam.We have three cases that we are interested in.

  1. O blob é público e é acessado usando uma URL sem uma Assinatura de Acesso Compartilhado.The blob is public and it is accessed using a URL without a Shared Access Signature. Nesse caso, request-status é "AnonymousSuccess" e authorization-type é "anonymous".In this case, the request-status is "AnonymousSuccess" and the authorization-type is "anonymous".

    1.0;2015-11-17T02:01:29.0488963Z;GetBlob;AnonymousSuccess;200;124;37;anonymous;;mystorage…1.0;2015-11-17T02:01:29.0488963Z;GetBlob;AnonymousSuccess;200;124;37;anonymous;;mystorage…

  2. O blob é privado e foi usado com uma Assinatura de Acesso Compartilhado.The blob is private and was used with a Shared Access Signature. Nesse caso, request-status é "SASSuccess" e authorization-type é "sas".In this case, the request-status is "SASSuccess" and the authorization-type is "sas".

    1.0;2015-11-16T18:30:05.6556115Z;GetBlob;SASSuccess;200;416;64;sas;;mystorage…1.0;2015-11-16T18:30:05.6556115Z;GetBlob;SASSuccess;200;416;64;sas;;mystorage…

  3. O blob é privado e a chave de armazenamento foi usada para acessá-lo.The blob is private and the storage key was used to access it. Nesse caso, request-status é "Success" e authorization-type é "authenticated".In this case, the request-status is "Success" and the authorization-type is "authenticated".

    1.0;2015-11-16T18:32:24.3174537Z;GetBlob;Success;206;59;22;authenticated;mystorage…1.0;2015-11-16T18:32:24.3174537Z;GetBlob;Success;206;59;22;authenticated;mystorage…

Você pode usar o Analisador de Mensagem da Microsoft para exibir e analisar esses logs.You can use the Microsoft Message Analyzer to view and analyze these logs. Ele inclui recursos de pesquisa e filtro.It includes search and filter capabilities. Por exemplo, talvez você queira procurar instâncias de GetBlob para ver se o uso é o esperado, isto é, para garantir que ninguém esteja acessando a conta de armazenamento indevidamente.For example, you might want to search for instances of GetBlob to see if the usage is what you expect, that is, to make sure someone is not accessing your storage account inappropriately.

ImplanteResources

CORS (Compartilhamento de recursos entre origens)Cross-Origin Resource Sharing (CORS)

Acesso de recursos entre domíniosCross-domain access of resources

Quando um navegador da Web em execução em um domínio faz uma solicitação HTTP a um recurso de outro domínio, isso é chamado de solicitação HTTP entre origens.When a web browser running in one domain makes an HTTP request for a resource from a different domain, this is called a cross-origin HTTP request. Por exemplo, uma página HTML no site da contoso.com faz uma solicitação para um jpeg hospedado em fabrikam.blob.core.windows.net.For example, an HTML page served from contoso.com makes a request for a jpeg hosted on fabrikam.blob.core.windows.net. Por motivos de segurança, os navegadores restringem as solicitações HTTP entre origens iniciadas dentro de scripts, como JavaScript.For security reasons, browsers restrict cross-origin HTTP requests initiated from within scripts, such as JavaScript. Isso significa que quando algum código JavaScript em uma página da Web de contoso.com solicita esse jpeg em fabrikam.blob.core.windows.net, o navegador não permite a solicitação.This means that when some JavaScript code on a web page on contoso.com requests that jpeg on fabrikam.blob.core.windows.net, the browser will not allow the request.

O que isso tem a ver com o Armazenamento do Azure?What does this have to do with Azure Storage? Bem, se você estiver armazenando ativos estáticos, como arquivos de dados XML ou JSON no Armazenamento de Blobs usando uma conta de armazenamento chamada Fabrikam, o domínio para os ativos será fabrikam.blob.core.windows.net e o aplicativo Web contoso.com não poderá acessá-los usando JavaScript porque os domínios são diferentes.Well, if you are storing static assets such as JSON or XML data files in Blob Storage using a storage account called Fabrikam, the domain for the assets will be fabrikam.blob.core.windows.net, and the contoso.com web application will not be able to access them using JavaScript because the domains are different. Isso também se aplicará se você estiver tentando chamar um dos Serviços de Armazenamento do Azure (como o Armazenamento de Tabelas) que retornam dados JSON para serem processados pelo cliente JavaScript.This is also true if you're trying to call one of the Azure Storage Services – such as Table Storage – that return JSON data to be processed by the JavaScript client.

Soluções possíveisPossible solutions

Uma maneira de resolver isso é atribuir um domínio personalizado, como "storage.contoso.com" a fabrikam.blob.core.windows.net.One way to resolve this is to assign a custom domain like "storage.contoso.com" to fabrikam.blob.core.windows.net. O problema é que você só pode atribuir esse domínio personalizado a uma conta de armazenamento.The problem is that you can only assign that custom domain to one storage account. E se os ativos estiverem armazenados em várias contas de armazenamento?What if the assets are stored in multiple storage accounts?

Outra maneira de resolver esse problema é ter o aplicativo Web que atua como proxy para as chamadas de armazenamento.Another way to resolve this is to have the web application act as a proxy for the storage calls. Isso significa que se você estiver carregando um arquivo no Armazenamento de Blobs, o aplicativo Web o gravará localmente e, em seguida, o copiará no Armazenamento de Blobs, ou lerá todo ele na memória e depois o gravará no Armazenamento de Blobs.This means if you are uploading a file to Blob Storage, the web application would either write it locally and then copy it to Blob Storage, or it would read all of it into memory and then write it to Blob Storage. Como alternativa, você escrever um aplicativo Web dedicado (como uma API Web) que carrega os arquivos localmente e os grava no Armazenamento de Blobs.Alternately, you could write a dedicated web application (such as a Web API) that uploads the files locally and writes them to Blob Storage. De qualquer forma, é preciso prestar contas a essa função ao determinar a escalabilidade necessária.Either way, you have to account for that function when determining the scalability needs.

Como o CORS pode ajudar?How can CORS help?

O Armazenamento do Azure permite habilitar o CORS – Compartilhamento de Recursos entre Origens.Azure Storage allows you to enable CORS – Cross Origin Resource Sharing. Para cada conta de armazenamento, é possível especificar os domínios que podem acessar os recursos na conta de armazenamento.For each storage account, you can specify domains that can access the resources in that storage account. Por exemplo, no caso descrito acima, podemos pode habilitar o CORS na conta de armazenamento fabrikam.blob.core.windows.net e configurá-lo para permitir o acesso em contoso.com.For example, in our case outlined above, we can enable CORS on the fabrikam.blob.core.windows.net storage account and configure it to allow access to contoso.com. Assim, o aplicativo Web de contoso.com pode acessar diretamente os recursos em fabrikam.blob.core.windows.net.Then the web application contoso.com can directly access the resources in fabrikam.blob.core.windows.net.

Observe que o CORS permite o acesso, mas não fornece autenticação, que é obrigatória para todo acesso não público dos recursos de armazenamento.One thing to note is that CORS allows access, but it does not provide authentication, which is required for all non-public access of storage resources. Isso significa que você poderá acessar blobs somente se eles forem públicos ou se incluir uma Assinatura de Acesso Compartilhado dando a você permissão adequada.This means you can only access blobs if they are public or you include a Shared Access Signature giving you the appropriate permission. Arquivos, filas e tabelas não têm acesso público e exigem uma SAS.Tables, queues, and files have no public access, and require a SAS.

Por padrão, o CORS está desabilitado em todos os serviçosBy default, CORS is disabled on all services. Você pode habilitar o CORS usando a API REST ou a biblioteca de cliente de armazenamento para chamar um dos métodos e definir as políticas de serviço.You can enable CORS by using the REST API or the storage client library to call one of the methods to set the service policies. Ao fazer isso, você inclui uma regra de CORS, que está em XML.When you do that, you include a CORS rule, which is in XML. Veja um exemplo de uma regra de CORS que foi definida usando a operação Definir Propriedades de Serviço para o Serviço Blob de uma conta de armazenamento.Here's an example of a CORS rule that has been set using the Set Service Properties operation for the Blob Service for a storage account. Você pode executar essa operação usando a biblioteca de cliente de armazenamento ou as APIs REST do Armazenamento do Microsoft Azure.You can perform that operation using the storage client library or the REST APIs for Azure Storage.

<Cors>    
    <CorsRule>
        <AllowedOrigins>http://www.contoso.com, http://www.fabrikam.com</AllowedOrigins>
        <AllowedMethods>PUT,GET</AllowedMethods>
        <AllowedHeaders>x-ms-meta-data*,x-ms-meta-target*,x-ms-meta-abc</AllowedHeaders>
        <ExposedHeaders>x-ms-meta-*</ExposedHeaders>
        <MaxAgeInSeconds>200</MaxAgeInSeconds>
    </CorsRule>
<Cors>

Veja o que cada linha significa:Here's what each row means:

  • AllowedOrigins Informa quais domínios não correspondentes podem solicitar e receber dados do serviço de armazenamento.AllowedOrigins This tells which non-matching domains can request and receive data from the storage service. Isso significa que contoso.com e fabrikam.com podem solicitar dados do Armazenamento de Blobs para uma conta de armazenamento específica.This says that both contoso.com and fabrikam.com can request data from Blob Storage for a specific storage account. Você também pode defini-lo para um caractere curinga (*) a fim de permitir que todos os domínios acessem solicitações.You can also set this to a wildcard (*) to allow all domains to access requests.
  • AllowedMethods Essa é a lista de métodos (verbos de solicitação HTTP) que podem ser usados ao fazer a solicitação.AllowedMethods This is the list of methods (HTTP request verbs) that can be used when making the request. Neste exemplo, apenas PUT e GET são permitidos.In this example, only PUT and GET are allowed. Você pode defini-lo para um caractere curinga (*) a fim de permitir que todos os métodos sejam usados.You can set this to a wildcard (*) to allow all methods to be used.
  • AllowedHeaders Esses são os cabeçalhos de solicitação que o domínio de origem pode especificar ao fazer a solicitação.AllowedHeaders This is the request headers that the origin domain can specify when making the request. No exemplo acima, todos os cabeçalhos de metadados, começando com x-ms-meta-data, x-ms-meta-target e x-ms-meta-abc, são permitidos.In this example, all metadata headers starting with x-ms-meta-data, x-ms-meta-target, and x-ms-meta-abc are permitted. O caractere curinga (*) indica que todos os cabeçalhos que começam com o prefixo especificado são permitidos.The wildcard character (*) indicates that any header beginning with the specified prefix is allowed.
  • ExposedHeaders Informa que os cabeçalhos de resposta devem ser expostos pelo navegador ao emissor da solicitação.ExposedHeaders This tells which response headers should be exposed by the browser to the request issuer. Neste exemplo, qualquer cabeçalho que começar com "x-ms-meta-" será exposto.In this example, any header starting with "x-ms-meta-" will be exposed.
  • MaxAgeInSeconds Essa é a quantidade máxima de tempo que um navegador armazenará em cache a solicitação OPTIONS de simulação.MaxAgeInSeconds This is the maximum amount of time that a browser will cache the preflight OPTIONS request. (Para obter mais informações sobre a solicitação de simulação, verifique o primeiro artigo abaixo).(For more information about the preflight request, check the first article below.)

ImplanteResources

Para obter mais informações sobre o CORS e como habilitá-lo, verifique estes recursos.For more information about CORS and how to enable it, check out these resources.

Perguntas frequentes sobre a segurança do Armazenamento do AzureFrequently asked questions about Azure Storage security

  1. Como poderei verificar a integridade dos blobs que estou transferindo para dentro ou para fora do Armazenamento do Azure se eu não puder usar o protocolo HTTPS?How can I verify the integrity of the blobs I'm transferring into or out of Azure Storage if I can't use the HTTPS protocol?

    Se, por algum motivo, você precisar usar HTTP em vez de HTTPS e estiver trabalhando com blobs de bloco, você poderá usar a verificação MD5 para ajudar a averiguar a integridade dos blobs que estão sendo transferidos.If for any reason you need to use HTTP instead of HTTPS and you are working with block blobs, you can use MD5 checking to help verify the integrity of the blobs being transferred. Isso ajudará na proteção contra erros na camada de rede/transporte, mas não necessariamente contra ataques de intermediários.This will help with protection from network/transport layer errors, but not necessarily with intermediary attacks.

    Se você puder usar HTTPS, que fornece segurança em nível de transporte, o uso da verificação MD5 será redundante e desnecessário.If you can use HTTPS, which provides transport level security, then using MD5 checking is redundant and unnecessary.

    Para saber mais, confira Azure Blob MD5 Overview(Visão geral do MD5 do Blob do Azure).For more information, please check out the Azure Blob MD5 Overview.

  2. E quanto à conformidade com o padrão FIPS do governo dos EUA norte-americano?What about FIPS-Compliance for the U.S. Government?

    O FIPS (Federal Information Processing Standard) dos Estados Unidos da América define algoritmos criptográficos aprovados para uso pelos sistemas de computadores do governo federal dos EUA para proteção de dados confidenciais.The United States Federal Information Processing Standard (FIPS) defines cryptographic algorithms approved for use by U.S. Federal government computer systems for the protection of sensitive data. Habilitar o modo FIPS em um servidor ou desktop Windows informa ao sistema operacional que apenas algoritmos criptográficos validados pelo FIPS devem ser usados.Enabling FIPS mode on a Windows server or desktop tells the OS that only FIPS-validated cryptographic algorithms should be used. Se um aplicativo usar algoritmos fora de conformidade, ele será interrompido.If an application uses non-compliant algorithms, the applications will break. Com as versões 4.5.2 ou superiores do .NET Framework, o aplicativo alterna automaticamente os algoritmos da criptografia para usar algoritmos em conformidade com o FIPS quando o computador estiver no modo FIPS.With.NET Framework versions 4.5.2 or higher, the application automatically switches the cryptography algorithms to use FIPS-compliant algorithms when the computer is in FIPS mode.

    A Microsoft deixa que cada cliente decida se habilita ou não o modo FIPS.Microsoft leaves it up to each customer to decide whether to enable FIPS mode. Acreditamos que não há nenhum motivo convincente para os clientes que não estão sujeitos a normas governamentais habilitarem o modo FIPS por padrão.We believe there is no compelling reason for customers who are not subject to government regulations to enable FIPS mode by default.

ImplanteResources