Proteger os dados usando criptografia no lado do servidor com CMKs armazenadas no AWS Key Management Service (SSE-KMS) - Amazon Simple Storage Service

Proteger os dados usando criptografia no lado do servidor com CMKs armazenadas no AWS Key Management Service (SSE-KMS)

A criptografia no lado do servidor é a criptografia dos dados em seu destino pelo aplicativo ou serviço que os recebe. O AWS Key Management Service (AWS KMS) é um serviço que combina hardware e software seguros e altamente disponíveis para fornecer um sistema de gerenciamento de chaves dimensionado para a nuvem. O Amazon S3 usa chaves mestra do cliente (CMKs) do AWS KMS para criptografar os objetos do Amazon S3. O AWS KMS criptografa apenas os dados dos objetos. Nenhum metadado de objeto é criptografado.

Se você usar as CMKs, use o AWS KMS por meio do Console de gerenciamento da AWS ou as APIs do AWS KMS para criar CMKs centralmente, definir as políticas que controlam como CMKs podem ser usadas e auditar o uso de CMKs para provar que elas estão sendo usadas corretamente. Você pode usar essas CMKs para proteger seus dados em buckets do Amazon S3. Ao usar a criptografia SSE-KMS com um bucket do S3, a CMK do AWS KMS deve estar na mesma região que o bucket.

Há custos adicionais pelo uso de CMKs do AWS KMS. Para obter mais informações, consulte Conceitos do AWS Key Management Service – chaves mestras de cliente (CMKs) e Definição de preço do AWS Key Management Service no AWS Key Management Service Developer Guide.

Importante

Você precisa da permissão kms:Decrypt ao fazer upload ou download de um objeto do Amazon S3 criptografado com uma CMK do AWS KMS. Isso além das permissões kms:ReEncrypt, kms:GenerateDataKey e kms:DescribeKey. Para obter mais informações, consulte Falha ao fazer upload de um arquivo grande no Amazon S3 com criptografia usando uma CMK do AWS KMS.

CMKs gerenciadas pela AWS e CMKs gerenciadas pelo cliente

Quando utiliza a criptografia do lado do servidor com AWS KMS (SSE-KMS), você pode utilizar a CMK gerenciada pela AWS padrão ou pode especificar uma CMK gerenciada pelo cliente que já tenha criado.

Se você não especificar uma CMK gerenciada pelo cliente, o Amazon S3 criará automaticamente uma CMK gerenciada pela AWS em sua conta da AWS na primeira vez que adicionar um objeto criptografado com SSE-KMS a um bucket. Por padrão, o Amazon S3 usa essa CMK para SSE-KMS.

Se você quiser usar uma CMK gerenciada pelo cliente para SSE-KMS, poderá criar a CMK antes de configurar o SSE-KMS. Depois, ao configurar o SSE-KMS para seu bucket, você pode especificar a CMK gerenciada pelo cliente existente.

Criar sua própria CMK gerenciada pelo cliente oferece mais flexibilidade e controle sobre a CMK. Por exemplo, você pode criar, alternar e desabilitar CMKs gerenciadas pelo cliente. Você também pode definir controles de acesso e auditar as CMKs gerenciadas pelo cliente que você usa para proteger seus dados. Para obter mais informações sobre CMKs gerenciadas pelo cliente e gerenciadas pela AWS, consulte Conceitos do AWS KMS no AWS Key Management Service Developer Guide.

Importante

Ao usar um CMK AWS KMS para criptografia no lado do servidor no Amazon S3, é necessário escolher um CMK simétrico. O Amazon S3 tem suporte apenas para CMKs simétricos, e não para CMKs assimétricos. Para obter mais informações, consulte Usar chaves simétricas e assimétricas no AWS Key Management Service Developer (Guia do desenvolvedor do AWS Key Management Service).

AWS Signature versão 4

Se fizer upload ou acessar objetos criptografados por SSE-KMS, você deverá usar o AWS Signature versão 4 para mais segurança. Para obter mais informações sobre como fazer isso usando um AWS SDK, consulte Especificar a versão do Signature na autenticação de solicitações.

Importante

Todas as solicitações GET e PUT para um objeto protegido pelo AWS KMS falharão se não forem feitas por SSL ou TLS ou se não forem feitas usando o SigV4.

Destaques de SSE-KMS

Os destaques de SSE-KMS são os seguintes:

  • É possível escolher a CMK gerenciada pelo cliente que você cria e gerencia ou pode escolher uma CMK gerenciada pela AWS que o Amazon S3 cria em sua conta da AWS e gerencia por você. Como uma CMK gerenciada pelo cliente, sua CMK gerenciada pela AWS é exclusiva à sua conta e região da AWS. Somente o Amazon S3 tem permissão para usar essa CMK em seu nome. O Amazon S3 é compatível apenas com CMKs simétricas.

  • É possível criar, alternar e desabilitar CMKs gerenciadas pelo cliente auditáveis no console do AWS KMS.

  • O ETag na resposta não é o MD5 dos dados de objeto.

  • As chaves de dados usadas para criptografar os dados também são criptografadas e armazenadas com os dados protegidos.

  • Os controles de segurança do AWS KMS podem ajudá-lo a satisfazer os requisitos de conformidade relacionados à criptografia.

Exigir a criptografia no lado do servidor

Para exigir criptografia no lado do servidor de todos os objetos em um bucket específico do Amazon S3, é possível usar uma política. Por exemplo, a política de bucket a seguir negará permissão de upload de objeto (s3:PutObject) para todos se a solicitação não incluir o cabeçalho x-amz-server-side-encryption que solicita criptografia de servidor com SSE-KMS.

{ "Version":"2012-10-17", "Id":"PutObjectPolicy", "Statement":[{ "Sid":"DenyUnEncryptedObjectUploads", "Effect":"Deny", "Principal":"*", "Action":"s3:PutObject", "Resource":"arn:aws:s3:::awsexamplebucket1/*", "Condition":{ "StringNotEquals":{ "s3:x-amz-server-side-encryption":"aws:kms" } } } ] }

Para exigir que uma CMK do AWS KMS específica seja usada para criptografar os objetos em um bucket, use a chave de condição s3:x-amz-server-side-encryption-aws-kms-key-id. Para especificar a CMK do AWS KMS, é necessário usar um nome de recurso da Amazon (ARN) da chave no formato "arn:aws:kms:region:acct-id:key/key-id".

nota

Ao fazer upload de um objeto, você pode especificar a CMK do AWS KMS usando o cabeçalho x-amz-server-side-encryption-aws-kms-key-id. Se o cabeçalho não estiver presente na solicitação, o Amazon S3 usará a CMK gerenciada pela AWS. Independentemente, o ID da chave AWS KMS que o Amazon S3 usa para a criptografia de objetos deve corresponder ao ID da chave AWS KMS na política. Caso contrário, o Amazon S3 negará a solicitação.

Para obter uma lista completa de chaves de condição específicas do Amazon S3‐ e mais informações sobre como especificar chaves de condição, consulte Chaves de condição do Amazon S3.

Como usar o AWS Key Management Service no console do Amazon S3

Para obter mais informações sobre como usar o console do Amazon S3 com CMKs armazenadas no AWS KMS, consulte Como adicionar criptografia a um objeto do S3? no Guia do usuário do console do Amazon Simple Storage Service.

Suporte de API para AWS Key Management Service no Amazon S3

Para solicitar SSE-KMS nas APIs REST de criação de objeto, use o cabeçalho de solicitação x-amz-server-side-encryption. Para especificar o ID da CMK do AWS KMS que foi usado para o objeto, use x-amz-server-side-encryption-aws-kms-key-id. A API do Amazon S3 também oferece suporte para contexto de criptografia, com o cabeçalho x-amz-server-side-encryption-context. Para obter mais informações, consulte Especificação do AWS Key Management Service no Amazon S3 usando a API REST.

Os SDKs da AWS também fornecem APIs de wrapper para que você possa solicitar SSE-KMS com o Amazon S3. Para obter mais informações, consulte Especificar o AWS Key Management Service no Amazon S3 usando os AWS SDKs.