Yapılandırmayı dışa aktarma
GET /v1/config-export · İzin config:read ve dışa aktarılan her türün okuma izni
Ortamın yapılandırmasını ortamdan bağımsız tek bir belge olarak döndürür; böylece belgeyi inceleyebilir, sürüm kontrolünde saklayabilir veya daha sonra başka bir ortama uygulayabilirsiniz. Belgede ortama özgü kimlikler, sürümler, zaman damgaları veya gizli bilgiler yer almaz: kaynaklar birbirine key ile başvurur. Aynı yapılandırma her zaman bayt bayt aynı belgeyi üretir (türler aşağıdaki sırayla, sonra key alanına göre; küme benzeri listeler sıralanır). Yanıt JSON biçimindedir ve aynı zamanda geçerli bir YAML'dır; keenauth config export varsayılan olarak YAML yazdırır.
İstek
Ortam kimlik bilgisinden gelir. Tek sorgu parametresi isteğe bağlıdır.
| Parametre | Açıklama |
|---|---|
kinds |
Dışa aktarılacak, virgülle ayrılmış türler, örneğin kinds=connection,api. Bu parametre olmadan tüm türler dışa aktarılır. |
| Tür | key |
config:read dışındaki izinler |
|---|---|---|
environment_settings |
default |
environment-settings:read |
identity_settings |
default |
identity-settings:read |
attack_protection |
default |
attack-protection:read |
branding |
default |
branding:read |
connection |
bağlantı key |
connections:read |
api |
API key |
apis:read, applications:read |
role |
rol key |
roles:read, apis:read |
application |
uygulama key |
applications:read, apis:read, connections:read |
application_branding |
uygulama key |
branding:read, applications:read |
api, role ve application ayrıca başvurdukları türlerin izinlerine de ihtiyaç duyar, çünkü başvurular key kimliklerine çözümlenir. Tek başına config:read hiçbir kaynak okuma izni vermez.
Yanıt
200 OK ile Cache-Control: no-store.
- Başvurular
keykimlikleri kullanır:application.default_api,application.connections(düğme sırası korunur),application.api_grants[].apiveapi.introspection_applications. - Kurumsal bir OIDC bağlantısı federasyon bilgilerini
oidcaltında taşır (issuer,client_id,client_auth_method,provider_profile); yönlendirme URI'si, SP ana makinesi ve gizli anahtarın kendisi ortama özgüdür ve dışa aktarılmaz.oidc, henüz bilgi yazılmadığındanulldeğerindedir. Uygulayacağınız bir belgedeoidc: nullbilgileri değiştirmez. Entra kiracı kimliği okunamadığı içinentraprofiline sahip bir bağlantı şimdilik belge üzerinden yönetilemez. - Gizli değerler hiçbir zaman dışa aktarılmaz. KeenAuth'a sağladığınız bir gizli bilgi (bir sosyal veya kurumsal OIDC bağlantısının
client_secretdeğeri),{"secret_ref": {"source": "env", "name": "KEENAUTH_CONNECTION_<KEY>_CLIENT_SECRET"}}yer tutucusu olarak görünür; belge uygulandığında CLI değeri o ortam değişkeninden okur. Diğer bağlantılarda"client_secret": nullbulunur. KeenAuth'un ürettiği gizli bilgiler (uygulama istemci gizli anahtarları, API anahtarları, webhook imzalama gizli bilgileri) ve özel anahtarlar hiç dışa aktarılmaz; hedef ortam kendi değerlerini üretir.jwksyalnızca açık anahtarları içerir. - Yerleşik sistem API'si dışa aktarılmaz; her ortamda mevcuttur. Kuruluşa ait uygulamalar ile istemcinin kendisi tarafından kaydedilen uygulamalar (Dinamik İstemci Kaydı, İstemci Kimliği Meta Veri Belgesi) da dışa aktarılmaz; bunların her biri
warningsiçinderesource_skippedkoduyla listelenir. - Çözümlenemeyen bir başvuru (örneğin atlanan bir uygulamaya yapılan başvuru) belgeden çıkarılır ve
warningsiçindereference_droppedkoduyla ve bir JSONpointerile listelenir. attack_protection, etkin değerler değil, Saldırı korumasını değiştir ile yazdığınız nesnedir. Her bölüm ve alan yazılır;nullayarlanmadığı anlamına gelir, böylece hedef ortam kendi varsayılanlarını, güvenlik alt sınırlarını ve planını uygular. Bu nedenle bir taşıma işlemi kaynağın varsayılanlarını asla sabitlemez. Hedef planı yazılmış bir ayarı içermiyorsa (örneğinrisk_policy.mode: enforce), planın uygulanması403 plan_feature_unavailablehatasıyla başarısız olur ve hiçbir şey yazılmaz.rolebir ortam rolüdür:name,description,is_privileged,assignable_in_self_servicevepermissions; her izin{"api": "<API key>", "value": "<permission value>"}biçiminde yazılır (kimlikler ortama özgü olduğu için hiçbir zaman yer almaz). Yerleşikadminvememberrolleri salt okunurdur: dışa aktarılmazlar vewarningsiçinderesource_skippedkoduyla vesystem_rolenedeniyle listelenirler; bir belge bunları oluşturamaz, değiştiremez veya silemez (422,key_in_use). Kuruluş rolleri yapılandırma değil veridir ve dışa aktarılmazlar. Bir rol, yerleşik sistem API'sinin izinlerine başvurabilir. Hâlâ atanmış olan bir rolün silinmesi başarısız olur; önce atamasını kaldırın.branding, ortamın taslak temasını, özel CSS'ini ve sayfa şablonunu içerir;application_branding, bir uygulamanın taslak temasıdır ve yalnızca teması olan uygulamalar için görünür. Metin geçersiz kılmaları ve kuruluş temaları henüz dışa aktarılmaz.- İki yer tutucunun aynı değişken adına sahip olması durumunda (yalnızca
-ve_bakımından farklılaşan anahtarlar), her iki kaynakwarningsiçindesecret_ref_name_sharedkoduyla listelenir; dosyanızda değişkenlerden birinin adını değiştirin. - Belgenin JSON Şeması
https://docs.keenauth.com/config/schema/v1.jsonadresinde yayımlanmıştır; tamamlama ve doğrulama için editörünüzü bu adrese yönlendirin.
{
"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"}
]
}
application içindeki spec yukarıda kısaltılmıştır; tam alan listesi API başvurusundadır.
Hatalar
| HTTP | kod | Ne zaman |
|---|---|---|
| 401 | unauthenticated |
Kimlik bilgisi eksik, geçersiz veya iptal edilmiş. |
| 403 | insufficient_permissions |
Kimlik bilgisinde gerekli izin yok; required_permissions hepsini listeler. |
| 413 | config_document_too_large |
Belge 5.000 kaynağı veya 10 MiB'ı aşardı; kinds ile daha az tür dışa aktarın. |
| 422 | validation_failed |
kinds tekrarlanmış, 256 karakterden uzun veya bilinmeyen bir türü içeriyor. |
| 429 | rate_limited |
Hız sınırı aşıldı; Retry-After süresinden sonra yeniden deneyin. |
| 503 | service_unavailable |
Bir bağımlılık geçici olarak kullanılamıyor; Retry-After süresinden sonra yeniden deneyin. |
Örnek
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