Supprimez EC2 les entrées Amazon dans le même Compte AWS formulaire AWS Managed Microsoft AD en utilisant l' AWS Lambda automatisation - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Supprimez EC2 les entrées Amazon dans le même Compte AWS formulaire AWS Managed Microsoft AD en utilisant l' AWS Lambda automatisation

Créé par le Dr Rahul Sharad Gaikwad (AWS) et Tamilselvan (P) AWS

Dépôt de code : terraform-aws-lambda-ad-cleanup

Environnement : PoC ou pilote

Technologies : infrastructure DevOps, stockage et sauvegarde, gestion et gouvernance

Charge de travail : Toutes les autres charges de travail ; Microsoft

AWSservices : AWS Managed Microsoft AD ; AWS Lambda ; Amazon EC2 ; AWS Identity and Access Management ; AWS Directory Service ; AWS Systems Manager ; Amazon EventBridge ; AWS Auto Scaling

Récapitulatif

Active Directory (AD) est un outil de script Microsoft qui gère les informations de domaine et les interactions des utilisateurs avec les services réseau. Il est largement utilisé par les fournisseurs de services gérés (MSPs) pour gérer les informations d'identification et les autorisations d'accès des employés. Étant donné que les attaquants publicitaires peuvent utiliser des comptes inactifs pour tenter de pirater une organisation, il est important de trouver les comptes inactifs et de les désactiver dans le cadre d'un programme de maintenance de routine. Avec AWS Directory Service for Microsoft Active Directory, vous pouvez exécuter Microsoft Active Directory en tant que service géré.

Ce modèle peut vous aider à configurer AWS Lambda l'automatisation pour trouver et supprimer rapidement les comptes inactifs. Lorsque vous utilisez ce modèle, vous pouvez bénéficier des avantages suivants :

  • Améliorez les performances des bases de données et des serveurs, et corrigez les failles de sécurité liées aux comptes inactifs.

  • Si votre serveur AD est hébergé dans le cloud, la suppression des comptes inactifs peut également réduire les coûts de stockage tout en améliorant les performances. Vos factures mensuelles peuvent diminuer en raison de la baisse des frais de bande passante et des ressources informatiques.

  • Tenez les attaquants potentiels à distance grâce à un Active Directory propre.

Conditions préalables et limitations

Prérequis

  • Un actif Compte AWS.

  • Git est installé et configuré sur un poste de travail local.

  • Terraform installé et configuré sur un poste de travail local.

  • Ordinateur Windows doté de modules Active Directory (ActiveDirectory).

  • Un répertoire AWS Managed Microsoft AD et des informations d'identification stockées dans un paramètre du AWS Systems Manager Parameter Store.

  • AWS Identity and Access Management (IAM) rôle avec autorisations d'accès à la Services AWS liste dans Outils. Pour plus d'informationsIAM, consultez la section Ressources connexes.

Limites

  • Ce modèle ne prend pas en charge la configuration entre comptes.

  • Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir Services AWS par région. Pour des points de terminaison spécifiques, consultez Points de terminaison de service et quotas, puis choisissez le lien correspondant au service.

Versions du produit

Architecture

Le schéma suivant montre les composants du flux de travail et de l'architecture de ce modèle.

Processus d'utilisation de l'automatisation Lambda pour supprimer des EC2 entrées de Managed Microsoft AD.

Le schéma suivant illustre le flux de travail suivant :

  1. Amazon EventBridge déclenche la AWS Lambda fonction en fonction d'une expression cron. (Pour ce modèle, le calendrier des expressions cron est d'une fois par jour.)

  2. Le IAM rôle et la politique requis sont créés et attachés AWS Lambda via Terraform.

  3. La AWS Lambda fonction est exécutée et appelle Amazon Elastic Compute Cloud (AmazonEC2) Auto Scaling Groups à l'aide du module Python boto. La fonction Lambda obtient l'identifiant d'instance aléatoire. L'identifiant d'instance est utilisé pour exécuter AWS Systems Manager des commandes.

  4. AWS Lambda effectue un autre appel à Amazon à l'EC2aide du module boto et obtient les adresses IP privées des serveurs Windows en cours d'exécution et les stocke dans une variable temporaire.

  5. AWS Lambda lance un nouvel appel à Systems Manager pour obtenir les informations de l'ordinateur auquel il est connecté AWS Directory Service.

  6. Un AWS Systems Manager document permet d'exécuter le PowerShell script sur les serveurs Amazon EC2 Windows pour obtenir les adresses IP privées des ordinateurs connectés à AD.

  7. Le nom d'utilisateur et les mots de passe du domaine AD sont stockés dans le AWS Systems Manager Parameter Store. AWS Lambda et Systems Manager appellent Parameter Store et obtiennent les valeurs du nom d'utilisateur et du mot de passe à utiliser pour connecter AD.

  8. À l'aide du document Systems Manager, le PowerShell script est exécuté sur le serveur Amazon EC2 Windows à l'aide de l'identifiant d'instance obtenu précédemment à l'étape 3.

  9. Amazon EC2 se connecte AWS Directory Service à l'aide de PowerShell commandes et supprime les ordinateurs inutilisés ou inactifs.

Outils

AWSservices

  • AWS Directory Servicepropose plusieurs manières d'utiliser Microsoft Active Directory (AD) avec d'autres, Services AWS comme Amazon Elastic Compute Cloud (AmazonEC2), Amazon Relational Database Service (RDSAmazon) SQL for Server et FSx Amazon for Windows File Server.

  • AWS Directory Service for Microsoft Active Directorypermet à vos charges de travail et à vos AWS ressources sensibles aux annuaires d'utiliser Microsoft Active Directory dans le. AWS Cloud

  • Amazon Elastic Compute Cloud (AmazonEC2) fournit une capacité de calcul évolutive dans le AWS Cloud. Vous pouvez lancer autant de serveurs virtuels que vous le souhaitez et les augmenter ou les diminuer rapidement.

  • Amazon EventBridge est un service de bus d'événements sans serveur qui vous permet de connecter vos applications à des données en temps réel provenant de diverses sources. Par exemple, des AWS Lambda fonctions, des points de terminaison d'HTTPinvocation utilisant des API destinations ou des bus d'événements dans d'autres. Comptes AWS

  • AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser. Vous pouvez ainsi spécifier qui ou quoi peut accéder aux services et aux ressources AWS, gérer de manière centralisée les autorisations détaillées et analyser les accès pour affiner les autorisations entre elles. IAM AWS

  • AWS Lambda est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.

  • AWS Systems Managervous aide à gérer vos applications et votre infrastructure exécutées dans le AWS Cloud. Il simplifie la gestion des applications et des ressources, réduit le délai de détection et de résolution des problèmes opérationnels et vous aide à gérer vos AWS ressources en toute sécurité à grande échelle.

  • AWS Systems Manager les documents définissent les actions que Systems Manager exécute sur vos instances gérées. Systems Manager inclut plus d'une centaine de documents préconfigurés que vous pouvez utiliser en spécifiant des paramètres lors de l'exécution.

  • AWS Systems Manager Parameter Store est une fonctionnalité AWS Systems Manager et fournit un stockage hiérarchique sécurisé pour la gestion des données de configuration et la gestion des secrets.

Autres outils

  • HashiCorp Terraform est un outil d'infrastructure open source sous forme de code (IaC) qui vous aide à utiliser le code pour provisionner et gérer l'infrastructure et les ressources du cloud.

  • PowerShellest un programme d'automatisation et de gestion de configuration Microsoft qui s'exécute sous Windows, Linux et macOS.

  • Python est un langage de programmation informatique polyvalent.

Référentiel de code C

Le code de ce modèle est disponible dans le référentiel de solutions GitHub Custom AD Cleanup Automation.

Bonnes pratiques

  • Joignez automatiquement des domaines.Lorsque vous lancez une instance Windows destinée à faire partie d'un AWS Directory Service domaine, rejoignez le domaine pendant le processus de création de l'instance au lieu de l'ajouter manuellement ultérieurement. Pour rejoindre automatiquement un domaine, sélectionnez le répertoire approprié dans la liste déroulante des répertoires de jointure de domaines lors du lancement d'une nouvelle instance. Pour plus de détails, consultez la section Joindre sans difficulté une instance Amazon EC2 Windows à votre AWS Managed Microsoft AD Active Directory dans le guide d'AWS Directory Service administration.

  • Supprimez les comptes inutilisés.Il est courant de trouver dans AD des comptes qui n'ont jamais été utilisés. Tout comme les comptes désactivés ou inactifs qui restent dans le système, les comptes non utilisés négligés peuvent ralentir votre système publicitaire ou rendre votre organisation vulnérable aux violations de données.

  • Automatisez les nettoyages d'Active Directory.Pour atténuer les risques de sécurité et empêcher les comptes obsolètes d'affecter les performances d'AD, effectuez des nettoyages AD à intervalles réguliers. Vous pouvez effectuer la plupart des tâches de gestion et de nettoyage d'AD en écrivant des scripts. Les tâches incluent par exemple la suppression de comptes désactivés et inactifs, la suppression de groupes vides et inactifs et la localisation de comptes utilisateurs et de mots de passe expirés.

Épopées

TâcheDescriptionCompétences requises

Créez un dossier de projet et ajoutez les fichiers.

Pour cloner le référentiel et créer un dossier de projet, procédez comme suit :

  1. Ouvrez le GitHub référentiel de ce modèle.

  2. Cliquez sur le bouton Code pour voir les options de clonage dans la liste déroulante Cloner.

  3. Sur l'HTTPSonglet, copiez le contenu URL fourni dans Clone à l'aide du Web URL.

  4. Créez un dossier sur votre machine et nommez-le avec le nom de votre projet.

  5. Ouvrez un terminal sur votre ordinateur local et accédez à ce dossier.

  6. Pour cloner le dépôt git, utilisez la commande suivante.

    git clone <repository-URL>.git

  7. Une fois le dépôt cloné, utilisez la commande suivante pour accéder au répertoire cloné.

    cd <directory name>

  8. Dans le référentiel cloné, ouvrez ce projet dans un environnement de développement intégré (IDE) de votre choix.

DevOps ingénieur
TâcheDescriptionCompétences requises

Initialisez la configuration Terraform.

Pour initialiser votre répertoire de travail contenant les fichiers Terraform, exécutez la commande suivante.

terraform init

DevOps ingénieur

Prévisualisez les modifications.

Vous pouvez prévisualiser les modifications que Terraform apportera à l'infrastructure avant que celle-ci ne soit déployée. Pour valider que Terraform apportera les modifications nécessaires, exécutez la commande suivante.

terraform plan

DevOps ingénieur

Exécutez les actions proposées.

Pour vérifier que les résultats de la terraform plan commande sont conformes aux attentes, procédez comme suit :

  1. Exécutez la commande suivante.

    terraform apply

  2. Connectez-vous au et AWS Management Console vérifiez que les ressources sont présentes.

DevOps ingénieur

Nettoyez l'infrastructure.

Pour nettoyer l'infrastructure que vous avez créée, utilisez la commande suivante.

terraform destroy

Pour confirmer la commande de destruction, tapezyes.

DevOps ingénieur
TâcheDescriptionCompétences requises

Exécutez et testez la fonction Lambda.

Pour vérifier que le déploiement a bien eu lieu, procédez comme suit :

  1. Connectez-vous à la console AWS Management Console et ouvrez-la. Ouvrez la page Fonctions et sélectionnez le nom de la fonction commençant par ADcleanup-Lambda-*.

  2. Sur la page de présentation des fonctions, choisissez Test dans l'onglet Code de la section Source du code.

  3. Pour enregistrer l'événement de test, attribuez un nom à l'événement et choisissez Enregistrer. Ensuite, pour tester l'événement, sélectionnez à nouveau Tester.

Les résultats de l'exécution indiquent le résultat de la fonction.

DevOps ingénieur

Affichez les résultats de la fonction Lambda.

Dans ce modèle, une EventBridge règle exécute la fonction Lambda une fois par jour. Pour afficher les résultats de la fonction Lambda, procédez comme suit :

  1. Connectez-vous à la AWS Lambda console AWS Management Console et ouvrez-la. Ouvrez la page Fonctions et sélectionnez le nom de la fonction commençant par ADcleanup-Lambda-*.

  2. Cliquez sur l'onglet Surveiller, puis sur Afficher CloudWatch les journaux.

Dans la CloudWatch console, la page Log groups affiche les résultats de la fonction Lambda.

DevOps ingénieur
TâcheDescriptionCompétences requises

Nettoyez les infrastructures.

Pour nettoyer l'infrastructure que vous avez créée, utilisez la commande suivante.

terraform destroy

Pour confirmer la commande de destruction, tapezyes.

DevOps ingénieur

Vérifiez après le nettoyage.

Vérifiez que les ressources ont été correctement supprimées.

DevOps ingénieur

Résolution des problèmes

ProblèmeSolution

Si vous essayez de supprimer l'ordinateur AD, le message « Accès refusé » s'affiche. L'ordinateur AD ne peut pas être supprimé car, par défaut, l'action tente de supprimer deux adresses IP privées connectées dans le cadre des services AD.

Pour éviter cette erreur, utilisez l'opération Python suivante pour ignorer les deux premiers ordinateurs lorsque vous listez les différences entre la sortie d'un ordinateur AD et la sortie de votre machine exécutant Windows.

Difference = Difference[2:]

Lorsque Lambda exécute un PowerShell script sur un serveur Windows, il s'attend à ce que les modules Active Directory soient disponibles par défaut. Si les modules ne sont pas disponibles, une fonction Lambda crée une erreur indiquant « Get- n'AdComputer est pas installé sur l'instance ».

Pour éviter cette erreur, installez les modules requis en utilisant les données utilisateur des EC2 instances. Utilisez le EC2WindowsUserdatascript qui se trouve dans le GitHub dépôt de ce modèle.

Ressources connexes

AWS documentation

Autres ressources