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.
Requisitos previos
Para configurar el cifrado en reposo mediante AWS KMS en Atlas Kubernetes Operator, necesita:
Un clúster de Kubernetes en ejecución con Atlas Kubernetes Operator implementado.
El
Project Ownerrol oOrganization Owneren Atlas.Credenciales de administración de claves válidas y una clave de cifrado para AWS KMS. Para obtener más información, consulte Requisitos previos para habilitar claves administradas por el cliente con AWS.
Un rol de IAM asumido para su cuenta de Atlas. Para configurar un rol de IAM asumido con el operador de Kubernetes de Atlas, consulte Configurar integraciones de proveedores de nube unificados. Para obtener más información sobre el acceso basado en roles a una clave de cifrado de AWS, consulte Administrar claves de cliente 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 mediante Azure Key Vault en Atlas Kubernetes Operator, necesita lo siguiente:
Un clúster de Kubernetes en ejecución con Atlas Kubernetes Operator implementado.
El
Project Ownerrol oOrganization Owneren Atlas.Credenciales de administración de claves válidas y una clave de cifrado para Azure Key Vault. Para obtener más información, consulte Requisitos previos para habilitar claves administradas por el cliente con Azure.
Para configurar el cifrado en reposo mediante un Google Cloud KMS en Atlas Kubernetes Operator, necesita:
Un clúster de Kubernetes en ejecución con Atlas Kubernetes Operator implementado.
El
Project Ownerrol oOrganization Owneren Atlas.Credenciales de administración de claves válidas y una clave de cifrado para Google Cloud KMS. Para obtener más información, consulte Requisitos previos para habilitar claves administradas por el cliente con Google Cloud.
Procedimiento
Cifre sus datos de Atlas utilizando una clave administrada 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 ú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:
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
Especifique el spec.encryptionAtRest.awsKms parámetro.
Agregue el objeto
spec.encryptionAtRest.awsKmsa la matrizspec.encryptionAtRestAtlasProjecten el recurso personalizado, incluidos los siguientes parámetros:ParameterDescripciónspec.encryptionAtRest.awsKms.enabledMarca 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
trueen. Para deshabilitar el cifrado en reposo con AWS KMS, configure este parámetrofalseen. Si deshabilita el cifrado en reposo con 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 clave maestra del 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 -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 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
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 Azure Key Vault. |
| Cadena única que identifica el Azure Key Vault que contiene su clave. |
| Datos privados asociados con el inquilino de Azure Key Vault que especifique |
| 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
Especifique el spec.encryptionAtRest.azureKeyVault parámetro.
Agregue el objeto
spec.encryptionAtRest.azureKeyVaulta la matrizspec.encryptionAtRestAtlasProjecten el recurso personalizado, incluidos los siguientes parámetros:ParameterDescripciónspec.encryptionAtRest.azureKeyVault.azureEnvironmentUbicación de implementación deAzure donde residen las credenciales de la cuenta de Azure. Los valores válidos
AZUREson,AZURE_CHINAAZURE_GERMANYy.spec.encryptionAtRest.azureKeyVault.clientIDstring de 36 caracteres hexadecimales única que identifica su aplicación de Azure .
spec.encryptionAtRest.azureKeyVault.enabledMarca 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
trueen. Para deshabilitar el cifrado en reposo con Azure Key Vault, configure este parámetrofalseen. Si deshabilita el cifrado en reposo con Azure Key Vault, Atlas Kubernetes Operator elimina los detalles de 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 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
Crea un secreto con tus 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 clave para su Google Cloud KMS. |
| 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
Especifique el spec.encryptionAtRest.googleCloudKms parámetro.
Agregue el objeto
spec.encryptionAtRest.googleCloudKmsa la matrizspec.encryptionAtRestAtlasProjecten el recurso personalizado, incluidos los siguientes parámetros:ParameterDescripciónspec.encryptionAtRest.googleCloudKms.enabledMarca 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
trueen. Para deshabilitar el cifrado en reposo con Google Cloud KMS, configure este parámetrofalseen. Si deshabilita el cifrado en reposo con Google Cloud KMS, Atlas Kubernetes Operator elimina los detalles de configuración.spec.encryptionAtRest.googleCloudKms.secretRef.nameNombre del secreto que contiene las credenciales de Google Cloud.
spec.encryptionAtRest.googleCloudKms.secretRef.namespaceEspacio 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
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 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
Habilite el cifrado en reposo utilizando claves gestionadas por el cliente para su clúster.
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