ऑराबेस लोगो
aurabaseडॉक्स
डॉक्स›गाइड›User impersonation

उपयोगकर्ता प्रतिरूपण

किसी भी उपयोगकर्ता से उसका पासवर्ड मांगे बिना समर्थन और डिबगिंग के लिए उसकी ओर से कार्य करें। 10 मिनट तक सीमित, सुरक्षा लॉग में कड़ाई से ऑडिट किया गया।

5 मि॰ पढ़ें·स्तर मध्यवर्ती·26 अक्टू॰ 2026 पर संशोधित
इस अनुवाद के बाद से अंग्रेजी स्रोत बदल गया है। कुछ जानकारी पुरानी हो सकती है.
यह पृष्ठ स्वचालित रूप से अनुवादित किया गया था. अंग्रेजी संस्करण प्रामाणिक है.
#
सिंहावलोकन

प्रतिरूपण क्या है?

उपयोगकर्ता प्रतिरूपण एक प्रशासक या सहायक इंजीनियर को एक अल्पकालिक वाहक टोकन उत्पन्न करने की अनुमति देता है जो एक विशिष्ट उपयोगकर्ता के रूप में कार्य करता है। यह ग्राहक बग को पुन: उत्पन्न करने, RLS नीति अनुमतियों की जांच करने, या क्रेडेंशियल का अनुरोध किए बिना डेटा समस्याओं का निवारण करने में सक्षम बनाता है।

Aurabase में प्रतिरूपण तीन मूलभूत सुरक्षा सिद्धांतों की गारंटी देता है:

  1. लघु जीवनकाल: प्रतिरूपण टोकन 1 से 600 सेकंड (अधिकतम 10 मिनट, डिफ़ॉल्ट 300 सेकंड) के बीच वैध होते हैं। उनमें कभी भी ताज़ा टोकन शामिल नहीं होता है।
  2. स्पष्ट अभिनेता एट्रिब्यूशन: जारी किए गए एक्सेस टोकन में मानक RFC 8693 act का दावा है जो दर्शाता है कि सत्र की शुरुआत किसने की।
  3. जारी करने से पहले ऑडिट: टोकन उत्पन्न होने से पहले कार्रवाई को अभिनेता, कारण, अवधि और लक्ष्य उपयोगकर्ता के साथ auth_audit_log में रिकॉर्ड किया जाता है। यदि लॉग प्रविष्टि विफल हो जाती है, तो कोई टोकन जारी नहीं किया जाता है।
#
सांकेतिक दावे

आरएफसी 8693 अधिनियम दावा संरचना

एक प्रतिरूपण टोकन परियोजना की सक्रिय ES256 कुंजी के साथ हस्ताक्षरित है और एक अतिरिक्त act (अभिनेता) ऑब्जेक्ट के साथ मानक उपयोगकर्ता एक्सेस टोकन प्रारूप के अनुरूप है:

डिकोड किया गया JWT पेलोडjson
{
  "sub": "b2f4c3a1-7788-4e89-a5c2-98e3b1234567",
  "project_id": "ecd48fb4-4fe6-48d0-a8cd-f0641ceb8b1c",
  "role": "authenticated",
  "email": "user@example.com",
  "act": {
    "sub": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
  },
  "exp": 1730000300,
  "iat": 1730000000,
  "iss": "https://auth-lab-n7qn5stb.localhost:8080/v1/auth"
}
  • sub: प्रतिरूपित किए जा रहे उपयोगकर्ता की पहचान। Postgres RLS (auth.uid()) इस मान का मूल्यांकन करता है।
  • act.sub: टोकन जनरेट करने वाले ऑपरेटर की पहचान (जैसे कंसोल यूजर आईडी या service_role)।
#
HTTP एपीआई

व्यवस्थापक समापनबिंदु

प्रतिरूपण के लिए service_role कुंजी या admin भूमिका वाले ऑपरेटर के माध्यम से व्यवस्थापक प्राधिकरण की आवश्यकता होती है।

Terminalbash
curl -X POST "$AURABASE_URL/v1/auth/admin/users/$TARGET_USER_ID/impersonate" \
  -H "apikey: $AURABASE_SERVICE_ROLE_KEY" \
  -H "Authorization: Bearer $AURABASE_SERVICE_ROLE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Investigating ticket #4812",
    "ttl_seconds": 300,
    "allow_privileged": false
  }'

निकाय से अनुरोध करें

मैदानप्रकारआवश्यकविवरण
reasonडोरीवैकल्पिकसुरक्षा लॉग में औचित्य दर्ज किया गया। विशेषाधिकार प्राप्त लक्ष्य खातों के लिए आवश्यक (admin/owner)।
ttl_secondsसंख्यावैकल्पिकटोकन जीवनकाल सेकंड में (1 से 600, डिफ़ॉल्ट 300)।
allow_privilegedबूलियनवैकल्पिकयदि लक्षित उपयोगकर्ता के पास admin या owner भूमिका है, तो उसे true पर सेट किया जाना चाहिए।

प्रतिक्रिया (200 OK)

json
{
  "data": {
    "access_token": "eyJhbGciOiJFUzI1NiIsImtpZCI6...",
    "token_type": "Bearer",
    "expires_in": 300,
    "act": {
      "sub": "service_role"
    },
    "user": {
      "id": "b2f4c3a1-7788-4e89-a5c2-98e3b1234567",
      "email": "user@example.com",
      "role": "authenticated"
    }
  }
}
#
एसडीके

TypeScript एसडीके

service_role कुंजी के साथ कॉन्फ़िगर किए गए Aurabase क्लाइंट के साथ authAdmin.impersonate() का उपयोग करें:

admin-debug.tstypescript
import { createClient } from '@aurabase/aurabase-js'

const aura = createClient(process.env.AURABASE_URL!, process.env.AURABASE_SERVICE_ROLE_KEY!)

// 5 मिनट के लिए एक प्रतिरूपण टोकन जनरेट करें
const { data, error } = await aura.authAdmin.impersonate('b2f4c3a1-7788-4e89-a5c2-98e3b1234567', {
  reason: 'Reproducing issue reported on dashboard',
  ttlSeconds: 300,
})

if (error) {
  console.error('Failed to impersonate:', error.message)
} else {
  console.log('Impersonation token:', data.access_token)
  console.log('Token expires in:', data.expires_in, 'seconds')

  // इस उपयोगकर्ता के रूप में क्वेरी चलाने के लिए एक अल्पकालिक उपयोगकर्ता क्लाइंट बनाएं
  const userClient = createClient(process.env.AURABASE_URL!, process.env.AURABASE_ANON_KEY!, {
    accessToken: data.access_token,
  })

  // क्वेरीज़ अब लक्ष्य उपयोगकर्ता के RLS संदर्भ के अंतर्गत निष्पादित होंगी
  const { data: posts } = await userClient.from('posts').select('*')
}
#
सुरक्षा

विशेषाधिकार प्राप्त खाते और ऑडिट लॉग

विशेषाधिकार प्राप्त खातों की सुरक्षा करना

लक्ष्य खाते जिनमें प्रशासनिक भूमिकाएँ होती हैं (जैसे role = 'admin', role = 'owner', या app_metadata.roles जिनमें 'admin') उच्च-मूल्य वाले लक्ष्यों का प्रतिनिधित्व करते हैं। आकस्मिक विशेषाधिकार उन्नयन को रोकने के लिए:

  1. आपको स्पष्ट रूप से allow_privileged: true पास करना होगा।
  2. एक गैर-रिक्त reason स्ट्रिंग प्रदान की जानी चाहिए।
  3. यदि कोई भी चेक विफल हो जाता है, तो बैकएंड 403 Forbidden के साथ अनुरोध को अस्वीकार कर देता है।

सुरक्षा ऑडिट लॉग

प्रत्येक प्रतिरूपण घटना को किरायेदार की auth_audit_log तालिका में डाला जाता है:

  • क्रिया: admin_impersonation
  • उपयोगकर्ता आईडी: लक्ष्य उपयोगकर्ता की आईडी
  • मेटाडेटा: JSON ऑब्जेक्ट जिसमें { "actor": "...", "reason": "...", "ttl_seconds": 300, "privileged": false } है

यह ट्रेल स्टूडियो › प्रमाणीकरण › ऑडिट लॉग में दिखाई देता है और डेटाबेस ड्रेन के माध्यम से इसे SIEM टूल पर अग्रेषित किया जा सकता है।