Corrija automáticamente las instancias y los clústeres de bases de datos de Amazon RDS no cifrados - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Corrija automáticamente las instancias y los clústeres de bases de datos de Amazon RDS no cifrados

Creado por Ajay Rawat (AWS) y Josh Joy (AWS)

Entorno: PoC o piloto

Tecnologías: Seguridad, identidad, conformidad; Bases de datos

Servicios de AWS: AWS Config; AWS KMS; AWS Identity and Access Management; AWS Systems Manager; Amazon RDS

Resumen

Este patrón describe cómo corregir automáticamente las instancias y los clústeres de bases de datos no cifrados del Amazon Relational Database Service (Amazon RDS) en Amazon Web Services (AWS) mediante AWS Config, los manuales de procedimientos de AWS Systems Manager y las claves del AWS Key Management Service (AWS KMS).

Las instancias de base de datos RDS encriptadas proporcionan una capa adicional de protección de datos al proteger sus datos del acceso no autorizado al almacenamiento subyacente. Puede utilizar el cifrado de Amazon RDS para aumentar la protección de datos de las aplicaciones implementadas en la nube de AWS y para cumplir con los requisitos de conformidad para el cifrado en reposo. Puede habilitar el cifrado para una instancia de base de datos de RDS cuando la cree, pero no después de haberla creado. Sin embargo, puede añadir cifrado a una instancia de base de datos RDS sin cifrar creando una instantánea de su instancia de base de datos y, a continuación, creando una copia cifrada de esa instantánea. A continuación, puede restaurar una instancia de base de datos a partir de la instantánea encriptada para obtener una copia encriptada de su instancia de base de datos original.

Este patrón utiliza las reglas de AWS Config para evaluar las instancias y los clústeres de bases de datos de RDS. Aplica las correcciones mediante el uso de manuales de AWS Systems Manager, que definen las acciones que se deben realizar en los recursos de Amazon RDS no conformes, y claves de AWS KMS para cifrar las instantáneas de la base de datos. A continuación, aplica las políticas de control de servicios (SCP) para evitar la creación de nuevos clústeres e instancias de bases de datos sin cifrado.

El código de este patrón se proporciona en GitHub.

Requisitos previos y limitaciones

Requisitos previos 

  • Una cuenta de AWS activa

  • Los archivos del repositorio de código GitHub fuente de este patrón se descargan en su ordenador

  • Una instancia de base de datos de RDS o un clúster sin cifrar

  • Una clave de AWS KMS existente para cifrar instancias y clústeres de bases de datos de RDS

  • Acceso para actualizar la política de recursos de claves de KMS

  • AWS Config está habilitado en su cuenta de AWS (consulte Introducción a AWS Config en la documentación de AWS)

Limitaciones

  • Puede activar la encriptación para una instancia de base de datos RDS sólo cuando la cree, no después de haberla creado.

  • No se puede tener una réplica de lectura cifrada de una instancia de base de datos sin cifrar ni una réplica de lectura sin cifrar de una instancia de base de datos cifrada.

  • No se puede restaurar una copia de seguridad ni una instantánea sin cifrar en una instancia de base de datos cifrada.

  • El cifrado de Amazon RDS está disponible para la mayoría de las clases de instancias de bases de datos. Para ver una lista de excepciones, consulte Cifrado de los recursos de Amazon RDS en la documentación de Amazon RDS.

  • Para copiar una instantánea cifrada de una región de AWS en otra, debe especificar la clave KMS de la región de AWS de destino. Esto se debe a que las claves de KMS son específicas de la región de AWS en la que se crean.

  • La instantánea de origen permanece cifrada durante todo el proceso de copia. Amazon RDS utiliza el cifrado de sobre para proteger los datos durante el proceso de copia. Para más información, consulte Cifrado de sobre en la documentación de AWS KMS.

  • No se puede descifrar una instancia de bases de datos cifrada. Sin embargo, puede exportar datos de una instancia de bases de datos cifrada e importar datos a una instancia de bases de datos sin cifrar.

  • Debe eliminar una clave KMS solo cuando esté seguro de que ya no necesita usarla. Si no está seguro, considere la posibilidad de desactivar la clave KMS en lugar de eliminarla. Puede volver a habilitar una clave KMS deshabilitada si necesita volver a usarla más adelante, pero no puede recuperar una clave KMS eliminada. 

  • Si no elige conservar las copias de seguridad automatizadas, se eliminarán las copias de seguridad automatizadas que se encuentren en la misma región de AWS que la instancia de base de datos. No se pueden recuperar después de eliminar la instancia de base de datos.

  • Las copias de seguridad automatizadas se retienen durante el período de retención establecido en la instancia de base de datos en el momento de eliminarla. Este período de retención establecido se produce independientemente de si decide crear o no una instantánea de base de datos final.

  • Si la corrección automática está habilitada, esta solución cifra todas las bases de datos que tienen la misma clave de KMS.

Arquitectura

El siguiente diagrama ilustra la arquitectura de la CloudFormation implementación de AWS. Tenga en cuenta que también puede implementar este patrón mediante el AWS Cloud Development Kit (AWS CDK).

CloudFormation Implementación de AWS para corregir instancias de Amazon RDS no cifradas.

Herramientas

Herramientas

  • AWS le CloudFormation ayuda a configurar automáticamente sus recursos de AWS. Le permite utilizar un archivo de plantilla para crear y eliminar una colección de recursos juntos como una sola unidad (una pila).

  • AWS Cloud Development Kit (AWS CDK) es un marco de desarrollo de software para definir su infraestructura de nube en código y aprovisionarla mediante lenguajes de programación conocidos.

Servicios y características de AWS

  • AWS Config realiza un seguimiento de la configuración de sus recursos de AWS y de sus relaciones con los demás recursos. También puede evaluar la conformidad de esos recursos de AWS. Este servicio utiliza reglas que se pueden configurar para evaluar los recursos de AWS en función de las configuraciones deseadas. Puede usar un conjunto de reglas administradas por AWS Config para situaciones de conformidad comunes o puede crear sus propias reglas para situaciones personalizadas. Si se descubre que un recurso de AWS no cumple con las normas, puede especificar una acción correctiva mediante un manual de procedimientos de AWS Systems Manager y, si lo desea, enviar una alerta a través de un tema del Amazon Simple Notification Service (Amazon SNS). En otras palabras, puede asociar las acciones correctivas a las reglas de AWS Config y optar por ejecutarlas automáticamente para abordar los recursos no conformes sin intervención manual. Si un recurso sigue sin cumplir las normas tras la corrección automática, puede configurar la regla para que vuelva a intentar la corrección automática.

  • Amazon Relational Database Service (Amazon RDS) facilita la configuración, la operación y el escalado de una base de datos relacional en la nube. El componente básico de Amazon RDS es la instancia de base de datos, que es un entorno de base de datos aislado en la nube de AWS. Amazon RDS ofrece una selección de tipos de instancia optimizados para adaptarse a diferentes casos de uso de bases de datos relacionales. Los tipos de instancias tienen varios tipos de combinaciones de CPU, memoria, almacenamiento y capacidad de red. También, brindan la flexibilidad para elegir la combinación adecuada de recursos para las bases de datos. Cada tipo de instancia incluye varios tamaños de instancia, lo que permite escalar sus bases de datos según los requisitos de la carga de trabajo de destino.

  • AWS Key Management Service (AWS KMS) es un servicio administrado que permite crear y controlar fácilmente las claves de AWS KMS que se utilizan para cifrar datos. Una clave KMS es una representación lógica de una clave raíz. La clave de KMS incluye metadatos, como el ID de clave, la fecha de creación, la descripción y el estado de la clave.

  • AWS Identity and Access Management (IAM) le permite administrar de forma segura el acceso a los recursos de AWS mediante el control de quién está autenticado y autorizado a utilizarlos.

  • Las políticas de control de servicios (SCP) ofrece un control central sobre los máximos permisos disponibles para todas las cuentas de su organización. Las políticas de control de servicios le ayudan a garantizar que sus cuentas se mantengan dentro de las directrices de control de acceso de su organización. Las SCP no afectan a los usuarios ni a los roles de la cuenta de administración. Afectan solo a las cuentas miembro de su organización. Es absolutamente recomendable que no asocie políticas SCP al nodo raíz de la organización sin probar exhaustivamente el impacto que tendrá la política en las cuentas. En lugar de ello, cree una unidad organizativa (OU) en la que pueda mover sus cuentas de una en una, o al menos en incrementos pequeños, a fin de garantizar que no bloquee inadvertidamente a los usuarios de servicios clave.

Código

El código fuente y las plantillas de este patrón están disponibles en un GitHub repositorio. El patrón ofrece dos opciones de implementación: puede implementar una CloudFormation plantilla de AWS para crear la función de corrección que cifra las instancias y los clústeres de bases de datos de RDS, o puede usar la CDK de AWS. El repositorio tiene carpetas independientes para estas dos opciones.

En la sección Epics se proporcionan step-by-step instrucciones para implementar la plantilla. CloudFormation Si desea utilizar la AWS CDK, siga las instrucciones del archivo README.md del repositorio. GitHub

Prácticas recomendadas

  • Habilite el cifrado de datos en reposo y en tránsito.

  • Habilite AWS Config en todas las cuentas y regiones de AWS.

  • Registre los cambios de configuración de todos los tipos de recursos.

  • Rote con regularidad sus credenciales de IAM.

  • Aproveche el etiquetado para AWS Config, lo que facilita la administración, búsqueda y filtrado de recursos.

Epics

TareaDescripciónHabilidades requeridas

Descargue la plantilla. CloudFormation

Descarga el unencrypted-to-encrypted-rds.template.json archivo del GitHub repositorio.

DevOps ingeniero

Crea la CloudFormation pila.

  1. Inicie sesión en la consola de administración de AWS y abra la CloudFormation consola en https://console.aws.amazon.com/cloudformation/

  2. Inicie la plantilla unencrypted-to-encrypted-rds.template.json para crear una nueva pila.

Para obtener más información sobre la implementación de plantillas, consulte la CloudFormation documentación de AWS.

DevOps ingeniero

Revise CloudFormation los parámetros y valores.

  1. Revise los detalles de la pila y actualice los valores en función de los requisitos de su entorno.

  2. Elija Crear pila para implementar la plantilla.

DevOps ingeniero

Revise los recursos.

El estado cambia a CREATE_COMPLETE tras crear la pila. Revise los recursos creados (función de IAM, manual de administración de AWS Systems Manager) en la CloudFormation consola.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Actualice su política de claves de KMS.

  1. Asegúrese de que el alias de la clave alias/RDSEncryptionAtRestKMSAlias exista. 

  2. La instrucción de la política de claves debe incluir el rol de corrección de IAM. (Comprueba los recursos creados por la CloudFormation plantilla que utilizaste en la epopeya anterior). 

  3. En la siguiente política de claves, actualice las partes que aparecen en negrita para que coincidan con su cuenta y con el rol de IAM que se creó.

{ "Sid": "Allow access through RDS for all principals in the account that are authorized to use RDS", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam:: <your-AWS-account-ID>”:role/<your-IAM-remediation-role>" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:ListGrants", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "rds.us-east-1.amazonaws.com", "kms:CallerAccount": "<your-AWS-account-ID>" } } }
DevOps ingeniero
TareaDescripciónHabilidades requeridas

Vea los recursos que no cumplen con las normas.

  1. Para ver una lista de recursos no conformes, abra la consola de AWS Config en https://console.aws.amazon.com/config/

  2. En el panel de navegación, elija Reglas y, a continuación, elija la regla rds-storage-encrypted.

Los recursos no conformes que se muestran en la consola de AWS Config serán instancias, no clústeres. La automatización de la corrección cifra las instancias y los clústeres y crea una instancia recién cifrada o un clúster recién creado. Sin embargo, asegúrese de no corregir simultáneamente varias instancias que pertenezcan al mismo clúster.

Antes de corregir cualquier instancia o volumen de base de datos de RDS, asegúrese de que la instancia de base de datos de RDS no esté en uso. Confirme que no se estén realizando operaciones de escritura mientras se crea la instantánea, para asegurarse de que la instantánea contiene los datos originales. Considere la posibilidad de establecer un período de mantenimiento durante el cual se ejecute la corrección.

DevOps ingeniero

Resuelva los recursos no conformes.

  1. Cuando esté listo y el período de mantenimiento esté activo, elija el recurso que desee corregir y, a continuación, elija Remediar.

    La columna Estado de la acción debería mostrar ahora la Ejecución de la acción en cola.

  2. Vea el progreso y el estado de la corrección en Systems Manager. Abra la consola de AWS Systems Manager en https://console.aws.amazon.com/systems-manager/. En el panel de navegación, elija Automatización y, a continuación, seleccione el ID de ejecución de la automatización correspondiente para ver más detalles.

DevOps ingeniero

Verificar que la instancia de base de datos de RDS esté disponible.

Cuando se complete la automatización, estará disponible la instancia de base de datos RDS recién cifrada. La instancia de base de datos de RDS cifrada tendrá el prefijo encrypted  seguido del nombre original. Por ejemplo, si el nombre de la instancia de base de datos de RDS no cifrada fuera database-1, la instancia de base de datos de RDS recién cifrada sería encrypted-database-1.

DevOps ingeniero

Termine la instancia no cifrada.

Una vez completada la corrección y validado el recurso recién cifrado, puede terminar la instancia no cifrada. Asegúrese de confirmar que el recurso recién cifrado coincide con el recurso no cifrado antes de cancelar cualquier recurso.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Aplique los SCP.

Aplique los SCP para evitar que en el futuro se creen instancias de bases de datos y clústeres sin cifrado. Utilice el rds_encrypted.json archivo que se proporciona en el GitHub repositorio para este fin y siga las instrucciones de la documentación de AWS

Ingeniero de seguridad

Recursos relacionados

Referencias

Herramientas

Guías y patrones

Información adicional

PREGUNTAS FRECUENTES

P: ¿Cómo funciona AWS Config?

A. Cuando activa AWS Config, primero descubre los recursos de AWS compatibles que existen en su cuenta y genera un elemento de configuración para cada recurso. AWS Config genera también elementos de configuración cuando cambia la configuración de un recurso y mantiene los registros históricos de los elementos de configuración de los recursos desde el momento en que inicie el registrador de configuración. De forma predeterminada, AWS Config crea los elementos de configuración para cada recurso admitido en la región de AWS. Si no desea que AWS Config cree elementos de configuración para todos los recursos admitidos, puede especificar los tipos de recursos de los que desee realizar el seguimiento.

P: ¿Cómo se relacionan las reglas de AWS Config y AWS Config con AWS Security Hub?

R. AWS Security Hub es un servicio de seguridad y conformidad que proporciona una gestión de la postura de seguridad y conformidad como un servicio. Utiliza las reglas de AWS Config y AWS Config como mecanismo principal para evaluar la configuración de los recursos de AWS. Las reglas de AWS Config también se pueden usar para evaluar directamente la configuración de los recursos. Las reglas de configuración también son utilizadas por otros servicios de AWS, como AWS Control Tower y AWS Firewall Manager.