Bezpieczeństwo pluginów#
System pluginów vCLU zapewnia bezpieczeństwo na wielu poziomach. Instalacja pluginu nie może zepsuć Twoich istniejących automatyzacji, a każdy plugin działa w odizolowanym środowisku.
Dlaczego to ważne#
Pluginy to kod pisany przez społeczność lub zewnętrznych dostawców. vCLU musi gwarantować, że:
- wadliwy plugin nie zawiesi całego systemu
- złośliwy plugin nie uzyska dostępu do Twoich danych
- odinstalowanie pluginu nie pozostawi śmieci
Izolacja – każdy plugin w swojej piaskownicy#
Każdy plugin działa w odizolowanym środowisku (sandbox), oddzielonym od Twojego kodu i od innych pluginów:
graph TD
subgraph "Środowisko vCLU"
modules["Twój kod (modules/)<br/>Pełny dostęp do systemu"]
subgraph "Plugin: pogoda"
pt[Timery]
pe[Zdarzenia]
pm[MQTT]
pk["Dane (KV)"]
end
subgraph "Plugin: salda"
st[Timery]
se[Zdarzenia]
sm[MQTT]
sk["Dane (KV)"]
end
shared["Współdzielone (tylko do odczytu):<br/>rejestr urządzeń, Logger, JSON"]
endCo plugin może, a czego nie#
Dozwolone#
| Możliwość | Opis |
|---|---|
| Tworzyć timery | Okresowe zadania (np. odpytywanie API co minutę) |
| Subskrybować MQTT | Nasłuchiwanie na wiadomości z brokera |
| Publikować MQTT | Wysyłanie wiadomości do brokera |
| Wysyłać zapytania HTTP | Komunikacja z zewnętrznymi serwisami |
| Tworzyć własne obiekty | Sensory, przełączniki w swoim namespace |
| Reagować na zdarzenia | EventBus – reaguj na zmiany w systemie |
| Zapisywać dane | Własny KV store, przetrwa restart |
| Czytać rejestr urządzeń | Widzi stan wszystkich urządzeń (tylko do odczytu) |
Zablokowane#
| Blokada | Powód |
|---|---|
| Dostęp do systemu plików | Ochrona przed odczytem/zapisem plików |
| Wykonywanie komend systemowych | Ochrona przed przejęciem systemu |
| Modyfikacja cudzych urządzeń | Ochrona integralności rejestru |
| Ładowanie zewnętrznego kodu | Ochrona przed wstrzyknięciem kodu |
| Introspekcja środowiska | Ochrona przed ucieczką z sandboxa |
Własny namespace#
Każdy plugin może tworzyć obiekty tylko w swoim namespace. Plugin @vclu/weather
może tworzyć obiekty jak plugins.vclu.weather.temperature, ale nie może
modyfikować obiektów z CLU220000592.DOUT1 ani plugins.vclu.salda.outsideAir.
Obiekty spoza namespace pluginu są dostępne w trybie tylko do odczytu – plugin może sprawdzić stan dowolnego urządzenia, ale nie może go zmienić bezpośrednio.
Dane pluginu (KV Store)#
Każdy plugin ma własną, izolowaną przestrzeń do przechowywania danych:
- Dane przetrwają restart systemu i aktualizację pluginu
- Plugin widzi tylko swoje dane – nie ma dostępu do danych innych pluginów
- Dane wrażliwe (np. tokeny API) mogą być oznaczone jako “secure” – nie będą widoczne w ogólnym podglądzie
Komunikacja między pluginami#
Pluginy nie mogą się bezpośrednio wywoływać, ale mogą komunikować się przez wspólne mechanizmy:
graph LR
A["Plugin A"]
B["Plugin B"]
A -->|"EventBus<br/>weather.updated"| B
A -->|"MQTT<br/>sensors/temp"| B
B -.->|"Registry (readonly)<br/>getObject('...temp')"| A- Zdarzenia (EventBus) – plugin wysyła zdarzenie, inny nasłuchuje
- MQTT – komunikacja przez broker wiadomości
- Rejestr urządzeń – odczyt obiektów utworzonych przez inne pluginy
Bezpieczna instalacja i odinstalowanie#
Instalacja#
Plugin jest pobierany z repozytorium i uruchamiany w piaskownicy. Twój istniejący kod nie jest w żaden sposób modyfikowany.
Odinstalowanie#
System automatycznie czyści wszystkie zasoby pluginu:
- Zatrzymanie timerów
- Anulowanie subskrypcji zdarzeń
- Odsubskrybowanie MQTT
- Usunięcie obiektów z rejestru
- Usunięcie danych pluginu (KV store)
- Zwolnienie środowiska sandbox
Nie ma ryzyka “wycieku” zasobów – po odinstalowaniu system jest czysty, jakby plugin nigdy nie był zainstalowany.
Przeładowanie (hot reload)#
Aktualizacja pluginu polega na odinstalowaniu starej wersji (z pełnym czyszczeniem) i zainstalowaniu nowej. Jedyne, co przetrwa, to dane w KV store – timery, subskrypcje i obiekty są tworzone od nowa.
Ochrona przed błędami#
Błąd w kodzie pluginu (wyjątek, timeout) jest przechwytywany i logowany, ale nie zatrzymuje działania reszty systemu. Inne pluginy, Twoje automatyzacje i integracje (HomeKit, MQTT) działają dalej bez przeszkód.
Pluginy z oficjalnego repozytorium#
Pluginy z oficjalnego repozytorium vCLU są sprawdzone i bezpieczne. Przechodzą review kodu i testy przed publikacją. Jeśli instalujesz pluginy z zewnętrznych źródeł, robisz to na własne ryzyko – mechanizmy izolacji nadal działają, ale jakość kodu nie jest gwarantowana.