پرش به محتوای اصلی

احراز هویت و امنیت کلید

احراز هویت و امنیت کلید

هر درخواست به API دات‌هوش با یک API key احراز هویت می‌شود. این صفحه می‌گوید کلید را چطور بفرستید، چه شکلی دارد، چه چرخهٔ عمری دارد و چه خطاهایی به آن مربوط است.

سرآیند بستگی به پروتکل دارد

پرتکرارترین اشتباه در همین جدول خلاصه می‌شود: هر مسیر فقط یکی از دو سرآیند را می‌پذیرد.

چه چیزی صدا می‌زنیدبفرستیداین را نفرستید
/v1/* (سازگار با OpenAI)Authorization: Bearer dh_live_…x-api-key
/anthropic/v1/messagesx-api-key: dh_live_…Authorization

اگر هر دو سرآیند را با هم بفرستید، یا سرآیند اشتباه را بفرستید، پاسخ api_key_malformed است؛ دات‌هوش حدس نمی‌زند منظورتان کدام بوده. روی مسیرهای OpenAI مقدار سرآیند باید دقیقاً Bearer به‌دنبال آن کلید باشد، بدون فاصلهٔ اضافه. روی مسیرهای Anthropic هم فرستادن Authorization پذیرفته نمی‌شود، حتی اگر کلید درست باشد.

مقدار هر دو سرآیند حساس است و هرگز در لاگ یا تلمتری نوشته نمی‌شود.

شکل کلید

بخشمقدار
پیشوند محیط productiondh_live_
پیشوند محیط developmentdh_test_
طول secret در زمان ساخت۴۸ کاراکتر
بازهٔ پذیرفته‌شدهٔ secret۳۲ تا ۱۲۸ کاراکتر
کاراکترهای مجازحرف انگلیسی و رقم (A-Za-z0-9)

کلیدی که این شکل را نداشته باشد، پیش از هر جست‌وجویی با api_key_malformed رد می‌شود؛ یعنی کلید بی‌شکل هرگز به سرویس سیاست نمی‌رسد. پذیرش شکل، شکل‌زدایی است نه اجازه: احراز هویت واقعی با تطبیق کلید روی سرویس سیاست انجام می‌شود.

چرخهٔ عمر کلید

  • ساخته می‌شود در کنسول، مقید به یک پروژه و یک محیط. مقدار secret فقط یک بار نمایش داده می‌شود؛ در سرور فقط digest فلفل‌خورده ذخیره می‌شود و مقایسه در زمان ثابت انجام می‌گیرد.
  • لغو می‌شود به درخواست شما. انتشار لغو چند ثانیه‌ای است (سقف DOTHOOSH_POLICY_CACHE_TTL_SECONDS، پیش‌فرض ۵ ثانیه)؛ پس از آن هر فراخوانی با api_key_revoked رد می‌شود.
  • دور می‌خورد با یک بازهٔ هم‌پوشانی: پیش از بازنشستگی کلید قبلی، کلید تازه را منتشر می‌کنید. در بازهٔ هم‌پوشانی هر دو کار می‌کنند؛ بعد از آن کلید بازنشسته api_key_expired می‌دهد.
  • به‌طور خودکار تعلیق می‌شود اگر نشانهٔ افشا داشته باشد: api_key_leak_suspended.

کنترل‌های زمان ساخت، در همان لحظه روی کلید نوشته می‌شوند: فهرست مدل‌های مجاز، فهرست IP مجاز، scopeها، زمان انقضا و سقف‌های مصرف (محدودیت‌ها).

نگهداری کلید

با کلید دات‌هوش مثل کلید خود ارائه‌دهنده رفتار کنید.

  • آن را در متغیر محیطی یا secret manager بگذارید، نه در مخزن کد.
  • هرگز آن را در بستهٔ مرورگر، اپ موبایل یا هر جایی که کاربر بتواند بخواند نگذارید. کلید bearer است: هر که آن را داشته باشد تا سقف همان key از کیف پول شما خرج می‌کند.
  • برای هر استقرار یک کلید جدا بسازید. سقف‌ها و مصرف هر کلید فقط وقتی معنا دارند که کلیدها مشترک نباشند؛ لغو یک کلید مشترک، همه‌چیز را با هم از کار می‌اندازد.
  • در محیط‌های غیرتولیدی از کلید dh_test_ استفاده کنید تا خطا محدود بماند.

اگر کلیدی لو رفت، اول لغو کنید و بعد بررسی. لغو فوری و بی‌هزینه است؛ ساخت جانشین چند ثانیه طول می‌کشد.

خطاهای احراز هویت و مجوز

کدHTTPمعنا
api_key_malformed401سرآیند اشتباه، هر دو سرآیند با هم، یا مقداری که شکل کلید را ندارد
api_key_invalid401شکل درست، اما کلید ناشناخته
api_key_revoked401کلید لغو شده است
api_key_disabled401کلید غیرفعال شده است
api_key_expired401از انقضای کلید گذشته، یا کلید چرخیده از بازهٔ هم‌پوشانی بیرون است
api_key_model_not_allowed403این کلید اجازهٔ صدا زدن این مدل را ندارد
api_key_environment_mismatch403محیط کلید با درخواست نمی‌خواند
api_key_ip_not_allowed403نشانی فراخوان بیرون از فهرست IP مجاز کلید است
api_key_scope_insufficient403کلید scope لازم برای این عملیات را ندارد
api_key_leak_suspended403کلید به‌دلیل نشانهٔ افشا معلق شده است
api_key_or_account_spend_limit403سقف هزینهٔ کلید یا حساب پر شده است
project_or_account_disabled403پروژه یا حساب مالک کلید غیرفعال است

همهٔ این‌ها در سمت سرور و روی یک snapshot امضاشده از سیاست اجرا می‌شوند؛ هیچ‌کدام توصیه‌ای نیستند و از سمت کلاینت قابل شل‌کردن نیستند.

مطالب مرتبط

گام بعدی