Cifre sus datos en reposo en Atlas con las claves administradas por el cliente (CMK) que usted crea, posee y administra en su AWS KMS.
Esta página describe cómo configurar la administración de claves de cliente mediante AWS KMS en su proyecto Atlas y en los clústeres de ese proyecto.
Requisitos previos
Para habilitar claves administradas por el cliente con AWS KMS para un proyecto MongoDB, debe:
Utilice un clúster M10 o mayor.
Tener un rol de AWS IAM con privilegios suficientes. Atlas debe tener permiso para realizar las siguientes acciones con su clave:
Nota
Si desea utilizar la clave AWS KMS con un rol de AWS IAM de una cuenta de AWS diferente en lugar de la del rol de IAM que creó la clave AWS KMS, asegúrese de tener privilegios suficientes:
Agregue una declaración de política clave debajo de la clave AWS KMS para incluir la cuenta externa de AWS.
Agregue una política de IAM en línea para la función de IAM en la cuenta externa de AWS.
Para obtener una discusión completa sobre los roles de IAM y las claves maestras del cliente, consulte la documentación de AWS.
Después de confirmar los privilegios anteriores, puede seguir los pasos habituales para configurar los ajustes de KMS en Atlas, con la siguiente excepción:
Debe proporcionar el ARN completo para la clave AWS KMS (por ejemplo,
arn:aws:kms:eu-west-2:111122223333:key/12345678-1234-1234-1234-12345678) en lugar del ID de clave maestra (por12345678-1234-1234-1234-12345678ejemplo,) en el campo de ID de clave de AWS KMS.
Para aprender a crear un rol de IAM, consulte Roles de IAM en la documentación de AWS.
Atlas usa la misma función de IAM y la misma configuración de clave de AWS KMS para todos los clústeres de un proyecto para el que está habilitado el cifrado en reposo.
Si su configuración de AWS KMS lo requiere, permita el acceso desde Las direcciones IP de Atlas y las direcciones IP públicas o los nombres de host DNS de los nodos de su clúster para que Atlas pueda comunicarse con su KMS. Debe incluir las direcciones IP en su política de rol de IAM administrada configurando operadores de condición de dirección IP en su documento de política. Si las direcciones IP de los nodos cambian, debe actualizar su configuración para evitar interrupciones de la conectividad.
Procedimientos
Habilitar el acceso basado en roles para su clave de cifrado para un proyecto
En Atlas, vaya a la Advanced Página para su proyecto.
Si aún no aparece, se debe seleccionar la organización que contiene el proyecto en el menú Organizations de la barra de navegación.
Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.
En la barra lateral, haz clic en Database & Network Access en la sección Security.
En la barra lateral, haga clic en Advanced.
La página Avanzada se muestra.
Haga clic en el Authorize a new IAM role enlace para autorizar una función de AWS IAM en Atlas para acceder a sus claves de AWS KMS para el cifrado en reposo.
Para crear un nuevo rol de AWS IAM y acceder a sus claves de AWS KMS para el cifrado en reposo, siga el procedimiento "Crear un nuevo rol con la CLI de AWS". Si ya tiene un rol de AWS IAM que desea autorizar, siga el procedimiento "Añadir relaciones de confianza a un rol existente".
Agregue una política de acceso a su rol de IAM de AWS mediante la consola de AWS o la CLI. Consulte Administrar políticas de IAM para obtener más información.
Nota
Esta declaración de política permite que el principal de AWS de MongoDB utilice la clave KMS del cliente para operaciones de cifrado y descifrado. El principal de Atlas no es secreto y se utiliza en todos los clientes de Atlas. Se trata de una cuenta de AWS altamente restringida y con fines limitados, sin recursos aparte del usuario de IAM. El ExternalId en la declaración de política es único para cada proyecto de Atlas, pero no es secreto. El ExternalId se utiliza para mitigar la posibilidad de vulnerabilidades entre contextos (delegado confuso). El uso de un principal común por parte de Atlas para acceder a las claves de todos los clientes es un patrón de acceso recomendado por Amazon, como se describe aquí.
La política de acceso para el cifrado en reposo es similar a la siguiente:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:DescribeKey" ], "Resource": [ "arn:aws:kms:us-east-1:123456789012:key/12x345y6-7z89-0a12-3456-xyz123456789" ] } ] }
Envíe una solicitud POST al punto cloudProviderAccess final.
Utilice el punto de conexión de la API para crear un nuevo rol de AWS IAM. Atlas utilizará este rol para la autenticación con su cuenta de AWS.
Mantenga los valores de campo devueltos atlasAWSAccountArn y atlasAssumedRoleExternalId a mano para usarlos en el siguiente paso.
Modifique su política de confianza del rol de AWS IAM.
Inicie sesión en su consola de administración de AWS.
Navegue hasta el servicio Identity and Access Management (IAM).
Seleccione Roles en la navegación del lado izquierdo.
Haga clic en el rol de IAM existente que desea utilizar para acceder a Atlas de la lista de roles.
Seleccione la pestaña Trust Relationships.
Haga clic en el botón Edit trust relationship.
Edite el Policy Document. Agregue un nuevo objeto
Statementcon el siguiente contenido.Nota
Esta declaración de política permite que el principal de AWS de MongoDB utilice la clave KMS del cliente para operaciones de cifrado y descifrado. El principal de Atlas no es secreto y se utiliza en todos los clientes de Atlas. Se trata de una cuenta de AWS altamente restringida y con fines limitados, sin recursos aparte del usuario de IAM. El
ExternalIden la declaración de política es único para cada proyecto de Atlas, pero no es secreto. ElExternalIdse utiliza para mitigar la posibilidad de vulnerabilidades entre contextos (delegado confuso). El uso de un principal común por parte de Atlas para acceder a las claves de todos los clientes es un patrón de acceso recomendado por Amazon, como se describe aquí.Nota
Reemplace las líneas destacadas con los valores devueltos de la llamada a la API en el paso 1.
{ "Version": "2020-03-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "<atlasAWSAccountArn>" }, "Action:" "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<atlasAssumedRoleExternalId>" } } } ] } Haga clic en el botón Update Trust Policy.
Autorizar la función IAM recién creada.
Utilice el punto de conexión de la API para autorizar y configurar el nuevo ARN de rol asumido de IAM. Si la llamada a la API se realiza correctamente, puede usar el roleId valor al configurar los servicios de Atlas que utilizan AWS.
Habilitar AWS KMS con autorización de roles en el proyecto
Envía una solicitud PATCH al punto final de la API encryptionAtRest para actualizar el campo awsKms.roleId con tu ID autorizado de rol de AWS IAM.
Ejemplo
curl --user "{public key}:{private key}" --digest \ --header "Accept: application/json" \ --header "Content-Type: application/json" \ --include \ --request PATCH \ "https://cloud.mongodb.com/api/atlas/v1.0/groups/{groupId}/encryptionAtRest?pretty=true&envelope=true" \ --data ' { "awsKms": { "enabled": true, "roleId": "<roleId>", "customerMasterKeyID": "<master-key-id>", "region": "<aws-region>" } }'
Después de habilitar el acceso basado en roles para su clave de cifrado para su proyecto, habilite las claves administradas por el cliente para cada clúster Atlas en su proyecto siguiendo Habilitar la administración de claves del cliente para un clúster Atlas.
Cambiar al acceso basado en roles para su clave de cifrado para un proyecto
A partir del de enero 26 2021del, AWS requiere el uso de roles de IAM en lugar de usuarios de IAM para administrar el acceso a las claves de cifrado de AWS KMS en Atlas. Si inicialmente configuró su proyecto para usar credenciales de usuario de IAM para acceder a las claves de AWS KMS, cambie al acceso basado en roles para cumplir con este nuevo requisito mediante el siguiente procedimiento.
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.
En Atlas, ve a la página Advanced de tu proyecto.
Si aún no aparece, se debe seleccionar la organización que contiene el proyecto en el menú Organizations de la barra de navegación.
Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.
En la barra lateral, haz clic en Database & Network Access en la sección Security.
En la barra lateral, haga clic en Advanced.
La página Avanzada se muestra.
Autorice y asigne una función de AWS IAM a Atlas para acceder a sus claves de AWS KMS para el cifrado en reposo.
Para crear un nuevo rol de AWS IAM y acceder a sus claves de AWS KMS para el cifrado en reposo, siga el procedimiento "Crear un nuevo rol con la CLI de AWS". Si ya tiene un rol de AWS IAM que desea autorizar, siga el procedimiento "Añadir relaciones de confianza a un rol existente".
Para actualizar la gestión de su clave de cifrado con la API de administración de Atlas, utilice los mismos pasos descritos en el procedimiento anterior.
Activar la gestión de claves de cliente para un clúster de Atlas
Después de habilitar el acceso basado en roles para su clave de cifrado para un proyecto, debe habilitar la administración de claves de cliente para cada clúster de Atlas que contenga datos que desee cifrar.
Nota
Debes tener el rol de Project Owner para permitir la gestión de claves de cliente para el clúster en ese proyecto.
Para los clústeres nuevos, cambie la configuración Administrar sus propias claves de cifrado a Yes cuando cree el clúster.
Para los clústeres existentes:
En Atlas, ve a la página Clusters de tu proyecto.
Si aún no se muestra, seleccione la organización que contiene su proyecto deseado en el menú Organizations de la barra de navegación.
Si aún no aparece, selecciona el proyecto deseado en el menú Projects de la barra de navegación.
En la barra lateral, haz clic en Clusters en la sección Database.
La página de clústeres se muestra.
Active el cifrado del clúster.
Expande el panel Additional Settings.
Se debe cambiar el ajuste de Manage your own encryption keys a Yes.
Se debe verificar el estado de la configuración de Require Private Networking para el clúster.
Si configuraste el cifrado en reposo mediante clave maestra del cliente CMK (a través de redes privadas) para Atlas a nivel de proyecto, el estado es Active. Si no se configuró ninguna conexión de nodos privados para el proyecto, el estado es Inactive.
Activar la gestión de claves de cliente para los nodos de búsqueda
Por defecto, MongoDB y los procesos de búsqueda se ejecutan en los mismos nodos. Con esta arquitectura, el cifrado gestionado por el cliente se aplica a los datos de su base de datos, pero no se aplica a los índices de búsqueda.
Cuando activas nodos de búsqueda dedicados, los procesos de búsqueda se ejecutan en nodos separados. Esto permite activar el cifrado de datos del nodo de búsqueda, para que puedas cifrar tanto los datos de la base de datos como los índices de búsqueda con las mismas claves administradas por el cliente para una cobertura de cifrado integral.
Nota
Los nodos de base de datos y los nodos de búsqueda utilizan diferentes métodos de cifrado con las mismas claves administradas por el cliente. Los nodos de base de datos utilizan el motor de almacenamiento cifrado WiredTiger, mientras que los nodos de búsqueda utilizan cifrado a nivel de disco.