Comment afficher et suivre l'historique d'activité du compte pour des utilisateurs IAM, des rôles IAM et des clés d'accès AWS spécifiques ?

Date de la dernière mise à jour : 11/09/2020

Je souhaite afficher et surveiller l'activité du compte pour les identités AWS Identity and Access Management (IAM).

Résolution

Utilisez l'historique des événements AWS CloudTrail, les requêtes Amazon CloudWatch ou les requêtes Amazon Athena pour accéder à l'historique des activités du compte pour les utilisateurs et les rôles IAM.

Historique des événements CloudTrail

Vous pouvez utiliser CloudTrail pour effectuer une recherche dans l'historique des événements des 90 derniers jours.

  1. Ouvrez la console CloudTrail et choisissez Historique des événements.
  2. Dans Filtre, sélectionnez le menu déroulant, puis choisissez Nom d'utilisateur.
    Remarque : vous pouvez également filtrer par clé d'accès AWS.
  3. Dans la zone de texte Entrez le nom de l’utilisateur ou du rôle, saisissez le nom convivial IAM ou le nom de séance du rôle endossé.
  4. Dans Plage de temps, entrez la plage de temps souhaitée, puis choisissez Appliquer.
  5. Agrandissez Heure de l'événementet choisissez Afficher l'événement.

L'élément userIdentity contient des détails sur le type d'identité IAM qui a effectué la demande et les informations d'identification qui ont été utilisées.

Voici un exemple d'élément userIdentity avec des informations d'identification utilisateur IAM utilisées pour effectuer un appel d'API :

Remarque : remplacez Alice par le nom d'utilisateur que vous recherchez.

"userIdentity": {
  "type": "IAMUser",
  "principalId": "AIDAJ45Q7YFFAREXAMPLE",
  "arn": "arn:aws:iam::123456789012:user/Alice",
  "accountId": "123456789012",
  "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
  "userName": "Alice"
}

Voici un exemple d'élément userIdentity avec des informations d'identification de sécurité temporaires :

"userIdentity": {
    "type": "AssumedRole",
    "principalId": "AROAIDPPEZS35WEXAMPLE:AssumedRoleSessionName",
    "arn": "arn:aws:sts::123456789012:assumed-role/RoleToBeAssumed/AssumedRoleSessionName", 
    "accountId": "123456789012",
    "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
    "sessionContext": {
      "attributes": {
        "mfaAuthenticated": "false",
        "creationDate": "20131102T010628Z"
      },
      "sessionIssuer": {
        "type": "Role",
        "principalId": "AROAIDPPEZS35WEXAMPLE",
        "arn": "arn:aws:iam::123456789012:role/RoleToBeAssumed",
        "accountId": "123456789012",
        "userName": "RoleToBeAssumed"
      }
   }
}

Remarque : l'historique des événements CloudTrail utilise le nom de séance du rôle endossé comme nom d'utilisateur pour filtrer les événements.

L'appel d'API utilise des informations d'identification de sécurité temporaires obtenues en endossant un rôle IAM. L'élément contient des détails supplémentaires sur le rôle endossé pour obtenir des informations d'identification.

Remarque : si vous ne voyez pas l'activité des utilisateurs, vérifiez que le service AWS est pris en charge et que l’événement API est enregistré par CloudTrail. Pour plus d'informations, consultez la rubriqueSujets sur le service AWS pour CloudTrail.

Requête CloudWatch

Vous pouvez utiliser les requêtes CloudWatch pour rechercher l'historique des API au-delà des 90 derniers jours.

Remarque : une piste doit être créée et configurée pour vous connecter à Amazon CloudWatch Logs. Pour plus d'informations, consultez la rubrique Création d’une piste.

  1. Ouvrez la console CloudWatch, puis choisissez Journaux.
  2. Dans Groupes de journaux, choisissez votre groupe de journaux.
  3. Choisissez Rechercher le groupe de journaux.
  4. Dans Filtrer les événements, entrez une requête similaire à ce qui suit pour rechercher les appels d'API d'un utilisateur dans des journaux, puis choisissez l'icône d'actualisation.
{ $.userIdentity.userName = “Alice” }

Vous pouvez également interroger des actions d'API spécifiques. Cet exemple de requête recherche l'action d'API DescribeInstances.

{ ($.eventName = “DescribeInstances") && ($.requestParameters.userName = “Alice"  ) }

Requête Athena

Vous pouvez utiliser Athena pour interroger les journaux CloudTrail au cours des 90 derniers jours.

1.    Ouvrez la console Athena, puis choisissez Query Editor (Éditeur de requête).

2.    Entrez l'exemple de requête suivant pour renvoyer tous les événements CloudTrail exécutés par l'utilisateur IAM Alice, puis choisissez Exécuter la requête.

Remarque : remplacez athena-table par le nom de votre table Athena.

L'exemple de requête suivant renvoie tous les événements CloudTrail exécutés par l'utilisateur IAM Alice :

SELECT *
FROM athena-table
WHERE useridentity.type = 'IAMUser'
AND useridentity.username LIKE 'Alice';

3.    Entrez l'exemple de requête suivant pour filtrer toutes les activités d'API effectuées par un rôle IAM, puis choisissez Run query (Exécuter la requête).

Remarque : remplacez role-name par votre nom de rôle IAM.

SELECT *
FROM athena-table
WHERE useridentity.sessionContext.sessionissuer.arn LIKE '%role-name%’
AND useridentity.sessionContext.sessionissuer.type = ‘Role’;

4.    Entrez l'exemple de requête suivant pour correspondre à l'ARN du rôle, puis choisissez Run query (Exécuter la requête).

SELECT *
FROM athena-table
WHERE useridentity.sessionContext.sessionissuer.arn = 'arn:aws:iam::account-id123456789:role/role-name'
AND useridentity.sessionContext.sessionissuer.type = ‘Role’;

5.    Entrez l'exemple de requête suivant pour filtrer toutes les activités à l'aide de l'ID de clé d'accès IAM, puis choisissez Exécuter la requête.

SELECT eventTime, eventName, userIdentity.principalId,eventSource
FROM athena-table
WHERE useridentity.accesskeyid like 'AKIAIOSFODNN7EXAMPLE'