docs: record tailscale acl plan and watcher activation
This commit is contained in:
+72
-13
@@ -91,22 +91,81 @@ tailscale ip -4
|
||||
tailscale ip -6
|
||||
```
|
||||
|
||||
### ACL-Policy (Operator-Entscheidung offen)
|
||||
### ACL-Policy — Entwurf und Rollout-Plan (Stand 2026-06-05, NICHT angewendet)
|
||||
|
||||
Die Tailnet-ACL ist aktuell nicht im Repo gespiegelt. Sie wird in der
|
||||
Tailscale-Admin-Konsole unter `Access controls` verwaltet (kein Wert/Secret
|
||||
gehoert ins Repo). Offene Entscheidung:
|
||||
Die Tailnet-ACL wird in der Tailscale-Admin-Konsole unter `Access controls`
|
||||
verwaltet (kein Wert/Secret gehoert ins Repo). Aktueller Live-Stand ist
|
||||
Default-Allow (`src: ["*"] -> dst: ["*:*"]`), d. h. jedes Tailnet-Geraet darf
|
||||
alles inklusive der LAN-Subnet-Route.
|
||||
|
||||
- Default-Allow belassen (jedes Tailnet-Geraet darf alles, inkl. der
|
||||
LAN-Subnet-Route), **oder**
|
||||
- restriktivere, Tag-basierte ACL einfuehren: nur Operator-Geraete duerfen die
|
||||
Subnet-Route `192.168.178.0/24` und die Admin-Ports nutzen, Familien-/Mobil-
|
||||
geraete nur die explizit benoetigten Dienste.
|
||||
**Abgestimmte Richtung (Operator-Entscheidungen 2026-06-05):**
|
||||
|
||||
Empfehlung (zur Entscheidung, nicht umgesetzt): Da der Subnet-Router das ganze
|
||||
LAN ins Tailnet bringt, ist eine restriktive ACL der wirksamste Hebel. Naechster
|
||||
Schritt waere, die aktuelle Policy read-only aus der Admin-Konsole zu sichten
|
||||
und dann eine Tag-Struktur (`tag:operator`, `tag:family`) zu entwerfen.
|
||||
- Ziel ist eine restriktivere, Tag-basierte ACL.
|
||||
- Single-User-Realitaet: aktuell gehoeren alle Nodes demselben User
|
||||
`michaelkaleschke@`. Eine Differenzierung Operator/Familie ist nur ueber
|
||||
**Tags** moeglich. Tagging aendert Ownership/Key-Expiry und erfordert je Geraet
|
||||
Re-Auth — deshalb bewusst ein eigener, spaeterer Schritt.
|
||||
- **Heute bewusst nur Sichtung + Entwurf, kein Tagging, keine Anwendung.**
|
||||
- Familiengeraete brauchen Tailnet-Zugriff auf **bestimmte** Dienste (welche
|
||||
genau, ist noch zu konkretisieren) — `tag:family` bekommt gezielte `dst`-Regeln.
|
||||
- `iphone-14` ist ein Operator-Geraet und faellt unter `tag:operator`.
|
||||
|
||||
**Geraete -> Tag (fuer den spaeteren Tagging-Schritt):**
|
||||
|
||||
| Tag | Geraete |
|
||||
|---|---|
|
||||
| `tag:server` | `kallilabcore` (Host, Subnet-Router) |
|
||||
| `tag:operator` | `baerchen-1`, `iphone-14` |
|
||||
| `tag:family` | kuenftige Familiengeraete |
|
||||
|
||||
**Entwurf (Vorschlag, noch nicht in der Konsole gespeichert):**
|
||||
|
||||
```json
|
||||
{
|
||||
"tagOwners": {
|
||||
"tag:server": ["autogroup:admin"],
|
||||
"tag:operator": ["autogroup:admin"],
|
||||
"tag:family": ["autogroup:admin"]
|
||||
},
|
||||
"autoApprovers": {
|
||||
"routes": { "192.168.178.0/24": ["tag:server"] }
|
||||
},
|
||||
"acls": [
|
||||
{ "action": "accept", "src": ["tag:operator"], "dst": ["*:*"] },
|
||||
{ "action": "accept", "src": ["tag:server"], "dst": ["tag:operator:*"] },
|
||||
{ "action": "accept", "src": ["tag:family"], "dst": ["100.80.98.33:443"] }
|
||||
],
|
||||
"ssh": [
|
||||
{ "action": "accept", "src": ["tag:operator"], "dst": ["tag:server"],
|
||||
"users": ["root", "autogroup:nonroot"] }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
> Die `tag:family`-`dst` `100.80.98.33:443` ist ein **Platzhalter** und wird
|
||||
> durch die real benoetigten Familien-Dienste ersetzt, sobald diese feststehen.
|
||||
|
||||
**Lockout-sichere Reihenfolge (wenn die Umsetzung freigegeben wird):**
|
||||
|
||||
1. `tagOwners` + `autoApprovers` + neue ACL-Regeln speichern, **Allow-all-Regel
|
||||
zunaechst behalten**.
|
||||
2. Geraete taggen (`baerchen-1`, `iphone-14` -> operator; `kallilabcore` ->
|
||||
server) und je Geraet die Verbindung verifizieren.
|
||||
3. Subnet-Route bleibt approved (jetzt via `autoApprovers`/`tag:server`).
|
||||
4. **Erst zuletzt** die Allow-all-Regel entfernen -> restriktiv schalten.
|
||||
5. Sofort Smoke-Tests fahren (siehe unten).
|
||||
|
||||
**Smoke-Tests nach Anwendung:**
|
||||
|
||||
- `baerchen-1` erreicht Host: `ping 100.80.98.33`, `ssh kallilabcore hostname` (read-only).
|
||||
- `baerchen-1` erreicht LAN ueber Route: z. B. AdGuard-Admin `http://100.80.98.33:8082`, `curl -kI https://192.168.178.58`.
|
||||
- Falls testbar: ein nicht-Operator-Geraet erreicht Route/Admin-Ports **nicht** mehr.
|
||||
- Host-Gegencheck: `tailscale status` zeigt alle Soll-Peers weiter verbunden.
|
||||
|
||||
**Noch offene Eingaben vor Finalisierung:**
|
||||
|
||||
1. Aktueller ACL-JSON aus der Admin-Konsole (read-only gesichtet, nur Struktur dokumentiert).
|
||||
2. Konkrete Liste der Dienste/Ports, die Familiengeraete ueber Tailscale brauchen.
|
||||
|
||||
## Portfreigaben und Exposure
|
||||
|
||||
|
||||
Reference in New Issue
Block a user