Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
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.

Puedes usar uno o más de los siguientes proveedores KMS de cliente para 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 tu KMS con Atlas, consulta:

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

Para configurar el cifrado en reposo usando AWS KMS en Atlas Kubernetes Operator, necesitas:

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 usando Azure Key Vault en Atlas Kubernetes Operator, necesitas:

Para configurar el cifrado en reposo utilizando un Google Cloud KMS en Atlas Kubernetes Operator, se requiere:

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

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

RoleID

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

  1. Go al Roles sección de la Consola de administración de AWS.

  2. Haz clic en el rol IAM que editaste o creaste para el acceso a Atlas.

AWS muestra el ARN en la sección Summary.

Para crear y etiquetar un secreto, ejecuta los siguientes comandos con tus 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

    Bandera que indica si este Proyecto utiliza AWS KMS para cifrado los datos en reposo. Para habilitar el cifrado en reposo usando AWS KMS, configura este parámetro en true. Para desactivar el cifrado en reposo utilizando AWS KMS, configura este parámetro en false. Si deshabilita el cifrado en reposo usando AWS KMS, Atlas Kubernetes Operator elimina los detalles de 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 tus credenciales de AWS.

    spec.encryptionAtRest.awsKms.secretRef.namespace

    Namespace que contiene tus credenciales de AWS. Si no se especifica, este parámetro por defecto toma el namespace del recurso personalizado AtlasProject.

    Debes usar un secreto que contenga los valores de AccessKeyID, SecretAccessKey, CustomerMasterKeyID y RoleID.

  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.

Ejecute el siguiente comando para agregar el spec.deploymentSpec.encryptionAtRestProvider a su AtlasDeployment Recurso personalizado, que habilita el cifrado en reposo utilizando su 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 su Bóveda de claves de Azure.

KeyVaultName

string única que identifica la Azure Key Vault que contiene su clave.

Secret

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

SubscriptionID

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

Para crear y etiquetar un secreto, ejecuta los siguientes comandos con tus 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. Agrega spec.encryptionAtRest.azureKeyVault objeto para el spec.encryptionAtRest arreglo en el AtlasProject recurso personalizado, incluidos los siguientes parámetros:

    Parameter
    Descripción

    spec.encryptionAtRest.azureKeyVault.azureEnvironment

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

    spec.encryptionAtRest.azureKeyVault.clientID

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

    spec.encryptionAtRest.azureKeyVault. enabled

    Indicador que señala si este proyecto utiliza Azure Key Vault para cifrar los datos en reposo. Para habilitar el cifrado en reposo mediante Azure Key Vault, configure este parámetro en true. Para desactivar el cifrado en reposo mediante Azure Key Vault, configura este parámetro en false. Si se desactiva el cifrado en reposo usando el Azure key vault, el Atlas Kubernetes Operator remueve los detalles de la configuración.

    spec.encryptionAtRest.azureKeyVault.resourceGroupName

    Etiqueta que identifica el grupo de recursos de 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 tus credenciales de Azure.

    spec.encryptionAtRest.azureKeyVault.secretRef.namespace

    Namespace que contiene tus credenciales de Azure. Si no se especifica, este parámetro por defecto toma el namespace del recurso personalizado AtlasProject.

    spec.encryptionAtRest.azureKeyVault. tenantID

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

    Debes usar un secreto que contenga los valores de KeyVaultName, KeyIdentifier, Secret y SubscriptionID.

  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

Ejecuta el siguiente comando para comprobar si el operador Atlas Kubernetes detecta la configuración de Azure Key Vault para tu 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.

Ejecutar el siguiente comando para añadir la spec.deploymentSpec.encryptionAtRestProvider al AtlasDeployment recurso personalizado, que habilita el cifrado en reposo usando la clave de Azure de 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 del recurso de la versión de clave para KMS de Google Cloud.

ServiceAccountKey

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

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

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

{
"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 muestra si este proyecto utiliza KMS de Google Cloud 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 utilizando Google Cloud KMS, establece este parámetro en false. Si se inhabilita el cifrado en reposo mediante Google Cloud KMS, Atlas Kubernetes Operator remueve 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.

    Debes usar un secreto que contenga los valores de KeyVersionResourceID y ServiceAccountKey.

  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 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 añadir el spec.deploymentSpec.encryptionAtRestProvider a tu AtlasDeployment Recurso Personalizado, que activa el cifrado en reposo usando tu 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