Spezifikation v0.1 · offen · herstellerneutral

Die Home-Mandate-Spezifikation implementieren

Alles, um einen Wächter, eine Agent-Anbindung oder einen Validator zu bauen – und zu zeigen, dass er konform ist.

Wer mit wem spricht

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 lesen
Agentein Assistent, ein Skript, …
Anfrage: Ressource + Aktionz. B. MCP · HTTPS · OAuth 2.1
Implementierung
PEPder Wächter: nimmt Anfragen an, setzt Entscheidungen durch
AuthZEN-Anfrage(Abschnitt 6)
erlauben / nachfragen / ablehnen
PDPAuswerteregel
Einträge(Abschnitt 9)
Audit-Log
Befehl über die API der Plattform
Smart-Home-Plattformz. B. Home Assistant, Matter
bei Nachfragen: Bestätigung(Abschnitt 11.1)
legt das Mandat fest(Abschnitt 3)
Menschder Haushalt
von der Spezifikation festgelegt Sache der Implementierung

Datenmodell im Überblick

Ein 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
Mandate
FeldTyp
type"https://home-mandate.org/mandate/v0"
idstring
namestring?
principalstring
agent{client_id, display_name}
enforcefalse?
rulesRule[]
default"deny"
approvalApproval
limits{max_actions_per_hour}
valid_fromdate-time
expiresdate-time?
issueruri?
audienceuri?
versioninteger?
created_bystring
created_atdate-time
Rule
FeldTyp
idstring
resourceResource
actionsstring[]
decisionallow|ask|deny
notestring?
conditionsConditions?
constraintsConstraints?
approvalApproval?
allow_criticaltrue?

? kennzeichnet ein optionales Feld. Erzeugt aus dem JSON Schema des Mandats.

Konformitätsklassen

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.

  • evaluator Basis

    Evaluator

    Prüft Mandate, berechnet ihre Digests und wertet Anfragen aus (Abschnitte 3 und 4).

    478 Testfälle

  • selection optional

    Auswahl

    Wählt unter mehreren gespeicherten Mandaten das aus, das ausgewertet wird (Abschnitt 4.3).

    29 Testfälle

  • signatures optional

    Signaturen

    Prüft signierte Mandate und die Nachfolge von Mandatsversionen (Abschnitte 3.5 und 7).

    58 Testfälle

  • audit optional

    Audit

    Prüft die Hash-Kette von Audit-Protokollen und berechnet die Digests der Einträge (Abschnitt 9.4).

    217 Testfälle

  • audit-anchored optional

    Verankertes Audit

    Prüft zusätzlich die signierten Checkpoints eines Protokolls (Abschnitt 9.5).

    11 Testfälle

  • pdp optional

    PDP

    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.

Installieren und testen

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.

Testwerkzeug installieren (braucht Go)
go install github.com/home-mandate/spec/cmd/mandate-conformance@v0.1.1
Über dein Harness testen
mandate-conformance -report report.json -exec ./your-harness
Einen PDP über HTTP testen
mandate-conformance -report report.json -authzen https://pdp.test -control https://pdp.test/test/state

Downloads

Dateien mit der SHA-256-Prüfsumme kontrollieren. Jedes Format hat auch eine eigene Adresse: Mandat, Protokolleintrag und Prüfpunkt.

Mandats-Schema

Version der Spezifikationv0.1.1

JSON Schema eines Mandats und seiner Regeln.

mandate.schema.json · 11 KB

SHA-256 6b1452c1…c7b7 ZeigenVerbergen 6b1452c1070780ce841d0158116bf4cf2fa08a41e2fc966ac359636ddb72c7b7
Herunterladen: Mandats-Schema

Vokabular

Version der Spezifikationv0.1.1

13 Gerätekategorien, ihre Aktionen und welche davon kritisch sind.

vocabulary-v0.json · 3 KB

SHA-256 954b4dfc…3222 ZeigenVerbergen 954b4dfc9ccec520c4d2c90dc55a74e8eec67790a643c1c91719904d338b3222
Herunterladen: Vokabular

Audit-Schema

Version der Spezifikationv0.1.1

JSON Schema eines Eintrags im Audit-Protokoll.

audit.schema.json · 31 KB

SHA-256 0571f424…0ed2 ZeigenVerbergen 0571f424d81fbd74c5ca82a5c2489101d526fd4bcafec11074eabfc1e8390ed2
Herunterladen: Audit-Schema