Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
/ / /

Cifrar datos usando un Key Management Service

Atlas cifra por defecto todo el almacenamiento de clúster y los volúmenes de snapshot en reposo. Puedes añadir otra capa de seguridad utilizando tu proveedor de nube KMS junto con MongoDB. motor de almacenamiento cifrado.

Puede utilizar uno o más de los siguientes proveedores de KMS de clientes para el cifrado en reposo en Atlas:

Nota

El proveedor de gestión de claves no necesita coincidir con el proveedor del servicio en la nube del clúster.

Para obtener más información sobre cómo usar su KMS con Atlas, consulte:

Para gestionar tu cifrado KMS con Atlas Kubernetes Operator, puedes especificar y actualizar el Parámetro spec.encryptionAtRest para el AtlasProject Recurso personalizado. Cada vez que se modifica el spec campo en cualquiera de los recursos personalizados compatibles, Atlas Kubernetes Operator crea o actualiza la configuración de Atlas correspondiente.

Para configurar la encriptación en reposo usando AWS KMS en Atlas Kubernetes Operator, se requiere:

Importante

Si cambia tus llaves de cifrado al acceso basado en roles, no podrás deshacer la configuración de acceso basado en roles ni volver al acceso basado en credenciales para las llaves de cifrado en ese proyecto.

Para configurar el cifrado en reposo utilizando Azure Key Vault en Atlas Kubernetes Operator, necesitas:

Para configurar el cifrado en reposo mediante un Google Cloud KMS en Atlas Kubernetes Operator, necesita:

Encripte sus datos de Atlas usando una clave gestionada por el cliente con el siguiente procedimiento:

1

Crea un secreto con los valores de los siguientes parámetros:

Parameter
Descripción

CustomerMasterKeyID

Cadena alfanumérica única que identifica la clave maestra del cliente de AWS que utiliza para cifrar y descifrar las claves maestras de MongoDB.

RoleID

ARN de AWS único que identifica el rol de AWS IAM con permiso para gestionar su llave maestra de cliente de AWS. Para encontrar este valor:

  1. Ir a la Roles sección de la consola de administración de AWS.

  2. Haga clic en el rol IAM que editó o creó para el acceso a Atlas.

AWS muestra el ARN en la sección Summary.

Para crear y etiquetar un secreto, ejecute los siguientes comandos con sus credenciales de 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. Agregue el objeto spec.encryptionAtRest.awsKms a spec.encryptionAtRest arreglo en el AtlasProject Recurso personalizado, que incluye los siguientes parámetros:

    Parameter
    Descripción

    spec.encryptionAtRest.awsKms.enabled

    Indicador que señala si este proyecto utiliza AWS KMS para cifrar datos en reposo. Para habilitar el cifrado en reposo utilizando AWS KMS, establece este parámetro en true. Para desactivar el cifrado en reposo usando AWS KMS, ajusta este parámetro a false. Si deshabilitas el cifrado en reposo usando AWS KMS, Atlas Kubernetes Operator elimina los detalles de la configuración.

    spec.encryptionAtRest.awsKms.region

    Etiqueta que indica la región de AWS donde existe la llave maestra de cliente.

    spec.encryptionAtRest.awsKms.secretRef.name

    Nombre del secreto que contiene sus credenciales de AWS.

    spec.encryptionAtRest.awsKms.secretRef.namespace

    Espacio de nombres que contiene sus credenciales de AWS. Si no se especifica, este parámetro toma como valor predeterminado el AtlasProject espacio de nombres del recurso personalizado.

    Debe utilizar un secreto que contenga los valores AccessKeyID SecretAccessKeyde,, CustomerMasterKeyID RoleIDy.

  2. Ejecuta el siguiente 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

Ejecute el siguiente comando para verificar si Atlas Kubernetes Operator detecta la configuración de AWS KMS para su proyecto.

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

Después de habilitar el cifrado en reposo utilizando claves administradas por el cliente para tu proyecto, debes activarlo a nivel de clúster para cifrar los datos.

Ejecuta el siguiente comando para agregar el spec.deploymentSpec.encryptionAtRestProvider a tu AtlasDeployment Recurso personalizado, que habilita el cifrado en reposo utilizando tu clave AWS para este clúster:

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

Crea un secreto con los valores de los siguientes parámetros:

Parameter
Descripción

KeyIdentifier

Dirección web con una clave única que identifica tu Azure Key Vault.

KeyVaultName

string única que identifica el Azure Key Vault que contiene tu clave.

Secret

Datos privados asociados con el inquilino de Azure Key Vault que especifique spec.encryptionAtRest.azureKeyVault.tenantID en.

SubscriptionID

string hexadecimal única 36que identifica tu suscripción a Azure. Azure muestra el ID de suscripción en la página de detalles de la suscripción.

Para crear y etiquetar un secreto, ejecute los siguientes comandos con sus credenciales de 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. Agregue el objeto spec.encryptionAtRest.azureKeyVault a la matriz spec.encryptionAtRest AtlasProject en el recurso personalizado, incluidos los siguientes parámetros:

    Parameter
    Descripción

    spec.encryptionAtRest.azureKeyVault.azureEnvironment

    Ubicación de implementación de Azure donde se encuentran las credenciales de la cuenta de Azure. Los valores válidos incluyen AZURE, AZURE_CHINA y AZURE_GERMANY.

    spec.encryptionAtRest.azureKeyVault.clientID

    string de 36 caracteres hexadecimales única que identifica su aplicación de Azure .

    spec.encryptionAtRest.azureKeyVault. enabled

    Bandera que indica si este proyecto usa Azure Key Vault para cifrar datos en reposo. Para habilitar el cifrado en reposo utilizando Azure Key Vault, configura este parámetro en true. Para desactivar el cifrado en reposo con Azure Key Vault, establece este parámetro en false. Si desactiva el cifrado en reposo utilizando el Azure key vault, Atlas Kubernetes Operator remueve los detalles de la configuración.

    spec.encryptionAtRest.azureKeyVault.resourceGroupName

    Etiqueta que identifica el grupo de recursos Azure que contiene tu Azure Key Vault. Azure muestra el nombre del grupo de recursos en la página de detalles del grupo de recursos.

    spec.encryptionAtRest.azureKeyVault.secretRef.name

    Nombre del secreto que contiene sus credenciales de Azure.

    spec.encryptionAtRest.azureKeyVault.secretRef.namespace

    Espacio de nombres que contiene sus credenciales de Azure. Si no se especifica, este parámetro toma como valor predeterminado el AtlasProject espacio de nombres del recurso personalizado.

    spec.encryptionAtRest.azureKeyVault. tenantID

    string única de caracteres hexadecimales de 36 que identifica al inquilino Azure Active directorio dentro de su Azure suscripción. Azure muestra el ID de inquilino en la página de propiedades del inquilino.

    Debe utilizar un secreto que contenga los valores KeyVaultName KeyIdentifierde,, Secret SubscriptionIDy.

  2. Ejecuta el siguiente 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

Ejecute el siguiente comando para comprobar si Atlas Kubernetes Operator detecta la configuración de Azure Key Vault para su proyecto.

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

Después de habilitar el cifrado en reposo utilizando claves administradas por el cliente para tu proyecto, debes activarlo a nivel de clúster para cifrar los datos.

Ejecuta el siguiente comando para agregar el spec.deploymentSpec.encryptionAtRestProvider a tu AtlasDeployment Custom recurso, lo cual permite el cifrado en reposo mediante tu clave de Azure para este clúster:

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

Crea un secreto con los valores de los siguientes parámetros:

Parameter
Descripción

KeyVersionResourceID

Ruta de recurso única que muestra el ID de recurso de la versión de clave para tu KMS de Google Cloud.

ServiceAccountKey

Archivo JSON que contiene las credenciales de KMS de Google Cloud de tu cuenta de Google Cloud.

IMPORTANTE: Debe formatear el objeto JSON correctamente. Asegúrese de indentar correctamente los campos de credenciales dentro del archivo.

El siguiente ejemplo muestra el contenido de un ServiceAccountKey JSON archivo:

{
"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 crear y etiquetar un secreto, ejecuta los siguientes comandos con tus credenciales de 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. Añade el spec.encryptionAtRest.googleCloudKms. objeto a la spec.encryptionAtRest arreglo en el AtlasProject Recurso Personalizado, incluidos los siguientes parámetros:

    Parameter
    Descripción

    spec.encryptionAtRest.googleCloudKms.enabled

    Indicador que señala si este proyecto utiliza Google Cloud KMS para cifrar los datos en reposo. Para habilitar el cifrado en reposo utilizando Google Cloud KMS, establezca este parámetro en true. Para desactivar el cifrado en reposo usando Google Cloud KMS, establece este parámetro en false. Si inhabilita el cifrado en reposo usando Google Cloud KMS, Atlas Kubernetes Operator removerá los detalles de configuración.

    spec.encryptionAtRest.googleCloudKms.secretRef.name

    Nombre del secreto que contiene las credenciales de Google Cloud.

    spec.encryptionAtRest.googleCloudKms.secretRef.namespace

    Namespace que contiene tus credenciales de Google Cloud. Si no se especifica, este parámetro se asigna por defecto al namespace del recurso personalizado AtlasProject.

    Debe utilizar un secreto que contenga los valores KeyVersionResourceID de ServiceAccountKey y.

  2. Ejecuta el siguiente 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

Ejecute el siguiente comando para comprobar si Atlas Kubernetes Operator detecta la configuración de Google Cloud KMS para el proyecto.

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

Después de habilitar el cifrado en reposo utilizando claves administradas por el cliente para tu proyecto, debes activarlo a nivel de clúster para cifrar los datos.

Ejecute el siguiente comando para agregar spec.deploymentSpec.encryptionAtRestProvider a su AtlasDeployment recurso personalizado, que habilita el cifrado en reposo usando su clave de Google Cloud para este clúster:

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

Volver

X.509

En esta página