Criptografia de Dados do Serviço Object Storage

Saiba como o serviço Object Storage criptografa e decriptografa todos os objetos usando o Padrão de Criptografia Avançada de 256 bits (AES-256) para criptografar dados de objeto no servidor.

Cada objeto é criptografado com sua própria chave de criptografia de dados. As chaves de criptografia de dados são sempre criptografadas com uma chave de criptografia principal que é designada ao bucket. A criptografia é ativada por padrão e não pode ser desativada. Por padrão, a Oracle gerencia a chave mestra de criptografia.

Além dessa criptografia padrão, você pode usar estas estratégias para criptografar dados:

Usando Suas Próprias Chaves para Criptografia do Servidor

Este tópico fornece os detalhes para implementar e usar criptografia do servidor com chaves fornecidas pelo cliente (SSE-C).

Sobre SSE-C

Usando cabeçalhos opcionais de API, você pode fornecer sua própria chave de criptografia AES de 256 bits que é usada para criptografar e decriptografar objetos de upload e download feitos no serviço Object Storage:

  • Ao fazer upload de um objeto, você fornece a chave de criptografia. O serviço Object Storage criptografa o objeto usando essa chave e a exclui imediatamente.
  • Quando quer fazer download de um objeto, você informa a mesma chave que foi usada para criptografar o objeto e o serviço Object Storage decriptografa e retorna o objeto para você.

Você gerencia as chaves de criptografia e o serviço Object Storage gerencia a criptografia e decriptografia.

Importante

O serviço Object Storage não armazena as chaves de criptografia. Você é responsável por rastrear a chave associada a cada objeto e alternar a chave conforme necessário. Caso perca sua chave de criptografia, você não poderá recuperar seu objeto.

Escopo e Restrições

Noções básicas do escopo e das restrições que dizem respeito à chave SSE-C:

  • Uma chave SSE-C não pode ser associada a um bucket e só pode ser usada para criptografar objetos individuais.
  • Você pode criptografar objetos com o uso de sua própria chave de criptografia, utilizando solicitações pré-autenticadas. Para recuperar um objeto criptografado SSE-C usando uma solicitação pré-autenticada, especifique sua chave de criptografia.
  • Para excluir ou renomear um objeto criptografado SSE-C, não é necessário especificar sua chave de criptografia.
  • Você só pode especificar um kmsKeyId ou um sseCustomerKey no payload da solicitação ReencryptObject, não ambos. Se o payload da solicitação estiver vazio, o objeto será criptografado usando a chave de criptografia designada ao bucket. O mecanismo de criptografia de bucket pode ser uma chave principal de criptografia gerenciada pela Oracle ou pelo serviço Vault.
  • Você só pode usar as APIs do serviço Object Storage e a CLI para fornecer chaves SSE-C. Não é possível usar a Console para fazer upload ou recuperar objetos usando uma chave fornecida pelo cliente.
  • A API de Compatibilidade com Amazon S3 também suporta SSE-C.

Usando a API REST para SSE-C

Se quiser usar suas próprias chaves para criptografia do servidor, especifique os três seguintes cabeçalhos de solicitação com as informações da chave de criptografia:

Cabeçalhos Descrição APIs Suportadas
opc-sse-customer-algorithm Especifica "AES256" como algoritmo de criptografia. CopyObject

GetObject

HeadObject

PutObject

CreateMultipartUpload

UploadPart

opc-sse-customer-key Especifica a chave de criptografia de 256 bits codificada por base64 a ser usada para criptografar ou decriptografar os dados.
opc-sse-customer-key-sha256 Especifica o hash SHA256 codificado por base64 da chave de criptografia.

Para CopyObject:

Se o objeto de origem for criptografado com uma chave SSE-C, especifique também os três cabeçalhos a seguir para que o serviço Object Storage possa decriptografar o objeto.

Cabeçalhos Descrição APIs Suportadas
opc-source-sse-customer-algorithm Especifica "AES256" como algoritmo de criptografia a ser usado para decriptografar o objeto de origem. CopyObject
opc-source-sse-customer-key Especifica a chave de criptografia de 256 bits codificada por base64 a ser usada para decriptografar o objeto de origem.
opc-source-sse-customer-key-sha256 Especifica o hash SHA256 codificada por base64 da chave de criptografia usada para decriptografar o objeto de origem.

Usando a CLI para SSE-C

Você também pode usar suas próprias chaves de criptografia para criptografar objetos usando a CLI.

Você pode fornecer sua própria chave de criptografia usando o parâmetro opcional --encryption-key-file filename para os seguintes comandos:

  • oci os object put
  • oci os object get
  • oci os object head
  • oci os object resume-put
  • oci os object bulk-upload
  • oci os object bulk-download
  • oci os object copy
  • oci os object reencrypt

filename aponta para um arquivo que contém a string codificada por base64 da chave de criptografia AES-256. Nenhum outro parâmetro é necessário. O serviço Object Storage decodifica a chave para calcular o hash SHA256 da chave de criptografia.

Se o objeto de origem for criptografado com uma chave SSE-C, especifique também o parâmetro opcional --source-encryption-key-file filename para os seguintes comandos:

  • oci os object copy
  • oci os object reencrypt

filename aponta para um arquivo que contém a string codificada por base64 da chave de criptografia de origem AES-256. Nenhum outro parâmetro é necessário. O serviço Object Storage decodifica a chave para calcular o hash SHA256 da chave de criptografia de origem.

Para obter informações sobre como usar a CLI, consulte Interface de Linha de Comando (CLI). Para obter uma lista completa de flags e opções disponíveis para comandos da CLI, consulte a Referência da Linha de Comando.

Usando Suas Próprias Chaves no serviço Vault para Criptografia do Servidor

Este tópico fornece os detalhes para implementar a criptografia do servidor usando suas próprias chaves no serviço Vault.

O serviço Oracle Cloud Infrastructure Object Storage criptografa seus dados e metadados (pares de chave/valor fornecidos pelo cliente) usando Chaves de Criptografia de Dados (DEKs) geradas de forma aleatória. O serviço Object Storage permite que você especifique sua própria MEK (Chave de Criptografia Principal) gerenciada pelo serviço Vault para buckets (Consulte Usando a Console) e objetos individuais. Você pode especificar a MEK a ser usada para um determinado objeto sem precisar manter e gerenciar suas próprias chaves.

Você deve ter as permissões necessárias nas políticas de IAM para poder especificar sua própria MEK. Consulte Política Obrigatória de IAM e Permitir o uso de uma chave delegada do grupo de usuários em um compartimento.

Usando a CLI para SSE com Suas Chaves no Serviço Vault

Você pode usar suas próprias chaves de criptografia no Vault para criptografar objetos usando a CLI.

Você pode fornecer sua própria chave de criptografia usando o parâmetro opcional --opc-sse-kms-key-id <target_key_id> para os seguintes comandos:

  • oci os object put
  • oci os object copy

<target_key_id> é o OCID de uma chave existente no OCI Vault a ser usada para criptografar o objeto.

Exemplo para fazer upload de um objeto para o bucket usando uma chave no serviço Vault:

oci os object put -bn "MyKeyBucket" --name "MyObjectName" --file "InputFile" --opc-sse-kms-key-id "ocid1.key.region1.sea..exampleuniqueID"

Uploading object  [####################################]  100%
{
  "etag": "cadb9f8a-3292-45e6-a1e8-f075699fb619",
  "last-modified": "Tue, 13 Jul 2021 05:52:47 GMT",
  "opc-content-md5": "9KJsgOK/X5C1sARb2tkhVA=="
}

Um exemplo para executar um upload multiparte usando uma chave no serviço Vault:

oci os object put --namespace MyNamespace --bucket-name MyBucket --file ~/path/to/file --name MyObject --parallel-upload-count 10 --part-size 500
Upload ID: 277ffff5-e1b5-e81d-5f81-c374a8f33998 --opc-sse-kms-key-id "ocid1.key.region1.sea..exampleuniqueID"
Split file into 10 parts for upload.
Uploading object ################################### 100%
{ "etag": "861c8341-74d8-4142-8da4-28e1ce7783ba", "last-modified": "Wed, 25 Sep 2019 19:59:15 GMT", "opc-multipart-md5": "9Qn1eyou2yMiyOO9Bc7o1A==-12" } 

Um exemplo para copiar um objeto usando uma chave no serviço Vault:

oci os object put --namespace MyNamespace --bucket-name MyBucket --file ~/path/to/file --name MyObject --parallel-upload-count 10 --part-size 500
Upload ID: 277ffff5-e1b5-e81d-5f81-c374a8f33998 --opc-sse-kms-key-id "ocid1.key.region1.sea..exampleuniqueID"
Split file into 10 parts for upload.
Uploading object ################################### 100%
{ "etag": "861c8341-74d8-4142-8da4-28e1ce7783ba", "last-modified": "Wed, 25 Sep 2019 19:59:15 GMT", "opc-multipart-md5": "9Qn1eyou2yMiyOO9Bc7o1A==-12" } 
Observação

Os exemplos nesta seção usam a sintaxe completa para parâmetros, por exemplo, --namespace e --bucket-name. Às vezes, há termos de parâmetro reduzidos que você pode usar em vez dos termos completos, por exemplo, -ns para --namespace e -bn para --bucket-name. A CLI on-line --help de um comando específico exibe os parâmetros reduzidos que você pode usar.

Para obter informações sobre como usar a CLI, consulte Interface de Linha de Comando (CLI). Para obter uma lista completa de flags e opções disponíveis para comandos da CLI, consulte a Referência da Linha de Comando.

Usando a API REST para SSE com Chaves no serviço Vault

Se quiser usar suas próprias chaves no serviço Vault para criptografia do servidor, especifique o seguinte cabeçalho de solicitação com o OCID da chave no serviço Vault:

Cabeçalhos Descrição APIs Suportadas
opc-sse-kms-key-id Especifica o OCID de uma chave existente no serviço Vault a ser usada para criptografar o objeto.

PutObject

CopyObject

CreateMultipartUpload

UploadPart

Para obter informações sobre como usar a API e assinar solicitações, consulte a documentação da API REST e Credenciais de Segurança. Para obter informações sobre SDKs, consulte SDKs e a CLI.

Recriptografando um Bucket

Se você tiver rotacionado uma chave mestra de criptografia desde o momento em que você a designou a um bucket, convém criptografar o bucket novamente. Até que você criptografe outra vez um bucket de forma explícita, a versão da chave associada ao bucket quando um objeto foi inserido nele continua a decriptografar todas as chaves de criptografia de dados. Para criptografar e decriptografar todas as chaves de criptografia de dados com a mesma versão mais recente da chave de criptografia mestra designada, criptografe o bucket novamente.

Para saber como executar esta tarefa usando a console, consulte Para Recriptografar um Bucket com Chaves de Criptografia de Dados Usando a Console.

Para saber como executar essa tarefa usando a CLI, consulte Para Recriptografar um Bucket com Chaves de Criptografia de Dados Usando a CLI.

Recriptografando um Objeto

Para criptografar e decriptografar as chaves de criptografia de dados de um objeto com outra chave principal de criptografia, você pode criptografar novamente o objeto. Ao criptografar novamente um objeto, você pode escolher uma chave diferente daquela designada ao bucket ou a versão mais recente da chave. Até que você criptografe novamente um bucket de forma explícita, a versão da chave associada ao bucket (quando o objeto foi inserido nele) continua a decriptografar todas as chaves de criptografia de dados do objeto.

Você pode criptografar novamente as chaves de criptografia de dados de um objeto com uma chave gerenciada pela Oracle, uma chave criada e controlada por meio de um vault gerenciado ou uma chave de criptografia fornecida pelo cliente (SSE-C).

Observação

Se você usar criptografia do servidor com chaves fornecidas pelo cliente (SSE-C), use a CLI para fornecer a chave SSE-C durante o processo de criptografia ou recriptografia. Usando a CLI, você pode criptografar novamente um objeto com outra chave SSE-C, uma chave gerenciada pela Oracle ou por meio do serviço Vault. Na Console, você só pode criptografar novamente um objeto para usar a versão mais recente da chave gerenciada pela Oracle designada ao bucket ou a versão mais recente de uma chave do serviço Vault. Não importa se a versão de chave escolhida é a designada ao bucket.

Para saber como executar essa tarefa usando a console, consulte Para Recriptografar um Objeto usando a Console.

Para saber como executar essa tarefa usando a CLI, consulte Para Recriptografar um Objeto Usando a CLI.