63 lines
3.4 KiB
HTML
63 lines
3.4 KiB
HTML
{{define "audit.html"}}
|
|
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>{{.Title}} · TAPM</title>
|
|
<link rel="icon" type="image/svg+xml" href="/static/ta-mark.svg">
|
|
<link rel="stylesheet" href="/static/app.css">
|
|
</head>
|
|
<body>
|
|
{{template "topbar" .}}
|
|
|
|
<main class="page">
|
|
<section class="view-heading">
|
|
<div>
|
|
<p class="eyebrow">Audit trail</p>
|
|
<h1>Security events.</h1>
|
|
<p>Review retained broker activity and narrow the results to a deployment, host, package, or technician.</p>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="panel">
|
|
<form action="/portal/audit" method="get" class="audit-filters">
|
|
<label>Time range
|
|
<select name="audit_range">
|
|
<option value="24h" {{if eq .AuditFilters.TimeRange "24h"}}selected{{end}}>Past 24 hours</option>
|
|
<option value="7d" {{if eq .AuditFilters.TimeRange "7d"}}selected{{end}}>Past 7 days</option>
|
|
<option value="30d" {{if eq .AuditFilters.TimeRange "30d"}}selected{{end}}>Past 30 days</option>
|
|
<option value="90d" {{if eq .AuditFilters.TimeRange "90d"}}selected{{end}}>Past 90 days</option>
|
|
<option value="all" {{if eq .AuditFilters.TimeRange "all"}}selected{{end}}>All retained events</option>
|
|
</select>
|
|
</label>
|
|
<label>Event type
|
|
<select name="audit_event">
|
|
<option value="">All event types</option>
|
|
{{range .AuditEventTypes}}
|
|
<option value="{{.}}" {{if eq $.AuditFilters.EventType .}}selected{{end}}>{{.}}</option>
|
|
{{end}}
|
|
</select>
|
|
</label>
|
|
<label>Customer / deployment <input name="audit_customer" value="{{.AuditFilters.CustomerLabel}}" placeholder="Acme cluster refresh"></label>
|
|
<label>User <input name="audit_user" value="{{.AuditFilters.User}}" placeholder="taiadmin"></label>
|
|
<label>Hostname <input name="audit_hostname" value="{{.AuditFilters.Hostname}}" placeholder="pve01"></label>
|
|
<label>Package ID <input name="audit_package" value="{{.AuditFilters.PackageSlug}}" placeholder="sentinelone-linux"></label>
|
|
<label>IP address <input name="audit_ip" value="{{.AuditFilters.SourceIP}}" placeholder="10.10.1.25"></label>
|
|
<label>Details contain <input name="audit_details" value="{{.AuditFilters.Details}}" placeholder="customer or action"></label>
|
|
<div class="audit-filter-actions">
|
|
<button class="button secondary" type="submit">Apply filters</button>
|
|
<button class="button secondary" type="submit" formaction="/portal/audit/export">Download matching Excel</button>
|
|
<a class="text-button" href="/portal/audit/export?audit_range=all">Download complete Excel</a>
|
|
<a class="text-button" href="/portal/audit?audit_range=30d&audit_event=code_exchange_failed">Failed code attempts</a>
|
|
<a class="text-button" href="/portal/audit?audit_range=30d">Clear filters</a>
|
|
</div>
|
|
<p class="form-help audit-filter-note">Failed code attempts show a reason, hostname, source IP, code length, and only the five-character code hint. Full submitted codes are never retained. Up to the newest 250 matching events are shown; Excel exports include every matching retained event.</p>
|
|
</form>
|
|
{{template "audit-rows" .}}
|
|
</section>
|
|
</main>
|
|
</body>
|
|
</html>
|
|
{{end}}
|