Surveiller l'activité de l'utilisateur IAM root - 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.

Surveiller l'activité de l'utilisateur IAM root

Créée par Mostefa Brougui () AWS

Dépôt de code : aws-iam-root-user-activity-monitor

Environnement : PoC ou pilote

Technologies : sécurité, identité, conformité ; gestion et gouvernance

Charge de travail : toutes les autres charges de travail

AWSservices : Amazon EventBridge ; AWS Lambda ; Amazon SNS ; AWS Identity and Access Management

Récapitulatif

Chaque compte Amazon Web Services (AWS) possède un utilisateur root. Dans le cadre des meilleures pratiques de sécurité pour AWS Identity and Access Management (IAM), nous vous recommandons d'utiliser l'utilisateur root pour effectuer les tâches que seul l'utilisateur root peut effectuer. Pour obtenir la liste complète, consultez la section Tâches nécessitant les informations d'identification de l'utilisateur root dans le Guide de référence sur la gestion des AWS comptes. Étant donné que l'utilisateur root dispose d'un accès complet à toutes vos AWS ressources et informations de facturation, nous vous recommandons de ne pas utiliser ce compte et de le surveiller pour détecter toute activité susceptible d'indiquer que les informations d'identification de l'utilisateur root ont été compromises.

À l'aide de ce modèle, vous configurez une architecture basée sur les événements qui surveille l'IAMutilisateur root. Ce modèle met en place une hub-and-spoke solution qui surveille plusieurs AWS comptes, les comptes parlés, et centralise la gestion et les rapports dans un seul compte, le compte hub.

Lorsque les informations d'identification de l'utilisateur IAM root sont utilisées, Amazon CloudWatch AWS CloudTrail enregistre l'activité dans le journal et dans le journal, respectivement. Dans le compte Spoke, une EventBridge règle Amazon envoie l'événement au bus d'événements central du compte hub. Dans le compte du hub, une EventBridge règle envoie l'événement à une fonction AWS Lambda. La fonction utilise une rubrique Amazon Simple Notification Service (AmazonSNS) qui vous informe de l'activité de l'utilisateur root.

Dans ce modèle, vous utilisez un AWS CloudFormation modèle pour déployer les services de surveillance et de gestion des événements dans les comptes Spoke. Vous utilisez un modèle HashiCorp Terraform pour déployer les services de gestion des événements et de notification dans le compte du hub.

Conditions préalables et limitations

Prérequis

  1. Autorisations pour déployer AWS des ressources dans votre AWS environnement.

  2. Autorisations pour déployer des ensembles de CloudFormation piles. Pour plus d'informations, consultez la section Conditions requises pour les opérations relatives aux ensembles de piles (CloudFormation documentation).

  3. Terraform installé et prêt à l'emploi. Pour plus d'informations, consultez Get Started — AWS (documentation Terraform).

  4. Une trace existante dans chaque compte Spoke. Pour plus d'informations, consultez Getting started with AWS CloudTrail (CloudTrail documentation).

  5. Le journal est configuré pour envoyer des événements à CloudWatch Logs. Pour plus d'informations, consultez la section Envoi d'événements aux CloudWatch journaux (CloudTrail documentation).

  6. Vos comptes hub and spoke doivent être gérés par AWS des Organizations.

Architecture

Le schéma suivant illustre les éléments de base de la mise en œuvre.

Un événement dans un compte Spoke créant une notification par e-mail dans un compte hub
  1. Lorsque les informations d'identification de l'utilisateur IAM root sont utilisées, CloudWatch CloudTrail enregistrez l'activité dans le journal et dans le journal, respectivement.

  2. Dans le compte Spoke, une EventBridge règle envoie l'événement au bus d'événements central du compte hub.

  3. Dans le compte du hub, une EventBridge règle envoie l'événement à une fonction Lambda.

  4. La fonction Lambda utilise une SNS rubrique Amazon qui vous informe de l'activité de l'utilisateur root.

Outils

AWSservices

  • AWS CloudFormationvous aide à configurer les AWS ressources, à les approvisionner rapidement et de manière cohérente, et à les gérer tout au long de leur cycle de vie, quels que soient les AWS comptes et les régions.

  • AWS CloudTrailvous aide à auditer la gouvernance, la conformité et le risque opérationnel de votre AWS compte.

  • Amazon CloudWatch Logs vous aide à centraliser les journaux de tous vos systèmes, applications et AWS services afin que vous puissiez les surveiller et les archiver en toute sécurité.

  • 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, les fonctions AWS Lambda, les points de terminaison HTTP d'invocation utilisant des API destinations ou les bus d'événements dans d'autres comptes. AWS

  • AWSIdentity 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.

  • AWSLambda est un service de calcul qui vous permet d'exécuter du code sans avoir à approvisionner ou à 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.

  • Amazon Simple Notification Service (AmazonSNS) vous aide à coordonner et à gérer l'échange de messages entre les éditeurs et les clients, y compris les serveurs Web et les adresses e-mail.

Autres outils et services

  • Terraform est une CLI application permettant de provisionner et de gérer l'infrastructure et les ressources du cloud à l'aide de code, sous forme de fichiers de configuration.

Référentiel de code

Le code source et les modèles de ce modèle sont disponibles dans un GitHub référentiel. Ce modèle fournit deux modèles :

  • Un modèle Terraform contenant les ressources que vous déployez dans le compte du hub

  • Un CloudFormation modèle que vous déployez en tant qu'instance stack set dans les comptes Spoke

La structure globale du référentiel est la suivante.

.  |__README.md  |__spoke-stackset.yaml  |__hub.tf  |__root-activity-monitor-module      |__main.tf  # contains Terraform code to deploy resources in the Hub account      |__iam      # contains IAM policies JSON files          |__ lambda-assume-policy.json          # contains trust policy of the IAM role used by the Lambda function          |__ lambda-policy.json                 # contains the IAM policy attached to the IAM role used by the Lambda function      |__outputs  # contains Lambda function zip code

La section Epics fournit des step-by-step instructions pour déployer les modèles.

Épopées

TâcheDescriptionCompétences requises

Clonez le référentiel d'exemples de code.

  1. Ouvrez le référentiel AWSIAMRoot User Activity Monitor.

  2. Dans l'onglet Code, au-dessus de la liste des fichiers, choisissez Code, puis copiez le HTTPSURL.

  3. Dans une interface de ligne de commande, remplacez votre répertoire de travail par l'emplacement où vous souhaitez stocker les fichiers d'exemple.

  4. Entrez la commande suivante :

    git clone <repoURL>
Général AWS

Mettez à jour le modèle Terraform.

  1. Récupérez l'identifiant de votre organisation. Pour obtenir des instructions, voir Afficher les détails d'une organisation à partir du compte de gestion (documentation AWS Organizations).

  2. Dans le référentiel cloné, ouvrezhub.tf.

  3. Mettez à jour les éléments suivants avec les valeurs appropriées pour votre environnement :

    • OrganizationId— Ajoutez l'identifiant de votre organisation.

    • SNSTopicName— Ajoutez un nom au SNS sujet Amazon.

    • SNSSubscriptions— Ajoutez l'e-mail auquel SNS les notifications Amazon doivent être envoyées.

    • Region— Ajoutez le code de AWS région dans lequel vous déployez les ressources. Par exemple, eu-west-1.

    • Tags— Ajoutez vos tags. Pour plus d'informations, consultez la section AWSRessources de balisage (référence AWS générale).

  4. Enregistrez et fermez le fichier hub.tf.

Général AWS

Déployez les ressources sur le compte du AWS hub.

  1. Dans l'interface de ligne de commande Terraform, accédez au dossier racine du référentiel cloné, puis entrez la commande suivante.

    terraform init && terraform plan
  2. Passez en revue le résultat et confirmez que vous souhaitez créer les ressources décrites.

  3. Entrez la commande suivante.

    terraform apply
  4. Lorsque vous y êtes invité, confirmez le déploiement en entrantyes.

Général AWS
TâcheDescriptionCompétences requises

Déployez le CloudFormation modèle.

  1. Connectez-vous à la console AWS de gestion, puis CloudFormation ouvrez-la.

  2. Dans le volet de navigation, choisissez StackSets.

  3. En haut de la StackSetspage, choisissez Create StackSet.

  4. Sous Autorisations, choisissez Autorisations gérées par le service. CloudFormation configure automatiquement les autorisations requises pour effectuer le déploiement sur les comptes cibles gérés par les AWS Organizations.

  5. Sous Prérequis - Préparer le modèle, sélectionnez Le modèle est prêt.

  6. Sous Spécifier le modèle, choisissez Télécharger un fichier modèle.

  7. Choisissez Choisir un fichier, puis dans le référentiel cloné, sélectionnezspoke-stackset.yaml.

  8. Choisissez Suivant.

  9. Sur la page Spécifier StackSet les détails, entrez le nom de l'ensemble de piles.

  10. Sous Paramètres, entrez l'ID du compte du hub, puis choisissez Next.

  11. Sur la page Configurer StackSet les options, sous Balises, ajoutez vos balises.

  12. Sous Configuration de l'exécution, choisissez Inactif, puis Next.

  13. Sur la page Définir les options de déploiement, spécifiez les unités organisationnelles et les régions dans lesquelles vous souhaitez déployer le stack set, puis choisissez Next.

  14. Sur la page Révision, sélectionnez Je reconnais que cela AWS CloudFormation pourrait créer IAM des ressources, puis choisissez Soumettre. CloudFormation commence à déployer votre stack set.

Pour plus d'informations et d'instructions, voir Création d'un ensemble de piles (CloudFormation documentation).

Général AWS
TâcheDescriptionCompétences requises

Utilisez les informations d'identification de l'utilisateur root.

  1. Connectez-vous à un compte Spoke ou au compte Hub à l'aide des informations d'identification de l'utilisateur root.

  2. Vérifiez que le compte e-mail que vous avez spécifié reçoit la SNS notification Amazon.

Général AWS

Ressources connexes

Informations supplémentaires

Amazon GuardDuty est un service de surveillance continue de la sécurité qui analyse et traite les journaux afin d'identifier les activités inattendues et potentiellement non autorisées dans votre AWS environnement. Comme alternative à cette solution, si vous l'avez activée GuardDuty, elle peut vous avertir lorsque les informations d'identification de l'utilisateur root ont été utilisées. Le GuardDuty résultat estPolicy:IAMUser/RootCredentialUsage, et la gravité par défaut est faible. Pour plus d'informations, consultez Gérer les GuardDuty résultats d'Amazon.