Usurpation d'identité d'utilisateur
Agissez au nom de tout utilisateur pour l'assistance et le débogage sans demander son mot de passe. Limité à 10 minutes, strictement audité dans les journaux de sécurité.
Qu’est-ce que l’usurpation d’identité ?
L'usurpation d'identité d'utilisateur permet à un administrateur ou à un ingénieur de support de générer un jeton de support de courte durée qui agit en tant qu'utilisateur spécifique. Cela permet de reproduire les bogues des clients, de vérifier les autorisations de la politique RLS ou de résoudre les problèmes de données sans demander d'informations d'identification.
L'usurpation d'identité dans Aurabase garantit trois principes de sécurité fondamentaux :
- Durée de vie courte: Les tokens d'usurpation d'identité sont valides entre 1 et 600 secondes (10 minutes maximum, 300 secondes par défaut). Ils n'incluent jamais de jeton d'actualisation.
- Attribution explicite de l'acteur: le jeton d'accès émis porte la revendication standard RFC 8693
actindiquant qui a initié la session. - Audit avant émission: L'action est enregistrée dans
auth_audit_logavec l'acteur, la raison, la durée et l'utilisateur cible avant que le jeton soit généré. Si l'insertion du journal échoue, aucun jeton n'est émis.
Structure de revendication de la loi RFC 8693
Un jeton d'usurpation d'identité est signé avec la clé ES256 active du projet et est conforme au format standard du jeton d'accès utilisateur, avec un objet act (acteur) supplémentaire :
sub: l'identité de l'utilisateur dont l'identité est usurpée. Postgres RLS (auth.uid()) est évalué à cette valeur.act.sub: L'identité de l'opérateur qui a généré le jeton (par exemple, ID utilisateur de la console ouservice_role).
Point de terminaison administrateur
L'usurpation d'identité nécessite l'autorisation de l'administrateur via une clé service_role ou un opérateur avec le rôle admin.
Corps de la demande
| Champ | Tapez | Obligatoire | Descriptif |
|---|---|---|---|
reason | chaîne | Facultatif | Justification enregistrée dans les journaux de sécurité. Requis pour les comptes cibles privilégiés (admin/owner). |
ttl_seconds | numéro | Facultatif | Durée de vie du jeton en secondes (1 à 600, 300 par défaut). |
allow_privileged | booléen | Facultatif | Doit être défini sur true si l'utilisateur cible a un rôle admin ou owner. |
Réponse (200 OK)
SDK TypeScript
Utilisez authAdmin.impersonate() avec un client Aurabase configuré avec la clé service_role :
Comptes privilégiés et journaux d'audit
Garder les comptes privilégiés
Les comptes cibles qui possèdent des rôles d'administration (tels que role = 'admin', role = 'owner' ou app_metadata.roles contenant 'admin') représentent des cibles de grande valeur. Pour éviter toute élévation accidentelle des privilèges :
- Vous devez transmettre explicitement
allow_privileged: true. - Une chaîne
reasonnon vide doit être fournie. - Si l’une ou l’autre des vérifications échoue, le backend rejette la demande avec
403 Forbidden.
Journal d'audit de sécurité
Chaque événement d'usurpation d'identité est inséré dans la table auth_audit_log du locataire :
- Action:
admin_impersonation - ID utilisateur: ID de l'utilisateur cible
- Métadonnées: Objet JSON contenant
{ "actor": "...", "reason": "...", "ttl_seconds": 300, "privileged": false }
Cette piste est visible dans Studio › Authentification › Journaux d'audit et peut être transmise aux outils SIEM via les drains de base de données.