Skip to content

Registry-Konfiguration API

ENTWURF — Nur für interne Entwicklerteams

Diese API-Referenz ist für interne Entwicklerteams bestimmt.

Übersicht

Was es ist: Die Registry-Konfiguration-API ist der zentrale Konfigurationsspeicher für Hydden Discovery. Sie bietet CRUD-Operationen für drei Konfigurationsbereiche — Systemkonfiguration, Benutzerkonfiguration und Modulkonfiguration — jeweils mit eigenem Namensraum. Alle Konfigurationen verwenden ein versioniertes, repliziertes Speichermodell mit Soft-Delete (Tombstone) und Hard-Delete (Erase) Semantik.

Quelle: src/registry/rest/rest.go

Basispfad

/internal/v1/registry

Authentifizierung

Alle Endpunkte erfordern JWT-Cookie- oder API-Token-Authentifizierung.

Konfigurationsbereiche

BereichPfadpräfixBeschreibung
Config/internal/v1/registry/config/:entityKonfiguration auf Systemebene (Collectors, Workflows, Bedrohungsregeln usw.)
User Config/internal/v1/registry/usrcfg/:entityKonfiguration pro Benutzer (gespeicherte Suchen, Einstellungen, Spaltenlayouts)
Module Config/internal/v1/registry/modcfg/:entityKonfiguration pro Modul (modulspezifische Einstellungen und Status)

Der Pfadparameter :entity identifiziert den Konfigurationstyp (z. B. collector.aws, workflow, threat.rule, grid.user).

Endpunkte

Systemkonfiguration

MethodePfadBeschreibung
POST/internal/v1/registry/config/:entityEinen Konfigurationseintrag erstellen oder aktualisieren
GET/internal/v1/registry/config/:entityAlle Konfigurationseinträge für einen Entitätstyp auflisten
GET/internal/v1/registry/config/:entity/:idEinen bestimmten Konfigurationseintrag abrufen
DELETE/internal/v1/registry/config/:entity/:idEinen Konfigurationseintrag soft-löschen (Tombstone)
DELETE/internal/v1/registry/config/:entity/:id/eraseEinen Konfigurationseintrag hard-löschen (permanent)

Benutzerkonfiguration

MethodePfadBeschreibung
POST/internal/v1/registry/usrcfg/:entityEinen Benutzerkonfigurationseintrag erstellen oder aktualisieren
GET/internal/v1/registry/usrcfg/:entityBenutzerkonfigurationseinträge auflisten
GET/internal/v1/registry/usrcfg/:entity/:idEinen bestimmten Benutzerkonfigurationseintrag abrufen
DELETE/internal/v1/registry/usrcfg/:entity/:idEinen Benutzerkonfigurationseintrag soft-löschen
DELETE/internal/v1/registry/usrcfg/:entity/:id/eraseEinen Benutzerkonfigurationseintrag hard-löschen

Modulkonfiguration

MethodePfadBeschreibung
POST/internal/v1/registry/modcfg/:entityEinen Modulkonfigurationseintrag erstellen oder aktualisieren
GET/internal/v1/registry/modcfg/:entityModulkonfigurationseinträge auflisten
GET/internal/v1/registry/modcfg/:entity/:idEinen bestimmten Modulkonfigurationseintrag abrufen
DELETE/internal/v1/registry/modcfg/:entity/:idEinen Modulkonfigurationseintrag soft-löschen
DELETE/internal/v1/registry/modcfg/:entity/:id/eraseEinen Modulkonfigurationseintrag hard-löschen

Zusätzliche Endpunkte

MethodePfadBeschreibung
GET/internal/v1/registry/collectorAttributes/:entity/:eidErweiterte Attribute für einen Collector abrufen
GET/internal/v1/scheduler/job_statusAlle Scheduler-Jobstatus auflisten
GET/internal/v1/scheduler/job_status/:jidEinen bestimmten Jobstatus abrufen

Konfigurations-CRUD-Operationen

Alle drei Bereiche (config, usrcfg, modcfg) teilen sich die gleiche Anfrage-/Antwortstruktur. Die folgenden Beispiele verwenden den Systemkonfigurationsbereich (/config/); ersetzen Sie /usrcfg/ oder /modcfg/ für andere Bereiche.

POST — Erstellen oder Aktualisieren

Einen Konfigurationseintrag erstellen oder aktualisieren. Der Anfragekörper umhüllt die eigentliche Konfiguration in einem versionierten Nachrichten-Envelope.

Anfrage:

http
POST /internal/v1/registry/config/:entity
Content-Type: application/json
Authorization: Bearer <token>
json
{
  "message": {
    "id": "collector-uuid",
    "name": "Corporate Active Directory",
    "host": "dc01.corp.local",
    "port": 636,
    "useSsl": true
  },
  "version": null,
  "tombstoned": false
}

Anfragefelder:

FeldTypBeschreibung
messageobjectDie Konfigurationsnutzlast (protobuf-abgeleitet, variiert je nach Entitätstyp)
versionbytes/nullVersionsvektor für optimistisches Concurrency (null für neue Einträge)
tombstonedboolWird automatisch bei Erstellung/Aktualisierung auf false gesetzt

Antwort (200): Gibt die gespeicherte Nachricht mit einem aktualisierten version-Vektor zurück.

json
{
  "message": {
    "id": "collector-uuid",
    "name": "Corporate Active Directory"
  },
  "version": "dmVyc2lvbi12ZWN0b3I=",
  "tombstoned": false
}

Hinweis: Sensible Felder (Passwörter, Geheimnisse) werden in Antworten über das config.Sanitizer-Interface bereinigt.

GET — Auflisten

Alle Konfigurationseinträge für einen Entitätstyp auflisten.

Anfrage:

http
GET /internal/v1/registry/config/:entity
Authorization: Bearer <token>

Abfrageparameter:

ParameterTypBeschreibung
tombstonedstringAuf 1 setzen, um soft-gelöschte Einträge einzuschließen

Antwort (200): Array von Nachrichten-Envelopes, alphabetisch nach Name sortiert.

json
[
  {
    "message": { "id": "uuid-1", "name": "Alpha Collector" },
    "version": "...",
    "tombstoned": false
  },
  {
    "message": { "id": "uuid-2", "name": "Beta Collector" },
    "version": "...",
    "tombstoned": false
  }
]

GET — Nach ID abrufen

Einen bestimmten Konfigurationseintrag abrufen.

Anfrage:

http
GET /internal/v1/registry/config/:entity/:id
Authorization: Bearer <token>

Antwort (200): Einzelner Nachrichten-Envelope.

DELETE — Soft-Delete

Einen Konfigurationseintrag soft-löschen (Tombstone). Der Eintrag bleibt im Speicher, wird jedoch aus den Listenergebnissen ausgeschlossen, es sei denn ?tombstoned=1 ist angegeben.

Anfrage:

http
DELETE /internal/v1/registry/config/:entity/:id
Authorization: Bearer <token>

Antwort (200): Leere Antwort bei Erfolg.

Sicherung: Benutzer können ihren eigenen grid.user-Eintrag nicht löschen.

DELETE — Hard-Delete (Erase)

Einen Konfigurationseintrag dauerhaft entfernen. Diese Operation ist nicht rückgängig zu machen.

Anfrage:

http
DELETE /internal/v1/registry/config/:entity/:id/erase
Content-Type: application/json
Authorization: Bearer <token>

Der Anfragekörper enthält die vollständige Konfigurationsnachricht, die gelöscht werden soll.

Antwort (200): Leere Antwort bei Erfolg.

Warnung: Gelöschte Konfigurationen können nicht wiederhergestellt werden. Für generische Collectors führt das System zusätzlich CleanupGenericCollector() aus, um zugehörige Daten zu entfernen.


GET /internal/v1/registry/collectorAttributes/:entity/:eid

Erweiterte Zuordnungsattribute für eine generische Collector-Konfiguration abrufen.

Anfrage:

http
GET /internal/v1/registry/collectorAttributes/:entity/:eid
Authorization: Bearer <token>

Pfadparameter:

ParameterBeschreibung
entityEntitätstyp (muss ein collector.generic*-Typ sein)
eidEntitäts-/Collector-ID

Antwort (200):

json
["customAttribute1", "customAttribute2", "department", "location"]

Gibt ein Array von erweiterten Attributnamen aus den Principal-Zuordnungen des Collectors zurück.


GET /internal/v1/scheduler/job_status

Alle Scheduler-Jobstatus auflisten. Jobs repräsentieren geplante Aufgaben wie Datenerfassungsläufe, Zuordnungszyklen und Bedrohungsbewertungen.

Anfrage:

http
GET /internal/v1/scheduler/job_status
Authorization: Bearer <token>

Antwort (200):

json
[
  {
    "message": {
      "id": "collection-corporate-ad",
      "owner": "collector-uuid",
      "starttime": 1707700800000,
      "finishtime": 1707701100000,
      "metadata": {
        "type": "collection",
        "platform": "Active Directory"
      },
      "next": 1707787200000,
      "runNow": false,
      "locked": false,
      "logs": ["Started collection", "Processed 4521 accounts", "Completed"]
    }
  }
]

Jobstatus-Felder:

FeldTypBeschreibung
idstringJob-Identifikator
ownerstringID des Moduls/Collectors, dem dieser Job gehört
starttimeint64Startzeit der letzten Ausführung (ms)
finishtimeint64Endzeit der letzten Ausführung (ms)
metadatamapSchlüssel-Wert-Metadaten (Typ, Plattform usw.)
nextint64Nächste geplante Ausführungszeit (ms)
runNowboolOb der Job zur sofortigen Ausführung in der Warteschlange steht
lockedboolOb der Job derzeit von einem laufenden Prozess gesperrt ist
logsstring[]Lognachrichten der letzten Ausführung

GET /internal/v1/scheduler/job_status/:jid

Den Status eines bestimmten Scheduler-Jobs abrufen.

Anfrage:

http
GET /internal/v1/scheduler/job_status/:jid
Authorization: Bearer <token>

Antwort (200): Einzelner Jobstatus-Envelope. Gibt ein leeres Statusobjekt zurück, wenn die Job-ID nicht gefunden wird.


Gängige Entitätstypen

Der Parameter :entity akzeptiert die folgenden gängigen Werte:

EntitätstypBeschreibung
collector.adActive Directory Collector-Konfiguration
collector.awsAWS Collector-Konfiguration
collector.azureAzure AD Collector-Konfiguration
collector.oktaOkta Collector-Konfiguration
collector.generic*Universal Connector-Konfigurationen
credential.*Anmeldeinformationsspeicher-Konfigurationen
workflowAutomatisierungs-Workflow-Konfigurationen
action.*Aktionsanbieter-Konfigurationen
threat.ruleBedrohungserkennungsregel-Konfigurationen
grid.userPlattformbenutzer-Konfigurationen
mapping.ruleIdentitätszuordnungsregel-Konfigurationen
classification.ruleKontokassifikationsregel-Konfigurationen
savedsearchGespeicherte Suche-Konfigurationen
notificationBenachrichtigungs-Konfigurationen

Fehlerantworten

StatusBeschreibung
400Ungültiger Anfragekörper oder unbekannter Entitätstyp
403Authentifizierung fehlgeschlagen oder Versuch der Selbstlöschung
404Konfigurationseintrag nicht gefunden
409Versionskonflikt (Fehler bei optimistischem Concurrency)
500Interner Serverfehler

Verwandte Themen

Hydden Documentation and Training Hub