Criptografar dados usando um serviço de gerenciamento de chaves
Nesta página
Importante
Recurso Indisponível em Instâncias sem Servidor
Neste momento, as instâncias sem servidor não permitem essa funcionalidade. Para saber mais, consulte Limitações de instância sem servidor.
O Atlas criptografa todo o armazenamento em cluster e volumes de snapshots em repouso por padrão. Você pode adicionar outra camada de segurança usando o do seu fornecedor de nuvem KMS junto com o MongoDB criptografado do storage engine.
Você pode usar um ou mais dos seguintes provedores de KMS do cliente para criptografia em descanso no Atlas:
Observação
O fornecedor de gerenciamento de chaves não precisa corresponder ao fornecedor de serviços de cloud do cluster.
Para saber mais sobre como usar seu KMS com o Atlas, consulte:
Para gerenciar sua criptografia KMS com Atlas Kubernetes Operator, você pode especificar e atualizar o parâmetro spec.encryptionAtRest
para o AtlasProject
Recurso Personalizado. Cada vez que você altera o campo spec
em qualquer um dos recursos personalizados suportados, o Atlas Kubernetes Operator cria ou atualiza a configuração correspondente do Atlas .
Pré-requisitos
Para configurar a criptografia em descanso usando Amazon Web Services KMS no Atlas Kubernetes Operator, você exige:
Um cluster Kubernetes em execução com o Atlas Kubernetes Operator distribuído.
O papel
Project Owner
ouOrganization Owner
no Atlas.Credenciais de gerenciamento de chaves válidas e uma chave de criptografia para Amazon Web Services KMS. Para saber mais, consulte Pré-requisitos para habilitar chaves gerenciadas pelo cliente com Amazon Web Services.
Uma função presumida do IAM para sua conta Atlas . Para configurar uma função presumida do IAM com o Atlas Kubernetes Operator, consulte Configurar integrações do provedor de nuvem unificado. Para saber mais sobre o acesso baseado em roles para uma chave de criptografia Amazon Web Services , consulte Gerenciar chaves de cliente com Amazon Web Services KMS.
Importante
Se você alternar suas chaves de encriptação para acesso baseado em role, não poderá desfazer a configuração de acesso baseado em role e reverter para acesso baseado em credenciais para chaves de encriptação nesse projeto.
Para configurar a criptografia em descanso usando o Azure Key Vault no Atlas Kubernetes Operator, você exige:
Um cluster Kubernetes em execução com o Atlas Kubernetes Operator distribuído.
O papel
Project Owner
ouOrganization Owner
no Atlas.Credenciais de gerenciamento de chaves válidas e uma chave de criptografia para o Azure Key Vault. Para saber mais, consulte Pré-requisitos para habilitar chaves gerenciadas pelo cliente com o Azure.
Para configurar a criptografia em descanso usando um Google Cloud Platform KMS no Atlas Kubernetes Operator, você exige:
Um cluster Kubernetes em execução com o Atlas Kubernetes Operator distribuído.
O papel
Project Owner
ouOrganization Owner
no Atlas.Credenciais de gerenciamento de chaves válidas e uma chave de criptografia para Google Cloud Platform KMS. Para saber mais, consulte Pré-requisitos para habilitar chaves gerenciadas pelo cliente com a Google Cloud Platform.
Procedimento
Criptografe seus dados do Atlas usando uma chave managed pelo cliente com o seguinte procedimento:
Crie um segredo com suas credenciais do Amazon Amazon Web Services Web Services.
Crie um segredo com os valores para os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
CustomerMasterKeyID | string alfanumérica exclusiva que identifica a chave mestra do cliente da Amazon Web Services que você usa para criptografar e descriptografar as chaves mestras do MongoDB . |
RoleId | Amazon Web Services ARN exclusivo que identifica a função Amazon Web Services IAM do com permissão para gerenciar sua chave mestra do cliente do Amazon Web Services . Para encontrar esse valor:
Amazon Web Services exibe o ARN na seção Summary. |
Para criar e rotular um segredo, execute os seguintes comandos com suas credenciais do Amazon Web Services :
kubectl create secret generic aws-ear-creds \ --from-literal="CustomerMasterKeyID=<customer-master-key>" \ --from-literal="RoleId=<aws-arn>" \ -n mongodb-atlas-system
kubectl label secret aws-ear-creds atlas.mongodb.com/type=credentials -n mongodb-atlas-system
Especifique spec.encryptionAtRest.awsKms
o parâmetro.
Adicione o objeto
spec.encryptionAtRest.awsKms
à arrayspec.encryptionAtRest
noAtlasProject
Recurso Personalizado, incluindo os seguintes parâmetros:ParâmetroDescriçãospec.encryptionAtRest.awsKms.enabled
Sinalizador que indica se esse projeto usa o Amazon Web Services KMS para criptografar dados em repouso. Para habilitar a criptografia em descanso usando o Amazon Web Services KMS, defina este parâmetro comotrue
. Para desabilitar a criptografia em descanso usando o Amazon Web Services KMS, defina este parâmetro comofalse
. Se você desabilitar a encryption at rest usando o AWS KMS, o Atlas Kubernetes Operator removerá os detalhes de configuração.spec.encryptionAtRest.awsKms.region
Etiqueta que indica a região do Amazon Web Services onde está a chave mestra do cliente.spec.encryptionAtRest.awsKms.secretRef.name
Nome do segredo que contém suas credenciais do Amazon Web Services .spec.encryptionAtRest.awsKms.secretRef.namespace
namespace que contém suas credenciais Amazon Web Services . Se não for especificado, esse parâmetro assumirá como padrão o namespace do recurso personalizadoAtlasProject
.Você deve usar um segredo que contém os valores para
AccessKeyID
,SecretAccessKey
,CustomerMasterKeyID
eRoleId
.Execute o seguinte comando:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project spec: name: Test Atlas Operator Project encryptionAtRest: awsKms: enabled: true region: us-east-1 secretRef: name: aws-ear-creds namespace: mongodb-atlas-system EOF
Verifique a ativação bem-sucedida da criptografia em descanso em seu projeto.
Execute o comando a seguir para verificar se Atlas Kubernetes Operator detecta a configuração do Amazon Web Services KMS para seu projeto.
kubectl get atlasprojects my-project -o=jsonpath='{.status.conditions[?(@.type=="EncryptionAtRestReadyType")].status}
true
Habilite a criptografia em descanso usando chaves managed pelo cliente para seu cluster.
Depois de habilitar a criptografia em descanso usando chaves managed pelo cliente para seu projeto, você deve habilitá-la no nível do cluster para criptografar dados.
Execute o seguinte comando para adicionar o spec.deploymentSpec.encryptionAtRestProvider
ao seu AtlasDeployment
Recurso Personalizado, que habilita a criptografia em descanso usando sua chave do Amazon Web Services para este cluster:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: my-cluster spec: name: Test Atlas Operator Cluster DeploymentSpec: encryptionAtRestProvider: "AWS" EOF
Crie um segredo com suas credenciais do Azure.
Crie um segredo com os valores para os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
KeyIdentifier | Endereço da Web com uma chave exclusiva que identifica seu Azure Key Vault. |
KeyVaultName | string exclusiva que identifica o Azure Key Vault que contém sua chave. |
Secret | Dados privados associados ao locatário do Azure Key Vault que você especifica no spec.encryptionAtRest.azureKeyVault.tenantID . |
SubscriptionID | 36-string exclusiva de caracteres hexadecimais que identifica sua assinatura do Azure . O Azure exibe a ID da assinatura na página de detalhes da assinatura. |
Para criar e rotular um segredo, execute os seguintes comandos com suas credenciais do Azure :
kubectl create secret generic azure-ear-creds \ --from-literal="KeyIdentifier=<web-address>" \ --from-literal="KeyVaultName=<key-vault>" \ --from-literal="Secret=<secret>" \ --from-literal="SubscriptionID=<subscription>" \ -n mongodb-atlas-system
kubectl label secret azure-ear-creds atlas.mongodb.com/type=credentials -n mongodb-atlas-system
Especifique spec.encryptionAtRest.azureKeyVault
o parâmetro.
Adicione o objeto
spec.encryptionAtRest.azureKeyVault
à arrayspec.encryptionAtRest
noAtlasProject
Recurso Personalizado, incluindo os seguintes parâmetros:ParâmetroDescriçãospec.encryptionAtRest.azureKeyVault.azureEnvironment
Local de implantação do Azure onde residem as credenciais da conta do Azure . Os valores válidos incluemAZURE
,AZURE_CHINA
eAZURE_GERMANY
.spec.encryptionAtRest.azureKeyVault.clientID
Sequência exclusiva de 36 caracteres hexadecimais que identifica seu aplicativo Azure .spec.encryptionAtRest.azureKeyVault.
enabled
Sinalizador que indica se este projeto utiliza o Azure Key Vault para criptografar dados em repouso. Para habilitar a criptografia em descanso usando o Azure Key Vault, defina esse parâmetro comotrue
. Para desabilitar a criptografia em descanso usando o Azure Key Vault, defina esse parâmetro comofalse
. Se você desabilitar a criptografia em descanso usando o Azure key vault, o Atlas Kubernetes Operator removerá os detalhes de configuração.spec.encryptionAtRest.azureKeyVault.resourceGroupName
Etiqueta que identifica o grupo de recursos do Azure que contém seu Azure Key Vault. O Azure exibe o nome do grupo de recursos na página de detalhes do grupo de recursos.spec.encryptionAtRest.azureKeyVault.secretRef.name
Nome do segredo que contém suas credenciais do Azure .spec.encryptionAtRest.azureKeyVault.secretRef.namespace
namespace que contém suas credenciais do Azure . Se não for especificado, esse parâmetro assumirá como padrão o namespace do recurso personalizadoAtlasProject
.spec.encryptionAtRest.azureKeyVault.
tenantID
Sequência exclusiva de caracteres hexadecimais de 36 caracteres que identifica o locatário do Azure Active Directory dentro da sua assinatura do Azure . O Azure exibe a ID do locatário na página de propriedades do locatário.Você deve usar um segredo que contém os valores para
KeyVaultName
,KeyIdentifier
,Secret
eSubscriptionID
.Execute o seguinte comando:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project spec: name: Test Atlas Operator Project encryptionAtRest: azureKeyVault: azureEnvironment: AZURE clientID: "12345678-90ab-cdef-1234-567890abcdef" enabled: true resourceGroupName: "myResourceGroup" tenantID: "e8e4b6ba-ff32-4c88-a9af-EXAMPLEID" secretRef: name: azure-ear-creds namespace: mongodb-atlas-system EOF
Verifique a ativação bem-sucedida da criptografia em descanso em seu projeto.
Execute o seguinte comando para verificar se o Atlas Kubernetes Operator detecta a configuração do Azure Key Vault para seu projeto.
kubectl get atlasprojects my-project -o=jsonpath='{.status.conditions[?(@.type=="EncryptionAtRestReadyType")].status}
true
Habilite a criptografia em descanso usando chaves managed pelo cliente para seu cluster.
Depois de habilitar a criptografia em descanso usando chaves managed pelo cliente para seu projeto, você deve habilitá-la no nível do cluster para criptografar dados.
Execute o seguinte comando para adicionar o spec.deploymentSpec.encryptionAtRestProvider
ao seu AtlasDeployment
Recurso Personalizado, que habilita a criptografia em descanso usando sua chave Azure para este cluster:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: my-cluster spec: name: Test Atlas Operator Cluster DeploymentSpec: encryptionAtRestProvider: "AZURE" EOF
Crie um segredo com suas Google Cloud Platform credenciais da Google Cloud Platform.
Crie um segredo com os valores para os seguintes parâmetros:
Parâmetro | Descrição |
---|---|
KeyVersionResourceID | Caminho de recurso exclusivo que exibe a ID do recurso da versão principal para seu Google Cloud Platform KMS. |
ServiceAccountKey | Arquivo JSON que contém as credenciais do Google Cloud Platform KMS da sua conta do Google Cloud Platform . IMPORTANTE: você deve formatar o objeto JSON corretamente. Certifique-se de indentar corretamente os campos de credenciais no arquivo. |
O exemplo a seguir mostra o conteúdo de um arquivo JSON do ServiceAccountKey
:
{ "type": "service_account", "project_id": "my-project-common-0", "private_key_id": "e120598ea4f88249469fcdd75a9a785c1bb3\", "private_key": "-----BEGIN PRIVATE KEY-----\\nMIIEuwIBA(truncated)SfecnS0mT94D9\\n-----END PRIVATE KEY-----\\n\", "client_email": "my-email-kms-0@my-project-common-0.iam.gserviceaccount.com\", "client_id": "10180967717292066", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/my-email-kms-0%40my-project-common-0.iam.gserviceaccount.com" "universe_domain": "googleapis.com" }
Para criar e rotular um segredo, execute os seguintes comandos com suas credenciais do Google Cloud Platform :
kubectl create secret generic azure-ear-creds \ --from-literal="KeyVersionResourceID=<resource-id>" \ --from-file="ServiceAccountKey=<your-service-account-key-files.json>" \ -n mongodb-atlas-system
kubectl label secret gcp-ear-creds atlas.mongodb.com/type=credentials -n mongodb-atlas-system
Especifique spec.encryptionAtRest.googleCloudKms
o parâmetro.
Adicione o objeto
spec.encryptionAtRest.googleCloudKms
à arrayspec.encryptionAtRest
noAtlasProject
Recurso Personalizado, incluindo os seguintes parâmetros:ParâmetroDescriçãospec.encryptionAtRest.googleCloudKms.enabled
Sinalizador que indica se esse projeto usa o GCP KMS para criptografar dados em repouso. Para habilitar a criptografia em descanso usando o GCP KMS, defina este parâmetro comotrue
. Para desativar a criptografia em descanso usando o GCP KMS, defina este parâmetro comofalse
. Se você desabilitar a criptografia em descanso usando o GCP KMS, o Atlas Kubernetes Operator removerá os detalhes de configuração.spec.encryptionAtRest.googleCloudKms.secretRef.name
Nome do segredo que contém suas credenciais do Google Cloud Platform .spec.encryptionAtRest.googleCloudKms.secretRef.namespace
namespace que contém suas credenciais do GCP. Se não for especificado, esse parâmetro assumirá como padrão o namespace do recurso personalizadoAtlasProject
.Você deve usar um segredo que contém os valores para
KeyVersionResourceID
eServiceAccountKey
.Execute o seguinte comando:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasProject metadata: name: my-project spec: name: Test Atlas Operator Project encryptionAtRest: googleCloudKms: enabled: true secretRef: name: gcp-ear-creds namespace: mongodb-atlas-system EOF
Verifique a ativação bem-sucedida da criptografia em descanso em seu projeto.
Execute o comando a seguir para verificar se Atlas Kubernetes Operator detecta a configuração do Google Cloud Platform KMS para seu projeto.
kubectl get atlasprojects my-project -o=jsonpath='{.status.conditions[?(@.type=="EncryptionAtRestReadyType")].status}
true
Habilite a criptografia em descanso usando chaves managed pelo cliente para seu cluster.
Depois de habilitar a criptografia em descanso usando chaves managed pelo cliente para seu projeto, você deve habilitá-la no nível do cluster para criptografar dados.
Execute o comando a seguir para adicionar o spec.deploymentSpec.encryptionAtRestProvider
ao seu AtlasDeployment
Recurso Personalizado, que habilita a criptografia em descanso usando sua chave do Google Cloud Platform para este cluster:
cat <<EOF | kubectl apply -f - apiVersion: atlas.mongodb.com/v1 kind: AtlasDeployment metadata: name: my-cluster spec: name: Test Atlas Operator Cluster DeploymentSpec: encryptionAtRestProvider: "GCP" EOF