Podszywanie się pod użytkownika
Działaj w imieniu dowolnego użytkownika w celu uzyskania wsparcia i debugowania bez pytania o hasło. Ograniczone do 10 minut, ściśle kontrolowane w dziennikach bezpieczeństwa.
Co to jest podszywanie się?
Podszywanie się pod użytkownika umożliwia administratorowi lub inżynierowi pomocy technicznej wygenerowanie krótkotrwałego tokena okaziciela, który działa jako konkretny użytkownik. Umożliwia to odtwarzanie błędów klientów, sprawdzanie uprawnień zasad RLS lub rozwiązywanie problemów z danymi bez żądania poświadczeń.
Podszywanie się pod Aurabase gwarantuje trzy podstawowe zasady bezpieczeństwa:
- Krótki czas życia: Tokeny personifikacji są ważne od 1 do 600 sekund (maksymalnie 10 minut, domyślnie 300 sekund). Nigdy nie zawierają tokena odświeżania.
- Jawne przypisanie aktora: Wystawiony token dostępu zawiera standardowe oświadczenie RFC 8693
actwskazujące, kto zainicjował sesję. - Audyt przed wydaniem: Akcja jest rejestrowana w
auth_audit_logz aktorem, przyczyną, czasem trwania i użytkownikiem docelowym przed wygenerowaniem tokenu. Jeśli wstawienie dziennika nie powiedzie się, nie zostanie wydany żaden token.
Struktura roszczeń aktu RFC 8693
Token personifikacji jest podpisany aktywnym kluczem ES256 projektu i jest zgodny ze standardowym formatem tokena dostępu użytkownika, z dodatkowym obiektem act (aktor):
sub: Tożsamość użytkownika, pod którego się podszywasz. Postgres RLS (auth.uid()) oblicza tę wartość.act.sub: Tożsamość operatora, który wygenerował token (np. identyfikator użytkownika konsoli lubservice_role).
Punkt końcowy administratora
Podszywanie się wymaga autoryzacji administratora poprzez klucz service_role lub operatora z rolą admin.
Treść żądania
| Pole | Typ | Wymagany | Opis |
|---|---|---|---|
reason | smyczkowy | Fakultatywny | Uzasadnienie zapisane w dziennikach bezpieczeństwa. Wymagane dla uprzywilejowanych kont docelowych (admin/owner). |
ttl_seconds | numer | Fakultatywny | Czas życia tokenu w sekundach (od 1 do 600, domyślnie 300). |
allow_privileged | wartość logiczna | Fakultatywny | Musi być ustawiony na true, jeśli użytkownik docelowy ma rolę admin lub owner. |
Odpowiedź (200 OK)
TypeScript SDK
Użyj authAdmin.impersonate() z klientem Aurabase skonfigurowanym z kluczem service_role:
Konta uprzywilejowane i dzienniki audytu
Ochrona kont uprzywilejowanych
Konta docelowe posiadające role administracyjne (takie jak role = 'admin', role = 'owner' lub app_metadata.roles zawierające 'admin') reprezentują cele o dużej wartości. Aby zapobiec przypadkowemu podniesieniu uprawnień:
- Musisz jawnie przekazać
allow_privileged: true. - Należy podać niepusty ciąg
reason. - Jeśli którekolwiek sprawdzenie zakończy się niepowodzeniem, backend odrzuca żądanie za pomocą
403 Forbidden.
Dziennik audytu bezpieczeństwa
Każde zdarzenie personifikacji jest wstawiane do tabeli auth_audit_log dzierżawy:
- Akcja:
admin_impersonation - Identyfikator użytkownika: Identyfikator użytkownika docelowego
- Metadane: Obiekt JSON zawierający
{ "actor": "...", "reason": "...", "ttl_seconds": 300, "privileged": false }
Ten ślad jest widoczny w Studio > Uwierzytelnianie > Dzienniki audytu i może zostać przekazany do narzędzi SIEM poprzez drenaż baz danych.