Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Gestionar las claves de cliente con AWS a través de una red pública

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 gestión de claves del cliente usando AWS KMS en tu proyecto Atlas y en los clusters de ese proyecto.

Para habilitar las claves gestionadas por el cliente con AWS KMS para un proyecto de MongoDB, debes:

  • 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:

    • DescribeKey

    • cifrado

    • Descifrar

    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 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:

    • 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 (por ejemplo, 12345678-1234-1234-1234-12345678) en el campo de ID de clave AWS KMS.

    Para aprender cómo crear un rol IAM, consulte Roles IAM en la documentación de AWS.

    Atlas utiliza las mismas configuraciones de rol IAM y clave AWS KMS para todos los clústeres de un proyecto para los que esté habilitado el cifrado en reposo.

  • Si la configuración de AWS KMS lo requiere, permitir acceso desde Direcciones IP de Atlas y las direcciones IP públicas o los nombres de host DNS de tus nodos del clúster para que Atlas pueda comunicarse con tu 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íticas. Si las direcciones IP de los nodos cambian, debes actualizar la configuración para evitar interrupciones de conectividad.

1
  1. 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.

  2. Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.

  3. En la barra lateral, haz clic en Database & Network Access en la sección Security.

  4. En la barra lateral, haga clic en Advanced.

    La página Avanzada se muestra.

2
3

Para crear un nuevo AWS IAM rol para acceder a sus AWS KMS claves para el cifrado en reposo, siga el procedimiento Crear una nueva rol con la AWS CLI. Si tienes un AWS IAM existente que deseas autorizar, sigue el procedimiento Agregar relaciones de confianza a un rol existente.

4

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"
]
}
]
}
5
6
  1. Selecciona el rol que deseas asignar desde la lista desplegable AWS IAM role.

  2. Especifique su clave de cifrado en el campo Customer Master Key ID.

  3. Seleccione la AWS región para su llave de cifrado.

1

Utiliza el API endpoint para crear un nuevo AWS IAM rol. Atlas utilizará este rol para 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.

2
  1. Iniciar sesión en tu AWS Consola de gestión.

  2. Navega al servicio Identity and Access Management (IAM).

  3. Seleccione Roles en la navegación del lado izquierdo.

  4. Haga clic en el rol de IAM existente que desea utilizar para acceder a Atlas de la lista de roles.

  5. Selecciona la pestaña Trust Relationships.

  6. Haga clic en el botón Edit trust relationship.

  7. Editar el Policy Document. Agrega un objeto Statement nuevo con 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 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í.

    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>"
    }
    }
    }
    ]
    }
  8. Haga clic en el botón Update Trust Policy.

3

Utiliza el endpoint de API para autorizar y configurar el nuevo ARN del rol asumido de IAM. Si la llamada a la API se realiza de forma exitosa, puedes utilizar el valor de roleId cuando configures los servicios de Atlas que utilizan AWS.

4

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 curl comando utiliza un token de acceso a la cuenta de servicio(OAuth) 2.0 para autenticarse en lugar de claves de API. Para obtener más información, consulte la guía de inicio rápido de 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 la llave de cifrado de su Proyecto, habilite las claves gestionadas por el cliente para cada clúster Atlas en su Proyecto siguiendo Habilitar la Gestión de claves de cliente para un clúster de Atlas.

A partir del 26 de enero de 2021, AWS requiere el uso de IAM roles en vez de IAM usuarios para gestionar el acceso a las AWS KMS llaves de cifrado dentro de Atlas. Si configuraste inicialmente tu proyecto para usar credenciales de usuarios de IAM para acceder a las claves de AWS KMS, cambia a un 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.

1
  1. 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.

  2. Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.

  3. En la barra lateral, haz clic en Database & Network Access en la sección Security.

  4. En la barra lateral, haga clic en Advanced.

    La página Avanzada se muestra.

2
3
4

Para crear un nuevo AWS IAM rol para acceder a sus AWS KMS claves para el cifrado en reposo, siga el procedimiento Crear una nueva rol con la AWS CLI. Si tienes un AWS IAM existente que deseas autorizar, sigue el procedimiento Agregar relaciones de confianza a un rol existente.

Para actualizar la gestión de tus claves de cifrado con la API de administración de Atlas, utiliza los mismos pasos descritos en el procedimiento anterior.

Después de activar el Acceso Basado en Roles para tu clave de cifrado de un proyecto, debes habilitar la gestión de claves de cliente para cada clúster de Atlas que contenga los datos que deseas 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:

1
  1. 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.

  2. Si aún no aparece, selecciona el proyecto deseado en el menú Projects de la barra de navegación.

  3. En la barra lateral, haz clic en Clusters en la sección Database.

La página de clústeres se muestra.

2

Para el clúster que contiene los datos que deseas cifrar, haz clic en la , y, a continuación, selecciona Edit Configuration.

3
  1. Expande el panel Additional Settings.

  2. Se debe cambiar el ajuste de Manage your own encryption keys a Yes.

  3. 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.

4
  1. Haga clic en Review Changes.

  2. Se deben revisar los cambios y luego se debe hacer clic en Apply Changes para actualizar el clúster.

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.

Volver

AWS KMS

En esta página