Mandats-Schema
Version der Spezifikationv0.1.1JSON Schema eines Mandats und seiner Regeln.
SHA-256 6b1452c1…c7b7 ZeigenVerbergen
6b1452c1070780ce841d0158116bf4cf2fa08a41e2fc966ac359636ddb72c7b7Spezifikation v0.1 · offen · herstellerneutral
Alles, um einen Wächter, eine Agent-Anbindung oder einen Validator zu bauen – und zu zeigen, dass er konform ist.
Ein Agent spricht nie direkt mit einem Gerät. Er schickt seine Anfrage an die Implementierung. Die entscheidet mit dem Mandat des Haushalts und gibt erst dann einen Befehl an die Smart-Home-Plattform weiter. Die durchgezogenen Linien legt die Spezifikation fest; wie die gestrichelten funktionieren, bestimmt die Implementierung.
Abschnitt 1.1 der Spezifikation lesenEin Mandat gehört zu einem Agenten und enthält Regeln. Jede Regel nennt Ressourcen (ein Gerät, eine Kategorie oder einen Bereich), Aktionen und eine Entscheidung. Die Reihenfolge spielt nie eine Rolle: Von allen passenden Regeln gewinnt die strengste Entscheidung.
Abschnitt 3 der Spezifikation lesen| Feld | Typ |
|---|---|
| type | "https://home-mandate.org/mandate/v0" |
| id | string |
| name | string? |
| principal | string |
| agent | {client_id, display_name} |
| enforce | false? |
| rules | Rule[] |
| default | "deny" |
| approval | Approval |
| limits | {max_actions_per_hour} |
| valid_from | date-time |
| expires | date-time? |
| issuer | uri? |
| audience | uri? |
| version | integer? |
| created_by | string |
| created_at | date-time |
| Feld | Typ |
|---|---|
| id | string |
| resource | Resource |
| actions | string[] |
| decision | allow|ask|deny |
| note | string? |
| conditions | Conditions? |
| constraints | Constraints? |
| approval | Approval? |
| allow_critical | true? |
? kennzeichnet ein optionales Feld. Erzeugt aus dem JSON Schema des Mandats.
Eine Implementierung ist zu einer oder mehreren Klassen konform. Zu einer Klasse einer Version ist sie konform, wenn sie alle Fälle dieser Klasse besteht.
Prüft Mandate, berechnet ihre Digests und wertet Anfragen aus (Abschnitte 3 und 4).
478 Testfälle
Wählt unter mehreren gespeicherten Mandaten das aus, das ausgewertet wird (Abschnitt 4.3).
29 Testfälle
Prüft signierte Mandate und die Nachfolge von Mandatsversionen (Abschnitte 3.5 und 7).
58 Testfälle
Prüft die Hash-Kette von Audit-Protokollen und berechnet die Digests der Einträge (Abschnitt 9.4).
217 Testfälle
Prüft zusätzlich die signierten Checkpoints eines Protokolls (Abschnitt 9.5).
11 Testfälle
Beantwortet AuthZEN-Anfragen aus eigenem Mandatsspeicher und Ressourcenverzeichnis (Abschnitte 4.3 und 6).
gültige Fälle aus evaluator und selection, über HTTP
Evaluator ist die Basis: Wer angibt, Mandate auszuwerten, ist dazu konform. Die Pflichten des Wächters (Abschnitt 11) lassen sich noch nicht von außen testen; eine Implementierung legt dar, wie sie sie erfüllt.
Das Testwerkzeug mandate-conformance enthält die Fälle seiner Version und spielt sie gegen deine Implementierung ab, egal in welcher Sprache: über ein kleines Harness-Programm, das pro Anfrage eine JSON-Zeile liest und schreibt, oder über HTTP für einen PDP. Sein Bericht nennt Version, Klassen und Manifest.
Abschnitt 10 der Spezifikation beschreibt beide Wege.
go install github.com/home-mandate/spec/cmd/mandate-conformance@v0.1.1 mandate-conformance -report report.json -exec ./your-harness mandate-conformance -report report.json -authzen https://pdp.test -control https://pdp.test/test/state Dateien mit der SHA-256-Prüfsumme kontrollieren. Jedes Format hat auch eine eigene Adresse: Mandat, Protokolleintrag und Prüfpunkt.
JSON Schema eines Mandats und seiner Regeln.
6b1452c1070780ce841d0158116bf4cf2fa08a41e2fc966ac359636ddb72c7b713 Gerätekategorien, ihre Aktionen und welche davon kritisch sind.
954b4dfc9ccec520c4d2c90dc55a74e8eec67790a643c1c91719904d338b3222JSON Schema eines Eintrags im Audit-Protokoll.
0571f424d81fbd74c5ca82a5c2489101d526fd4bcafec11074eabfc1e8390ed2