Comment puis-je surveiller l'activité du compte d'utilisateurs et de rôles IAM ainsi que de clés d'accès AWS spécifiques ?

Date de la dernière mise à jour : 27/05/2022

Je souhaite afficher et surveiller l'activité du compte pour des identités AWS Identity et Access Management (IAM) spécifiques. Comment procéder ?

Brève description

Pour afficher et surveiller l'activité du compte d'identités IAM spécifiques, vous pouvez utiliser l'un des services et fonctions AWS suivants :

Résolution

Pour utiliser l'historique des événements CloudTrail

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

1.    Ouvrez la console CloudTrail.

2.    Choisissez Event history (Historique des événements).

3.    Dans Filtre, sélectionnez le menu déroulant. Choisissez ensuite Nom d'utilisateur.
Remarque : vous pouvez également filtrer par clé d'accès AWS.

4.    Dans la zone de texte Saisir le nom de l'utilisateur ou du rôle, saisissez le « nom convivial IAM » ou le nom de session du rôle endossé.

Remarque : le nom de session de rôle pour une session spécifique est la valeur fournie en tant que nom de session lorsque le rôle est assumé. La valeur du champ « Nom d'utilisateur » ne sera pas le nom du rôle pour les appels effectués à l'aide du rôle IAM. 

5.    Dans la zone Période, saisissez la plage de temps souhaitée. Choisissez ensuite Appliquer.

6.    Dans la zone Heure de l'événement, développez l'événement. Ensuite, choisissez Afficher les détails.

L'élément userIdentity contient des détails sur le type d'identité IAM qui a effectué la demande, ainsi que les informations d'identification fournies.

Exemple d'élément userIdentity qui inclut les informations d'identification utilisateur IAM utilisées pour effectuer un appel d'API

Remarque : remplacezAlice par le nom d'utilisateur que vous recherchez, entrez le « nom convivial » de l'utilisateur IAM ou le « nom de session » du rôle assumé. Le nom de session de rôle pour une session spécifique est la valeur fournie en tant que nom de session lorsque le rôle est assumé. La valeur du champ « Nom d'utilisateur » ne sera pas le nom du rôle pour les appels effectués à l'aide du rôle IAM. 

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

Exemple d'élément userIdentity qui inclut des informations d'identification 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, alors vérifiez que le service AWS est pris en charge et que l'événement d'API est enregistré par CloudTrail. Pour plus d'informations, consultez Rubriques de services AWS pour CloudTrail.

Pour utiliser CloudWatch Logs Insights

Remarque : vous pouvez utiliser CloudWatch Logs Insights pour effectuer une recherche dans l'historique des API au-delà des 90 derniers jours. Vous devez disposer d'un journal d'activité créé et configuré pour vous connecter à Amazon CloudWatch Logs. Pour plus d'informations, consultez Création d'un journal d'activité.

1.    Ouvrez la console CloudWatch.

2.    Choisissez Journaux.

3.    Dans Groupes de journaux, choisissez votre groupe de journaux.

4.    Choisissez Rechercher dans le groupe de journaux.

5.    Dans Filtrer les événements, saisissez une requête pour rechercher les appels d'API d'un utilisateur, ou des actions d'API spécifiques. Choisissez ensuite l'icône d'actualisation.

Exemple de requête pour rechercher des appels d'API d'un utilisateur dans les journaux

Remarque : remplacezAlice par le nom d'utilisateur que vous recherchez, entrez le « nom convivial » de l'utilisateur IAM ou le « nom de session » du rôle assumé. Le nom de session du rôle pour une session spécifique est la valeur fournie en tant que nom de session lorsque le rôle est assumé. La valeur du champ « nom d'utilisateur » ne sera pas le nom du rôle pour les appels effectués à l'aide du rôle IAM.

{ $.userIdentity.userName = “Alice” }

Exemple de requête pour rechercher des actions d'API spécifiques dans les journaux

Remarque : l'exemple de requête suivant recherche l'action d'API DescribeInstances.

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

Pour plus d'informations, consultez Syntaxe de requête CloudWatch Logs Insights.

Pour utiliser les requêtes Athena

Remarque : vous pouvez utiliser Athena pour interroger les journaux CloudTrail au cours des 90 derniers jours.

1.    Ouvrez la console Athena.

2.    Choisissez Query Editor (Éditeur de requête).

3.    Saisissez l'un des exemples de requêtes suivants en fonction de votre cas d'utilisation. Choisissez Exécuter la requête.

Exemple de requête pour renvoyer tous les événements CloudTrail effectués par un utilisateur IAM spécifique

Important : remplacez athena-table par le nom de votre table Athena. Remplacez Alice par le nom de l'utilisateur IAM pour lequel vous souhaitez afficher l'activité du compte.

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

Exemple de requête pour filtrer toute l'activité d'API effectuée par un rôle IAM

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

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

Exemple de requête pour mettre en correspondance l'ARN du rôle

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

Exemple de requête pour filtrer toute l'activité à l'aide de l'identifiant de la clé d'accès IAM

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