Criptografia de Dados do Serviço Object Storage
Saiba como o serviço Object Storage criptografa e decriptografa todos os objetos usando o AES-256 (Advanced Encryption Standard) de 256 bits 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.
-
Use a criptografia do cliente para criptografar objetos com suas respectivas chaves de criptografia antes de armazená-los em buckets do serviço Object Storage. Uma opção disponível é usar a API de Compatibilidade com o Amazon S3 juntamente com o suporte de criptografia de objetos no cliente disponível no AWS SDK for Java. Consulte API de Compatibilidade com o Amazon S3 para obter mais detalhes sobre esse SDK.
-
Use criptografia de servidor com suas próprias chaves. Para obter mais informações, consulte Usando Suas Próprias Chaves para Criptografia do Servidor.
-
Designe uma chave de criptografia principal do Oracle Cloud Infrastructure Vault que você controle e rotacione de acordo com a sua própria programação. Para obter mais informações, consulte Usando Suas Próprias Chaves no serviço Vault para Criptografia do Servidor.
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.
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 |
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 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 --bucket-name MyBucket --name MyObjectName --file ~/path/to/file --parallel-upload-count 10 --part-size 500 --opc-sse-kms-key-id ocid1.key.oc1.region1.sea..exampleuniqueID
Upload ID: 813bb394-377d-d5cf-cb3f-31b025346199
Split file into 1 parts for upload.
Uploading object [####################################] 100%
{
"etag": "a55f1c69-1cf4-4134-9113-7a866bac712f",
"last-modified": "Wed, 29 May 2024 21:54:55 GMT",
"opc-multipart-md5": "sAVJt/6nEVizTbwRblZZSg==-1"
}
Um exemplo para copiar um objeto usando uma chave no serviço Vault:
oci os object copy --bucket-name MyBucket1 --destination-bucket MyBucket2 --source-object-name MyObjectName --opc-sse-kms-key-id ocid1.key.oc1.region1.sea..exampleuniqueID
{
"opc-work-request-id": "115e230c-04b8-4dc6-89eb-7e1269b4ab47"
}
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. | CopyObject |
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).
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.