Gateway
Contract voor het plan voor het toepassen van geheimen
Deze pagina definieert het strikte contract dat wordt afgedwongen door openclaw secrets apply. Als een doel niet aan deze regels voldoet, mislukt apply voordat een bestand wordt gewijzigd.
Structuur van het planbestand
openclaw secrets apply --from <plan.json> verwacht een targets-array met plandoelen:
{ version: 1, protocolVersion: 1, targets: [ { type: "models.providers.apiKey", path: "models.providers.openai.apiKey", pathSegments: ["models", "providers", "openai", "apiKey"], providerId: "openai", ref: { source: "env", provider: "default", id: "OPENAI_API_KEY" }, }, { type: "auth-profiles.api_key.key", path: "profiles.openai:default.key", pathSegments: ["profiles", "openai:default", "key"], agentId: "main", ref: { source: "env", provider: "default", id: "OPENAI_API_KEY" }, }, ],}openclaw secrets configure genereert plannen met deze structuur. U kunt er ook handmatig een schrijven of bewerken.
Providers toevoegen of bijwerken en verwijderen
Plannen kunnen ook twee optionele velden op het hoogste niveau bevatten die de secrets.providers-toewijzing naast de schrijfbewerkingen per doel wijzigen:
providerUpserts-- een object met provideraliassen als sleutels. Elke waarde is een providerdefinitie (dezelfde structuur die wordt geaccepteerd ondersecrets.providers.<alias>inopenclaw.json, bijvoorbeeld eenexec- offile-provider).providerDeletes-- een array met provideraliassen die moeten worden verwijderd.
providerUpserts wordt vóór targets uitgevoerd, zodat een target.ref.provider kan verwijzen naar een provideralias die door hetzelfde plan in providerUpserts wordt geïntroduceerd. Zonder deze volgorde mislukken plannen die verwijzen naar een alias die nog niet in openclaw.json is geconfigureerd met provider "<alias>" is not configured.
{ version: 1, protocolVersion: 1, providerUpserts: { onepassword_anthropic: { source: "exec", command: "/usr/bin/op", args: ["read", "op://Vault/Anthropic/credential"], }, }, providerDeletes: ["legacy_unused_alias"], targets: [ { type: "models.providers.apiKey", path: "models.providers.anthropic.apiKey", pathSegments: ["models", "providers", "anthropic", "apiKey"], providerId: "anthropic", ref: { source: "exec", provider: "onepassword_anthropic", id: "credential" }, }, ],}Exec-providers die via providerUpserts worden geïntroduceerd, blijven onderworpen aan de toestemmingsregels voor exec in Toestemmingsgedrag voor exec-providers: voor plannen die exec-providers bevatten, is --allow-exec vereist in de schrijfmodus.
Ondersteund doelbereik
Plandoelen worden geaccepteerd voor ondersteunde referentiepaden in Referentieoppervlak voor SecretRef-referenties.
Gedrag van doeltypen
target.type moet een herkend doeltype zijn en het genormaliseerde target.path moet overeenkomen met de geregistreerde padstructuur van dat type.
Sommige doeltypen accepteren naast hun canonieke typenaam ook een compatibiliteitsalias als target.type voor bestaande plannen:
| Canoniek type | Geaccepteerde alias |
|---|---|
models.providers.apiKey |
models.providers.*.apiKey |
skills.entries.apiKey |
skills.entries.*.apiKey |
channels.googlechat.serviceAccount |
channels.googlechat.accounts.*.serviceAccount |
Regels voor padvalidatie
Elk doel wordt aan de hand van alle volgende regels gevalideerd:
typemoet een herkend doeltype zijn.pathmoet een niet-leeg, door punten gescheiden pad zijn.pathSegmentsmag worden weggelaten. Indien opgegeven, moet het na normalisatie exact hetzelfde pad opleveren alspath.- Verboden segmenten worden geweigerd:
__proto__,prototype,constructor. - Het genormaliseerde pad moet overeenkomen met de geregistreerde padstructuur voor het doeltype.
- Als
providerIdofaccountIdis ingesteld, moet deze overeenkomen met de id die in het pad is opgenomen. - Doelen voor
auth-profiles.jsonvereisenagentId. - Neem
authProfileProviderop wanneer u een nieuwe toewijzing inauth-profiles.jsonmaakt.
Gedrag bij fouten
Als de validatie van een doel mislukt, wordt apply afgesloten met een fout zoals:
Invalid plan target path for models.providers.apiKey: models.providers.openai.baseUrlVoor een ongeldig plan worden geen schrijfbewerkingen vastgelegd: doelresolutie en padvalidatie worden uitgevoerd voordat een bestand wordt aangeraakt. Zodra een geldig plan begint te schrijven, maakt apply bovendien eerst een momentopname van elk betrokken bestand en herstelt het die momentopnamen als een latere schrijfbewerking binnen dezelfde uitvoering mislukt. Daardoor kunnen configuratie-, authenticatieprofiel- en omgevingsstatus nooit door een gedeeltelijke schrijfbewerking uit synchronisatie raken.
Toestemmingsgedrag voor exec-providers
--dry-runslaat controles voor exec-SecretRefs standaard over.- Plannen met exec-SecretRefs/providers worden in de schrijfmodus geweigerd, tenzij
--allow-execis ingesteld. - Geef bij het valideren/toepassen van plannen die exec bevatten
--allow-execdoor aan zowel de proefuitvoer- als de schrijfopdracht.
Opmerkingen over runtime- en auditbereik
- Alleen uit verwijzingen bestaande vermeldingen in
auth-profiles.json(keyRef/tokenRef) vallen onder het oplossen van referenties tijdens runtime en onder de auditdekking. secrets applyschrijft ondersteunde doelen inopenclaw.json, ondersteunde doelen inauth-profiles.jsonen voert drie optionele opschoningsrondes uit, die elk standaard zijn ingeschakeld:scrubEnv(verwijdert gemigreerde waarden in platte tekst uit.env),scrubAuthProfilesForProviderTargets(verwijdert resten in platte tekst en ongebruikte verwijzingen uitauth-profiles.jsonvoor providers die zojuist door een plan zijn gemigreerd) enscrubLegacyAuthJson(verwijdert gemigreerdeapi_key-vermeldingen uit verouderdeauth.json-opslaglocaties). Steloptions.scrubEnv,options.scrubAuthProfilesForProviderTargetsofoptions.scrubLegacyAuthJsonin het plan in opfalseom de betreffende ronde over te slaan.
Controles voor beheerders
# Plan valideren zonder te schrijvenopenclaw secrets apply --from /tmp/openclaw-secrets-plan.json --dry-run # Daarna daadwerkelijk toepassenopenclaw secrets apply --from /tmp/openclaw-secrets-plan.json # Voor plannen die exec bevatten, in beide modi expliciet toestemming gevenopenclaw secrets apply --from /tmp/openclaw-secrets-plan.json --dry-run --allow-execopenclaw secrets apply --from /tmp/openclaw-secrets-plan.json --allow-execAls apply mislukt met een melding over een ongeldig doelpad, genereert u het plan opnieuw met openclaw secrets configure of corrigeert u het doelpad naar een hierboven ondersteunde structuur.