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.
Requisitos previos
Para configurar el cifrado en reposo usando AWS KMS en Atlas Kubernetes Operator, necesitas:
Un clúster de Kubernetes en funcionamiento con Atlas Kubernetes Operator implementado.
El
Project OwneroOrganization Ownerrol en Atlas.Credenciales válidas de gestión de claves y una llave de cifrado para AWS KMS. Para obtener más información, consulta Requisitos previos para habilitar la gestión de claves por el cliente en AWS.
Un rol de IAM asumido para tu cuenta de Atlas. Para configurar un rol IAM asumido con Atlas Kubernetes Operator, consulta Configurar integraciones unificadas de proveedores de nube. Para obtener más información sobre el acceso basado en roles para una clave de cifrado de AWS, consulte Administre las claves de clientes con AWS KMS.
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:
Un clúster de Kubernetes en funcionamiento con Atlas Kubernetes Operator implementado.
El
Project OwneroOrganization Ownerrol en Atlas.Credenciales válidas de gestión de claves y una clave de cifrado para Azure Key Vault. Para obtener más información, consulte Requisitos previos para activar claves gestionadas por clientes con Azure.
Para configurar el cifrado en reposo utilizando un Google Cloud KMS en Atlas Kubernetes Operator, se requiere:
Un clúster de Kubernetes en funcionamiento con Atlas Kubernetes Operator implementado.
El
Project OwneroOrganization Ownerrol en Atlas.Credenciales válidas de gestión de claves y una clave de cifrado para Google Cloud KMS. Para saber más, consulta Prerequisitos para activar claves gestionadas por el cliente con Google Cloud.
Procedimiento
Encripte sus datos de Atlas usando una clave gestionada por el cliente con el siguiente procedimiento:
Crea un secreto con tus credenciales de AWS.
Crea un secreto con los valores de los siguientes parámetros:
Parameter | Descripción |
|---|---|
| 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. |
| 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:
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
Especifica el parámetro spec.encryptionAtRest.awsKms.
Agregue el objeto spec.encryptionAtRest.awsKms a spec.encryptionAtRest arreglo en el
AtlasProjectRecurso personalizado, que incluye los siguientes parámetros:ParameterDescripciónspec.encryptionAtRest.awsKms.enabledBandera 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 enfalse. Si deshabilita el cifrado en reposo usando AWS KMS, Atlas Kubernetes Operator elimina los detalles de configuración.spec.encryptionAtRest.awsKms.regionEtiqueta que indica la región de AWS donde existe la llave maestra de cliente.
spec.encryptionAtRest.awsKms.secretRef.nameNombre del secreto que contiene tus credenciales de AWS.
spec.encryptionAtRest.awsKms.secretRef.namespaceNamespace 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,CustomerMasterKeyIDyRoleID.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
Comprueba la habilitación exitosa del cifrado en reposo en tu proyecto.
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
Habilite el cifrado en reposo utilizando claves gestionadas por el cliente para su clúster.
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
Crea un secreto con tus credenciales de Azure.
Crea un secreto con los valores de los siguientes parámetros:
Parameter | Descripción |
|---|---|
| Dirección web con una clave única que identifica su Bóveda de claves de Azure. |
| string única que identifica la Azure Key Vault que contiene su clave. |
| Datos privados asociados al inquilino de Azure Key Vault que especifique en |
| 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
Especifica el parámetro spec.encryptionAtRest.azureKeyVault.
Agrega spec.encryptionAtRest.azureKeyVault objeto para el spec.encryptionAtRest arreglo en el
AtlasProjectrecurso personalizado, incluidos los siguientes parámetros:ParameterDescripciónspec.encryptionAtRest.azureKeyVault.azureEnvironmentUbicación de implementación de Azure donde residen las credenciales de la cuenta de Azure. Los valores válidos incluyen
AZURE,AZURE_CHINAyAZURE_GERMANY.spec.encryptionAtRest.azureKeyVault.clientIDstring única de 36 caracteres hexadecimales que identifica su aplicación de Azure.
spec.encryptionAtRest.azureKeyVault.enabledIndicador 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 enfalse. 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.resourceGroupNameEtiqueta 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.nameNombre del secreto que contiene tus credenciales de Azure.
spec.encryptionAtRest.azureKeyVault.secretRef.namespaceNamespace 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.tenantIDstring ú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,SecretySubscriptionID.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
Comprueba la habilitación exitosa del cifrado en reposo en tu proyecto.
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
Habilite el cifrado en reposo utilizando claves gestionadas por el cliente para su clúster.
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
Cree un secreto con sus credenciales de Google Cloud.
Crea un secreto con los valores de los siguientes parámetros:
Parameter | Descripción |
|---|---|
| Ruta de recurso única que muestra el ID del recurso de la versión de clave para KMS de Google Cloud. |
| 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
Especifica el parámetro spec.encryptionAtRest.googleCloudKms.
Añade el spec.encryptionAtRest.googleCloudKms. objeto a la spec.encryptionAtRest arreglo en el
AtlasProjectRecurso Personalizado, incluidos los siguientes parámetros:ParameterDescripciónspec.encryptionAtRest.googleCloudKms.enabledIndicador 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 enfalse. Si se inhabilita el cifrado en reposo mediante Google Cloud KMS, Atlas Kubernetes Operator remueve los detalles de configuración.spec.encryptionAtRest.googleCloudKms.secretRef.nameNombre del secreto que contiene las credenciales de Google Cloud.
spec.encryptionAtRest.googleCloudKms.secretRef.namespaceNamespace 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
KeyVersionResourceIDyServiceAccountKey.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
Comprueba la habilitación exitosa del cifrado en reposo en tu proyecto.
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
Habilite el cifrado en reposo utilizando claves gestionadas por el cliente para su clúster.
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