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
Brzi početak: pohranite prvu tajnu i uputite na nju — najkraći put do prvog rezultata, u tri koraka.
Provjerite preduvjete → Odredite izvor ključa → Odaberite shemu → Dokažite pristupe
Č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/.
Š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/.
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 |
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:
- Promijenite postavku.
- Na upravljačkom zaslonu izvedite ponovno šifriranje.
- 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 starupromote()— pripremljenu vrijednost učiniti važećom
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“.
Preduvjeti
- PHP 8.2 ili noviji.
- 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