Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Katalog modelů hlásí, zda je nastavena pojmenovaná proměnná s přihlašovacími údaji dodavatele, a nemůže nést žádnou tajnou hodnotu — schéma nemá pole, ve kterém by se dala skrýt

Položka vendora může jmenovat proměnnou prostředí, v níž žije její credential

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

credential_env pojmenovává proměnnou prostředí a zjišťuje se pouze std::env::var_os(..).is_some(); test projde JSON schéma katalogu a odmítne každý název vlastnosti, který zavání přihlašovacím údajem.

Co to znamená

Položka dodavatele může jmenovat proměnnou prostředí, v níž žijí jeho přihlašovací údaje (credential_env: ANTHROPIC_API_KEY), a každý výpis odpovídá o ní jedním bitem: nastaveno, nebo ne. Žádná cesta kódu nečte hodnotu proměnné; žádné pole katalogu, jeho schématu ani projekce nemůže nést klíč, token ani heslo — takže únik přes povrch models by vyžadoval nejdřív přidat nové pole, což je zkontrolovaná změna, ne nehoda.

Princip

Přítomnost je std::env::var_os(name).is_some() a nic víc (apps/majordomus-cli/src/capability/builtin/models.rs); odpověď je boolean vedle dodavatele. Vlastnost drží test, který prochází vlastní JSON schéma katalogu (apps/majordomus-cli/src/models/mod.rs) a odmítne jakýkoli název vlastnosti, který zavání přihlašovacími údaji — takže to, co nemůže držet tajemství, je schéma, ne konvence. test/cases/131_models.sh dokazuje polovinu viditelnou provozovateli: nastavení pojmenované proměnné přepne zprávu na „configured“ a hodnota se nikde ve výstupu neobjeví.

Jak to vidět

majordomus models list                   # "credential configured" / "not configured"
CASE_KEY=value majordomus models list    # flips the report; the value appears nowhere
cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib no_field_of_the_catalogue

test/cases/131_models.sh vygrepuje kanárkovou hodnotu přihlašovacího údaje z každého vykreslení a selže, pokud se kdy objeví.

Co nepokrývá

Nespravuje přihlašovací údaje — žádné ukládání, rotace ani ověřování, že klíč skutečně funguje. Přítomnost pojmenované proměnné je celý fakt, protože je to celý fakt, který tento nástroj může čestně uvést.

Proč existuje

Úniky přihlašovacích údajů přes výpisy a diagnostiku jsou klasickým selháním inventářních povrchů. Schéma bez pole, které by mohlo tajemství obsadit — držené testem, který schéma prochází, ne konvencí — posouvá vlastnost od „všichni jsou opatrní“ k „typový systém odmítne“ (ADR 0049).

Detail vykreslený z docs/claims/models-no-secret-fields.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Katalog modelů hlásí, zda je nastavena pojmenovaná proměnná s přihlašovacími údaji dodavatele, a nemůže nést žádnou tajnou hodnotu — schéma nemá pole, ve kterém by se dala skrýt

    Vytvořeno na Models.

  2. 2 · kanonické tvrzení

    models-no-secret-fieldsdeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v přečtěte si to na tomto webu · docs/MODELS.md

  3. 3 · implementace

    apps/majordomus-cli/src/models/mod.rs

  4. 4 · test a scénáře

    Test: test/cases/131_models.sh

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh 131_models

Související tvrzení stejná implementace

Prohledává názvy a popisy všech stránek, které tento web publikuje.