Skip to content

Security FR

Alex RAMIREZ edited this page Oct 8, 2026 · 1 revision

🇬🇧 English version

Sécurité

Maquette tourne dans l'interface de Home Assistant avec les droits de l'utilisateur connecté. N'importez des plans et des modèles que de personnes de confiance ; la carte vous protège tout de même ainsi.

Les actions sensibles sont toujours confirmées

Chaque service appelé depuis le plan (boutons des pièces, widgets des panneaux latéraux et des fiches, interrupteurs marche / arrêt, boutons Activer) est comparé à une liste de services sûrs. Tout autre service ouvre un dialogue qui indique :

  • l'action réelle et le service (lock.unlock), quel que soit le libellé du bouton ;
  • les entités visées (nom et identifiant) ;
  • les clés des données envoyées, jamais leurs valeurs (un code reste caché).

Le titre est l'action : Déverrouiller ?, Ouvrir la porte ?, Allumer ?, Éteindre ?, Basculer ?, Changer la consigne ?, Lancer le script ?… Annuler a le focus ; Échap annule.

Un bouton de pièce nommé « Lights » qui déverrouille en réalité la porte d'entrée : le dialogue le dit

Sûrs (sans dialogue) Sensibles (toujours confirmés)
turn_on, turn_off, toggle des lumières, interrupteurs, ventilateurs, booléens, humidificateurs, lecteurs, climatiseurs, télécommandes, automatisations ; réglages des ventilateurs, humidificateurs, climatiseurs, chauffe-eau et lecteurs lock.unlock, lock.open
scene.turn_on ; valeurs des input_number, number, input_select, select alarm_control_panel.alarm_disarm, alarm_trigger
cover.close_cover, stop_cover ; valve.close_valve, stop_valve Ouvrir une cover, sauf si toutes les cibles sont des volets, stores, rideaux, bannes ou fenêtres (device_class) : portes de garage, portails, portes et covers sans classe sont confirmés
lock.lock ; alarm_control_panel.alarm_arm_* valve.open_valve, set_valve_position, toggle
homeassistant.turn_on / turn_off / toggle quand toutes les cibles sont dans un domaine sûr script.*, button.press, input_button.press, automation.trigger, homeassistant.restart / stop, shell_command, rest_command, notify… et tout service absent de la liste des sûrs

La liste exacte est dans Référence › Sécurité.

Forcer la confirmation : confirm: true

confirm: true demande une confirmation même pour un service sûr, partout où un service est appelé :

Où Ce qui est confirmé
Boutons des pièces (rooms[].actions[].confirm) Le service du bouton
Bulles, ouvertures, meubles connectés (confirm sur l'élément) Leur interrupteur marche / arrêt, dans leur fiche et dans la vue de la pièce
Widgets (confirm sur le widget) Interrupteurs et boutons Activer de ses lignes, −/+ du thermostat, boutons des widgets cover et lock

Cas typique : une porte de garage, un portail ou un radiateur commandé par un switch.

L'option sur une bulle Le dialogue pour un service sûr
Toujours demander confirmation, dans la section fiche d'une bulle (interface en anglais) « Turn off? » pour un interrupteur avec confirm: true
badges:
  - entity: switch.garage_door
    pos: [120, 40]
    confirm: true          # marche et arrêt confirmés, depuis la fiche et depuis la vue de la pièce
rooms:
  - name: Séjour
    poly: [[0, 0], [450, 0], [450, 380], [0, 380]]
    actions:
      - {name: Tout éteindre, icon: mdi:power, action: homeassistant.turn_off, target: room, confirm: true}
  • confirm: false ne retire jamais la confirmation d'un service sensible.
  • Les widgets cover confirment par défaut pour les portes de garage, portails, portes et vannes ; les widgets lock confirment toujours Déverrouiller et Ouvrir.
  • protected: true (bulles, ouvertures, meubles) empêche d'éteindre l'appareil depuis le plan : pas d'interrupteur « arrêt » dans sa fiche, interrupteur grisé quand il est allumé dans la vue de la pièce.

Dans l'éditeur : Toujours demander confirmation sur un bouton de pièce, dans la section fiche d'une bulle, d'une ouverture ou d'un meuble, et sur les widgets liste et thermostat ; Confirmer avant d'agir sur les widgets cover et lock.

Vérification à l'import

Exporter / importer › Importer (un fichier, un collage ou un modèle) montre d'abord un récapitulatif et n'applique rien tant que vous n'avez pas cliqué sur Importer :

  • les services des boutons des pièces, les sensibles marqués Confirmation à chaque appui ;
  • les entités commandées par des widgets (cover, lock, thermostat, lignes Activer) ;
  • les liens Plus d'infos ;
  • les valeurs retirées car invalides, avec leur chemin (rooms[0].poly, badges[8].color…) ;
  • les clés du tableau de bord du fichier qui sont ignorées (view_layout, grid_options, visibility, card_mod…) : la carte garde les siennes.

Vérifier avant d'importer : services appelés, valeurs retirées, clés ignorées (interface en anglais)

Réimporter le plan sans changement l'applique directement. Limites : 2 Mo de texte, 40 niveaux d'imbrication, 5 000 éléments par liste ; le YAML est lu sans ses types étendus. Les brouillons et copies gardés dans le navigateur sont relus de la même façon.

Ce qu'un plan ne peut jamais faire

  • Exécuter du code. Chaque valeur est contrôlée avant d'être dessinée : coordonnées et nombres doivent être des nombres finis, les valeurs énumérées doivent être connues, les textes s'affichent toujours comme du texte. Une valeur invalide est retirée, avec un avertissement unique dans la console du navigateur (maquette-card : invalid value(s) removed: …).
  • Utiliser une couleur douteuse. Les couleurs acceptent #rgb à #rrggbbaa, rgb() / hsl() avec des nombres, un nom de couleur CSS (red, teal…) ou une variable du thème (var(--primary-color)). Tout le reste est retiré : une couleur ne peut jamais charger une image ni changer le style de la page.
  • Charger quelque chose depuis un autre site. La carte ne fait aucune requête hors de Home Assistant. L'avatar d'une personne n'est affiché que si sa photo est servie par Home Assistant lui-même (chemin commençant par /) ; sinon ses initiales.
  • Agir toute seule. Rien n'est appelé sans un toucher ; l'historique, les statistiques et les éléments liés sont seulement lus.

Où sont stockés le plan et ses copies : Vie privée, sécurité et performances.

Signaler une faille

Merci de ne pas ouvrir d'issue publique : utilisez Security › Report a vulnerability sur le dépôt. Voir SECURITY.md dans le dépôt.

Clone this wiki locally