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_ony denegarhomeassistant.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:
-
Backend: rama davefx/core — feature/professional-acl (~2.900 líneas, 155 tests pasando).
Discusión de arquitectura: home-assistant/architecture#1249.
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.

