Professional ACL para Home Assistant

Sistema profesional de control de acceso para Home Assistant: reglas de denegación, permisos por etiqueta, roles personalizados y permisos por servicio y automatización.

El sistema de permisos actual de Home Assistant tiene tres roles fijos (Administrator, User, Read Only) y carece de varias piezas básicas para un uso multi-usuario realista. No puedes negar acceso a una entidad concreta manteniendo el resto abierto. No puedes impedir a alguien que reinicie HA mientras le permites encender luces. No puedes usar las etiquetas (que ya existen) como eje de permisos. No puedes crear roles a medida.

Este esfuerzo extiende el motor de permisos existente para resolverlo, manteniendo plena retrocompatibilidad con instalaciones actuales: cero cambio de comportamiento si no usas las funciones nuevas.


Qué añade

  • Reglas de denegación (deny): excluye explícitamente entidades, servicios o automatizaciones concretas. Deny siempre prevalece sobre allow — concede acceso amplio y luego restringe lo que necesites quirúrgicamente.
  • Permisos por etiqueta: etiqueta las entidades como «protected» y restringe por etiqueta. Cuando añadas un dispositivo nuevo y le pongas esa etiqueta queda automáticamente restringido, sin tocar la política.
  • Roles personalizados: crea roles como «Gestor de casa», «Invitado» o «Niños» con permisos a medida, sin estar limitado a los tres del sistema.
  • Permisos por servicio: controla qué servicios puede invocar un usuario. Por ejemplo, permitir light.turn_on y denegar homeassistant.restart.
  • Permisos por automatización: controla quién puede ver, editar o disparar una automatización o script concreto.

Ejemplo: rol «Gestor de casa»

Un usuario que puede controlar todo excepto las entidades protegidas y los servicios críticos:

    Todas las entidades: read + control + edit Entidades con etiqueta «protected»: deny control + edit Todos los servicios: allow homeassistant.restart y homeassistant.stop: deny Todas las automatizaciones: read + trigger Automatizaciones con etiqueta «protected»: deny edit

El superadmin solo tiene que etiquetar lo crítico como «protected» y los permisos lo siguen automáticamente.


Para quién

    Familias con niños que solo deberían controlar los dispositivos de su habitación. Pisos compartidos donde cada uno tiene su zona. Propietarios que ofrecen a inquilinos acceso limitado a un smart home. Pequeñas oficinas o negocios que usan Home Assistant. Power users que quieren control fino sobre quién puede hacer qué.

Estado

Prueba de concepto funcionando con cobertura completa de tests:

Diseñado para entrar como serie de PRs pequeños e independientes: deny + label permissions primero (~300 líneas), luego roles personalizados, permisos por servicio y audit logging.

veces compartido
Scroll al inicio