Integração do AWS KMS com pacotes personalizados do Amazon OpenSearch Service
Os pacotes personalizados do Amazon OpenSearch Service fornecem criptografia por padrão para proteger os pacotes ZIP-PLUGIN em repouso usando Chaves gerenciadas pela AWS.
-
Chaves pertencentes à AWS: os pacotes personalizados do Amazon OpenSearch Service usam essas chaves por padrão para criptografar automaticamente os pacotes
ZIP-PLUGIN. Não é possível visualizar, gerenciar ou usar as Chaves pertencentes à AWS nem auditar seu uso. No entanto, você não precisa realizar nenhuma ação nem alterar nenhum programa para proteger as chaves que criptografam seus dados. Para obter mais informações, consulte Chaves pertencentes à AWS no Guia do desenvolvedor do AWS Key Management Service. -
Chaves gerenciadas pelo cliente: você pode adicionar uma segunda camada de criptografia sobre as Chaves pertencentes à AWS existentes escolhendo uma chave gerenciada pelo cliente ao criar o pacote personalizado
ZIP-PLUGIN.Os pacotes personalizados do Amazon OpenSearch Service são compatíveis com o uso de uma chave simétrica gerenciada pelo cliente que você cria, possui e gerencia para adicionar uma segunda camada de criptografia sobre a criptografia existente pertencente à AWS. Como você tem controle total dessa camada de criptografia, pode realizar as seguintes tarefas:
-
Estabelecer e manter as políticas de chaves
-
Estabelecer e manter políticas e concessões do AWS Identity and Access Management (IAM)
-
Habilitar e desabilitar políticas de chave
-
Alternar o material de criptografia de chaves
-
Adicionar tags
-
Criar aliases de chaves
-
Programar a exclusão de chaves
-
Para obter mais informações, consulte Chaves mestras do cliente (CMKs) no AWS Key Management Service Guia do desenvolvedor.
nota
Os pacotes personalizados do Amazon OpenSearch Service habilitam automaticamente a criptografia em repouso usando Chaves pertencentes à AWS sem custo adicional. Porém, os custos do AWS KMS se aplicam quando você usa uma chave gerenciada pelo cliente. Para obter mais informações sobre preços, consulte Preços do AWS Key Management Service
Como o serviço de pacotes personalizados do Amazon OpenSearch Service usa concessões no AWS KMS
Pacotes personalizados do OpenSearch Service exigem uma concessão para usar a chave gerenciada pelo cliente.
Quando você cria um pacote criptografado ZIP-PLUGIN com uma chave gerenciada pelo cliente, o serviço de pacotes personalizados do Amazon OpenSearch Service cria uma concessão em seu nome enviando uma solicitação CreateGrant ao AWS KMS. As concessões do AWS KMS dão acesso ao OpenSearch Service a uma chave do AWS KMS em sua conta. As concessões criadas pelos pacotes personalizados do OpenSearch Service têm uma restrição que permite operações somente quando a solicitação inclui um contexto de criptografia com o ID do pacote personalizado.
O Amazon OpenSearch Service exige a concessão para usar a chave gerenciada pelo cliente para as seguintes operações internas:
| Operação | Descrição |
|---|---|
DescribeKey |
Envia solicitações de DescribeKey ao AWS KMS para verificar se o ID da chave simétrica gerenciada pelo cliente inserido ao criar o pacote de plug-in é válido. |
GenerateDataKeyWithoutPlaintext |
Envia solicitações de GenerateDataKeyWithoutPlaintext ao AWS KMS para gerar chaves de dados criptografadas pela chave gerenciada pelo cliente. |
GenerateDataKey |
Envia solicitações de GenerateDataKey ao AWS KMS para gerar chaves de dados para criptografar o pacote ao copiá-lo internamente. |
Decrypt |
Envia solicitações de Decrypt ao AWS KMS para descriptografar as chaves de dados criptografadas para que elas possam ser usadas para descriptografar os dados. |
É possível revogar o acesso à concessão ou remover o acesso do serviço à chave gerenciada pelo cliente a qualquer momento. Se você fizer isso, o OpenSearch Service não poderá acessar nenhum dos dados criptografados pela chave gerenciada pelo cliente, o que afetará as operações que dependem desses dados. Por exemplo, se você tentar associar um pacote de plug-in que o OpenSearch Service não pode acessar, a operação retornará um erro AccessDeniedException.
Crie uma chave gerenciada pelo cliente
Você pode criar uma chave gerenciada pelo cliente usando o Console de gerenciamento da AWS ou as APIs do AWS KMS.
Para criar uma chave simétrica gerenciada pelo cliente
-
Para criar uma chave do KMS, siga as etapas em Criar uma chave do KMS no Guia do desenvolvedor do AWS Key Management Service.
Política de chave
As políticas de chaves controlam o acesso à chave gerenciada pelo seu cliente. Cada chave gerenciada pelo cliente deve ter exatamente uma política de chaves, que contém declarações que determinam quem pode usar a chave e como pode usá-la. Ao criar a chave gerenciada pelo cliente, é possível especificar uma política de chave. Para obter mais informações, consulte Políticas de chaves no AWS KMS no Guia do desenvolvedor do AWS Key Management Service.
Para usar a chave gerenciada pelo cliente com os recursos, você deve permitir as seguintes operações de API na política de chave:
-
kms:CreateGrant: adiciona uma concessão a uma chave gerenciada pelo cliente. Concede acesso de controle a uma chave do AWS KMS especificada, permitindo o acesso às operações de concessão exigidas pelos pacotes personalizados do OpenSearch Service. Para obter mais informações sobre o uso de concessões, consulte o Guia do desenvolvedor do AWS KMS.Isso permite que o OpenSearch Service faça o seguinte:
-
Chame
GenerateDataKeyWithoutPlainTextpara gerar uma chave de dados criptografada e armazená-la para validações adicionais. -
Chame
GenerateDataKeypara copiar o pacote do plug-in internamente. -
Chame
Decryptpara acessar o pacote do plug-in internamente. -
Configure uma entidade principal aposentada para permitir que o serviço para
RetireGrant.
-
-
kms:DescribeKey: fornece detalhes da chave gerenciada pelo cliente para permitir que o OpenSearch Service a valide. -
kms:GenerateDataKey,kms:GenerateDataKeyWithoutPlaintext,kms:Decrypt: concede aos pacotes personalizados do OpenSearch Service acesso para usar essas operações na concessão.
Os seguintes exemplos são instruções de política que você pode adicionar para pacotes personalizados do OpenSearch Service:
"Statement" : [ { "Sid" : "Allow access to principals authorized to use OpenSearch Service custom packages", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:CreateGrant", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "custom-packages.region.amazonaws.com" }, "StringEquals" : { "kms:EncryptionContext:packageId": "Id of the package" } } }, { "Sid" : "Allow access to principals authorized to use Amazon OpenSearch Service custom packages", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:DescribeKey" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:ViaService" : "custom-packages.region.amazonaws.com" } } } ]
Para obter mais informações sobre a especificação de permissões em uma política, consulte Políticas de chave no AWS KMS no Guia do desenvolvedor do AWS Key Management Service.
Para obter mais informações sobre a solução de problemas de acesso a chaves, consulte Solução de problemas de permissões do AWS KMS no Guia do desenvolvedor do AWS Key Management Service.
Especificar uma chave gerenciada pelo cliente para pacotes personalizados do Amazon OpenSearch Service
Você pode especificar uma chave gerenciada pelo cliente como uma segunda camada de criptografia para pacotes ZIP-PLUGIN.
Ao criar um pacote de plug-in, você pode especificar a chave de dados inserindo um ID de chave do AWS KMS, que os pacotes personalizados do OpenSearch Service usam para criptografar o pacote de plug-in.
ID de chave do AWS KMS: um identificador de chave para uma chave do AWS KMS gerenciada pelo cliente. Insira uma ID de chave, um ARN de chave, um nome de alias ou um ARN de alias.
Contexto de criptografia de pacotes personalizados do Amazon OpenSearch Service
Um contexto de criptografia é um conjunto opcional de pares chave-valor que pode conter informações contextuais adicionais sobre os dados.
AWS KMSO usa o contexto de criptografia como dados autenticados adicionais para viabilizar a criptografia autenticada. Quando você inclui um contexto de criptografia em uma solicitação para criptografar dados, o AWS KMS vincula de forma criptográfica o contexto da criptografia aos dados criptografados. Para descriptografar os dados, você inclui o mesmo contexto de criptografia na solicitação.
Contexto de criptografia de pacotes personalizados do Amazon OpenSearch Service
Os pacotes personalizados do Amazon OpenSearch Service usam o mesmo contexto de criptografia em todas as operações criptográficas do AWS KMS, em que a chave é o packageId e o valor é o package-id do pacote de plug-in.
Usar o contexto de criptografia para monitoramento
Ao usar uma chave simétrica gerenciada pelo cliente para criptografar o pacote de plug-in, você também pode usar o contexto de criptografia em registros e logs de auditoria para identificar como a chave gerenciada pelo cliente está sendo usada. O contexto de criptografia também aparece nos logs gerados pelo AWS CloudTrail ou por Amazon CloudWatch Logs.
Usar o contexto de criptografia para controlar o acesso à chave gerenciada pelo cliente
Você pode usar o contexto de criptografia nas políticas de chave e políticas do IAM como condições para controlar o acesso à sua chave simétrica gerenciada pelo cliente. Você também pode usar restrições no contexto de criptografia em uma concessão.
Os pacotes personalizados do OpenSearch Service usam uma restrição ao contexto de criptografia em concessões para controlar o acesso à chave gerenciada pelo cliente na sua conta ou região. A restrição da concessão exige que as operações permitidas pela concessão usem o contexto de criptografia especificado.
Veja a seguir exemplos de declarações de políticas de chave para conceder acesso a uma chave gerenciada pelo cliente para um contexto de criptografia específico. A condição nesta declaração de política exige que as concessões tenham uma restrição de contexto de criptografia que especifique o contexto de criptografia.
{ "Sid": "Enable DescribeKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole" }, "Action": "kms:DescribeKey", "Resource": "*" }, { "Sid": "Enable OpenSearch Service custom packages to use the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleReadOnlyRole" }, "Action" : [ "kms:CreateGrant", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals" : { "kms:EncryptionContext:packageId": "ID of the package" } } }
Monitorar chaves de criptografia para o serviço de pacotes personalizados do OpenSearch
Ao usar uma chave gerenciada pelo cliente do AWS KMS com os recursos do serviço de pacotes personalizados do OpenSearch Service, você pode usar o CloudTrail ou o CloudWatch Logs para acompanhar as solicitações enviadas pelos pacotes personalizados do OpenSearch ao AWS KMS.
Saiba mais
Os recursos a seguir fornecem mais informações sobre a criptografia de dados em repouso.
-
Para obter mais informações sobre os conceitos básicos do AWS KMS, consulte AWS KMS keys no Guia do desenvolvedor do AWS Key Management Service.
-
Para obter mais informações sobre as práticas recomendadas de segurança para o AWS KMS, consulte o guia Orientação prescritiva da AWS para obter as práticas recomendadas do AWS Key Management Service.