Docs Menu
Docs Home
/ /
Acceso al Atlas
/ / /

Cifrar datos mediante un servicio de gestión de claves

Atlas cifra todo el almacenamiento del clúster y los volúmenes de instantáneas en reposo de forma predeterminada. Puede añadir otra capa de seguridad utilizando la configuración de su proveedor de nube. KMS junto con el motor de almacenamiento cifrado MongoDB.

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

Nota

No es necesario que el proveedor de administración de claves coincida con el proveedor de servicios en la nube del clúster.

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

Para administrar su cifrado KMS con Atlas Kubernetes Operator, puede especificar y actualizar el spec.encryptionAtRestParámetro 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 el cifrado en reposo mediante AWS KMS en Atlas Kubernetes Operator, necesita:

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 mediante Azure Key Vault en Atlas Kubernetes Operator, necesita lo siguiente:

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

Cifre sus datos de Atlas utilizando una clave administrada 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.

region

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

roleId

ARN único de AWS que identifica el rol de IAM de AWS con permiso para administrar su clave 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 la función de IAM que editó o creó para el acceso a Atlas.

AWS muestra el ARN en la Summary sección.

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="region=<aws-region>" \
--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 la matriz spec.encryptionAtRest AtlasProject en el recurso personalizado, incluidos los siguientes parámetros:

    Parameter
    Descripción

    spec.encryptionAtRest.awsKms.enabled

    Marca que indica si este proyecto utiliza AWS KMS para cifrar datos en reposo. Para habilitar el cifrado en reposo con AWS KMS, configure este parámetro true en. Para deshabilitar el cifrado en reposo con AWS KMS, configure este parámetro false en. Si deshabilita el cifrado en reposo con AWS KMS, Atlas Kubernetes Operator elimina los detalles de configuración.

    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.

    Le recomendamos que utilice un secreto que contenga los valores customerMasterKeyID de, region y roleId en lugar de los siguientes parámetros:

    • spec.encryptionAtRest.awsKms.customerMasterKeyID

    • spec.encryptionAtRest.awsKms.region

    • spec.encryptionAtRest.awsKms.roleId

  2. Ejecuta el siguiente comando:

    cat <<EOF | kubectl apply -f -
    apiVersion: atlas.mongodb.com/v1
    kind: AtlasProject
    metadata:
    name: my-project
    labels:
    app.kubernetes.io/version: 1.6.0
    spec:
    name: Test Atlas Operator Project
    encryptionAtRest:
    awsKms:
    enabled: true
    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 -o=jsonpath='{.status.conditions[?(@.type=="EncryptionAtRestReadyType")].status}
true
4

Después de habilitar el cifrado en reposo mediante claves administradas por el cliente para su proyecto, debe habilitarlo en el nivel de clúster para cifrar los datos.

Ejecute el siguiente comando para agregar spec.deploymentSpec.encryptionAtRestProvider a AtlasDeployment su recurso personalizado, que habilita el cifrado en reposo usando su clave de 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

azureEnvironment

Ubicación de implementación deAzure donde residen las credenciales de la cuenta de Azure. Los valores válidos AZURE son, AZURE_CHINA AZURE_GERMANYy.

clientID

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

keyIdentifier

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

keyVaultName

Cadena única que identifica el Azure Key Vault que contiene su clave.

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.

subscriptionID

Cadena 36hexadecimal única que identifica su suscripción de Azure. Azure muestra el identificador de la suscripción en su página de detalles.

Para crear y etiquetar un secreto, ejecute los siguientes comandos con sus credenciales de Azure:

kubectl create secret generic azure-ear-creds \
--from-literal="azureEnvironment=<deployment-locationy>" \
--from-literal="clientID=<azure-app>" \
--from-literal="keyIdentifier=<web-address>" \
--from-literal="keyVaultName=<key-vault>" \
--from-literal="resourceGroupName=<resource-group>" \
--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. enabled

    Marca que indica si este proyecto usa Azure Key Vault para cifrar datos en reposo. Para habilitar el cifrado en reposo con Azure Key Vault, configure este parámetro true en. Para deshabilitar el cifrado en reposo con Azure Key Vault, configure este parámetro false en. Si deshabilita el cifrado en reposo con Azure Key Vault, Atlas Kubernetes Operator elimina los detalles de configuración.

    spec.encryptionAtRest.azureKeyVault. secret

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

    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.

    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.

    Le recomendamos que utilice un secreto que contenga los valores azureEnvironment clientIDde,,,, keyIdentifier keyVaultNameresourceGroupNamey subscriptionID en lugar de los siguientes parámetros:

    • spec.encryptionAtRest.azureKeyVault.azureEnvironment

    • spec.encryptionAtRest.azureKeyVault.clientID

    • spec.encryptionAtRest.azureKeyVault.keyIdentifier

    • spec.encryptionAtRest.azureKeyVault.keyVaultName

    • spec.encryptionAtRest.azureKeyVault.resourceGroupName

    • spec.encryptionAtRest.azureKeyVault.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:
    enabled: true
    secret: "EXAMPLESECRET"
    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 mediante claves administradas por el cliente para su proyecto, debe habilitarlo en el nivel de clúster para cifrar los datos.

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

serviceAccountKey

ArchivoJSON que contiene las credenciales de Google Cloud KMS de su cuenta de Google Cloud.

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

El siguiente ejemplo muestra el contenido de un serviceAccountKey archivo 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. Agregue el objeto spec.encryptionAtRest.googleCloudKms a la matriz spec.encryptionAtRest AtlasProject en el recurso personalizado, incluidos los siguientes parámetros:

    Parameter
    Descripción

    spec.encryptionAtRest.googleCloudKms.enabled

    Marca que indica si este proyecto usa Google Cloud KMS para cifrar datos en reposo. Para habilitar el cifrado en reposo con Google Cloud KMS, configure este parámetro true en. Para deshabilitar el cifrado en reposo con Google Cloud KMS, configure este parámetro false en. Si deshabilita el cifrado en reposo con Google Cloud KMS, Atlas Kubernetes Operator elimina 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

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

    Le recomendamos que utilice un secreto que contenga los valores de keyVersionResourceID y serviceAccountKey en lugar de los siguientes parámetros:

    • spec.encryptionAtRest.googleCloudKms.keyVersionResourceID

    • spec.encryptionAtRest.googleCloudKms.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 verificar 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 mediante claves administradas por el cliente para su proyecto, debe habilitarlo en el 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
labels:
app.kubernetes.io/version: 1.6.0
spec:
name: Test Atlas Operator Cluster
DeploymentSpec:
encryptionAtRestProvider: "GCP"
EOF

Volver

X.509

En esta página