Elimine EC2 las entradas de Amazon Cuentas de AWS de un lado a otro AWS Managed Microsoft AD mediante AWS Lambda la automatización - 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.

Elimine EC2 las entradas de Amazon Cuentas de AWS de un lado a otro AWS Managed Microsoft AD mediante AWS Lambda la automatización

Dr. Rahul Sharad Gaikwad y Tamilselvan P, Amazon Web Services

Resumen

Active Directory (AD) es una herramienta de secuencias de comandos de Microsoft que administra la información de dominio y las interacciones de los usuarios con los servicios de red. Los proveedores de servicios gestionados (MSPs) lo utilizan ampliamente para gestionar las credenciales de los empleados y los permisos de acceso. Como los atacantes de AD pueden usar cuentas inactivas para intentar hackear una organización, es importante encontrar las cuentas inactivas y desactivarlas siguiendo un programa de mantenimiento rutinario. Con AWS Directory Service for Microsoft Active Directory, puede ejecutar Microsoft Active Directory como un servicio gestionado. Este patrón puede ayudarle a configurar la AWS Lambda automatización para encontrar y eliminar rápidamente las cuentas inactivas.

Si los siguientes escenarios se aplican a su organización, este patrón puede ser útil para lo siguiente:

  • Administración centralizada de AD: si su organización tiene varias Cuentas de AWS, cada una con su propia implementación de AD, puede resultar difícil administrar las cuentas de usuario y los permisos de acceso de manera uniforme en todas las cuentas. Con una solución de limpieza de AD multicuenta, puede desactivar o eliminar las cuentas inactivas de todas las instancias de AD de forma centralizada.

  • Reestructuración o migración de AD: si su organización planea reestructurar o migrar su implementación de AD, una solución de limpieza de AD multicuenta puede ser útil para preparar el entorno. Con esta solución, podrá eliminar cuentas innecesarias o inactivas, simplificar el proceso de migración y reducir los posibles conflictos o problemas.

Cuando utiliza este patrón, puede obtener los siguientes beneficios:

  • Mejore el rendimiento de las bases de datos y los servidores, y corrija también de las vulnerabilidades de seguridad causadas por cuentas inactivas.

  • Si su servidor de AD está alojado en la nube, eliminar las cuentas inactivas también puede reducir los costes de almacenamiento y, al mismo tiempo, mejorar el rendimiento. Es posible que sus facturas mensuales disminuyan porque los cargos asociados al uso de ancho de banda y los recursos de computación pueden disminuir.

  • Mantenga a raya a los posibles atacantes con un Active Directory limpio.

Requisitos previos y limitaciones

Requisitos previos 

  • Una cuenta principal activa Cuenta de AWS y una o varias cuentas secundarias. En este patrón, una cuenta principal es donde se crea Active Directory. Las cuentas secundarias alojan servidores Windows y se unen a través de la cuenta principal de Active Directory.

  • Git instalado y configurado en una estación de trabajo local.

  • Terraform instalado y configurado en una estación de trabajo local.

  • AWS Managed Microsoft AD directorio configurado en la cuenta principal y compartido con todas las cuentas secundarias. Para obtener más información, consulta el tutorial: Cómo compartir tu AWS Managed Microsoft AD directorio para EC2 unirte a un dominio sin problemas en la Guía de AWS Directory Service administración.

  • Una conexión de emparejamiento de nube privada virtual (VPC) o una AWS Transit Gateway conexión disponible entre la VPC de AWS Directory Service (cuenta principal) y la VPC de las instancias de Amazon Elastic Compute Cloud ( EC2Amazon) (cuentas secundarias). Para obtener más información, consulte Configure a VPC peering connection between the directory owner and the directory consumer account en la Guía de administración de AWS Directory Service .

  • Una máquina Windows configurada con el script EC2WindowsUserdata en la cuenta principal y en todas las cuentas secundarias. El archivo de script está disponible en la raíz del repositorio de códigos de este patrón.

  • Un rol multicuenta AWS Identity and Access Management (IAM) disponible en cada cuenta secundaria que está configurado con una política de confianza que permite el uso de una AWS Lambda función de la cuenta principal. Para obtener más información, consulta Enviar y recibir eventos entre Amazon Cuentas de AWS EventBridge en la Guía del EventBridge usuario de Amazon.

  • Los siguientes valores secretos están disponibles en el almacén de AWS Systems Manager parámetros de la cuenta principal:

    • domainJoinUser: nombre de usuario del servicio de directorio

    • domainJoinPassword: contraseña del servicio de directorio

    Para obtener más información sobre los secretos, consulte Crear un AWS Secrets Manager secreto en la Guía del AWS Secrets Manager usuario.

Limitaciones

  • La creación de un recurso en una cuenta secundaria no está automatizada con Terraform. Debe crear los siguientes recursos manualmente mediante Consola de administración de AWS:

    • EventBridge Regla de Amazon para enviar los eventos de EC2 rescisión de Amazon a la cuenta principal

    • Creación de roles EC2 multicuentas de Amazon en la cuenta secundaria con política de confianza

    • conexión de emparejamiento de VPC o Transit Gateway

  • Algunas Servicios de AWS no están disponibles en todas las Regiones de AWS versiones. Para obtener información sobre la disponibilidad en regiones, consulte Servicios de AWS by Region. Para ver los puntos de conexión específicos, consulte Service endpoints and quotas y elija el enlace del servicio.

Versiones de producto

Arquitectura

El siguiente diagrama muestra la arquitectura de alto nivel de la solución.

Proceso para utilizar la automatización de Lambda para eliminar EC2 entradas de todas las cuentas de AWS.

El diagrama de arquitectura ilustra el proceso siguiente:

  1. En las cuentas infantiles, la EventBridge regla recopila todos los eventos de EC2 rescisión de Amazon. La regla envía los eventos EventBridge que están presentes en la cuenta principal.

  2. De la cuenta principal, EventBridge recopila todos los eventos y contiene la regla para activar la función Lambda. ADcleanup-Lambda

  3. La cuenta principal recibe cualquier evento de terminación de la cuenta principal o secundaria y activa la función de Lambda.

  4. La función Lambda realiza la llamada a los grupos de Amazon EC2 Auto Scaling mediante el módulo boto de Python y obtiene el ID de instancia aleatorio. El ID de instancia se utiliza para poner en marcha los comandos de Systems Manager.

  5. La función Lambda realiza otra llamada a Amazon EC2 mediante el módulo boto. La función de Lambda obtiene las direcciones IP privadas de los servidores Windows en marcha y las almacena en una variable temporal. En los pasos 5.1 y 5.2, las EC2 instancias de Windows en ejecución se recopilan de las cuentas secundarias.

  6. La función de Lambda hace otra llamada a Systems Manager para obtener la información del equipo conectado a AWS Directory Service.

  7. Un AWS Systems Manager documento ayuda a ejecutar el PowerShell comando en los servidores de Amazon EC2 Windows para obtener las direcciones IP privadas de las computadoras que están conectadas a AD. (El documento de Systems Manager usa el ID de instancia que se obtuvo en el paso 4).

  8. El nombre de usuario y las contraseñas del dominio AD se almacenan en el almacén de AWS Systems Manager parámetros. AWS Lambda y Systems Manager hacen una llamada a Parameter Store y obtienen los valores de nombre de usuario y contraseña que se utilizarán para conectarse a AD.

  9. Con el documento Systems Manager, el PowerShell script se ejecuta en el servidor Amazon EC2 Windows utilizando el identificador de instancia obtenido anteriormente en el paso 4.

  10. Amazon EC2 se conecta AWS Directory Service mediante PowerShell comandos y elimina los ordenadores que no están en uso o inactivos.

Tools (Herramientas)

AWS servicios

  • AWS Directory Serviceproporciona varias formas de utilizar Microsoft Active Directory (AD) con otras, Servicios de AWS como Amazon Elastic Compute Cloud (Amazon EC2), Amazon Relational Database Service (Amazon RDS) para SQL Server y FSx Amazon para Windows File Server.

  • AWS Directory Service for Microsoft Active Directorypermite que sus cargas de trabajo y AWS recursos compatibles con directorios utilicen Microsoft Active Directory en. Nube de AWS

  • Amazon Elastic Compute Cloud (Amazon EC2) proporciona una capacidad informática escalable en el Nube de AWS. Puede lanzar tantos servidores virtuales como necesite y escalarlos o reducirlos con rapidez.

  • Amazon EventBridge es un servicio de bus de eventos sin servidor que le ayuda a conectar sus aplicaciones con datos en tiempo real de diversas fuentes. Por ejemplo, AWS Lambda funciones, puntos de enlace de invocación HTTP que utilizan destinos de API o buses de eventos en otros. Cuentas de AWS

  • AWS Identity and Access Management (IAM) le ayuda a administrar de forma segura el acceso a sus AWS recursos al controlar quién está autenticado y autorizado a usarlos. Con IAM, puede especificar quién o qué puede acceder a los servicios y recursos AWS, gestionar de forma centralizada los permisos detallados y analizar el acceso para restringir todos los permisos. AWS

  • AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.

  • AWS Systems Manager lo ayuda a administrar las aplicaciones y la infraestructura que se ejecutan en la Nube de AWS. Simplifica la administración de aplicaciones y recursos, reduce el tiempo necesario para detectar y resolver problemas operativos y le ayuda a gestionar sus recursos de forma segura y a escala. AWS

  • AWS Systems Manager los documentos definen las acciones que Systems Manager realiza en las instancias gestionadas. Systems Manager incluye más de 100 documentos preconfigurados que puede utilizar especificando los parámetros en tiempo de ejecución.

  • AWS Systems Manager El almacén de parámetros es una capacidad AWS Systems Manager y proporciona un almacenamiento jerárquico seguro para la administración de los datos de configuración y la administración de secretos.

Otras herramientas

  • HashiCorp Terraform es una herramienta de infraestructura como código (IaC) que facilita usar el código para aprovisionar y administrar los recursos y la infraestructura en la nube.

  • PowerShelles un programa de administración de automatización y configuración de Microsoft que se ejecuta en Windows, Linux y macOS.

  • Python es un lenguaje de programación informático de uso general.

Repositorio de código

El código de este patrón está disponible en el repositorio GitHub aws-lambda-ad-cleanup-terraform-samples.

Prácticas recomendadas

  • Unirse a dominios de manera automática.Cuando lances una instancia de Windows que vaya a formar parte de un Directory Service dominio, únete al dominio durante el proceso de creación de la instancia en lugar de añadirla manualmente más adelante. Para unirse automáticamente a un dominio, seleccione el directorio correcto de la lista desplegable Directorio de unión al dominio al lanzar una nueva instancia. Para obtener más información, consulte Cómo unir sin problemas una instancia de Amazon EC2 Windows a AWS Managed Microsoft AD Active Directory en la Guía de Directory Service administración.

  • Elimine las cuentas que no se usen.Es habitual encontrar cuentas en AD que nunca se han utilizado. Al igual que las cuentas desactivadas o inactivas que permanecen en el sistema, las cuentas no utilizadas y desatendidas pueden ralentizar el sistema de AD o hacer que la organización sea vulnerable a las filtraciones de datos.

  • Automatice las limpiezas de Active Directory.Para mitigar los riesgos de seguridad y evitar que las cuentas obsoletas afecten al rendimiento de AD, las limpiezas de AD deberían realizarse con una frecuencia periódica. Puede realizar la mayoría de las tareas de administración y limpieza de AD escribiendo scripts. Algunos ejemplos de tareas son eliminar cuentas desactivadas e inactivas, eliminar grupos vacíos e inactivos y localizar cuentas de usuario y contraseñas caducadas.

Epics

TareaDescripciónHabilidades requeridas

Cree un rol multicuenta en la cuenta secundaria.

Para crear un rol multicuenta en una cuenta secundaria, haga lo siguiente:

  1. En cada cuenta secundaria, cree un rol con el nombre ec2crossaccountrole usando la política administrada AmazonEC2ReadOnlyAccess. (Para obtener más información, consulte Crear un rol mediante políticas de confianza personalizadas en la documentación de IAM).

  2. En la sección Política de confianza personalizada, agregue el siguiente código:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::${Parentaccountid}:role/ADcleanuprole" }, "Action": "sts:AssumeRole" } ] }
DevOps ingeniero

Cree una regla de eventos en la cuenta secundaria.

Para crear una EventBridge regla para cada cuenta secundaria, haga lo siguiente:

  1. Inicia sesión con el niño y Cuenta de AWS, a continuación, abre la EventBridge consola de Amazon en https://console.aws.amazon.com/events/.

  2. En el panel de navegación, seleccione Reglas.

  3. Seleccione Crear regla.

  4. Indique un nombre para la regla y, opcionalmente, una descripción.

  5. En Bus de eventos, elija Bus de eventos predeterminado de AWS.

  6. En Tipo de regla, elija Regla con un patrón de eventos.

  7. Elija Siguiente.

  8. En Patrón de eventos, pegue el siguiente código:

    { "source": ["aws.ec2"], "detail-type": ["EC2 Instance State-change Notification"], "detail": { "state": ["terminated"] } }
  9. Elija Siguiente.

  10. En Tipo de destino, seleccione Bus de eventos en una cuenta o región diferente.En Bus de eventos como destino, ingrese el nombre de recurso de Amazon (ARN) del bus de eventos para la cuenta principal.

  11. En Rol de ejecución, elija Crear un nuevo rol para el recurso especificado.

  12. Seleccione Siguiente para revisar los detalles de la nueva regla y, a continuación, elija Crear.

Para obtener más información, consulta Cómo crear reglas que reaccionen a los eventos en Amazon EventBridge en la Guía del EventBridge usuario de Amazon.

DevOps ingeniero

Crea una EC2 instancia y únete a AD.

Para crear una EC2 instancia para Windows, haz lo siguiente:

  1. Utilice el script EC2WindowsUserdata que está disponible en el repositorio de código de este patrón.

  2. En el script de datos de usuario, revise el siguiente código para usar los valores de Directory service addresses de la cuenta principal:

    set-DnsClientServerAddress -InterfaceIndex 6 -ServerAddresses $(Directory service addresses)

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Cree una carpeta de proyecto y agregue los archivos.

Para clonar el repositorio y crear una carpeta de proyecto, haga lo siguiente:

  1. Abre el GitHub repositorio de este patrón.

  2. Seleccione el botón Code para ver las opciones de clonación en el menú desplegable Clone.

  3. En la pestaña HTTPS, copie la URL proporcionada en Clone using the web URL.

  4. Cree una carpeta en su máquina y asígnele el nombre de su proyecto.

  5. Abra una terminal en su máquina local y navegue hasta esa carpeta.

  6. Para clonar el repositorio de git, use el siguiente comando.

    git clone <repository-URL>.git

  7. Una vez clonado el repositorio, utilice el siguiente comando para ir al directorio clonado.

    cd <directory name>/terraform-aws-lambda-ad-cleanup/multiple-account-cleanup

  8. En el repositorio clonado, abra este proyecto en un entorno de desarrollo integrado (IDE) de su elección.

DevOps ingeniero

Compile el archivo adcleanup.zip.

Para comprimir el archivo lambda_function.py, use el siguiente comando:

zip -r adcleanup.zip lambda_function.py

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Proporcione valores para las variables de Terraform.

En la cuenta secundaria, proporcione valores para las siguientes variables arn como tipos de cadenas en el archivo terraform.tfvars:

  • lambda_env_cross_role_arn

  • child_account_cross_role_arn

DevOps ingeniero

Inicialice la configuración de Terraform.

Para inicializar el directorio de trabajo que contiene los archivos de Terraform, use el siguiente comando:

terraform init

DevOps ingeniero

Previsualice los cambios.

Puede obtener una vista previa de los cambios que Terraform realizará en la infraestructura antes de implementarla. Para comprobar que Terraform realizará los cambios necesarios, use el siguiente comando:

terraform plan —-var-file=examples/terraform.tfvars

DevOps ingeniero

Realice las acciones propuestas.

Para comprobar que los resultados del comando terraform plan sean los esperados, haga lo siguiente:

  1. Ejecute el comando siguiente: terraform apply

  2. Inicie sesión en Consola de administración de AWS y compruebe que los recursos estén presentes.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Ponga en marcha y pruebe la función de Lambda.

Para verificar que la implementación se realizó correctamente, haga lo siguiente:

  1. Inicie sesión en la Consola de administración de AWS consola Lambda y ábrala. Abra la página Funciones y seleccione el nombre de la función que comience por ADcleanup-Lambda-*.

  2. En la página de descripción general de la función, seleccione Probar en la pestaña Código de la sección Código fuente.

  3. Para guardar el evento de prueba, proporcione un nombre para el evento y seleccione Guardar. Elija Probar de nuevo para probar el evento.

Los resultados de la puesta en marcha muestran el resultado de la función.

DevOps ingeniero

Vea los resultados de la ejecución de la EventBridge regla desde la cuenta principal.

Para ver los resultados de la EventBridge regla que se basa en los eventos de EC2 rescisión de Amazon desde la cuenta principal, haz lo siguiente:

  1. EC2 Termina las instancias de la cuenta principal.

  2. Abra la consola de Lambda de la cuenta principal. Abra la página Funciones y seleccione el nombre de la función que comience por ADcleanup-Lambda-*.

  3. Seleccione la pestaña Supervisar y, a continuación, seleccione Ver registros. CloudWatch

En la CloudWatch consola, la página Grupos de registros muestra los resultados de la función Lambda.

DevOps ingeniero

Vea los resultados de la ejecución de la EventBridge regla desde la cuenta secundaria.

Para ver los resultados de la EventBridge regla que se basa en los eventos de EC2 rescisión de Amazon desde la cuenta secundaria, haz lo siguiente:

  1. EC2 Finaliza las instancias de la cuenta secundaria.

  2. Abra la consola de Lambda de la cuenta principal. Abra la página Funciones y seleccione el nombre de la función que comience por ADcleanup-Lambda-*.

  3. Seleccione la pestaña Supervisar y, a continuación, seleccione Ver registros. CloudWatch

En la CloudWatch consola, la página Grupos de registros muestra los resultados de la función Lambda.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Limpie la infraestructura.

Para limpiar la infraestructura que ha creado, utilice el siguiente comando:

terraform destroy

Para confirmar el comando destroy, escriba yes.

DevOps ingeniero

Verifique después de limpiar.

Compruebe que los recursos se hayan eliminado correctamente.

DevOps ingeniero

Resolución de problemas

ProblemaSolución

Problema de conexión entre AWS Directory Service (cuenta principal) e EC2 instancia de Amazon (cuenta secundaria): no puedes unir los ordenadores de la cuenta secundaria a AD aunque la interconexión de VPC esté disponible.

Agregue el enrutamiento en. VPCs Para obtener instrucciones, consulte Configurar una conexión de emparejamiento de VPC entre el propietario del directorio y la cuenta del consumidor del directorio en la documentación. AWS Directory Service

Recursos relacionados

AWS documentación

Otros recursos