Ao fazer upload de um objeto para um bucket com criptografia no lado do servidor ativada, o Object Storage Service (OSS) criptografa o objeto antes de armazená-lo. Ao baixar o objeto usando uma solicitação GetObject, o OSS descriptografa automaticamente o objeto e o retorna. O cabeçalho x-oss-server-side-encryption na resposta indica que o objeto foi criptografado no lado do servidor.
Para obter mais informações sobre o cabeçalho de resposta x-oss-server-side-encryption, consulte GetObject.
Cenários
O OSS oferece proteção de dados em repouso por meio da criptografia no lado do servidor. Esse recurso é ideal para aplicações com altos requisitos de segurança ou conformidade no armazenamento de dados, como o armazenamento de arquivos de amostra para deep learning ou dados de documentos colaborativos online.
Métodos de criptografia
O OSS disponibiliza dois métodos de criptografia no lado do servidor para diferentes cenários. Selecione o método mais adequado às suas necessidades.
Método de criptografia | Descrição | Cenários | Observações | Faturamento |
Criptografar e descriptografar dados usando chaves gerenciadas pelo Key Management Service (KMS) (SSE-KMS) | Use a chave mestra do cliente (CMK) padrão gerenciada pelo KMS ou uma CMK específica para criptografar e descriptografar dados. A criptografia e a descriptografia ocorrem sem envio dos dados pela rede ao servidor do KMS. | Indicado para cenários que exigem chaves autogerenciadas, especificadas para fins de segurança e conformidade. |
|
|
Criptografar e descriptografar dados usando chaves gerenciadas pelo OSS (SSE-OSS) | Use uma chave totalmente gerenciada pelo OSS para criptografar cada objeto. Para maior segurança, o OSS também usa uma chave mestra para criptografar a própria chave de criptografia de dados. | Recomendado quando você precisa apenas de criptografia básica e não deseja gerenciar chaves. | Nenhuma. | Gratuito. |
Observações
Ao fazer upload, download ou acessar objetos em um bucket com criptografia SSE-KMS ativada, verifique se você tem permissões para usar o ID da CMK especificado e se a solicitação não é anônima. Caso contrário, a solicitação falhará e o erro
This request is forbidden by kmsserá retornado.Objetos espelhados em um bucket usando back-to-origin baseado em espelhamento não são criptografados por padrão.
Ativar ou modificar o método de criptografia de um bucket não afeta a configuração de criptografia dos objetos existentes nele.
Apenas um método de criptografia no lado do servidor pode ser usado por objeto de cada vez.
Mesmo após configurar a criptografia para um bucket, você ainda pode especificar um método diferente para um objeto individual ao fazer upload ou copiá-lo. O método especificado para o objeto prevalece. Para obter mais informações, consulte PutObject.
Permissões
A lista a seguir descreve as permissões necessárias para que um usuário do Resource Access Management (RAM) utilize a criptografia no lado do servidor em diferentes cenários.
Para obter mais informações sobre como conceder permissões a um usuário RAM, consulte Grant custom permissions to a RAM user.
-
Configure o método de criptografia para um bucket
Permissões de gerenciamento no bucket de destino.
As permissões
PutBucketEncryptioneGetBucketEncryption.-
Se você definir o método de criptografia como SSE-KMS e especificar um ID de CMK, as permissões
ListKeys,ListAliases,ListAliasesByKeyIdeDescribeKeytambém serão necessárias. Veja abaixo um exemplo de política do RAM para este cenário:{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:List*", "kms:DescribeKey" ], "Resource": [ "acs:kms:*:141661496593****:*" // This policy lets you call all KMS keys under the Alibaba Cloud account ID. To allow the use of only a specific CMK, enter the corresponding CMK ID. ] } ] }
-
Fazer upload de um objeto para um bucket criptografado
Permissões para fazer upload de objetos no bucket de destino.
-
Caso o método de criptografia esteja definido como KMS e um ID de CMK seja especificado, as permissões
ListKeys,ListAliases,ListAliasesByKeyId,DescribeKey,GenerateDataKeyeDecrypttambém são obrigatórias. Abaixo está um exemplo de política do RAM para esta situação:{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:List*", "kms:DescribeKey", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": [ "acs:kms:*:141661496593****:*"// This policy lets you call all KMS keys under the Alibaba Cloud account ID. To allow the use of only a specific CMK, enter the corresponding CMK ID. ] } ] }
-
Baixe um objeto de um bucket criptografado
Permissões para acessar objetos no bucket de destino.
-
Quando o método de criptografia for KMS e houver um ID de CMK especificado, a permissão
Decrypttambém é necessária. O exemplo a seguir mostra uma política do RAM aplicável a este caso:{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "acs:kms:*:141661496593****:*"// This policy grants permissions to decrypt data using all KMS keys under the Alibaba Cloud account ID. To grant permissions to decrypt data using a specific KMS key, enter the corresponding CMK ID. ] } ] }
Procedimentos
Se você adquirir o service de valor agregado de rotação de chaves para o KMS, a criptografia no lado do servidor suportará key rotation para chaves do KMS. Após ative a rotação de chaves, a nova chave será usada para criptografar apenas objetos recém-carregados. As chaves de criptografia dos objetos existentes permanecem inalteradas.
Ao atualize a chave de criptografia do KMS no OSS, a nova chave criptografa somente os novos uploads. Os objetos carregados antes da atualização continuam criptografados com a chave antiga. Portanto, não exclua a chave antiga após a atualização, pois isso impedirá o acesso aos objetos existentes.
Usar o console do OSS
Usar SDKs da Alibaba Cloud
Usar a ferramenta de linha de comando ossutil
Usar chaves gerenciadas pelo KMS para criptografia e descriptografia
É possível utilizar uma chave mestra do cliente (CMK) gerenciada pelo KMS para gerar uma chave de criptografia de dados. A criptografia de envelope adiciona uma camada extra de segurança para impedir acessos não autorizados aos dados. Com o KMS, você foca nas funcionalidades do negócio, como criptografia, descriptografia e verificação de assinaturas digitais, sem precisar investir pesadamente na garantia de confidencialidade, integridade e disponibilidade das suas chaves.
A figura a seguir ilustra a lógica da criptografia SSE-KMS.
Ao utilizar o SSE-KMS, você pode optar pelos seguintes tipos de chave:
-
Usar a chave padrão do KMS gerenciada pelo OSS
O OSS utiliza a CMK padrão do KMS para gerar chaves distintas e criptografar diferentes objetos, descriptografando-os automaticamente durante o download. Na primeira utilização deste recurso, o OSS crie uma CMK gerenciada pelo OSS no KMS.
Métodos de configuração:
-
Configure o método de criptografia para um bucket
Defina o método de criptografia do bucket como KMS , mas não insira um ID de CMK. Assim, todos os objetos enviados para este bucket serão criptografados por padrão.
-
Configure o método de criptografia para um objeto de destino
Ao fazer upload de um objeto ou modifique seus metadados, inclua o parâmetro
x-oss-server-side-encryptionna solicitação e defina seu valor comoKMS. O OSS então usará a CMK padrão do KMS e o algoritmo de criptografia AES256 para criptografar o objeto. Para mais informações, consulte PutObject.
-
-
Usar Bring-Your-Own-Key (BYOK)
Após gerar uma CMK no console do KMS usando material BYOK, o OSS pode usar a CMK do KMS especificada para gerar chaves diferentes e criptografar objetos distintos. O ID da CMK fica armazenado nos metadados do objeto criptografado. A descriptografia automática ocorre apenas quando um usuário com as devidas permissões baixe o objeto.
O material BYOK pode ter duas origens:
Material BYOK fornecido pela Alibaba Cloud: Ao crie uma chave no console do KMS, selecione KMS como source do material da chave.
Seu próprio material BYOK: Ao crie uma chave no console do KMS, selecione External como source do material da chave e importe o material externo conforme necessário. Para saber como importar material de chave externa, consulte Import key material.
Métodos de configuração:
-
Configure o método de criptografia para um bucket
Defina o método de criptografia do bucket como KMS e insira um ID de CMK. Dessa forma, todos os objetos carregados neste bucket serão criptografados por padrão.
-
Configure o método de criptografia do objeto de destino
Ao fazer upload de um objeto ou modifique seus metadados, defina o parâmetro
x-oss-server-side-encryptioncomoKMSe o parâmetrox-oss-server-side-encryption-key-idcom o ID da CMK especificada. O OSS usará a CMK do KMS indicada e o algoritmo de criptografia AES256 para criptografar o objeto. Para mais informações, consulte PutObject.
Usar chaves gerenciadas pelo OSS para criptografia e descriptografia
O OSS gera e gerencia chaves de criptografia de dados, protegendo-as com medidas de segurança multifatoriais de alta resistência. Os dados são criptografados usando os algoritmos padrão da indústria Advanced Encryption Standard (AES) 256 .
Métodos de configuração:
-
Configure o método de criptografia para um bucket
Defina o método de criptografia do bucket como SSE-OSS e especifique o algoritmo de criptografia como AES256 . Consequentemente, todos os objetos enviados para este bucket serão criptografados por padrão.
-
Configure o método de criptografia para um objeto de destino
Ao fazer upload de um objeto ou modifique seus metadados, inclua o parâmetro
x-oss-server-side-encryptionna solicitação e defina seu valor comoAES256. O OSS usará então uma chave gerenciada pelo OSS para criptografar o objeto. Para mais informações, consulte PutObject.
Operações de api relacionadas
As operações descritas acima são implementadas com base em operações de api. Se sua aplicação tiver requisitos de personalização elevados, inicie solicitações de api REST diretamente. Para isso, escreva manualmente o código para calcular as assinaturas. Para mais informações, consulte PutBucketEncryption.
Perguntas frequentes
Depois de configure um método de criptografia para um bucket, o OSS criptografa os objetos existentes?
O OSS criptografa apenas os objetos carregados após a ativação da configuração de criptografia no lado do servidor. Objetos já existentes não são criptografados retroativamente. Para criptografar objetos existentes, sobrescreva-os utilizando a operação CopyObject.