Registro centralizado y barrera de protección para varias cuentas - 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.

Registro centralizado y barrera de protección para varias cuentas

Creado por Ankush Verma (AWS) y Tracy (Pierce) Hickey (AWS)

Entorno: producción

Tecnologías: seguridad, identidad, cumplimiento; administración y gobierno

Servicios de AWS: AWS CloudFormation; AWS Config; Amazon CloudWatch; AWS CodePipeline GuardDuty; Amazon Lambda; Amazon Macie; AWS Security Hub; Amazon S3

Resumen

El enfoque que se incluye en este patrón es adecuado para los clientes que tienen varias cuentas de Amazon Web Services (AWS) en AWS Organizations y que ahora se enfrentan a dificultades a la hora de utilizar los servicios de AWS Control Tower, una zona de aterrizaje o máquinas expendedoras de cuentas para configurar barrera de protección básicas en sus cuentas.

Este patrón demuestra el uso de una arquitectura optimizada de varias cuentas para configurar el registro centralizado y los controles de seguridad estandarizados de una manera bien estructurada. Con la ayuda de CloudFormation plantillas de AWS CodePipeline, AWS y scripts de automatización, esta configuración se implementa en todas las cuentas que pertenecen a una organización.

La arquitectura de cuentas múltiples incluye las siguientes cuentas:

  • Cuenta de registro centralizada: la cuenta en la que se almacenan todos los registros de flujos de la nube privada virtual (VPC), CloudTrail los registros de AWS, el registro de AWS Config y todos los CloudWatch registros de Amazon Logs (mediante suscripciones) de todas las demás cuentas.

  • Cuenta de seguridad principal: la cuenta que servirá como cuenta principal para los siguientes servicios de seguridad que se administran en varias cuentas.

    • Amazon GuardDuty

    • AWS Security Hub

    • Amazon Macie

    • Amazon Detective

  • Cuentas secundarias: las demás cuentas de la organización. Estas cuentas almacenan todos los registros útiles en la cuenta de registro centralizada. Las cuentas secundarias se unen a la cuenta de seguridad principal como miembros de los servicios de seguridad.

Tras lanzar la CloudFormation plantilla (adjunta), aprovisiona tres depósitos de Amazon Simple Storage Service (Amazon S3) en la cuenta de registro centralizada. Se utiliza un depósito para almacenar todos los registros relacionados con AWS (como los registros de VPC Flow Logs y AWS Config) de todas las cuentas. CloudTrail El segundo depósito sirve para almacenar las CloudFormation plantillas de todas las cuentas. El tercer bucket de Amazon S3 donde se almacenan los registros de acceso.

Una CloudFormation plantilla independiente crea la canalización que usa AWS CodeCommit. Una vez que el código actualizado se envía al CodeCommit repositorio, se encarga de lanzar los recursos y configurar los servicios de seguridad en todas las cuentas. Para obtener más información sobre la estructura de los archivos que se subirán al CodeCommit repositorio, consulta el archivo README.md (adjunto).

Requisitos previos y limitaciones

Requisitos previos 

  • Un ID de organización de AWS Organizations, con todas las cuentas unidas a la misma organización.

  • Una dirección de correo electrónico activa para recibir notificaciones de Amazon Simple Notification Service (Amazon SNS).

  • Cuotas confirmadas para los buckets de Amazon Simple Storage Service (Amazon S3) en cada una de sus cuentas. De forma predeterminada, cada cuenta tiene 100 buckets de S3. Si necesita buckets adicionales, solicite un aumento de cuota antes de implementar esta solución.

Limitaciones

Todas las cuentas deben formar parte de la misma organización. Si no utiliza AWS Organizations, debe modificar determinadas políticas, como la política de bucket de S3, para permitir el acceso desde los roles de AWS Identity and Access Management (IAM) de cada cuenta.

Nota: Mientras se implementa la solución, debe confirmar la suscripción a Amazon SNS. El mensaje de confirmación se envía a la dirección de correo electrónico que proporcionó durante el proceso de implementación. De este modo, se enviarán algunos mensajes de alerta por correo electrónico a esta dirección de correo electrónico, ya que estas alarmas se activan cada vez que se crean o modifican políticas de roles de IAM en la cuenta. Durante el proceso de implementación, puede ignorar estos mensajes de alerta.

Arquitectura

Pila de tecnología de destino

  • CloudWatch Alarmas y registros de Amazon

  • CodeCommit Repositorio de AWS

  • AWS CodePipeline

  • AWS Config

  • Amazon Detective

  • Amazon GuardDuty

  • Roles y permisos de IAM

  • Amazon Macie

  • Buckets de S3

  • AWS Security Hub

  • Amazon SNS

Arquitectura de destino

Diagrama que muestra los servicios de las tres cuentas de AWS.
Diagramas que muestran detalles de los servicios de registro y seguridad.
  1. Otras cuentas registradas como cuentas secundarias de la cuenta de seguridad principal de los servicios de seguridad

  2. Resultados de seguridad de todas las cuentas secundarias, incluida la cuenta principal

Recursos

Los siguientes recursos se aprovisionan automáticamente cuando el código actualizado se envía al CodeCommit repositorio de cada cuenta y región de AWS.

CloudFormation pila 1: registro de la pila principal

- Pila anidada 1: roles y políticas estándar de IAM

- Pila anidada 2: configuración de AWS Config en la cuenta

- Pila anidada 3: alarmas CloudWatch

            - SecurityGroupChangesAlarm

            - UnauthorizedAttemptAlarm

            - RootActivityAlarm

            - NetworkAclChangesAlarm

            - YO SOY UserManagementAlarm

            - LO SOY PolicyChangesAlarm

            - CloudTrailChangeAlarm

            - LO SOY CreateAccessKeyAlarm

      - Filtros métricos para crear métricas a partir de CloudTrail registros y usarlas para alarmas

      - Tema de SNS

CloudFormation pila 2: pila de barandillas principal

- Pila anidada 1: función de Lambda de AWS para configurar la política de contraseñas de la cuenta

- Pila anidada 2: reglas básicas de AWS Config

      - CIS- SecurityGroupsMustRestrictSshTraffic

      - OpenSecurityGroupRuleCheck junto con la función Lambda para la evaluación de reglas de grupos de seguridad

      - check-ec2- for-required-tag

      - check-for-unrestricted-ports

CloudFormation pila 3 — CloudWatch exportación de registros

- Exportación de CloudWatch registros de grupos de registros a Amazon S3 mediante una suscripción a Amazon Kinesis

Herramientas

  • AWS CloudFormation: AWS CloudFormation utiliza plantillas para modelar y aprovisionar, de forma automatizada y segura, todos los recursos necesarios para sus aplicaciones en todas las regiones y cuentas de AWS.

  • Amazon CloudWatch: Amazon CloudWatch monitorea los recursos de AWS y las aplicaciones que ejecuta en AWS en tiempo real. Puede utilizarlas CloudWatch para recopilar y realizar un seguimiento de las métricas, que son variables que puede medir para sus recursos y aplicaciones.

  • AWS CodeCommit: AWS CodeCommit es un servicio de control de versiones hospedado por AWS. Puede utilizarlo CodeCommit para almacenar y gestionar de forma privada activos (como documentos, código fuente y archivos binarios) en la nube.

  • AWS CodePipeline: AWS CodePipeline es un servicio de entrega continua que puede utilizar para modelar, visualizar y automatizar los pasos necesarios para lanzar su software.

  • AWS Config: AWS Config brinda una visión detallada de la configuración de los recursos de AWS de su cuenta de AWS. Esto incluye cómo se relacionan los recursos entre sí y cómo se han configurado en el pasado, para que pueda ver cómo las configuraciones y las relaciones cambian a lo largo del tiempo.

  • Amazon Detective lo ayuda a analizar, investigar e identificar rápidamente la causa raíz de resultados de seguridad o actividades sospechosas. Detective recopila automáticamente los datos de registro de sus recursos de AWS. A continuación, utiliza el machine learning, el análisis estadístico y la teoría de grafos para generar visualizaciones que lo ayuden a realizar investigaciones sobre la seguridad con mayor rapidez y de forma más eficaz.

  • Amazon GuardDuty: Amazon GuardDuty es un servicio de monitoreo de seguridad continuo que analiza y procesa los registros de flujo, los registros de eventos de CloudTrail administración, CloudTrail los registros de eventos de datos y los registros del Sistema de nombres de dominio (DNS). Utiliza fuentes de información de amenazas, como listas de direcciones IP y dominios maliciosos, y aprendizaje automático para identificar la actividad inesperada y potencialmente no permitida, así como la actividad malintencionada en su entorno de AWS.

  • AWS Identity and Access Management (IAM) es un servicio web que ayuda a controlar de forma segura el acceso a los recursos de AWS. Utilice IAM para controlar quién está autenticado (ha iniciado sesión) y autorizado (tiene permisos) para utilizar recursos.

  • Amazon Macie automatiza la detección de información confidencial, como información de identificación personal (PII) y datos financieros, para proporcionarle una mejor comprensión de los datos que almacena su organización en Amazon S3.

  • Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos altamente escalable que se puede utilizar para una amplia gama de soluciones de almacenamiento, incluidos sitios web, aplicaciones móviles, copias de seguridad y lagos de datos.

  • AWS Security Hub proporciona una visión completa de su estado de seguridad en AWS y lo ayuda a comprobar su entorno con los estándares y las prácticas recomendadas del sector de la seguridad.

  • Amazon Simple Notification Service (Amazon SNS) es un servicio administrado con el que se ofrece la entrega de mensajes de los publicadores a los suscriptores (también conocido como productores y consumidores).

Epics

TareaDescripciónHabilidades requeridas
Ejecute la plantilla ChildAccount_IAM_Role_All_Accounts.yaml para crear el rol CloudFormation de IAM en la región us-east-1.

Para crear los roles y los permisos de IAM necesarios, debe lanzar manualmente esta plantilla en cada cuenta, una por una (cuenta de registro centralizada, cuenta de seguridad principal y todas las demás cuentas de AWS de la organización) en la región us-east-1. La plantilla Childaccount_IAM_role_All_Accounts.yaml se encuentra en el directorio /templates/initial_deployment_templates del paquete. El rol de IAM se utiliza al realizar llamadas a la API para el aprovisionamiento y la configuración del resto de la arquitectura. Asegúrese de que el nombre del rol de IAM que se transfiere como parámetro sea coherente en todas las cuentas.

Arquitecto de la nube
En los parámetros de plantilla, proporcione el nombre del rol de IAM.

Indique la función de IAM que, en la cuenta de seguridad principal, puede asumir en todas las demás cuentas secundarias. CodeBuild El nombre del rol predeterminado es security_execute_child_stack_role.

Arquitecto de la nube
En los parámetros, proporcione el ID de cuenta de la cuenta de seguridad principal.

La cuenta de seguridad principal es la cuenta en la que se CodeBuild ejecuta.

Arquitecto de la nube
TareaDescripciónHabilidades requeridas
En la cuenta de registro centralizada, en us-east-1, ejecute la plantilla S3Buckets-Centralized- .yaml. LoggingAccount CloudFormation

Para crear los buckets de S3 en la cuenta de registro centralizada, inicie S3Buckets-Centralized-LoggingAccount.yaml. La plantilla se encuentra en el directorio /templates/initial_deployment_templates del paquete. Los buckets de S3 almacenarán todos los registros, plantillas y registros de acceso a Amazon S3. Anote todos los nombres de los buckets de S3, que utilizará para modificar los archivos de parámetros en los siguientes pasos.

Arquitecto de la nube
En los parámetros de plantilla, proporcione el nombre del bucket de S3 para el almacenamiento de registros de AWS.

Escriba un nombre para el parámetro S3 Bucket Name for Centralized Logging in Logging Account. Este depósito actúa como una ubicación centralizada para almacenar los registros de AWS, como los registros de flujo y CloudTrail los registros, de todas las cuentas. Anote el nombre del bucket y el nombre de recurso de Amazon (ARN).

Arquitecto de la nube
Escriba el nombre del bucket de S3 para los registros de acceso.

Escriba el nombre del bucket de S3 para el parámetro S3 Bucket Name for Access Logs in Logging Account. Este bucket de S3 almacena los registros de acceso de Amazon S3.

Arquitecto de la nube
Escriba el nombre del bucket de S3 para el almacenamiento de las plantillas.

Escriba el nombre del bucket de S3 para el parámetro S3 Bucket Name for CloudFormation Template storage in Logging Account.

Arquitecto de la nube
Proporcione el ID de organización de.

Para proporcionar acceso a los depósitos de S3 dentro de la organización, introduzca el ID de la organización en el parámetro Organization Id for Non-AMS accounts.

Arquitecto de la nube
TareaDescripciónHabilidades requeridas
Inicie la plantilla security-guard-rails-codepipeline -Centralized- SecurityAccount .yml. CloudFormation

Para implementar la canalización de CI/CD, inicie manualmente la plantilla security-guard-rails-codepipeline-Centralized-SecurityAccount.yml en la cuenta de seguridad principal de us-east-1. La plantilla se encuentra en el directorio /templates/initial_deployment_templates del paquete. Esta canalización implementará toda la infraestructura en todas las cuentas secundarias.

Arquitecto de la nube
Proporcione un nombre para el bucket de S3 que almacenará las plantillas en la cuenta de registro centralizada.

Introduzca el nombre del bucket de S3 que proporcionó para el parámetro S3 Bucket Name for the CloudFormation Template storage in Logging Account en el paso 2.

Arquitecto de la nube
Proporcione el nombre del rol de IAM que se utilizará en las cuentas secundarias.

Introduzca el nombre que proporcionó para el parámetro Name of the IAM role en el paso 1.

Arquitecto de la nube
Proporcione una dirección de correo electrónico activa para recibir CodePipeline las notificaciones de errores.

Introduzca la dirección de correo electrónico que desee utilizar para recibir las notificaciones de CodePipeline fallos y otras notificaciones CloudWatch relacionadas con las alarmas.

Arquitecto de la nube
TareaDescripciónHabilidades requeridas
Modifique AccountList.json.

En el archivo Accountlist.json, que se encuentra en el nivel superior del paquete, añada el número de la cuenta de seguridad principal y los números de la cuenta secundaria. Tenga en cuenta que el campo ChildAccountList también incluye el número de la cuenta de seguridad principal. Vea un ejemplo en el archivo deployment-instructions.md del paquete.

Arquitecto de la nube
Modificar accounts.csv

En el archivo accounts.csv, que se encuentra en el nivel superior del paquete, añada todas las cuentas secundarias junto con el correo electrónico registrado en las cuentas. Vea el ejemplo en el archivo deployment-instructions.md:

Arquitecto de la nube
Modifique parameters.config.

En el archivo parameters.config, que se encuentra en la carpeta /templates, actualice los seis parámetros siguientes:

  • pNotifyEmail: la dirección de correo electrónico que proporcionaste al configurar la canalización (consulta el paso 3)

  • pstackNameLogging: El nombre de la CloudFormation pila para el registro centralizado

  • pS3LogsBucket: nombre del bucket de S3 donde se almacenarán los registros de todas las cuentas (consulte el paso 2)

  • pBucketName: ARN del bucket de S3 utilizado para almacenar los registros

  • pTemplateBucketName: el nombre de los buckets de S3 en los que se almacenarán las plantillas (consulte el paso 2)

  • pAllowedAccounts: ID de cuenta para las cuentas principal y secundaria

Para el resto de parámetros, puede mantener los valores predeterminados. Para ver un ejemplo, consulte el archivo deployment-instructions.md del paquete.

Arquitecto de la nube
TareaDescripciónHabilidades requeridas
Acceda al CodeCommit repositorio que creó en el paso 3.

En la sección de resultados de la CloudFormation pila de infraestructuras de CI/CD (lanzada en el paso 3), anote el nombre de la URL del CodeCommit repositorio. Cree un acceso al repositorio para que los archivos puedan insertarse en él para que la infraestructura se despliegue en todas las cuentas de destino. Para obtener más información, consulte Configuración de AWS CodeCommit.

Arquitecto de la nube
Envía los archivos al CodeCommit repositorio.

Instale Git en su equipo local. A continuación, ejecute los comandos de Git para clonar el repositorio vacío, copie los archivos de su portátil a la carpeta del repositorio y envíe los artefactos al repositorio. Compruebe los ejemplos de comandos de Git en el archivo deployment-instructions.md del paquete. Para ver los comandos básicos de Git, consulte la sección Recursos relacionados.

Arquitecto de la nube
TareaDescripciónHabilidades requeridas
Confirme el estado de CodePipeline y CodeBuild.

Tras enviar los artefactos al CodeCommit repositorio, confirme que se ha iniciado la CodePipeline canalización que creó en el paso 3. A continuación, comprueba los CodeBuild registros para confirmar el estado o los errores.

Arquitecto de la nube

Recursos relacionados

Conexiones

Para acceder al contenido adicional asociado a este documento, descomprima el archivo: attachment.zip