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.
Requisitos previos
Para configurar la encriptación en reposo usando AWS 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 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 IAM asumido para tu cuenta de Atlas. Para configurar un rol IAM supuesto con el Atlas Kubernetes Operator, consulte Configurar Integraciones Unificadas de Proveedores de Nube. Para aprender más sobre el acceso basado en roles para una llave de cifrado de AWS, consulte Gestione 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 utilizando 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 mediante un Google Cloud KMS en Atlas Kubernetes Operator, necesita:
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 |
|---|---|
| Cadena alfanumérica única que identifica la clave maestra del cliente de AWS que utiliza para cifrar y descifrar las claves maestras de MongoDB. |
| 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:
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
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.enabledIndicador 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 afalse. Si deshabilitas el cifrado en reposo usando AWS KMS, Atlas Kubernetes Operator elimina los detalles de la 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 sus credenciales de AWS.
spec.encryptionAtRest.awsKms.secretRef.namespaceEspacio de nombres que contiene sus credenciales de AWS. Si no se especifica, este parámetro toma como valor predeterminado el
AtlasProjectespacio de nombres del recurso personalizado.Debe utilizar un secreto que contenga los valores
AccessKeyIDSecretAccessKeyde,,CustomerMasterKeyIDRoleIDy.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
Verifique la habilitación exitosa del cifrado en reposo en su 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.
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
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 tu Azure Key Vault. |
| string única que identifica el Azure Key Vault que contiene tu clave. |
| Datos privados asociados con el inquilino de Azure Key Vault que especifique |
| 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
Especifica el parámetro spec.encryptionAtRest.azureKeyVault.
Agregue el objeto spec.encryptionAtRest.azureKeyVault a la matriz spec.encryptionAtRest
AtlasProjecten el recurso personalizado, incluidos los siguientes parámetros:ParameterDescripciónspec.encryptionAtRest.azureKeyVault.azureEnvironmentUbicación de implementación de Azure donde se encuentran las credenciales de la cuenta de Azure. Los valores válidos incluyen
AZURE,AZURE_CHINAyAZURE_GERMANY.spec.encryptionAtRest.azureKeyVault.clientIDstring de 36 caracteres hexadecimales única que identifica su aplicación de Azure .
spec.encryptionAtRest.azureKeyVault.enabledBandera 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 enfalse. Si desactiva el cifrado en reposo utilizando el Azure key vault, Atlas Kubernetes Operator remueve los detalles de la configuración.spec.encryptionAtRest.azureKeyVault.resourceGroupNameEtiqueta 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.nameNombre del secreto que contiene sus credenciales de Azure.
spec.encryptionAtRest.azureKeyVault.secretRef.namespaceEspacio de nombres que contiene sus credenciales de Azure. Si no se especifica, este parámetro toma como valor predeterminado el
AtlasProjectespacio de nombres del recurso personalizado.spec.encryptionAtRest.azureKeyVault.tenantIDstring ú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
KeyVaultNameKeyIdentifierde,,SecretSubscriptionIDy.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
Verifique la habilitación exitosa del cifrado en reposo en su proyecto.
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
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 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
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 de recurso de la versión de clave para tu KMS de Google Cloud. |
| 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
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 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 enfalse. Si inhabilita el cifrado en reposo usando Google Cloud KMS, Atlas Kubernetes Operator removerá 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.Debe utilizar un secreto que contenga los valores
KeyVersionResourceIDdeServiceAccountKeyy.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
Verifique la habilitación exitosa del cifrado en reposo en su proyecto.
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
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 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