Dashboard-Daten-API
ENTWURF — Nur für interne Entwickler
Diese API-Referenz ist für interne Entwicklungsteams bestimmt.
Übersicht
Was es ist: Die Dashboard-Daten-API liefert voraggregierte Kennzahlen zur Identitätslage in sechs Bereichen: Konten, Identitäten, Gruppen, Bedrohungen, Audit und Plattformstatus. Jeder Bereich bietet einen Endpunkt für den aktuellen Zustand und einen Verlaufsendpunkt mit wöchentlichen Snapshots.
Warum es wichtig ist: Diese Endpunkte sind die primäre Datenquelle sowohl für die integrierten Dashboards von Discovery als auch für die benutzerdefinierten Dashboard-Widgets von Control. Control speichert diese Daten lokal zwischen und führt KPI-Berechnungen darüber aus, um kundenorientierte Identitätsrisiko-Dashboards zu betreiben.
Endpunkte
| Methode | Pfad | Beschreibung | Auth |
|---|---|---|---|
GET | /api/v1/dashboard/status | Aktuelle Ansichtszeit | JWT |
GET | /api/v1/dashboard/account | Kontolage-Metriken | JWT |
GET | /api/v1/dashboard/account/history | Kontometriken — 52 Wochen | JWT |
GET | /api/v1/dashboard/identity | Identitätsanzahlen nach Quelle | JWT |
GET | /api/v1/dashboard/identity/history | Identitätsmetriken — 52 Wochen | JWT |
GET | /api/v1/dashboard/group | Gruppenanzahlen und Privilegierungsstatus | JWT |
GET | /api/v1/dashboard/group/history | Gruppenmetriken — 52 Wochen | JWT |
GET | /api/v1/dashboard/threat | Risikobewertungen und Kompromittierungsmetriken | JWT |
GET | /api/v1/dashboard/threat/history | Bedrohungsmetriken — 52 Wochen | JWT |
GET | /api/v1/dashboard/audit | Fehlgeschlagene Anmeldeversuche | JWT |
GET | /api/v1/dashboard/audit/history | Audit-Metriken — 365 Tage | JWT |
GET | /api/v1/dashboard/platform | Plattformknoten, Provider, Datenquellen | JWT |
Gemeinsamer Abfrageparameter: Alle Endpunkte für den aktuellen Zustand akzeptieren einen optionalen ?time=<ms>-Abfrageparameter (Millisekunden seit Epoch), um einen historischen Snapshot abzurufen. Standardmäßig wird die aktuelle Ansichtszeit verwendet.
GET /api/v1/dashboard/status
Die aktuelle Dashboard-Ansichtszeit abrufen. Dieser Zeitstempel repräsentiert den letzten Datenaggregationspunkt.
Anfrage:
GET /api/v1/dashboard/status
Authorization: Bearer <token>Antwort (200):
{
"viewTime": 1707696000000
}| Feld | Typ | Beschreibung |
|---|---|---|
viewTime | int64 | Millisekunden seit Epoch — Zeitstempel der letzten Datenaggregation |
GET /api/v1/dashboard/account
Aktuelle Kontolage-Metriken abrufen, einschließlich Anzahlen, MFA-Status, veralteter Anmeldeinformationen und Aufschlüsselung nach Datenquellen.
Anfrage:
GET /api/v1/dashboard/account
Authorization: Bearer <token>Antwort (200):
{
"viewTime": 1707696000000,
"count": {
"total": 15420,
"mapped": 12890,
"shared": 342,
"type": {
"User Account": 11200,
"Service Account": 3100,
"Computer Account": 1120
},
"totalChange": 45,
"mappedChange": 32,
"sharedChange": -2,
"orphaned": 1230,
"compromised": 18
},
"multiFactorAuth": {
"enabled": 9800,
"disabled": 4620,
"unknown": 1000,
"provider": [
{ "name": "Microsoft Authenticator", "count": 5200 },
{ "name": "Okta Verify", "count": 3100 },
{ "name": "Duo Security", "count": 1500 }
],
"providers": 3,
"pending": 420
},
"account": [
{
"dataSourceId": "ds-ad-001",
"dataSourceName": "Corporate AD",
"platform": "ActiveDirectory",
"count": 8500,
"type": { "User Account": 7200, "Service Account": 800, "Computer Account": 500 }
},
{
"dataSourceId": "ds-azure-001",
"dataSourceName": "Azure AD",
"platform": "AzureAD",
"count": 4200,
"type": { "User Account": 3800, "Service Account": 400 }
}
],
"stalePassword": [
{ "days": 90, "count": 1240, "change": -15 },
{ "days": 180, "count": 620, "change": -8 },
{ "days": 365, "count": 180, "change": 2 }
],
"staleAccount": [
{ "days": 90, "count": 890, "change": -22 },
{ "days": 180, "count": 450, "change": -10 },
{ "days": 365, "count": 120, "change": 0 }
],
"created": [
{ "days": 1, "count": 12, "change": 3 },
{ "days": 7, "count": 45, "change": -5 },
{ "days": 30, "count": 180, "change": 12 }
]
}AccountDashboard-Felder
| Feld | Typ | Beschreibung |
|---|---|---|
viewTime | int64 | Snapshot-Zeitstempel (ms) |
count | AccountCount | Aggregierte Kontostatistiken |
multiFactorAuth | MultiFactorAuth | MFA-Registrierungsstatus |
account | AccountInfo[] | Aufschlüsselung nach Datenquellen |
stalePassword | Count[] | Anzahl veralteter Passwörter bei 90/180/365-Tage-Schwellenwerten |
staleAccount | Count[] | Anzahl veralteter Konten bei 90/180/365-Tage-Schwellenwerten |
created | Count[] | Neu erstellte Konten in 1/7/30-Tage-Fenstern |
AccountCount
| Feld | Typ | Beschreibung |
|---|---|---|
total | uint64 | Gesamtzahl erkannter Konten |
mapped | uint64 | Einem Identitätsbesitzer zugeordnete Konten |
shared | uint64 | Geteilte Konten |
type | map<string, uint64> | Kontoanzahl nach Typ (User, Service, Computer) |
totalChange | int64 | Differenz zum vorherigen Zeitraum |
mappedChange | int64 | Differenz zum vorherigen Zeitraum |
sharedChange | int64 | Differenz zum vorherigen Zeitraum |
orphaned | uint64 | Konten ohne Besitzer |
compromised | uint64 | Als kompromittiert markierte Konten |
MultiFactorAuth
| Feld | Typ | Beschreibung |
|---|---|---|
enabled | uint32 | Konten mit aktivierter MFA |
disabled | uint32 | Konten mit deaktivierter MFA |
unknown | uint32 | Konten mit unbekanntem MFA-Status |
provider | MfaProvider[] | Aufschlüsselung nach MFA-Provider |
providers | uint32 | Gesamtzahl unterschiedlicher MFA-Provider |
pending | uint32 | Konten mit ausstehender MFA-Registrierung |
AccountInfo
| Feld | Typ | Beschreibung |
|---|---|---|
dataSourceId | string | Eindeutiger Bezeichner der Datenquelle |
dataSourceName | string | Anzeigename |
platform | string | Plattformtyp (ActiveDirectory, AzureAD, Okta, Linux usw.) |
count | uint64 | Gesamtzahl der Konten aus dieser Datenquelle |
type | map<string, uint64> | Kontoanzahl nach Typ innerhalb dieser Datenquelle |
Count (verwendet für stalePassword, staleAccount, created)
| Feld | Typ | Beschreibung |
|---|---|---|
days | uint32 | Schwellenwert in Tagen (z. B. 90, 180, 365) |
count | uint32 | Anzahl übereinstimmender Konten |
change | int32 | Differenz zum vorherigen Zeitraum |
GET /api/v1/dashboard/account/history
Wöchentliche Kontolage-Snapshots der letzten 52 Wochen abrufen. Jeder Eintrag im history-Array ist ein vollständiges AccountDashboard-Objekt mit einer anderen viewTime.
Anfrage:
GET /api/v1/dashboard/account/history
Authorization: Bearer <token>Antwort (200):
{
"history": [
{
"viewTime": 1707696000000,
"count": { "total": 15420, "mapped": 12890, "..." : "..." },
"multiFactorAuth": { "enabled": 9800, "..." : "..." },
"account": [ "..." ],
"stalePassword": [ "..." ],
"staleAccount": [ "..." ],
"created": [ "..." ]
},
{
"viewTime": 1707091200000,
"count": { "total": 15375, "..." : "..." },
"...": "..."
}
]
}Jedes Element folgt der oben definierten AccountDashboard-Struktur.
GET /api/v1/dashboard/identity
Aktuelle Identitätsanzahlen aufgeschlüsselt nach Datenquelle abrufen.
Anfrage:
GET /api/v1/dashboard/identity
Authorization: Bearer <token>Antwort (200):
{
"viewTime": 1707696000000,
"total": 3200,
"identity": [
{
"dataSourceId": "ds-ad-001",
"dataSourceName": "Corporate AD",
"platform": "ActiveDirectory",
"count": 2100
},
{
"dataSourceId": "ds-azure-001",
"dataSourceName": "Azure AD",
"platform": "AzureAD",
"count": 1100
}
]
}IdentityDashboard-Felder
| Feld | Typ | Beschreibung |
|---|---|---|
viewTime | int64 | Snapshot-Zeitstempel (ms) |
total | uint64 | Gesamtzahl der Identitätsbesitzer |
identity | IdentityInfo[] | Aufschlüsselung nach Datenquellen |
IdentityInfo
| Feld | Typ | Beschreibung |
|---|---|---|
dataSourceId | string | Eindeutiger Bezeichner der Datenquelle |
dataSourceName | string | Anzeigename |
platform | string | Plattformtyp |
count | uint64 | Identitätsanzahl aus dieser Quelle |
GET /api/v1/dashboard/identity/history
Wöchentliche Identitäts-Snapshots der letzten 52 Wochen abrufen.
Anfrage:
GET /api/v1/dashboard/identity/history
Authorization: Bearer <token>Antwort (200):
{
"history": [
{
"viewTime": 1707696000000,
"total": 3200,
"identity": [ "..." ]
}
]
}GET /api/v1/dashboard/group
Aktuelle Gruppenanzahlen einschließlich Aufschlüsselung privilegierter Gruppen abrufen.
Anfrage:
GET /api/v1/dashboard/group
Authorization: Bearer <token>Antwort (200):
{
"viewTime": 1707696000000,
"total": 890,
"privileged": 45,
"group": [
{
"dataSourceId": "ds-ad-001",
"dataSourceName": "Corporate AD",
"platform": "ActiveDirectory",
"count": 620,
"privileged": 32
},
{
"dataSourceId": "ds-azure-001",
"dataSourceName": "Azure AD",
"platform": "AzureAD",
"count": 270,
"privileged": 13
}
]
}GroupDashboard-Felder
| Feld | Typ | Beschreibung |
|---|---|---|
viewTime | int64 | Snapshot-Zeitstempel (ms) |
total | uint64 | Gesamtzahl der Gruppen |
privileged | uint64 | Als hochprivilegiert markierte Gruppen |
group | GroupInfo[] | Aufschlüsselung nach Datenquellen |
GroupInfo
| Feld | Typ | Beschreibung |
|---|---|---|
dataSourceId | string | Eindeutiger Bezeichner der Datenquelle |
dataSourceName | string | Anzeigename |
platform | string | Plattformtyp |
count | uint64 | Gruppenanzahl aus dieser Quelle |
privileged | uint64 | Privilegierte Gruppen aus dieser Quelle |
GET /api/v1/dashboard/group/history
Wöchentliche Gruppen-Snapshots der letzten 52 Wochen abrufen.
Anfrage:
GET /api/v1/dashboard/group/history
Authorization: Bearer <token>Antwort (200):
{
"history": [
{
"viewTime": 1707696000000,
"total": 890,
"privileged": 45,
"group": [ "..." ]
}
]
}GET /api/v1/dashboard/threat
Aktuelle Bedrohungs- und Risikometriken abrufen, einschließlich mandantenweiter Risikobewertungen, Kontobedrohungsverteilung, Kompromittierungsindikatoren und Risikoauswirkungskategorien.
Anfrage:
GET /api/v1/dashboard/threat
Authorization: Bearer <token>Antwort (200):
{
"viewTime": 1707696000000,
"tenantThreat": {
"overall": 42.5,
"privileged": 68.3,
"service_accounts": 31.2
},
"account": [
{
"name": "Corporate AD",
"low": 7200,
"moderate": 1800,
"critical": 120
},
{
"name": "Azure AD",
"low": 3500,
"moderate": 600,
"critical": 45
}
],
"compromise": {
"name": "Compromise Summary",
"identity": 8,
"account": 18,
"highRisk": 12
},
"impacts": {
"stale_credentials": 35.2,
"orphaned_accounts": 22.8,
"excessive_privilege": 18.5,
"mfa_gaps": 15.1,
"shared_accounts": 8.4
}
}ThreatDashboard-Felder
| Feld | Typ | Beschreibung |
|---|---|---|
viewTime | int64 | Snapshot-Zeitstempel (ms) |
tenantThreat | map<string, double> | Aggregierte Risikobewertungen nach Kategorie |
account | AccountThreat[] | Bedrohungsverteilung nach Datenquelle |
compromise | CompromiseThreat | Zusammenfassung kompromittierter Entitäten |
impacts | map<string, double> | Risikoauswirkungsbewertungen nach Kategorie |
AccountThreat
| Feld | Typ | Beschreibung |
|---|---|---|
name | string | Name der Datenquelle oder Kategorie |
low | uint32 | Konten mit niedrigem Risiko |
moderate | uint32 | Konten mit mittlerem Risiko |
critical | uint32 | Konten mit kritischem Risiko |
CompromiseThreat
| Feld | Typ | Beschreibung |
|---|---|---|
name | string | Zusammenfassungsbezeichnung |
identity | uint32 | Kompromittierte Identitätsbesitzer |
account | uint32 | Kompromittierte Konten |
highRisk | uint32 | Hochrisiko-kompromittierte Entitäten |
GET /api/v1/dashboard/threat/history
Wöchentliche Bedrohungs-Snapshots der letzten 52 Wochen abrufen.
Anfrage:
GET /api/v1/dashboard/threat/history
Authorization: Bearer <token>Antwort (200):
{
"history": [
{
"viewTime": 1707696000000,
"tenantThreat": { "overall": 42.5, "..." : "..." },
"account": [ "..." ],
"compromise": { "..." : "..." },
"impacts": { "..." : "..." }
}
]
}GET /api/v1/dashboard/audit
Aktuelle Audit-Metriken abrufen, hauptsächlich Daten zu fehlgeschlagenen Anmeldungen.
Anfrage:
GET /api/v1/dashboard/audit
Authorization: Bearer <token>Antwort (200):
{
"viewTime": 1707696000000,
"failedLogon": 3420,
"failedLogons": {
"1707609600000": 120,
"1707613200000": 85,
"1707616800000": 210,
"1707620400000": 95
}
}AuditDashboard-Felder
| Feld | Typ | Beschreibung |
|---|---|---|
viewTime | int64 | Snapshot-Zeitstempel (ms) |
failedLogon | uint64 | Gesamtzahl fehlgeschlagener Anmeldungen im aktuellen Zeitraum |
failedLogons | map<uint64, uint64> | Fehlgeschlagene Anmeldungen gruppiert nach Zeitstempel (ms) |
GET /api/v1/dashboard/audit/history
Tägliche Audit-Snapshots der letzten 365 Tage abrufen.
Anfrage:
GET /api/v1/dashboard/audit/history
Authorization: Bearer <token>Antwort (200):
{
"history": [
{
"viewTime": 1707696000000,
"failedLogon": 3420,
"failedLogons": { "..." : "..." }
}
]
}GET /api/v1/dashboard/platform
Plattform-Infrastrukturstatus abrufen, einschließlich Discovery-Knoten, Authentifizierungs-Providern und Datenquellen-Erfassungsstatus.
Anfrage:
GET /api/v1/dashboard/platform
Authorization: Bearer <token>Antwort (200):
{
"viewTime": 1707696000000,
"tenant": "acme-corp",
"version": "2026.2.0",
"provider": [
{
"id": "oidc-azure",
"name": "Azure AD SSO",
"registered": 450,
"pendingSignup": 12,
"pendingApproval": 3
}
],
"client": [
{ "id": "node-001", "name": "dc-collector-01", "online": true },
{ "id": "node-002", "name": "cloud-collector-01", "online": true },
{ "id": "node-003", "name": "linux-collector-01", "online": false }
],
"dataSource": [
{
"id": "ds-ad-001",
"name": "Corporate AD",
"type": "ActiveDirectory",
"lastCollection": {
"success": true,
"status": "completed",
"entities": 12500,
"accounts": 8500,
"groups": 620,
"roles": 0,
"running": false,
"startTime": 1707688800000,
"finishTime": 1707690600000
},
"dailySuccess": 24,
"dailyFailures": 0
}
]
}PlatformDashboard-Felder
| Feld | Typ | Beschreibung |
|---|---|---|
viewTime | int64 | Snapshot-Zeitstempel (ms) |
tenant | string | Mandantenbezeichner |
version | string | Version der Discovery-Plattform |
provider | OpenIdProvider[] | Konfigurierte Authentifizierungs-Provider |
client | PlatformClient[] | Discovery-Collector-/Knotenstatus |
dataSource | DataSource[] | Datenquellen-Erfassungsstatus |
OpenIdProvider
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Eindeutiger Bezeichner des Providers |
name | string | Anzeigename |
registered | uint32 | Über diesen Provider registrierte Benutzer |
pendingSignup | uint32 | Benutzer, die auf den Abschluss der Registrierung warten |
pendingApproval | uint32 | Benutzer, die auf Admin-Genehmigung warten |
PlatformClient
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Eindeutiger Bezeichner des Knotens |
name | string | Anzeigename des Knotens |
online | bool | Ob der Knoten aktuell online ist |
DataSource
| Feld | Typ | Beschreibung |
|---|---|---|
id | string | Eindeutiger Bezeichner der Datenquelle |
name | string | Anzeigename |
type | string | Plattformtyp |
lastCollection | LastCollection | Letzter Erfassungslauf |
dailySuccess | int64 | Erfolgreiche Erfassungen in den letzten 24 Stunden |
dailyFailures | int64 | Fehlgeschlagene Erfassungen in den letzten 24 Stunden |
LastCollection
| Feld | Typ | Beschreibung |
|---|---|---|
success | bool | Ob die Erfassung erfolgreich war |
status | string | Statustext (completed, failed, partial) |
entities | uint32 | Gesamtzahl erfasster Entitäten |
accounts | uint32 | Erfasste Konten |
groups | uint32 | Erfasste Gruppen |
roles | uint32 | Erfasste Rollen |
running | bool | Ob aktuell eine Erfassung läuft |
startTime | int64 | Erfassungsstart (ms seit Epoch) |
finishTime | int64 | Erfassungsende (ms seit Epoch) |
Control-Integration — Benutzerdefinierte Dashboards
Das benutzerdefinierte Dashboard-System von Control konsumiert Discovery-Dashboard-Daten über einen zweischichtigen Ansatz:
Datenfluss
Was Control von diesen Endpunkten zwischenspeichert
| Discovery-Endpunkt | Control-Entität | Widget-Daten, die es speist |
|---|---|---|
/dashboard/account | ACCOUNTS-Aggregat | Risikoverteilung, MFA-Lücken, veraltete Anmeldeinformationen |
/dashboard/account/history | ACCOUNTS-Zeitreihe | Risikotrend-Linien, Trend bei Alter der Anmeldeinformationen |
/dashboard/threat | Bedrohungsbewertungen | Risikobewertungs-Widgets, Kompromittierungsindikatoren |
/dashboard/threat/history | Bedrohungs-Zeitreihe | Trend der Risikoreduktion |
/dashboard/group | GRUPPEN-Aggregat | Anzahlen privilegierter Gruppen |
/dashboard/identity | BESITZER-Aggregat | Verhältnisse von Identität zu Konto |
/dashboard/platform | Plattformzustand | Erfassungsstatus, Knotenverfügbarkeit |
Wichtige Felder für KPI-Widget-Filter
Das KPI-System von Control definiert Widgets mithilfe von Filtern über diese von Discovery stammenden Felder:
| KPI-Filtermuster | Discovery-Quellfeld | Widget-Beispiel |
|---|---|---|
total_threat IN ['HIGH','CRITICAL'] | AccountThreat.critical + AccountThreat.moderate | Hochrisiko-Konten im Zeitverlauf |
privileged=true AND managed_by_pam IS NULL | AccountCount.type Quervergleich Tresorstatus | Nicht tresorgesicherte privilegierte Konten |
password_age_90 IS NOT NULL | stalePassword[days=90].count | Veraltete Anmeldeinformationen (90+ Tage) |
status IN ['disabled','inactive'] | AccountCount gefiltert | Deaktivierte privilegierte Konten |
account_no_owner IS NOT NULL | AccountCount.orphaned | Verwaiste privilegierte Konten |
Vorgefertigte Dashboard-Vorlagen in Control
Control liefert drei Standard-Dashboards, die auf Discovery-Daten basieren:
- Identitätsrisiko-Reduktion — Trend hochriskanter Konten, Risikoverteilungsdiagramm, durchschnittliche Risikobewertung, Anzahl nicht tresorgesicherter privilegierter Konten
- PAM-/Tresor-Auswirkung — Tresorgesicherte vs. nicht tresorgesicherte privilegierte Konten, hochriskante nicht tresorgesicherte, verwaiste privilegierte, privilegierte nach Typ
- Privilegierte Kontohygiene — Trend veralteter Anmeldeinformationen, Passwortaltersverteilung, deaktivierte privilegierte, inaktive Konten
