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_datee:end_date, per specificare il periodo per cui sono necessari i dati di accesso. Entrambi i parametri di data accettano il formato dataAAAA-MM-GG. - Accessi distinti: Utilizza una sottoquery (
t1) conSELECT DISTINCT ONper garantire che ogni combinazione diclient_ipeuser_idsia 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
adminimpostato suTRUE, concentrandosi esclusivamente sugli account degli amministratori. - Join con utenti: La sottoquery viene unita nuovamente alla tabella
usersper recuperare i nomi utente corrispondenti per gli ID utente. - Ordinamento: I risultati sono ordinati in base al timestamp
login_atin 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 |
| … | … | … | … |