Report Dashboard - Accessi Amministratori

Questa è una versione SQL del Report della Dashboard per gli accessi degli amministratori.

Questo report fornisce una panoramica dell’attività di accesso degli amministratori all’interno di un intervallo di date specificato e aiuta a monitorare quando e da quali indirizzi IP gli amministratori hanno effettuato l’accesso a Discourse.

--[params]
--date :start_date
--date :end_date

SELECT
  u.id user_id,
  u.username username,
  t1.client_ip as location,
  t1.created_at as login_at
FROM (
  SELECT DISTINCT ON (t.client_ip, t.user_id) t.client_ip, t.user_id, t.created_at
    FROM user_auth_token_logs t
    INNER JOIN users u ON u.id = t.user_id
    WHERE u.admin = TRUE
       AND t.created_at >= :start_date
       AND t.created_at <= :end_date
  ORDER BY t.client_ip, t.user_id, t.created_at DESC
  ) t1
  JOIN users u ON u.id = t1.user_id
  ORDER BY login_at DESC

Spiegazione della query SQL

La query SQL è progettata per recuperare un elenco di eventi di accesso unici per gli amministratori. Filtra e visualizza i dati in base ai seguenti criteri:

  • Parametri: La query accetta due parametri, :start_date e :end_date, per specificare il periodo per cui sono necessari i dati di accesso. Entrambi i parametri di data accettano il formato data AAAA-MM-GG.
  • Accessi distinti: Utilizza una sottoquery (t1) con SELECT DISTINCT ON per garantire che ogni combinazione di client_ip e user_id sia unica, fornendoci efficacemente l’evento di accesso più recente per ciascun amministratore da ciascun indirizzo IP all’interno dell’intervallo di date.
  • Filtro amministratore: La query cerca specificamente gli utenti con il flag admin impostato su TRUE, concentrandosi esclusivamente sugli account degli amministratori.
  • Join con utenti: La sottoquery viene unita nuovamente alla tabella users per recuperare i nomi utente corrispondenti per gli ID utente.
  • Ordinamento: I risultati sono ordinati in base al timestamp login_at in ordine decrescente, mostrando prima gli eventi di accesso degli amministratori più recenti.

Le colonne di output sono le seguenti:

  • user_id: L’ID univoco dell’amministratore che ha effettuato l’accesso.
  • username: Il nome utente dell’amministratore che ha effettuato l’accesso.
  • location: L’indirizzo IP da cui l’amministratore ha effettuato l’accesso.
  • login_at: Il timestamp di quando l’amministratore ha effettuato l’accesso.

Questo report è prezioso per scopi di sicurezza e audit, garantendo che tutti gli accessi degli amministratori siano monitorati e registrati.

Esempio di risultati

user username location login_at
1 admin_user_1 123.45.67.89 2023-12-13T23:59:55.733Z
2 admin_user_2 123.45.67.89 2023-12-14T23:59:45.685Z
3 admin_user_3 123.45.67.89 2023-12-15T23:59:43.033Z
4 Mi Piace