Generare report di Identity and Access Management da Oracle Cloud Infrastructure Audit

Introduzione

I domini di Identity di Oracle Cloud Infrastructure (OCI) sono il successore di Oracle Identity Cloud Service e portano tutte le funzionalità di Oracle Identity Cloud Service in un servizio Oracle Cloud Infrastructure di base. Oracle Identity Cloud Service era un'offerta autonoma simile a SaaS e fornisce report sull'attività degli utenti e simili all'interno del servizio.

A differenza di Oracle Identity Cloud Service, i domini di identità OCI esistono nel contesto OCI più ampio. Un principio di progettazione OCI consiste nell'utilizzare funzionalità di servizio comuni ove possibile e, di conseguenza, alcuni dei report resi disponibili all'interno di Oracle Identity Cloud Service non sono più validi, poiché i dati utilizzati sono ora disponibili tramite la funzionalità di servizio comune fornita da OCI Audit.

Questa esercitazione descrive come creare i report non più validi dai dati di audit OCI e renderli disponibili all'interno di OCI Dashboard.

Obiettivi

Prerequisiti

Task 1: Esplora gli eventi di audit di OCI Identity and Access Management

Ogni servizio OCI crea record di audit sull'azione dell'utente o del servizio e OCI IAM non fa eccezione, creando record di audit sull'accesso dell'utente e qualsiasi modifica o evento che si verifica all'interno di OCI IAM.

  1. Accedere al servizio Log nelle funzionalità Osservabilità e gestione all'interno di OCI Console, quindi selezionare la sezione Cerca.

  2. Fare clic su Seleziona log da cercare per impostare il contesto per la ricerca di log nel compartimento contenente il dominio di Identity IAM OCI per il quale si desidera generare il report.

    Aggiunta del compartimento alla ricerca di log

    Dopo aver selezionato il compartimento pertinente, è probabile che vengano visualizzate diverse voci per l'attività dell'utente o del servizio, con le voci specifiche che dipendono dal modo in cui viene utilizzata la tenancy. Potresti anche vedere i tuoi eventi di login o altri eventi. Se non vengono visualizzate voci, assicurarsi di aver selezionato l'area corretta espandendo Altre opzioni di ricerca oppure espandere la finestra temporale modificando l'impostazione Filtra per ora.

  3. Fare clic su Mostra modalità avanzata per visualizzare la possibilità di immettere query di testo libero, quindi aggiungere uno dei seguenti elementi alla fine della query predefinita (dopo 'Ordina per data e ora e descrizione') per generare lo stesso contenuto incluso nel report di Oracle Identity Cloud Service.

    Report Query
    Report accessi riusciti | 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
    Report accessi non riusciti | 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
    Report accessi applicazioni | 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
    Report log di 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
    Report assegnazioni ruoli applicazione | 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"

    Ad esempio, per il report Successful Logins, la query avrà un aspetto simile a quello riportato di seguito.

    Rappresentazione della query di accesso all'applicazione nella ricerca avanzata

  4. Fare clic su Cerca per utilizzare la query aggiornata. Se non restituisce alcun risultato, potrebbe essere necessario modificare il filtro tempo.

    Risultati di esempio dalla query di accesso all'applicazione

  5. I risultati restituiti possono essere esportati facendo clic su Esporta dati di log (JSON) nell'elenco a discesa Azioni sopra i risultati.

    Esportazione dei dati di log dalla ricerca di log

    Nota: i report di Oracle Identity Cloud Service supportati per il download come file CSV mentre questa esportazione supporta solo l'esportazione JSON, tuttavia le istruzioni di selezione utilizzate nelle query sopra riportate appiattiscono JSON in un singolo oggetto con attributi, che dovrebbe consentire di eseguire la conversione tra l'esportazione JSON e CSV, se necessario.

Task 2: Creare una ricerca salvata per il report

Per evitare di reinserire la query ogni volta che si desidera accedere a questi report, è possibile utilizzare la funzionalità Ricerca salvata di OCI Logging.

  1. Dopo aver convalidato la query, fare clic su Salva ricerca per consentire il riutilizzo e la incorporazione della query nel dashboard.

  2. Immettere un nome per la ricerca, ad esempio 'Successful_Login_Report' o simile, nonché una descrizione, quindi fare clic su Salva.

  3. Dall'interfaccia Ricerche salvate, è possibile fare clic di nuovo nella ricerca per ottenere il set di dati più recente.

Nota: non è possibile esportare direttamente i risultati dall'interfaccia della ricerca salvata, ma è necessario utilizzare Esplora con ricerca log dall'elenco a discesa Azioni, quindi esportare i risultati dalla vista Cerca.

Task 3: aggiungere il report a un dashboard OCI

Oltre ad accedere ai report dall'interno del servizio OCI Logging, possono essere resi disponibili anche tramite la funzionalità dashboard di OCI, per consentire la revisione centralizzata degli eventi IAM OCI.

  1. Andare alla pagina di arrivo di OCI Console, fare clic su Oracle Cloud nel banner superiore, quindi passare alla vista Dashboard.

  2. Creare un nuovo dashboard per i report IAM OCI facendo clic su Nuovo dashboard.

  3. Selezionare Genera da zero e aggiungere un nome e una descrizione appropriati.

    Creazione di un dashboard per la visualizzazione dei report IAM.

  4. Creare un nuovo gruppo di dashboard o assegnare questo dashboard a un gruppo esistente, se necessario.

  5. Fare clic su Aggiungi widget, selezionare Tabella dati di log, quindi fare clic su Configura nel nuovo widget.

  6. Fornire un nome appropriato, quindi selezionare la ricerca salvata. Aggiungere un periodo di tempo predefinito appropriato.

    Creazione di un widget per il report di accesso all'applicazione.

  7. Modificare il layout e aggiungere altre ricerche salvate in base alle esigenze.

    Dashboard di esempio con più report IAM

Automazione dell'estrazione dei dati del report

Gli approcci descritti sopra offrono la possibilità di eseguire report ad hoc sui dati IAM. Tuttavia, per le operazioni in corso, potrebbe essere necessario automatizzare l'estrazione di questi dati. A tale scopo, è possibile utilizzare l'API OCI, l'interfaccia CLI OCI o uno degli SDK OCI.

È possibile richiamare l'API SearchLogs utilizzando una richiesta simile alla seguente, modificando l'intervallo di tempo e aggiungendo la query dalla ricerca di log iniziale:

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
}

Il comando CLI OCI equivalente è il seguente:

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

Nota: i caratteri virgolette doppie di escape (") nella query di ricerca con barre rovesciate (\). Ad esempio, as "Success/Failure" diventa as \"Success/Failure\".

Se si preferisce eseguire il push degli eventi di audit in un sistema alternativo, è possibile utilizzare l'hub connettore OCI o gli eventi OCI per facilitare l'inoltro dei log, ad esempio in Implementare la sicurezza multicloud utilizzando OCI Audit per acquisire eventi da OCI Identity and Access Management che coprono l'inoltro dell'audit in Azure Sentinel.

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.

Per la documentazione del prodotto, visitare Oracle Help Center.