Sécurité

Téléopérer un robot physique via internet demande plus qu'un simple formulaire de connexion. Cette page décrit le fonctionnement de l'authentification et des rôles, comment gérer les clés API, quels garde-fous protègent le contrôle en direct, ce qu'enregistre le journal d'audit, et comment signaler une vulnérabilité.

Dernière mise à jour 2026-08-09

Authentification

Les comptes sont gérés par Supabase Auth avec e-mail et mot de passe, Google OAuth ou GitHub OAuth. Après connexion, votre navigateur conserve un jeton de session (un JWT) que le middleware de la plateforme renouvelle automatiquement, si bien qu'une session active n'expire jamais silencieusement en plein travail.

L'API accepte ce jeton de session sous deux formes : comme cookie de session que le dashboard envoie de toute façon, ou comme en-tête Authorization Bearer. L'accès programmatique sans connexion navigateur utilise plutôt des clés API, décrites ci-dessous. Les endpoints rejettent les requêtes sans identifiant valide ; seules les routes explicitement publiques, comme le contrôle de santé et le formulaire de contact, fonctionnent sans authentification.

Rôles et permissions

Chaque compte possède exactement un rôle : CLIENT, OPERATOR ou ADMIN. Les clients possèdent des robots et paient pour les sessions, les opérateurs contrôlent des robots et tirent des gains des sessions, et les admins font tourner la plateforme. Vous choisissez entre client et opérateur lors de l'onboarding ; le rôle admin est attribué par les administrateurs de la plateforme et ne peut pas être choisi soi-même.

CapacitéCLIENTOPERATORADMIN
Enregistrer et gérer des robotsOuiNonOui
Démarrer et piloter des sessions de téléopérationNonOuiOui
Voir les sessionsSur ses propres robotsSes propres sessionsToutes
Jeux de données et exportsOuiNonTous
Facturation, factures, moyens de paiementOuiNonTous
Gains et versementsNonOuiTous
Approuver les certificationsNonDemande uniquementOui
Résoudre les litigesDéposer uniquementNonOui

Les vérifications de rôle se font côté serveur à chaque requête, pas dans l'interface. Sous l'API, l'accès à la base de données est de plus restreint par des règles de row-level security, si bien qu'un bug dans un endpoint ne se transforme jamais en accès libre aux lignes d'autres comptes.

Clés API

Les clés API donnent accès aux scripts et serveurs sans connexion navigateur. Vous les créez et les révoquez dans /dashboard/settings ; les clés portent le préfixe ayr_live_ et sont envoyées comme en-tête Authorization Bearer. Une clé agit avec le rôle et les permissions du compte qui l'a créée, donc une clé qui fuite est exactement aussi grave qu'un mot de passe qui fuite.

  • Gardez les clés côté serveur. Elles n'ont pas leur place dans du JavaScript côté client, des applications mobiles ou des dépôts publics.
  • Utilisez une clé par intégration. En cas de fuite, vous voulez pouvoir révoquer un seul consommateur, pas tous.
  • Effectuez une rotation sans interruption : créez d'abord la clé de remplacement, déployez-la, puis révoquez l'ancienne clé dans /dashboard/settings.
  • Révoquez immédiatement en cas de doute. Créer une nouvelle clé prend quelques secondes ; un attaquant en possession d'une clé valide peut faire tout ce que votre compte peut faire.

Garde-fous pendant le contrôle en direct

Le contrôle en direct est lié à un bail de session. Un robot n'accepte des commandes que pendant qu'il se trouve dans exactement une session ACTIVE, et uniquement de la part de l'opérateur qui détient cette session ; le robot lui-même est marqué IN_SESSION pour tous les autres. Un opérateur ne peut détenir qu'une seule session ACTIVE ou PAUSED à la fois, ce qui exclut qu'une même personne contrôle nominalement deux bras en même temps.

Le cockpit fournit un arrêt d'urgence qui immobilise le bras instantanément, et mettre la session en pause ou y mettre fin interrompt entièrement le flux de commandes. En plus de cela, la plateforme surveille l'activité de l'opérateur : après une période sans entrée, un avertissement d'inactivité est envoyé, et si l'opérateur reste inactif, la session est arrêtée automatiquement. Cela protège les deux parties, le client contre le paiement de temps mort et le robot contre le fait de rester dans un état non contrôlé avec un bail actif.

Journal d'audit

Chaque session conserve un journal d'événements : début et fin, pauses et reprises, vérifications d'activité, avertissements d'inactivité, changements d'opérateur, demandes de prolongation et erreurs, chacun avec un horodatage. Lorsqu'un litige est examiné, ce journal d'événements constitue la preuve principale, ce qui est une raison de plus pour laquelle la plateforme l'écrit automatiquement plutôt que de se fier à la mémoire de quiconque.

Au-delà des sessions, les actions significatives sur la plateforme sont enregistrées dans un journal d'audit avec l'identifiant de l'utilisateur à l'origine de l'action, l'action elle-même, la ressource concernée et des métadonnées. Les changements de profil, les transactions liées au paiement et les actions d'administration laissent tous une trace. Les entrées d'audit sont écrites par la plateforme et ne sont modifiables par aucune interface utilisateur.

Chiffrement et protection des données

Tout le trafic à destination et en provenance de la plateforme est chiffré en transit avec TLS, y compris les flux vidéo et les signaux de contrôle. Au niveau des données, des règles de row-level security restreignent l'accès à la base de données par compte. Les données de paiement constituent la frontière la plus nette de toutes : les cartes et les coordonnées bancaires sont traitées exclusivement par Stripe et ne touchent jamais les serveurs d'AY-Robots.

Signaler une vulnérabilité

Si vous découvrez un problème de sécurité, signalez-le de façon responsable via la page /security ou le formulaire /contact en utilisant la catégorie Bug Report. Indiquez ce que vous avez trouvé, où, et comment le reproduire ; n'accédez pas aux données d'autres utilisateurs au-delà du minimum nécessaire pour démontrer le problème, et ne publiez pas les détails avant que nous ayons eu une chance raisonnable de le corriger. Nous lisons chaque signalement.

Questions fréquentes

Un opérateur peut-il voir mes données de facturation ?

Non. La facturation, les factures et les moyens de paiement sont des capacités réservées au rôle client. Un opérateur en session sur votre robot voit le contexte de la session, pas votre compte ni vos données de paiement.

Que devient le robot si ma connexion coupe en pleine session ?

Le flux de commandes s'arrête avec la connexion, et le garde-fou d'inactivité prend le relais : après une période d'avertissement sans entrée, la session est arrêtée automatiquement. Le client n'est pas facturé pour le temps mort au-delà de cet arrêt.

Comment effectuer une rotation sûre d'une clé API ?

Créez la nouvelle clé dans /dashboard/settings, faites basculer votre intégration dessus, vérifiez qu'elle fonctionne, puis révoquez l'ancienne clé. Procéder dans cet ordre garantit zéro interruption et aucune fenêtre où aucune clé valide n'existe.

Mes données de paiement sont-elles stockées sur les serveurs d'AY-Robots ?

Non. Les cartes et les coordonnées bancaires vont directement chez Stripe. La plateforme ne stocke que des références vers des objets Stripe, jamais les données de paiement sous-jacentes.