Criptografia de armazenamento do Azure para dados em repousoAzure Storage encryption for data at rest

O armazenamento do Azure criptografa automaticamente seus dados ao mantê-los para a nuvem.Azure Storage automatically encrypts your data when persisting it to the cloud. A criptografia protege seus dados e para ajudá-lo a atender aos compromissos de segurança e conformidade da organização.Encryption protects your data and to help you to meet your organizational security and compliance commitments. Os dados no armazenamento do Azure são criptografados e descriptografados de forma transparente usando a criptografia AESde 256 bits, uma das codificações de bloco mais fortes disponíveis e é compatível com o FIPS 140-2.Data in Azure Storage is encrypted and decrypted transparently using 256-bit AES encryption, one of the strongest block ciphers available, and is FIPS 140-2 compliant. A criptografia de armazenamento do Azure é semelhante à criptografia BitLocker no Windows.Azure Storage encryption is similar to BitLocker encryption on Windows.

A criptografia de armazenamento do Azure está habilitada para todas as novas contas de armazenamento e não pode ser desabilitada.Azure Storage encryption is enabled for all new storage accounts and cannot be disabled. Como os dados são protegidos por padrão, você não precisa modificar seu código ou aplicativos para tirar proveito da criptografia de armazenamento do Azure.Because your data is secured by default, you don't need to modify your code or applications to take advantage of Azure Storage encryption.

As contas de armazenamento são criptografadas independentemente de seu nível de desempenho (Standard ou Premium) ou modelo de implantação (Azure Resource Manager ou clássico).Storage accounts are encrypted regardless of their performance tier (standard or premium) or deployment model (Azure Resource Manager or classic). Todas as opções de redundância de armazenamento do Azure dão suporte à criptografia e todas as cópias de uma conta de armazenamento são criptografadas.All Azure Storage redundancy options support encryption, and all copies of a storage account are encrypted. Todos os recursos de armazenamento do Azure são criptografados, incluindo BLOBs, discos, arquivos, filas e tabelas.All Azure Storage resources are encrypted, including blobs, disks, files, queues, and tables. Todos os metadados de objeto também são criptografados.All object metadata is also encrypted.

A criptografia não afeta o desempenho do armazenamento do Azure.Encryption does not affect Azure Storage performance. Não há nenhum custo adicional para a criptografia de armazenamento do Azure.There is no additional cost for Azure Storage encryption.

Para obter mais informações sobre os módulos de criptografia subjacentes à criptografia de armazenamento do Azure, consulte API de criptografia: próxima geração.For more information about the cryptographic modules underlying Azure Storage encryption, see Cryptography API: Next Generation.

Sobre o gerenciamento de chaves de criptografiaAbout encryption key management

Você pode contar com chaves gerenciadas pela Microsoft para a criptografia da sua conta de armazenamento ou pode gerenciar a criptografia com suas próprias chaves.You can rely on Microsoft-managed keys for the encryption of your storage account, or you can manage encryption with your own keys. Se você optar por gerenciar a criptografia com suas próprias chaves, terá duas opções:If you choose to manage encryption with your own keys, you have two options:

  • Você pode especificar uma chave gerenciada pelo cliente a ser usada para criptografar e descriptografar todos os dados na conta de armazenamento.You can specify a customer-managed key to use for encrypting and decrypting all data in the storage account. Uma chave gerenciada pelo cliente é usada para criptografar todos os dados em todos os serviços em sua conta de armazenamento.A customer-managed key is used to encrypt all data in all services in your storage account.
  • Você pode especificar uma chave fornecida pelo cliente em operações de armazenamento de BLOBs.You can specify a customer-provided key on Blob storage operations. Um cliente que faz uma solicitação de leitura ou gravação no armazenamento de blob pode incluir uma chave de criptografia na solicitação de controle granular sobre como os dados de blob são criptografados e descriptografados.A client making a read or write request against Blob storage can include an encryption key on the request for granular control over how blob data is encrypted and decrypted.

A tabela a seguir compara as principais opções de gerenciamento de criptografia do armazenamento do Azure.The following table compares key management options for Azure Storage encryption.

Chaves gerenciadas pela MicrosoftMicrosoft-managed keys Chaves gerenciadas pelo clienteCustomer-managed keys Chaves fornecidas pelo clienteCustomer-provided keys
Operações de criptografia/descriptografiaEncryption/decryption operations AzureAzure AzureAzure AzureAzure
Serviços de armazenamento do Azure com suporteAzure Storage services supported TodosAll Armazenamento de BLOBs, arquivos do AzureBlob storage, Azure Files Armazenamento de blobBlob storage
Armazenamento de chavesKey storage Repositório de chaves da MicrosoftMicrosoft key store Cofre da Chave do AzureAzure Key Vault Azure Key Vault ou qualquer outro repositório de chavesAzure Key Vault or any other key store
Responsabilidade de rotação de chaveKey rotation responsibility MicrosoftMicrosoft ClienteCustomer ClienteCustomer
Uso de chaveKey usage MicrosoftMicrosoft Portal do Azure, API REST do provedor de recursos de armazenamento, bibliotecas de gerenciamento de armazenamento do Azure, PowerShell, CLIAzure portal, Storage Resource Provider REST API, Azure Storage management libraries, PowerShell, CLI API REST do armazenamento do Azure (armazenamento de BLOB), bibliotecas de cliente de armazenamento do AzureAzure Storage REST API (Blob storage), Azure Storage client libraries
Acesso à chaveKey access Somente MicrosoftMicrosoft only Microsoft, clienteMicrosoft, Customer Somente clienteCustomer only

As seções a seguir descrevem cada uma das opções de gerenciamento de chaves mais detalhadamente.The following sections describe each of the options for key management in greater detail.

Chaves gerenciadas pela MicrosoftMicrosoft-managed keys

Por padrão, sua conta de armazenamento usa chaves de criptografia gerenciadas pela Microsoft.By default, your storage account uses Microsoft-managed encryption keys. Você pode ver as configurações de criptografia para sua conta de armazenamento na seção criptografia do portal do Azure, conforme mostrado na imagem a seguir.You can see the encryption settings for your storage account in the Encryption section of the Azure portal, as shown in the following image.

Exibir conta criptografada com chaves gerenciadas pela Microsoft

Chaves gerenciadas pelo clienteCustomer-managed keys

Você pode optar por gerenciar a criptografia de armazenamento do Azure no nível da conta de armazenamento com suas próprias chaves.You can choose to manage Azure Storage encryption at the level of the storage account with your own keys. Quando você especifica uma chave gerenciada pelo cliente no nível da conta de armazenamento, essa chave é usada para criptografar e descriptografar todos os dados na conta de armazenamento, incluindo dados de BLOB, fila, arquivo e tabela.When you specify a customer-managed key at the level of the storage account, that key is used to encrypt and decrypt all data in the storage account, including blob, queue, file, and table data. Chaves gerenciadas pelo cliente oferecem maior flexibilidade para criar, girar, desabilitar e revogar controles de acesso.Customer-managed keys offer greater flexibility to create, rotate, disable, and revoke access controls. Você também pode auditar as chaves de criptografia usadas para proteger seus dados.You can also audit the encryption keys used to protect your data.

Você deve usar Azure Key Vault para armazenar as chaves gerenciadas pelo cliente.You must use Azure Key Vault to store your customer-managed keys. Você pode criar suas próprias chaves e armazená-las em um cofre de chaves ou pode usar as APIs de Azure Key Vault para gerar chaves.You can either create your own keys and store them in a key vault, or you can use the Azure Key Vault APIs to generate keys. A conta de armazenamento e o cofre de chaves devem estar na mesma região, mas podem estar em assinaturas diferentes.The storage account and the key vault must be in the same region, but they can be in different subscriptions. Para obter mais informações sobre Azure Key Vault, consulte o que é Azure Key Vault?.For more information about Azure Key Vault, see What is Azure Key Vault?.

Este diagrama mostra como o armazenamento do Azure usa Azure Active Directory e Azure Key Vault para fazer solicitações usando a chave gerenciada pelo cliente:This diagram shows how Azure Storage uses Azure Active Directory and Azure Key Vault to make requests using the customer-managed key:

Diagrama mostrando como as chaves gerenciadas pelo cliente funcionam no armazenamento do Azure

A lista a seguir explica as etapas numeradas no diagrama:The following list explains the numbered steps in the diagram:

  1. Um administrador de Azure Key Vault concede permissões a chaves de criptografia para a identidade gerenciada associada à conta de armazenamento.An Azure Key Vault admin grants permissions to encryption keys to the managed identity that's associated with the storage account.
  2. Um administrador de armazenamento do Azure configura a criptografia com uma chave gerenciada pelo cliente para a conta de armazenamento.An Azure Storage admin configures encryption with a customer-managed key for the storage account.
  3. O armazenamento do Azure usa a identidade gerenciada associada à conta de armazenamento para autenticar o acesso a Azure Key Vault por meio de Azure Active Directory.Azure Storage uses the managed identity that's associated with the storage account to authenticate access to Azure Key Vault via Azure Active Directory.
  4. O armazenamento do Azure encapsula a chave de criptografia da conta com a chave do cliente em Azure Key Vault.Azure Storage wraps the account encryption key with the customer key in Azure Key Vault.
  5. Para operações de leitura/gravação, o armazenamento do Azure envia solicitações para Azure Key Vault encapsular e desencapsular a chave de criptografia da conta para executar operações de criptografia e descriptografia.For read/write operations, Azure Storage sends requests to Azure Key Vault to wrap and unwrap the account encryption key to perform encryption and decryption operations.

Para revogar o acesso às chaves gerenciadas pelo cliente na conta de armazenamento, consulte Azure Key Vault PowerShell e Azure Key Vault CLI.To revoke access to customer-managed keys on the storage account, see Azure Key Vault PowerShell and Azure Key Vault CLI. Revogar o acesso efetivamente bloqueia o acesso a todos os dados na conta de armazenamento, pois a chave de criptografia é inacessível pelo armazenamento do Azure.Revoking access effectively blocks access to all data in the storage account, as the encryption key is inaccessible by Azure Storage.

As chaves gerenciadas pelo cliente também estão disponíveis para o Azure Managed disks como uma visualização pública, as chaves gerenciadas pelo cliente funcionam de maneira um pouco diferente para os discos gerenciados do que o restante do armazenamento.Customer-managed keys are also available for Azure managed disks as a public preview, customer-managed keys work a bit differently for managed disks than the rest of storage. Para obter detalhes, consulte nosso artigo sobre o assunto.For details, see our article on the subject.

Para saber como usar chaves gerenciadas pelo cliente com o armazenamento do Azure, consulte um destes artigos:To learn how to use customer-managed keys with Azure Storage, see one of these articles:

Importante

As chaves gerenciadas pelo cliente dependem de identidades gerenciadas para recursos do Azure, um recurso do Azure Active Directory (Azure AD).Customer-managed keys rely on managed identities for Azure resources, a feature of Azure Active Directory (Azure AD). Quando você configura chaves gerenciadas pelo cliente no portal do Azure, uma identidade gerenciada é automaticamente atribuída à sua conta de armazenamento nos bastidores.When you configure customer-managed keys in the Azure portal, a managed identity is automatically assigned to your storage account under the covers. Se, posteriormente, você mover a assinatura, o grupo de recursos ou a conta de armazenamento de um diretório do Azure AD para outro, a identidade gerenciada associada à conta de armazenamento não será transferida para o novo locatário, portanto, as chaves gerenciadas pelo cliente poderão deixar de funcionar.If you subsequently move the subscription, resource group, or storage account from one Azure AD directory to another, the managed identity associated with the storage account is not transferred to the new tenant, so customer-managed keys may no longer work. Para obter mais informações, consulte transferindo uma assinatura entre diretórios do Azure ad em perguntas frequentes e problemas conhecidos com identidades gerenciadas para recursos do Azure.For more information, see Transferring a subscription between Azure AD directories in FAQs and known issues with managed identities for Azure resources.

Chaves fornecidas pelo cliente (versão prévia)Customer-provided keys (preview)

Os clientes que fazem solicitações no armazenamento de BLOBs do Azure têm a opção de fornecer uma chave de criptografia em uma solicitação individual.Clients making requests against Azure Blob storage have the option to provide an encryption key on an individual request. Incluir a chave de criptografia na solicitação fornece controle granular das configurações de criptografia para operações de armazenamento de BLOBs.Including the encryption key on the request provides granular control over encryption settings for Blob storage operations. As chaves fornecidas pelo cliente (versão prévia) podem ser armazenadas em Azure Key Vault ou em outro repositório de chaves.Customer-provided keys (preview) can be stored in Azure Key Vault or in another key store.

Criptografando operações de leitura e gravaçãoEncrypting read and write operations

Quando um aplicativo cliente fornece uma chave de criptografia na solicitação, o armazenamento do Azure executa criptografia e descriptografia de forma transparente ao ler e gravar dados de BLOB.When a client application provides an encryption key on the request, Azure Storage performs encryption and decryption transparently while reading and writing blob data. Um hash SHA-256 da chave de criptografia é gravado junto com o conteúdo de um blob e é usado para verificar se todas as operações subsequentes no blob usam a mesma chave de criptografia.A SHA-256 hash of the encryption key is written alongside a blob's contents and is used to verify that all subsequent operations against the blob use the same encryption key. O armazenamento do Azure não armazena ou gerencia a chave de criptografia que o cliente envia com a solicitação.Azure Storage does not store or manage the encryption key that the client sends with the request. A chave é descartada com segurança assim que o processo de criptografia ou descriptografia estiver concluído.The key is securely discarded as soon as the encryption or decryption process is complete.

Quando um cliente cria ou atualiza um BLOB usando uma chave fornecida pelo cliente, as solicitações de leitura e gravação subsequentes para esse blob também devem fornecer a chave.When a client creates or updates a blob using a customer-provided key, then subsequent read and write requests for that blob must also provide the key. Se a chave não for fornecida em uma solicitação para um blob que já foi criptografado com uma chave fornecida pelo cliente, a solicitação falhará com o código de erro 409 (conflito).If the key is not provided on a request for a blob that has already been encrypted with a customer-provided key, then the request fails with error code 409 (Conflict).

Se o aplicativo cliente enviar uma chave de criptografia na solicitação e a conta de armazenamento também for criptografada usando uma chave gerenciada pela Microsoft ou uma chave gerenciada pelo cliente, o armazenamento do Azure usará a chave fornecida na solicitação de criptografia e descriptografia.If the client application sends an encryption key on the request, and the storage account is also encrypted using a Microsoft-managed key or a customer-managed key, then Azure Storage uses the key provided on the request for encryption and decryption.

Para enviar a chave de criptografia como parte da solicitação, um cliente deve estabelecer uma conexão segura com o armazenamento do Azure usando HTTPS.To send the encryption key as part of the request, a client must establish a secure connection to Azure Storage using HTTPS.

Cada instantâneo de blob pode ter sua própria chave de criptografia.Each blob snapshot can have its own encryption key.

Cabeçalhos de solicitação para especificar chaves fornecidas pelo clienteRequest headers for specifying customer-provided keys

Para chamadas REST, os clientes podem usar os seguintes cabeçalhos para transmitir informações de chave de criptografia com segurança em uma solicitação para o armazenamento de BLOBs:For REST calls, clients can use the following headers to securely pass encryption key information on a request to Blob storage:

Cabeçalho da SolicitaçãoRequest Header DESCRIÇÃODescription
x-ms-encryption-key Necessário para solicitações de gravação e leitura.Required for both write and read requests. Um valor de chave de criptografia AES-256 codificado na base64.A Base64-encoded AES-256 encryption key value.
x-ms-encryption-key-sha256 Necessário para solicitações de gravação e leitura.Required for both write and read requests. A SHA256 codificada em base64 da chave de criptografia.The Base64-encoded SHA256 of the encryption key.
x-ms-encryption-algorithm Necessário para solicitações de gravação, opcional para solicitações de leitura.Required for write requests, optional for read requests. Especifica o algoritmo a ser usado ao criptografar dados usando a chave especificada.Specifies the algorithm to use when encrypting data using the given key. Deve ser AES256.Must be AES256.

A especificação de chaves de criptografia na solicitação é opcional.Specifying encryption keys on the request is optional. No entanto, se você especificar um dos cabeçalhos listados acima para uma operação de gravação, deverá especificar todos eles.However, if you specify one of the headers listed above for a write operation, then you must specify all of them.

Operações de armazenamento de BLOBs que dão suporte a chaves fornecidas pelo clienteBlob storage operations supporting customer-provided keys

As operações de armazenamento de blob a seguir dão suporte ao envio de chaves de criptografia fornecidas pelo cliente em uma solicitação:The following Blob storage operations support sending customer-provided encryption keys on a request:

Girar chaves fornecidas pelo clienteRotate customer-provided keys

Para girar uma chave de criptografia passada na solicitação, baixe o blob e carregue-o novamente com a nova chave de criptografia.To rotate an encryption key passed on the request, download the blob and re-upload it with the new encryption key.

Importante

O portal do Azure não pode ser usado para ler ou gravar em um contêiner ou BLOB que é criptografado com uma chave fornecida na solicitação.The Azure portal cannot be used to read from or write to a container or blob that is encrypted with a key provided on the request.

Certifique-se de proteger a chave de criptografia que você fornece em uma solicitação de armazenamento de BLOBs em um repositório de chaves seguro, como Azure Key Vault.Be sure to protect the encryption key that you provide on a request to Blob storage in a secure key store like Azure Key Vault. Se você tentar uma operação de gravação em um contêiner ou BLOB sem a chave de criptografia, a operação falhará e você perderá o acesso ao objeto.If you attempt a write operation on a container or blob without the encryption key, the operation will fail, and you will lose access to the object.

Exemplo: usar uma chave fornecida pelo cliente para carregar um blob no .NETExample: Use a customer-provided key to upload a blob in .NET

O exemplo a seguir cria uma chave fornecida pelo cliente e usa essa chave para carregar um blob.The following example creates a customer-provided key and uses that key to upload a blob. O código carrega um bloco e, em seguida, confirma a lista de blocos para gravar o blob no armazenamento do Azure.The code uploads a block, then commits the block list to write the blob to Azure Storage. A chave é fornecida no objeto BlobRequestOptions definindo a propriedade CustomerProvidedKey .The key is provided on the BlobRequestOptions object by setting the CustomerProvidedKey property.

A chave é criada com a classe AesCryptoServiceProvider .The key is created with the AesCryptoServiceProvider class. Para criar uma instância dessa classe em seu código, adicione uma instrução using que referencie o namespace System.Security.Cryptography:To create an instance of this class in your code, add a using statement that references the System.Security.Cryptography namespace:

public static void UploadBlobWithClientKey(CloudBlobContainer container)
{
    // Create a new key using the Advanced Encryption Standard (AES) algorithm.
    AesCryptoServiceProvider keyAes = new AesCryptoServiceProvider();

    // Specify the key as an option on the request.
    BlobCustomerProvidedKey customerProvidedKey = new BlobCustomerProvidedKey(keyAes.Key);
    var options = new BlobRequestOptions
    {
        CustomerProvidedKey = customerProvidedKey
    };

    string blobName = "sample-blob-" + Guid.NewGuid();
    CloudBlockBlob blockBlob = container.GetBlockBlobReference(blobName);

    try
    {
        // Create an array of random bytes.
        byte[] buffer = new byte[1024];
        Random rnd = new Random();
        rnd.NextBytes(buffer);

        using (MemoryStream sourceStream = new MemoryStream(buffer))
        {
            // Write the array of random bytes to a block.
            int blockNumber = 1;
            string blockId = Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("BlockId{0}",
                blockNumber.ToString("0000000"))));

            // Write the block to Azure Storage.
            blockBlob.PutBlock(blockId, sourceStream, null, null, options, null);

            // Commit the block list to write the blob.
            blockBlob.PutBlockList(new List<string>() { blockId }, null, options, null);
        }
    }
    catch (StorageException e)
    {
        Console.WriteLine(e.Message);
        Console.ReadLine();
        throw;
    }
}

Criptografia de armazenamento do Azure versus criptografia de discoAzure Storage encryption versus disk encryption

A criptografia de armazenamento do Azure criptografa os blobs de páginas que retornam discos de máquina virtual do Azure.Azure Storage encryption encrypts the page blobs that back Azure virtual machine disks. Além disso, todos os discos de máquina virtual do Azure, incluindo discos temporários locais, podem, opcionalmente, ser criptografados com Azure Disk Encryption.Additionally, all Azure virtual machine disks, including local temp disks, may optionally be encrypted with Azure Disk Encryption. Azure Disk Encryption usa o BitLocker padrão do setor no Windows e DM-cript no Linux para fornecer soluções de criptografia baseadas no sistema operacional integradas ao Azure Key Vault.Azure Disk Encryption uses industry-standard BitLocker on Windows and DM-Crypt on Linux to provide operating system-based encryption solutions that are integrated with Azure Key Vault.

Próximas etapasNext steps