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.

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="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.region

    Etiqueta que indica la región de AWS donde existe la clave maestra del 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 -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

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.

Secret

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

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="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 deAzure donde residen las credenciales de la cuenta de Azure. Los valores válidos AZURE son, AZURE_CHINA AZURE_GERMANYy.

    spec.encryptionAtRest.azureKeyVault.clientID

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

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

    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 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
spec:
name: Test Atlas Operator Cluster
DeploymentSpec:
encryptionAtRestProvider: "GCP"
EOF

Volver

X.509

En esta página