Menu Docs
Página inicial do Docs
/ /
Kubernetes Operator do MongoDB Atlas
/

Criptografar dados usando um serviço de gerenciamento de chaves

Nesta página

  • Pré-requisitos
  • Procedimento

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.

Para configurar a encryption at rest utilizando o AWS KMS no Atlas Kubernetes Operator, você exige:

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 encryption at rest usando o Azure Key Vault no Atlas Kubernetes Operator, você exige:

Para configurar a encryption at rest usando um Google Cloud KMS no Atlas Kubernetes Operator, você exige:

Criptografe seus dados do Atlas usando uma chave managed pelo cliente com o seguinte procedimento:

1

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 AWS que você usa para criptografar e descriptografar as chaves mestras do MongoDB.
RoleId

ARN exclusivo da AWS que identifica a função IAM da AWS com permissão para gerenciar sua chave mestra do cliente AWS . Para encontrar esse valor:

  1. Vá para a seção Roles do Console de gerenciamento da AWS .

  2. Clique no papel IAM que você editou ou criou para acesso do Atlas.

A AWS exibe o ARN na seção Summary .

Para criar e rotular um segredo, execute os seguintes comandos com suas credenciais da AWS :

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
2
  1. Adicione o objeto spec.encryptionAtRest.awsKms à array spec.encryptionAtRest no AtlasProject Recurso Personalizado, incluindo os seguintes parâmetros:

    Parâmetro
    Descrição
    spec.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 como true. Para desabilitar a criptografia em descanso usando o Amazon Web Services KMS, defina este parâmetro como false. 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 da AWS .
    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 personalizado AtlasProject .

    Você deve usar um segredo que contém os valores para AccessKeyID, SecretAccessKey, CustomerMasterKeyID e RoleId.

  2. 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
3

Execute o comando a seguir para verificar se o Atlas Kubernetes Operator detecta a configuração do AWS KMS para seu projeto.

kubectl get atlasprojects my-project -o=jsonpath='{.status.conditions[?(@.type=="EncryptionAtRestReadyType")].status}
true
4

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 repouso usando sua chave AWS 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
1

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
2
  1. Adicione o objeto spec.encryptionAtRest.azureKeyVault à array spec.encryptionAtRest no AtlasProject Recurso Personalizado, incluindo os seguintes parâmetros:

    Parâmetro
    Descrição
    spec.encryptionAtRest.azureKeyVault.azureEnvironment
    Local de implantação do Azure onde residem as credenciais da conta do Azure . Os valores válidos incluem AZURE, AZURE_CHINA e AZURE_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 encryption at rest usando o Azure Key Vault, defina esse parâmetro como true. Para desabilitar a encryption at rest usando o Azure Key Vault, defina esse parâmetro como false. Se você desabilitar a encryption at rest 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 personalizado AtlasProject .
    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 e SubscriptionID.

  2. 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
3

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
4

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 repouso 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
1

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 KMS.
ServiceAccountKey

Arquivo JSON que contém as credenciais do Google Cloud KMS da sua conta do Google Cloud.

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:

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
2
  1. Adicione o objeto spec.encryptionAtRest.googleCloudKms à array spec.encryptionAtRest no AtlasProject Recurso Personalizado, incluindo os seguintes parâmetros:

    Parâmetro
    Descrição
    spec.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 como true. Para desativar a criptografia em descanso usando o GCP KMS, defina este parâmetro como false. 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.
    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 personalizado AtlasProject .

    Você deve usar um segredo que contém os valores para KeyVersionResourceID e ServiceAccountKey.

  2. 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
3

Execute o comando a seguir para verificar se o Atlas Kubernetes Operator detecta a configuração do Google Cloud KMS para seu projeto.

kubectl get atlasprojects my-project -o=jsonpath='{.status.conditions[?(@.type=="EncryptionAtRestReadyType")].status}
true
4

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 repouso usando sua chave do Google Cloud 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

Voltar

X.509

Próximo

Autenticação federada