Encripte sus datos en reposo en Atlas con las claves administradas por el cliente (llave maestra de cliente) que cree, posea y administre en su AWS KMS.
Esta página describe cómo configurar la gestión de claves del cliente utilizando AWS KMS en su Proyecto de Atlas y en los clústeres de ese Proyecto.
Requisitos previos
Para habilitar las claves gestionadas por el cliente con AWS KMS para un proyecto MongoDB, debes:
- Utilice un clúster M10 o mayor.
Tener un rol AWS IAM con privilegios suficientes. Atlas debe tener permiso para realizar las siguientes acciones con su clave:
Nota
Si deseas utilizar la clave de AWS KMS con un rol IAM de AWS de una cuenta de AWS diferente en lugar de la del rol IAM que creó la clave de AWS KMS, asegúrate de tener privilegios suficientes:
Agregue una instrucción de política de clave bajo la clave AWS KMS para incluir la cuenta externa de AWS.
Añade una política en línea de IAM para el rol de IAM en la cuenta externa de AWS.
Para una discusión integral de los roles de IAM y claves maestras del cliente, consulta la documentación de AWS.
Después de confirmar los privilegios indicados, podrá seguir los pasos habituales para configurar los ajustes de KMS en Atlas, con la siguiente excepción:
- Se 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 la clave maestra (p. ej.,12345678-1234-1234-1234-12345678) en el campo de ID de clave AWS KMS.
Para aprender a crear un rol IAM, consulta Roles de IAM en la documentación de AWS.
Atlas utiliza la misma función de IAM y la misma configuración de claves AWS KMS para todos los clústeres de un proyecto para el cual está habilitado el cifrado en reposo.
Si su configuración de AWS KMS lo requiere, permita el acceso desde direcciones IP de Atlas y las direcciones IP públicas o nombres de host DNS de sus nodos de clúster para que Atlas pueda comunicarse con su KMS. Debe incluir las direcciones IP en su política de rol de IAM gestionada configurando operadores de condición de dirección IP en su documento de política. Si las direcciones IP del nodo cambian, debe actualizar su configuración para evitar interrupciones de conectividad.
Procedimientos
Habilite el acceso basado en roles para su llave de cifrado en un 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.
Haz clic en el enlace Authorize a new IAM role para autorizar un rol IAM de AWS a Atlas para acceder a tus claves KMS de AWS para cifrado en reposo.
Para crear un nuevo rol de AWS IAM para acceder a las claves AWS KMS para cifrado en reposo, se debe seguir el procedimiento Crear un nuevo rol con la CLI de AWS. Si hay un rol de AWS IAM existente que se desea autorizar, se debe seguir el procedimiento Agregar relaciones de confianza a un rol existente.
Agregue una directiva de acceso a su rol de AWS IAM a través de la consola de AWS o la CLI. Consulte la sección "Administración de directivas de IAM" para obtener más información.
Nota
Esta instrucció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 Atlas Principal no es secreto y se utiliza en todos los clientes de Atlas. Esta es una cuenta de AWS de uso altamente restringido y limitado, sin más recursos que el usuario de IAM. El ExternalId en la instrucción de políticas es único para cada Proyecto Atlas, pero no es secreto. El ExternalId se utiliza para mitigar la posibilidad de vulnerabilidades de cruce de contexto (suplente confundido). Atlas utiliza un principal común para acceder a las claves de todos los clientes, 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ía una solicitud POST al endpoint cloudProviderAccess.
Usa el API endpoint para crear un nuevo AWS rol IAM. Atlas usará este rol para la autenticación con su cuenta AWS.
Mantén a la mano los valores de los campos devueltos atlasAWSAccountArn y atlasAssumedRoleExternalId para usarlos en el siguiente paso.
Modifica tu política de confianza de rol de AWS IAM.
Inicie sesión en su Consola de gestión de AWS.
Navega al servicio Identity and Access Management (IAM).
Selecciona Roles en la navegación del lado izquierdo.
Haz clic en el rol IAM existente que deseas utilizar para acceder a Atlas desde la lista de roles.
Selecciona la pestaña Trust Relationships.
Haga clic en el botón Edit trust relationship.
Editar el Policy Document. Agrega un objeto
Statementnuevo con el siguiente contenido.Nota
Esta instrucció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 Atlas Principal no es secreto y se utiliza en todos los clientes de Atlas. Esta es una cuenta de AWS de uso altamente restringido y limitado, sin más recursos que el usuario de IAM. El
ExternalIden la instrucción de políticas es único para cada Proyecto Atlas, pero no es secreto. ElExternalIdse utiliza para mitigar la posibilidad de vulnerabilidades de cruce de contexto (suplente confundido). Atlas utiliza un principal común para acceder a las claves de todos los clientes, 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.
Authorize el rol de IAM recién creado.
Utiliza el API endpoint para autorizar y configurar el nuevo Rol Asumido IAM ARN. Si la llamada a la API es exitosa, puedes usar el valor roleId al configurar los servicios de Atlas que usan AWS.
Habilitar AWS KMS con autorización de rol 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.
Nota
Este comando curl utiliza un token de acceso de cuenta de servicio (OAuth 2.0) para autenticar en lugar de claves API. Para obtener más información, consulte Introducción a la API de administración de Atlas.
Ejemplo
curl --header "Authorization: Bearer {ACCESS-TOKEN}" \ --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.
Cambie a acceso basado en roles para su llave de cifrado en un Proyecto
A partir 26 de2021 enero,, AWS requiere el uso de roles IAM en lugar de usuarios IAM para gestionar el acceso a claves de cifrado KMS de AWS en Atlas. Si configuraste inicialmente tu proyecto para utilizar credenciales de usuario IAM para acceder a las claves AWS KMS, puedes cambiar al acceso basado en roles para cumplir con este nuevo requisito utilizando 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.
Autoriza y asigna un rol de AWS IAM a Atlas para acceder a tus claves de AWS KMS para el cifrado en reposo.
Para crear un nuevo rol de AWS IAM para acceder a las claves AWS KMS para cifrado en reposo, se debe seguir el procedimiento Crear un nuevo rol con la CLI de AWS. Si hay un rol de AWS IAM existente que se desea autorizar, se debe seguir el procedimiento Agregar relaciones de confianza a un rol existente.
Para actualizar la gestión de llave de cifrado con la API de administración de Atlas, utilice los mismos pasos que se indican 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 nuevos clústeres, activa la configuración Gestiona tus propias claves de cifrado en Yes al crear 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 se configuró el cifrado en reposo mediante la 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 la base de datos y los nodos de búsqueda utilizan diferentes métodos de cifrado con las mismas claves gestionadas por el cliente. Los nodos de la base de datos usan el motor de almacenamiento cifrado WiredTiger, mientras que los nodos de búsqueda usan cifrado a nivel de disco.