Mehrere Admins
Ein Admin ist eine Person, deren Schlüssel Änderungen am Netz bestätigt. Mit mehreren Admins legst du fest, wie viele zustimmen müssen, bevor ein Gerät beitritt, geht oder eine Rolle bekommt.
Worum es geht
Jede Änderung am Netz, etwa ein Gerät aufnehmen, eines entfernen oder ihm eine Rolle geben, ist ein Eintrag im Mitgliederlog. Das Log ist die signierte Liste aller Änderungen, und jedes Gerät prüft sie selbst (So funktioniert juist). Eine Änderung gilt, sobald genug Admins sie signiert haben.
Ein Admin ist eine Person. Ein Admin-Schlüssel ist der Schlüssel, mit
dem diese Person signiert. Er liegt in ihrem Keystore, ~/.config/juist, als
Datei wie admins/alice@home.key. Ein Admin hat auf jedem Gerät, von dem aus
er bestätigt, einen eigenen Schlüssel. Kopiere nie einen Schlüssel auf ein
anderes Gerät; leg dort einen neuen an.
Das Quorum ist die Zahl der Stimmen, die eine Änderung braucht. Jeder Admin-Schlüssel hat eine Stimme, und die Schlüssel einer Person geben deren Stimmen nur einmal ab, egal welcher signiert. Angenommen, alice, bob und carol sind Admins mit je einer Stimme, und das Quorum ist 2. Dann können zwei beliebige von ihnen eine Änderung bestätigen, und eine Person darf im Urlaub sein. Allein kann niemand etwas ändern.
Ein Admin ist etwas anderes als ein Voucher. Ein Voucher ist ein Gerät mit
der Rolle voucher, das stündlich bestätigt, dass der Stand des Netzes
aktuell ist. Ein Voucher hat keinen Admin-Schlüssel.
Von beiden Laptops aus bestätigen
Dein Admin-Name steht in der Ausgabe von juist create in der Zeile Admin,
und juist admins listet ihn. Es ist dein Login-Name, außer du hast
--admin-name angegeben. Nimm diesen Namen für den Schlüssel des zweiten
Laptops; unter jedem anderen Namen wird der Schlüssel zu einem zweiten Admin.
Einen Schlüssel unter deinem Admin-Namen anlegen:
juist admins new aliceEs gibt den Befehl aus, der den Schlüssel hinzufügt, mit dem Schlüssel darin.
Den Befehl so ausführen, wie er ausgegeben wurde:
juist admins add alice nid:… --on laptop2Es gibt added a key of alice's; 2 keys, 1 signing aus.
juist admins zeigt dann, auf welchem Rechner jeder Schlüssel liegt. Eine
Änderung, die auf Bestätigung wartet, sagt, wo die Schlüssel sind, die sie
geben können.
Ein Schlüssel pro Netz
Jedes Netz bekommt einen eigenen Admin-Schlüssel, etwa
admins/alice@home.key. Ein verlorener oder gestohlener Schlüssel kostet dann
ein Netz, und die Logs zweier Netze teilen keinen Schlüssel.
- Ein Schlüssel aus
juist admins newwird unter dem ersten Netz abgelegt, dessen Log ihn nennt.juist admins new alice --network homenennt das Netz gleich. - Soll ein neues Netz mit einem Schlüssel verwaltet werden, den du schon hast,
sag es:
juist create lab --admin-key alice@home. juist adminslistet die Schlüssel auf diesem Rechner und die Netze, die jeder verwaltet.- Auf einem Rechner in keinem Netz sagt
juist approve --key alice@home FILE, welcher Schlüssel signiert.
Zwei Admins, und keiner entscheidet allein
Angenommen, alice und bob haben je zwei Geräte, und jede Änderung soll beide brauchen.
Jeden von bobs Schlüsseln hinzufügen, einmal pro Gerät von ihm. Bob legt sie
mit juist admins new bob an, das die passende Zeile ausgibt:
juist admins add bob nid:…Bob hat jetzt zwei Schlüssel, die zusammen eine Stimme abgeben.
Beide Admins für jede Änderung verlangen, und zwei Voucher, die bestätigen, dass der Stand des Netzes aktuell ist:
juist admins quorum 2
juist admins vouchers 2juist admins zeigt jetzt Quorum 2 of 2 votes.
Mit juist admins vouchers 2 kann ein Voucher, der über den Stand des Netzes
lügt, ein Gerät nicht allein täuschen. Er braucht einen Komplizen. Dafür
müssen zwei Voucher online sein.
Allein, mit zwei Geräten für jede Änderung
Du kannst auch der einzige Admin sein und trotzdem wollen, dass jede Änderung zwei deiner Geräte braucht:
juist admins require alice 2Halte dafür drei Schlüssel. Mit genau zwei kann der Verlust eines Geräts das Netz sperren.
Wenn eine Änderung einen anderen Admin braucht
Eine Änderung, die die Stimme eines anderen braucht, wartet auf den Voucher-Geräten des Netzes auf ihn. Das siehst du, wenn du die Änderung machst:
$ juist remove phone
remove phone (198.18.36.4 fd77:9359:d9fb:bcb6:5fc:cc5c:f45d:c475) from "home"? [y/N] y
pending remove-phone.rec: needs 1 more vote, from bob on nas; another admin runs, on an admin device or with the file:
juist approve
juist approve remove-phone.rec
Auf bobs Gerät sagt juist status dann 1 change waits for your vote: ….
Bob bestätigt sie dort:
$ juist approve
device removal, proposed by alice's key on laptop:
removes the device phone (nid:A7Bu6lgr…)
approve? [y/N] y
signed as bob's key on nas
applied
juist approve fragt nach jeder Änderung, die auf deine Stimme wartet. Was
sie bewirkt, zeigt es aus dem Eintrag und dem Log, nie aus dem Dateinamen.
Hat die Änderung ihre Stimmen, gilt sie auf jedem Gerät.
Damit eine wartende Änderung die Geräte eines Admins erreicht, führt jeder
Admin einmal juist admins receive aus. Wer ein Netz gegründet hat, hat das
schon getan. Es ist eine Änderung wie jede andere.
Änderungsdateien
Die Änderung wird auch als Datei gespeichert, etwa remove-phone.rec, in dem
Verzeichnis, in dem du den Befehl ausgeführt hast. Du kannst sie einem Admin
schicken, der auf einem Gerät im Netz ausführt:
juist approve remove-phone.recEs zeigt, was die Änderung bewirkt, fragt nach, signiert die Datei an Ort und
Stelle und wendet die Änderung an, sobald sie vollständig ist. juist apply
tut dasselbe.
Auf einem Rechner in keinem Netz kann ein Admin die Aufnahme eines Geräts bestätigen. Nichts aber, was ändern kann, wer bestätigt oder wer Voucher ist: keine Entfernung, keine Rolle, keinen Admin-Schlüssel, kein Quorum. Wen eine solche Änderung betrifft, sagt nur das Log.
Gut zu wissen
juist adminslistet alle Admins, ihre Stimmen, die Rechner, auf denen ihre Schlüssel liegen, das Quorum und die nötigen Voucher.juist admins add NAME KEY --votes Ngibt einem Schlüssel mehr als eine Stimme.juist create --admin-votes Ntut das für den Schlüssel, denjuist createanlegt.juist admins remove NAME|KEYnimmt einem Schlüssel die Stimme. Das wird abgelehnt, wenn die übrigen das Quorum nicht mehr erreichen.juist admins quorumwarnt, wenn jede Änderung jeden Admin braucht, denn dann sperrt der Verlust der Schlüssel eines Admins das Netz.- Admin-Schlüssel verlassen ihren Rechner nie, und dieser Rechner braucht kein
eigenes Netz.
juist create --no-devicelegt ein Netz von einem Rechner aus an, der nur signiert. - Führe Admin-Befehle als du selbst aus, ohne sudo: Die Schlüssel liegen in deinem Keystore.
juist logzeigt jede Änderung und wer sie bestätigt hat.
Gehen alle Schlüssel der Admins verloren, die eine Änderung braucht, ist das
Netz für immer gesperrt. Die Break-Glass-Geheimnisse, die juist create
schreibt, sind für eine Wiederherstellung gedacht, die es noch nicht gibt.
Bewahre sie trotzdem offline auf. Gib dem Netz mehr Admins, als das Quorum
braucht, jeden mit eigenen Geräten
(Schlüssel).
Wenn etwas nicht klappt
| Du siehst | Was zu tun ist |
|---|---|
hint: for changes waiting for your vote to reach you: juist admins receive | einmal juist admins receive ausführen |
hint: bob cannot read it on an admin device yet; send them the file | bob die .rec-Datei schicken; er führt juist approve FILE aus |
juist: no admin key of this network in … | den Befehl dort ausführen, wo der Schlüssel eines Admins liegt |
juist: run as alice, without sudo: … | ohne sudo noch einmal ausführen |
….rec: outdated by a later change | wer die Änderung begonnen hat, macht sie neu |