Génération de rapports Identity and Access Management à partir d'Oracle Cloud Infrastructure Audit

Introduction

Les domaines d'identité Oracle Cloud Infrastructure (OCI) succèdent à Oracle Identity Cloud Service et intègrent toutes les fonctionnalités d'Oracle Identity Cloud Service dans un service Oracle Cloud Infrastructure de base. Oracle Identity Cloud Service était une offre SaaS autonome qui fournit des rapports sur l'activité des utilisateurs et similaires dans le service.

Contrairement à Oracle Identity Cloud Service, les domaines d'identité OCI existent dans le contexte OCI plus large. Un principe de conception OCI consiste à utiliser des fonctionnalités de service communes dans la mesure du possible. Par conséquent, certains des rapports mis à disposition dans Oracle Identity Cloud Service sont en phase d'abandon, car les données utilisées sont désormais disponibles via la fonctionnalité de service commun fournie par OCI Audit.

Ce tutoriel explique comment créer les rapports en phase d'abandon à partir des données OCI Audit et les rendre disponibles dans le tableau de bord OCI.

Objectifs

Prérequis

Tâche 1 : Explorer les événements d'audit OCI Identity and Access Management

Chaque service OCI crée des enregistrements d'audit sur une action utilisateur ou de service, et OCI IAM ne fait pas exception, en créant des enregistrements d'audit sur l'accès utilisateur, ainsi que tout changement ou événement survenant dans OCI IAM.

  1. Accédez au service Logging sous les fonctionnalités Observability & Management dans la console OCI, puis sélectionnez la section Rechercher.

  2. Cliquez sur Sélectionner les journaux à rechercher pour définir le contexte de la recherche de journal sur le compartiment contenant le domaine d'identité OCI IAM pour lequel générer le rapport.

    Ajout du compartiment à la recherche de journalisation

    Après avoir sélectionné le compartiment approprié, vous verrez probablement plusieurs entrées pour l'activité utilisateur ou de service, les entrées spécifiques dépendant de la façon dont votre location est utilisée. Vous pouvez également voir vos propres événements de connexion ou d'autres événements de connexion. Si vous ne voyez aucune entrée, assurez-vous que vous avez sélectionné la région appropriée en développant Autres options de recherche ou développez la fenêtre de temps en modifiant le paramètre Filtrer par heure.

  3. Cliquez sur Afficher le mode avancé pour afficher la possibilité de saisir des requêtes en texte libre, puis ajoutez l'un des éléments suivants à la fin de la requête par défaut (après "trier par descente de date/heure") pour générer le même contenu qui a été inclus dans le rapport Oracle Identity Cloud Service.

    Rapport Requête
    Rapport sur les connexion réussies | where data.additionalDetails.eventId = 'sso.session.create.success' | select data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorName as Login, data.additionalDetails.eventId as Result, data.additionalDetails.ssoRp as Provider, time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date
    Rapport sur les échecs de connexions | where data.additionalDetails.eventId='sso.authentication.failure' | select data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorName as User, data.additionalDetails.eventId as Result, data.message as Comments, time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date
    Rapport sur les accès à l'application | where data.additionalDetails.eventId = 'sso.session.create.success' or data.additionalDetails.eventId = 'sso.authentication.failure' or data.additionalDetails.eventId = 'sso.session.modify.success' | select data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorDisplayName as User, data.additionalDetails.actorName as Login, data.additionalDetails.eventId as "Success/Failure", data.additionalDetails.ssoRp as Application, time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date
    Rapport de journal d'audit | where data.additionalDetails.eventId = 'sso.app.access.success' or data.additionalDetails.eventId = 'sso.app.access.failure' or data.additionalDetails.eventId = 'sso.session.create.success' or data.additionalDetails.eventId = 'sso.authentication.failure' or data.additionalDetails.eventId = 'sso.session.delete.success' or data.additionalDetails.eventId = 'admin.user.create.success' or data.additionalDetails.eventId = 'admin.user.activated.success' or data.additionalDetails.eventId = 'admin.user.deactivated.success' or data.additionalDetails.eventId = 'admin.user.update.success' or data.additionalDetails.eventId = 'admin.user.delete.success' or data.additionalDetails.eventId = 'admin.user.password.reset.success' or data.additionalDetails.eventId = 'admin.me.password.reset.success' or data.additionalDetails.eventId = 'admin.me.password.change.success' or data.additionalDetails.eventId = 'admin.policy.create.success' or data.additionalDetails.eventId = 'admin.rule.create.success' or data.additionalDetails.eventId = 'admin.policy.update.success' or data.additionalDetails.eventId = 'admin.rule.update.success' or data.additionalDetails.eventId = 'admin.passwordpolicy.create.success' or data.additionalDetails.eventId = 'admin.passwordpolicy.update.success' or data.additionalDetails.eventId = 'admin.grant.create.success' or data.additionalDetails.eventId = 'admin.grant.delete.success' or data.additionalDetails.eventId = 'admin.group.create.success' or data.additionalDetails.eventId = 'admin.group.add.member.success' or data.additionalDetails.eventId = 'admin.group.remove.member.success' or data.additionalDetails.eventId = 'admin.group.delete.success' or data.additionalDetails.eventId = 'admin.app.create.success' or data.additionalDetails.eventId = 'admin.app.update.success' or data.additionalDetails.eventId = 'admin.app.delete.success' or data.additionalDetails.eventId = 'admin.app.activated.success' or data.additionalDetails.eventId = 'admin.app.deactivated.success' or data.additionalDetails.eventId = 'notification.delivery.success' or data.additionalDetails.eventId = 'notification.delivery.failure' or data.additionalDetails.eventId = 'sso.auth.factor.initiated' or data.additionalDetails.eventId = 'sso.bypasscode.create.success' | select time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date, data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorName as Actor, data.additionalDetails.eventId as "Event Id", data.message as "Event Description", data.additionalDetails.adminResourceName as Target
    Etat Affectations de rôle d'application | where data.additionalDetails.eventId = 'admin.approle.add.member.success' or data.additionalDetails.eventId = 'admin.approle.remove.member.success' | select data.additionalDetails.domainDisplayName as Domain, data.additionalDetails.actorDisplayName as Approver, data.additionalDetails.adminAppRoleAppName as "Application Name", data.additionalDetails.adminRefResourceName as Beneficiary, data.additionalDetails.adminRefResourceType as "User/Group", data.additionalDetails.adminResourceName as "Application Role Name", time_format(datetime, 'yyyy-MM-dd hh:mm:ss z') as Date, data.additionalDetails.eventId as "Added/Removed"

    Par exemple, pour le rapport Successful Logins, la requête ressemblerait à ce qui suit.

    Représentation de la requête d'accès à l'application dans la recherche avancée

  4. Cliquez sur Rechercher pour utiliser la requête mise à jour. S'il ne renvoie aucun résultat, vous devrez peut-être modifier le filtre d'heure.

    Exemples de résultats de la requête d'accès à l'application

  5. Les résultats renvoyés peuvent être exportés en cliquant sur Exporter les données de journal (JSON) dans la liste déroulante Actions au-dessus des résultats.

    Exporter des données de journal à partir de la recherche de journal

    Remarque : Oracle Identity Cloud Service signale la prise en charge du téléchargement en tant que fichier CSV alors que cet export ne prend en charge que l'export JSON. Toutefois, les instructions SELECT utilisées dans les requêtes ci-dessus mettent à plat le fichier JSON en un seul objet avec des attributs, ce qui doit vous permettre de convertir entre l'export JSON et CSV si nécessaire.

Tâche 2 : créer une recherche enregistrée pour votre rapport

Pour éviter de ressaisir la requête chaque fois que vous souhaitez accéder à ces rapports, vous pouvez tirer parti de la fonctionnalité de recherche enregistrée d'OCI Logging.

  1. Une fois la requête validée, cliquez sur Enregistrer la recherche pour la réutiliser et l'intégrer dans le tableau de bord.

  2. Entrez le nom de la recherche, par exemple 'Successful_Login_Report' ou similaire, ainsi que la description, puis cliquez sur Enregistrer.

  3. Dans l'interface des recherches enregistrées, vous pouvez cliquer de nouveau sur votre recherche pour obtenir le dernier ensemble de données.

Remarque : vous ne pouvez pas exporter directement les résultats à partir de l'interface de recherche enregistrée. Vous devez plutôt utiliser l'option Explorer avec la recherche de journal dans la liste déroulante Actions, puis exporter les résultats à partir de la vue de recherche.

Tâche 3 : ajout du rapport à un tableau de bord OCI

En plus d'accéder aux rapports à partir du service OCI Logging, ils peuvent également être disponibles via la fonctionnalité de tableau de bord d'OCI, afin de permettre la révision centralisée des événements OCI IAM.

  1. Accédez à la page de destination de la console OCI, cliquez sur Oracle Cloud dans la bannière supérieure, puis passez à la vue Tableau de bord.

  2. Créez un tableau de bord pour les rapports OCI IAM en cliquant sur Nouveau tableau de bord.

  3. Sélectionnez Créer à partir de zéro, puis ajoutez un nom et une description appropriés.

    Création d'un tableau de bord pour afficher les rapports IAM.

  4. Créez un groupe de tableaux de bord ou affectez-le à un groupe existant, le cas échéant.

  5. Cliquez sur Ajouter un widget, sélectionnez Table de données de journalisation, puis cliquez sur Configurer sur le nouveau widget.

  6. Indiquez un nom approprié, puis sélectionnez votre recherche enregistrée. Ajoutez une période par défaut appropriée.

    Création d'un widget pour le rapport d'accès à l'application.

  7. Modifiez la présentation et ajoutez d'autres recherches enregistrées, le cas échéant.

    Exemple de tableau de bord avec plusieurs rapports IAM

Automatiser l'extraction des données de rapport

Les approches ci-dessus permettent d'effectuer des rapports ad hoc sur les données IAM. Toutefois, pour les opérations en cours, il peut être nécessaire d'automatiser l'extraction de ces données. Pour ce faire, vous pouvez utiliser l'API OCI, l'interface de ligne de commande OCI ou l'un des kits SDK OCI.

L'API SearchLogs peut être appelée à l'aide d'une demande similaire à la suivante, en ajustant la période et en ajoutant la requête à partir de la recherche de journal initiale :

POST https://logging.<region>.oci.oraclecloud.com/20190909/search?limit=1000
Body:
{
  "timeStart": "2025-01-01T00:00:00.000Z",
  "timeEnd": "2025-01-02T00:00:00.000Z",
  "searchQuery": "<log search query from Task #1>",
  "isReturnFieldInfo": false
}

La commande d'interface de ligne de commande OCI équivalente est la suivante :

oci logging-search search-logs --search-query "<log search query from Task #1>" --time-start "2025-01-01T00:00:00.000Z" --time-end "2025-01-02T00:00:00.000Z" --is-return-field-info false

Remarque : évitez les guillemets doubles (") dans votre requête de recherche avec des barres obliques inverses (\). Autrement dit, as "Success/Failure" devient as \"Success/Failure\".

Si vous préférez que les événements d'audit soient propagés vers un autre système, OCI Connector Hub ou OCI Events peuvent être utilisés pour faciliter la transmission des journaux, par exemple dans Implémenter la sécurité multicloud à l'aide d'OCI Audit pour capturer les événements à partir d'OCI Identity and Access Management couvrant la transmission d'audit à Azure Sentinel.

Accusés de réception

Ressources de formation supplémentaires

Explorez d'autres ateliers sur le site docs.oracle.com/learn ou accédez à d'autres contenus d'apprentissage gratuits sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, consultez Oracle Help Center.