Konfiguration exportieren
GET /v1/config-export · Berechtigung config:read und die Leseberechtigung jeder exportierten Art
Gibt die Konfiguration der Umgebung als ein umgebungsunabhängiges Dokument zurück, damit Sie sie prüfen, in der Versionsverwaltung ablegen oder später auf eine andere Umgebung anwenden können. Das Dokument enthält keine umgebungsspezifischen IDs, Versionen, Zeitstempel oder Geheimnisse: Ressourcen verweisen aufeinander über key. Dieselbe Konfiguration erzeugt stets ein byteidentisches Dokument (Arten in der unten genannten Reihenfolge, dann nach key; mengenartige Listen sortiert). Die Antwort ist JSON, das zugleich gültiges YAML ist; keenauth config export gibt standardmäßig YAML aus.
Anfrage
Die Umgebung ergibt sich aus den Anmeldedaten. Der einzige Abfrageparameter ist optional.
| Parameter | Beschreibung |
|---|---|
kinds |
Durch Kommas getrennte Arten zum Export, zum Beispiel kinds=connection,api. Ohne diesen Parameter wird jede Art exportiert. |
| Art | key |
Berechtigungen neben config:read |
|---|---|---|
environment_settings |
default |
environment-settings:read |
identity_settings |
default |
identity-settings:read |
attack_protection |
default |
attack-protection:read |
branding |
default |
branding:read |
connection |
Verbindung key |
connections:read |
api |
API key |
apis:read, applications:read |
role |
Rolle key |
roles:read, apis:read |
application |
Anwendung key |
applications:read, apis:read, connections:read |
application_branding |
Anwendung key |
branding:read, applications:read |
api, role und application benötigen außerdem die Berechtigungen der Arten, auf die sie verweisen, weil Verweise zu key-Werten aufgelöst werden. config:read allein gewährt kein Lesen von Ressourcen.
Antwort
200 OK mit Cache-Control: no-store.
- Verweise verwenden
key-Werte:application.default_api,application.connections(die Reihenfolge der Schaltflächen bleibt erhalten),application.api_grants[].apiundapi.introspection_applications. - Eine Enterprise-OIDC-Verbindung führt ihr Föderationsmaterial als
oidc(issuer,client_id,client_auth_method,provider_profile); die Redirect-URI, der SP-Host und das Geheimnis selbst sind umgebungsspezifisch und werden nicht exportiert, undoidcistnull, wenn noch kein Material geschrieben wurde. In einem Dokument, das Sie anwenden, lässtoidc: nulldas Material unverändert. Die Entra-Mandanten-ID ist nicht lesbar, daher kann eine Verbindung mit dementra-Profil über das Dokument noch nicht verwaltet werden. - Geheimniswerte werden nie exportiert. Ein Geheimnis, das Sie KeenAuth übergeben haben (das
client_secreteiner Social- oder Enterprise-OIDC-Verbindung), erscheint als Platzhalter{"secret_ref": {"source": "env", "name": "KEENAUTH_CONNECTION_<KEY>_CLIENT_SECRET"}}; die CLI liest den Wert beim Anwenden des Dokuments aus dieser Umgebungsvariablen. Andere Verbindungen haben"client_secret": null. Von KeenAuth ausgestellte Geheimnisse (Client-Secrets von Anwendungen, API-Schlüssel, Webhook-Signaturgeheimnisse) und private Schlüssel werden überhaupt nicht exportiert; die Zielumgebung stellt eigene aus.jwksenthält nur öffentliche Schlüssel. - Die integrierte System-API wird nicht exportiert; sie existiert in jeder Umgebung. Organisationseigene Anwendungen sowie Anwendungen, die der Client selbst registriert (Dynamic Client Registration, Client ID Metadata Document), werden ebenfalls nicht exportiert; jede davon ist in
warningsmit dem Coderesource_skippedaufgeführt. - Ein Verweis, der nicht aufgelöst werden kann (zum Beispiel auf eine übersprungene Anwendung), wird aus dem Dokument entfernt und in
warningsmit dem Codereference_droppedund einem JSON-pointeraufgeführt. attack_protectionist das Objekt, das Sie mit Attack Protection ersetzen geschrieben haben, nicht die wirksamen Werte. Jeder Abschnitt und jedes Feld wird geschrieben;nullbedeutet nicht gesetzt, sodass die Zielumgebung ihre eigenen Standardwerte, Sicherheitsuntergrenzen und ihren Tarif anwendet. Eine Übernahme fixiert daher nie die Standardwerte der Quelle. Wenn der Tarif der Zielumgebung eine geschriebene Einstellung nicht enthält (zum Beispielrisk_policy.mode: enforce), schlägt das Anwenden des Plans mit403 plan_feature_unavailablefehl, und es wird nichts geschrieben.roleist eine Umgebungsrolle:name,description,is_privileged,assignable_in_self_serviceundpermissions, wobei jede Berechtigung als{"api": "<API key>", "value": "<permission value>"}geschrieben wird (IDs sind umgebungsspezifisch und erscheinen daher nie). Die integrierten Rollenadminundmembersind schreibgeschützt: Sie werden nicht exportiert und inwarningsmit dem Coderesource_skippedund dem Grundsystem_roleaufgeführt; ein Dokument kann sie nicht anlegen, ändern oder löschen (422,key_in_use). Organisationsrollen sind Daten, keine Konfiguration, und werden nicht exportiert. Eine Rolle kann auf Berechtigungen der integrierten System-API verweisen. Eine Rolle, die noch zugewiesen ist, lässt sich nicht löschen; entfernen Sie die Zuweisung zuerst.brandingist der Theme-Entwurf der Umgebung, das benutzerdefinierte CSS und die Seitenvorlage;application_brandingist der Theme-Entwurf einer Anwendung und erscheint nur bei Anwendungen, die einen besitzen. Textersetzungen und Organisations-Themes werden noch nicht exportiert.- Wenn zwei Platzhalter am Ende denselben Variablennamen haben (Schlüssel, die sich nur in
-und_unterscheiden), werden beide Ressourcen inwarningsmit dem Codesecret_ref_name_sharedaufgeführt; benennen Sie in Ihrer Datei eine der Variablen um. - Das JSON-Schema des Dokuments wird unter
https://docs.keenauth.com/config/schema/v1.jsonveröffentlicht; verweisen Sie Ihren Editor darauf, um Vervollständigung und Validierung zu erhalten.
{
"apiVersion": "config.keenauth.com/v1",
"kinds": ["connection", "api", "application"],
"resources": [
{"kind": "connection", "key": "db", "spec": {"type": "database", "strategy": "password", "name": "db", "display_name": null, "status": "active", "settings": {}, "client_secret": null}},
{"kind": "api", "key": "orders", "spec": {"identifier": "https://api.example.com/orders", "name": "Orders", "access_token_lifetime_s": 3600, "token_format": "jwt", "rbac_mode": "off", "allow_offline_access": false, "require_resource_indicator": false, "dpop_required": false, "mcp_profile": false, "first_party_access": "all", "introspection_applications": [], "permissions": [{"value": "orders:read", "display_name": null, "description": null, "consent_text_i18n": {}, "sensitivity": "normal"}]}},
{"kind": "application", "key": "web", "spec": {"name": "Web", "app_type": "spa", "default_api": "orders", "connections": ["db"], "api_grants": [{"api": "orders", "scopes": ["orders:read"], "default_scopes": []}], "redirect_uris": ["https://app.example.com/callback"]}}
],
"warnings": [
{"code": "resource_skipped", "kind": "application", "key": "partner-bot", "reason": "organization_owned"}
]
}
Die Spezifikation application oben ist gekürzt; die vollständige Feldliste steht in der API-Referenz.
Fehler
| HTTP | Code | Wann |
|---|---|---|
| 401 | unauthenticated |
Die Anmeldedaten fehlen, sind ungültig oder wurden widerrufen. |
| 403 | insufficient_permissions |
Den Anmeldedaten fehlt eine erforderliche Berechtigung; required_permissions listet alle auf. |
| 413 | config_document_too_large |
Das Dokument würde 5.000 Ressourcen oder 10 MiB überschreiten; exportieren Sie weniger Arten mit kinds. |
| 422 | validation_failed |
kinds ist mehrfach angegeben, länger als 256 Zeichen oder nennt eine unbekannte Art. |
| 429 | rate_limited |
Das Ratenlimit wurde überschritten; wiederholen Sie die Anfrage nach dem Zeitraum Retry-After. |
| 503 | service_unavailable |
Eine Abhängigkeit ist vorübergehend nicht verfügbar; wiederholen Sie die Anfrage nach dem Zeitraum Retry-After. |
Beispiel
curl "https://api.eu.keenauth.com/v1/config-export?kinds=connection,api,application" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"
keenauth config export --kinds connection,api,application > keenauth.yaml