Vi ste ovdje: start » hr » Interna dokumentacija » DokuWiki proširenja (WvdS) » WvdS Vault

WvdS Vault

Vault je jedino mjesto za tajne podatke operatera ove obitelji paketa: pohranjeni šifrirano, s datumom isteka, rotacijom preko predaje i zapisnikom pristupa. Bez njega pristupni podaci leže na onoliko mjesta koliko ima paketa. Paket je namijenjen administratorima koji moraju unositi tajne, mijenjati ih i dokazivati njihovu uporabu.

Prvi koraci

Česti zadaci

Što želite Za koga Gdje to radite Upute
unijeti ili promijeniti tajnu administracija Administracija > Trezor Pet shema
planski zamijeniti tajnu administracija Administracija > Trezor Rotacija
promijeniti izvor ključa administracija Promjena izvora ključa
dokazati tko je i kada pristupio administracija Administracija > Trezor Zapisnik pristupa
razumjeti drugi čimbenik prije pristupa administracija Drugi čimbenik
znati što trezor ne radi administracija Što trezor ne radi

Svrha

Jedno mjesto za tajne podatke operatera ove zbirke: pohranjeni šifrirano, s datumom isteka, rotacijom preko predaje i zapisnikom pristupa. Bez njega pristupni podaci leže na onoliko mjesta koliko ima dodataka, u onoliko oblika koliko su ih njihovi autori izmislili — a barem jedan od njih je otvoreni tekst u conf/local.php.

Prijavljena usluga (vidi Core): vault.secrets. Zapisi leže preko Storage u data/dwdo/.

Nije nedostajao postupak šifriranja — nedostajalo je mjesto. To je zadaća ovog dodatka, i iz toga slijedi granica u sljedećem odjeljku.

Što trezor izričito ne radi

Granica stoji na početku jer je kod trezora ona najvažnija obavijest.

Uz zadani izvor ključa salt glavni se ključ izvodi iz instancijske soli wikija. Ta sol leži pod data/meta/ — istoj grani kao i baza trezora pod data/dwdo/.

Izmjereno, ne pretpostavljeno: uobičajena sigurnosna kopija mape data/ sadrži ključ i šifrat zajedno. Tko drži taj arhiv, dopire do tajni. Od toga vas ovaj dodatak ne štiti.

Od čega štiti jest sve s ove strane: stranica koja je odala previše, predaleko postavljeno pravo pristupa datoteci, dodatak koji zapisuje vlastitu konfiguraciju, baza podataka predana razvijatelju.

Taj se razred izloženosti može potpuno napustiti odabirom drugog izvora ključa — vidi Konfiguracija. env i file smještaju ključ izvan data/ i time izvan sigurnosne kopije wikija.


Pet shema, jedna odluka operatera

Dodatak kojemu treba lozinka ne dobiva vrijednost, nego uputnicu. Koji izvor instalacija koristi odlučuje time operater, a ne autor svakog pojedinog dodatka.

Uputnica Značenje
vault:{oznaka} Zapis iz ovog trezora
env:{ime} Varijabla okoline
file:{putanja} Datoteka ispod direktorija podešenog u file_root
enc:… Vrijednost pohranjena neposredno šifrirano
plain:… Otvoreni tekst, izričito označen kao takav

Razrješava se iz vlastitog dodatka preko SecretRef; ishod razlikuje dva slučaja koja se ne smiju pomiješati:

Ishod Značenje
null ništa nije bilo podešeno
SecretRefException nešto je bilo podešeno i nije se moglo unovčiti
To su različiti problemi. „Lozinka nije pohranjena“ je korak postavljanja koji još nedostaje; „uputnica se ne može unovčiti” je greška u postojećoj postavi. Poruka koja oboje jednako tretira šalje operatera u krivom smjeru.

Konfiguracija

Postavka Zadano Značenje
keysource salt Podrijetlo glavnog ključa: salt, env ili file
keysource_ref prazno Ime varijable za env, putanja datoteke za file; uz salt bez učinka
file_root prazno Korijenski direktorij u kojem uputnice file: moraju ostati. Prazno posve isključuje shemu
log_page_size 100 Redaka po stranici u zapisniku pristupa
log_keep_days 365 Starost od koje zapisi pristupa istječu; 0 ih zadržava trajno
file_root je prazan po zadanom i time zatvoren u slučaju kvara. Uputnica je konfiguracija koju isporučuje operater; bez korijena koji je zatvara, file: bio bi alat za čitanje proizvoljnih datoteka u ruhu tajne.
salt je zadani jer ne traži postavljanje — i najslabiji je od trojice. env i file oba se mogu kopirati na drugi stroj i drugi operacijski sustav. Upravo taj zahtjev isključuje spremišta vezana uz stroj (DPAPI, TPM, privjesak ključeva): trezor čiji ključ ne može napustiti računalo nepovratan je nakon kvara stroja — sigurnosna kopija postoji i nečitljiva je.

Promjena izvora ključa

Promjena je podržana i sama po sebi bezopasna: svaka vrijednost nosi otisak ključa pod kojim je šifrirana, nikada sam ključ. Postojeći se zapisi zato i dalje dešifriraju, a novi upisi koriste novi izvor.

Redoslijed je obvezujući:

  1. Promijenite postavku.
  2. Na upravljačkom zaslonu izvedite ponovno šifriranje.
  3. Tek nakon toga uklonite stari ključni materijal.

Zaslon preko keyUsage() javlja koliko zapisa još leži pod starim otiskom. To su točno oni koji bi pri preranom uklanjanju postali nečitljivi.


Rotacija: dva pretinca, četiri koraka

Zapis ima dva pretinca. Nova se vrijednost najprije priprema i pritom ništa ne prebacuje; tek je preuzimanje čini važećom vrijednošću.

  • stage() — pripremiti novu vrijednost, tekući rad i dalje koristi staru
  • promote() — pripremljenu vrijednost učiniti važećom
Redoslijed glasi pripremiti → provjeriti → preuzeti → opozvati kod pružatelja. Svaki drugi redoslijed ima razdoblje u kojem je odgovor pogrešan.

Zapisnik pristupa

Po svakom čitanju, pisanju i preuzimanju jedan redak s izvršiteljem, zapisom, radnjom i ishodom — i nikada vrijednost. To je razlika između trezora i šifrirane datoteke.

Usluga vault.secrets izdaje isključivo čitanje (read(), has()) i veže izvršitelja. Dodatak kojemu treba lozinka time ne može ni rotirati jednu ni čitanje pripisati nekom drugom.

Pospremanje ide preko izvršavanja zadaća indeksera, dakle pri uobičajenim pozivima stranica. Na wikiju bez prometa zapisi zato jednostavno ostaju.


Drugi čimbenik prije svakog pristupa tajnom materijalu

Osigurano preko Identity Plugin Contract v1 (opis ugovora): most do=wkvault_stepup s čvrsto ugrađenim popisom kategorija.

Kategorija Vrijedi za
create Stvoriti zapis
rotate Pripremiti vrijednost
delete Obrisati zapis
rekey Promijeniti izvor ključa i sve ponovno šifrirati

Provjerava se dvostruko — pri čitanju dok se zaslon crta i ponovno pri slanju —, i u oba slučaja dodatno uz DokuWiki popis pristupa, nikada umjesto njega. Bez wkidentity paket se ponaša nepromijenjeno.

Most nikada ne prima zahtjev koji isporučuje pozivatelj, nego samo ime s vlastitog popisa; nepoznato ime daje odbijanje, nikada „nema zahtjeva“.

Od 9. kolovoza 2026. „brisanje” nosi i rang opasnosti. Prije toga je najrazornija radnja paketa stajala na rangu gumba koji ne definira nijedan stilski predložak — bila je time neoblikovana i nije nosila nikakav vidljivi znak, neposredno pokraj istaknutog „preuzmi“. Nedostatak oznake izgleda kao odluka, a to nije bio.

Preduvjeti

  • PHP 8.2 ili noviji.
  • Core za prijavu usluge i Storage za zapise — oba obvezna, ne po izboru.
  • Administratorska prava za upravljački zaslon.

Shema stvara dvije tablice, “vault.secret” i “vault.zugriff”, svaku idempotentno. Točka pripada imenu i odvaja modul, otkako svi moduli drže svoje tablice u zajedničkoj bazi; u SQL-u mora uvijek stajati pod navodnicima, jer je SQLite inače čita kao razdjelnik baze i ne pronalazi tablicu.


Granice

  • Zadani izvor ključa dijeli sigurnosnu kopiju s podacima — vidi gore.
  • Istekla tajna i dalje se isporučuje. Istek je poziv, a ne osiguranje: odbiti isporuku na određeni dan zaustavilo bi istodobno slanje pošte, baze podataka i pristup repozitoriju, i to iz upravnog razloga.
  • Priprema ništa ne prebacuje. To čini samo preuzimanje. To je oblik gradnje, a ne nedostatak.
  • Trezor kod pružatelja ne može ništa opozvati. Dovršiti rotaciju poništavanjem stare pristupne ovlasti ostaje zadaća operatera.
  • Izgubljen ključni materijal znači izgubljene vrijednosti. Put oporavka po gradnji ne postoji.
  • Pospremanje ovisi o indekseru wikija.

Podaci o paketu

Dodatak: wkvault
Imenski prostor: lib/plugins/wkvault/
Autor: Wolfgang van der Stille Wolfgang.van.der.Stille@gmail.com (The White Knight Labs)
Licencija: GPL 2

hr/wiki/dwe/wkvault/start.txt · Zadnja izmjena: od 0.0.0.0