

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 en el mismo Cuenta de AWS AWS Managed Microsoft AD formulario mediante AWS Lambda la automatización
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad"></a>

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

## Resumen
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-summary"></a>

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) la 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. 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
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-prereqs"></a>

**Requisitos previos **
+ Un activo Cuenta de AWS.
+ Git [instalado](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) y configurado en una estación de trabajo local.
+ Terraform [instalado](https://learn.hashicorp.com/tutorials/terraform/install-cli) y configurado en una estación de trabajo local.
+ Equipo Windows con módulos de Active Directory (`ActiveDirectory`).
+ Un directorio AWS Managed Microsoft AD y credenciales almacenadas en un [parámetro del almacén de AWS Systems Manager parámetros.](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html)
+ AWS Identity and Access Management *(IAM) con permisos para los que Servicios de AWS aparecen en [Herramientas](#remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-tools).* Para obtener más información sobre IAM, consulte [Recursos relacionados](#remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-resources).

**Limitaciones**
+ Este patrón no admite la configuración multicuenta.
+ Algunos Servicios de AWS no están disponibles en todos Regiones de AWS. Para obtener información sobre la disponibilidad en regiones, consulte [Servicios de AWS by Region](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Para ver los puntos de conexión específicos, consulte [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) y elija el enlace del servicio.

**Versiones de producto**
+ [Terraform, versión 1.1.9 o posterior](https://developer.hashicorp.com/terraform/install)
+ [La versión 3.0 o posterior del Proveedor de AWS para Terraform](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/guides/version-3-upgrade)

## Arquitectura
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-architecture"></a>

En el siguiente diagrama se muestran los componentes de la arquitectura y el flujo de trabajo de esta aplicación.

![Proceso para utilizar la automatización de Lambda para eliminar EC2 entradas de Managed Microsoft AD.](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/6b50dcc5-4f4b-4eea-85a7-04cebc9f7454/images/b7fc5962-bfb8-4f5a-968e-7487b1d48c4f.png)


En el diagrama, se muestra el siguiente flujo de trabajo:

1. Amazon EventBridge activa la AWS Lambda función basándose en una expresión cron. (En este patrón, las expresiones cron están programadas una vez al día).

1. La función y la política de IAM requeridas se crean y se adjuntan a AWS Lambda través de Terraform.

1. La AWS Lambda función se ejecuta y llama a los grupos de Auto Scaling de Amazon Elastic Compute Cloud (Amazon EC2) mediante el módulo boto de Python. La función de Lambda obtiene el ID de instancia aleatorio. El identificador de instancia se usa para ejecutar AWS Systems Manager comandos.

1. AWS Lambda realiza otra llamada a Amazon EC2 mediante el módulo boto y obtiene las direcciones IP privadas de los servidores Windows en ejecución y las almacena en una variable temporal.

1. AWS Lambda realiza otra llamada a Systems Manager para obtener la información del equipo al que está conectado Directory Service.

1. Un AWS Systems Manager documento ayuda a ejecutar el PowerShell script en los servidores de Amazon EC2 Windows para obtener las direcciones IP privadas de los ordenadores que están conectados a AD.

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

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

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

## Tools (Herramientas)
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-tools"></a>

**Servicios de AWS**
+ [AWS Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html)proporciona 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 Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html)permite 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)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) 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](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) 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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 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](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) 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](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents.html) 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](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) es una capacidad AWS Systems Manager y proporciona un almacenamiento jerárquico seguro para la administración de datos de configuración y la administración de secretos.

**Otras herramientas**
+ [HashiCorp Terraform](https://www.terraform.io/docs) es una herramienta de código abierto de infraestructura como código (IaC) que le ayuda a usar el código para aprovisionar y administrar la infraestructura y los recursos de la nube.
+ [PowerShell](https://learn.microsoft.com/en-us/powershell/)es un programa de administración de automatización y configuración de Microsoft que se ejecuta en Windows, Linux y macOS.
+ [Python](https://www.python.org/) es un lenguaje de programación informático de uso general.

**R****epositorio de código**

El código de este patrón está disponible en el repositorio de [soluciones GitHub personalizadas de AD Cleanup Automation](https://github.com/aws-samples/aws-lambda-ad-cleanup-terraform-samples/). 

## Prácticas recomendadas
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-best-practices"></a>
+ **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](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/launching_instance.html) 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
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-epics"></a>

### Configure su entorno
<a name="set-up-your-environment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree una carpeta de proyecto y agregue los archivos. | Para clonar el repositorio y crear una carpeta de proyecto, haga lo siguiente: [See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html) | DevOps ingeniero | 

### Aprovisionamiento de la arquitectura de destino mediante la configuración de Terraform
<a name="provision-the-target-architecture-by-using-the-terraform-configuration"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Inicialice la configuración de Terraform. | Para inicializar el directorio de trabajo que contiene los archivos de Terraform, use el siguiente comando.<br />`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.<br />`terraform plan` | DevOps ingeniero | 
| Realice las acciones propuestas. | Para comprobar que los resultados del comando `terraform plan` sean los esperados, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html) | DevOps ingeniero | 
| Limpie la infraestructura. | Para limpiar la infraestructura que ha creado, utilice el siguiente comando.<br />`terraform destroy`<br />Para confirmar el comando de eliminación, ingrese `yes`. | DevOps ingeniero | 

### Verifique la implementación
<a name="verify-the-deployment"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Ponga en marcha y pruebe la función de Lambda. | Para verificar que la implementación se realizó correctamente, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html)<br />Los resultados de la puesta en marcha muestran el resultado de la función. | DevOps ingeniero | 
| Vea los resultados de la función de Lambda. | En este patrón, una EventBridge regla ejecuta la función Lambda una vez al día. Para ver los resultados de la función de Lambda, haga lo siguiente:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad.html)<br />En la CloudWatch consola, la página **Grupos de registros** muestra los resultados de la función Lambda. | DevOps ingeniero | 

### Limpieza de la infraestructura después de utilizarla
<a name="clean-up-infrastructure-after-use"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Limpie la infraestructura. | Para limpiar la infraestructura que ha creado, utilice el siguiente comando.<br />`terraform destroy`<br />Para confirmar el comando de eliminación, ingrese `yes`. | DevOps ingeniero | 
| Verifique después de limpiar. | Compruebe que los recursos se hayan eliminado correctamente. | DevOps ingeniero | 

## Resolución de problemas
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-troubleshooting"></a>


| Problema | Solución | 
| --- | --- | 
| Si intenta eliminar el equipo de AD, aparecerá un mensaje de “Acceso denegado”. No se puede eliminar el equipo de AD porque, de forma predeterminada, la acción intenta eliminar dos direcciones IP privadas que están conectadas como parte de los servicios de AD. | Para evitar este error, utilice la siguiente operación de Python para ignorar los dos primeros equipos al enumerar las diferencias entre la salida de un equipo de AD y la salida de un equipo que usa Windows.<pre>Difference = Difference[2:]</pre> | 
| Cuando Lambda ejecuta un PowerShell script en un servidor Windows, espera que los módulos de Active Directory estén disponibles de forma predeterminada. Si los módulos no están disponibles, una función Lambda crea un error que indica que «Get- no AdComputer está instalado en la instancia». | Para evitar este error, instala los módulos necesarios utilizando los datos de usuario de las EC2 instancias. Usa el [EC2WindowsUserdata](https://github.com/aws-samples/aws-lambda-ad-cleanup-terraform-samples/blob/main/EC2WindowsUserdata)script que se encuentra en el GitHub repositorio de este patrón. | 

## Recursos relacionados
<a name="remove-amazon-ec2-entries-in-the-same-aws-account-from-aws-managed-microsoft-ad-resources"></a>

**AWS documentación**
+ [Amazon EventBridge y AWS Identity and Access Management](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-iam.html)
+ [Configuración de permisos de instancia requeridos para Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-instance-profile.html)
+ [Gestión de identidad y acceso para Directory Service](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/iam_auth_access.html)
+ [Unir manualmente una instancia de Amazon EC2 Windows a AWS Managed Microsoft AD Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/join_windows_instance.html)
+ [Trabaje con políticas de IAM basadas en la identidad en AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/access-control-identity-based.html)

**Otros recursos**
+ [AWS Proveedor (documentación de Terraform](https://registry.terraform.io/providers/hashicorp/aws/latest/docs))
+ [Backend Configuration](https://developer.hashicorp.com/terraform/language/backend) (documentación de Terraform)
+ [Install Terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli) (documentación de Terraform)
+ [Python boto module](https://pypi.org/project/boto/) (repositorio Python Package Index)
+ [Terraform binary download](https://www.terraform.io/downloads) (documentación de Terraform)