اگر تا به حال یک کلید API را در کد منبع پروژهای دیدهاید که به GitHub پوش شده، میدانید این اشتباه چقدر میتواند پرهزینه باشد. در سال ۲۰۲۳، تحقیقات GitGuardian نشان داد که هر روز بیش از ۱۰ میلیون کلید و اطلاعات محرمانه در مخازن عمومی افشا میشوند. بسیاری از این نشتها بهسادگی با یک مدیریت درست کلیدهای API قابل پیشگیری بودند.
کلیدهای API ستون فقرات ارتباطات ماشینبهماشین در دنیای مدرن هستند. از اتصال سرویسهای ابری تا یکپارچهسازی پرداخت آنلاین، از دسترسی به دادههای کاربران تا ارتباط بین میکروسرویسها، همه جا از API Key استفاده میشود. اما همین فراگیری، مدیریت ضعیف آنها را به یکی از خطرناکترین آسیبپذیریهای سازمانی تبدیل کرده است.
در این راهنما، یاد میگیرید چگونه کل چرخه عمر کلیدهای API را بهصورت امن مدیریت کنید: از لحظه ایجاد تا چرخش منظم و لغو کامل.
حتما بخوانید
برای درک چارچوب کلیتر احراز هویت مبتنی بر استاندارد FIDO توجه شما را به مطالعه مقاله زیر جلب میکنیم:
حتماً بخوانید: احراز هویت FIDO و راهکارهای بدون رمز عبور
کلید API چیست و چرا مدیریت آن اهمیت دارد؟
کلید API یک رشته منحصربهفرد از کاراکترهاست که برای شناسایی و احراز هویت یک برنامه یا سرویس هنگام فراخوانی یک API استفاده میشود. برخلاف اعتبارنامههای کاربری که به یک انسان تعلق دارند، API Key هویت یک سیستم یا سرویس را نمایندگی میکند.
سه نقش اصلی API Key
نقش | توضیح | مثال |
شناسایی (Identification) | مشخص میکند کدام برنامه درخواست میدهد | سرویس گزارشگیری شما |
احراز هویت (Authentication) | ثابت میکند درخواستدهنده واقعاً آن برنامه است | کلید منحصربهفرد سرویس |
مجازسازی (Authorization) | تعیین میکند به چه منابعی دسترسی دارد | فقط خواندن داده، نه نوشتن |
چرا مدیریت ضعیف API Key خطرناک است؟
برخلاف رمز عبور کاربران که پشت مکانیزمهای احراز هویت چندعاملی (MFA) محافظت میشوند، کلیدهای API معمولاً:
- بهصورت plain text در کدبیس قرار میگیرند
- بین اعضای تیم به اشتراک گذاشته میشوند
- سالها بدون چرخش باقی میمانند
- حتی پس از جدا شدن یک توسعهدهنده از تیم، لغو نمیشوند
وقتی یک کلید API به اشتباه فاش شود، مهاجم میتواند بدون هیچ اطلاعات دیگری، مستقیماً به سیستم دسترسی پیدا کند. این دقیقاً مدل تهدیدی است که اصول مدیریت هویت و دسترسی (IAM) برای مقابله با آن طراحی شدهاند.
چرخه عمر کامل کلید API
مدیریت درست یعنی داشتن کنترل کامل بر تمام مراحل عمر یک کلید API. هیچ مرحلهای را نمیتوان نادیده گرفت.
مرحله ۱: ایجاد (Creation)
هدف: تولید یک کلید قوی و ثبت اطلاعات اولیه آن.
اصول ایجاد امن:
۱. از تولیدکنندههای تصادفی ایمن استفاده کنید
کلید API باید از یک منبع تصادفی رمزنگاریشده (CSPRNG) تولید شود، نه از تابعهای rand() ساده.
۲. از پیشوندهای معنادار استفاده کنید
پیشوند در شناسایی سریع کلیدهای فاششده کمک میکند. Stripe از این الگو استفاده میکند:
- sk_live_… برای محیط تولید
- sk_test_… برای محیط آزمایش
۳. اطلاعات ابرداده را ثبت کنید
هنگام ایجاد هر کلید، این اطلاعات را ذخیره کنید.
مرحله ۲: ذخیرهسازی امن (Secure Storage)
این بحرانیترین مرحله است. هرگز یک کلید API را بهصورت plain text ذخیره نکنید.
ذخیرهسازی در سمت سرور (Provider Side):
سرویسی که کلیدها را صادر میکند، نباید کلید کامل را نگه دارد.
ذخیرهسازی در سمت کلاینت (Consumer Side):
برای برنامههایی که از کلید استفاده میکنند:
روش | امنیت | توضیح |
Secret Manager (AWS/GCP/Azure) | ✅ عالی | بهترین گزینه برای محیط ابری |
HashiCorp Vault | ✅ عالی | برای محیطهای ترکیبی |
Environment Variables | ✅ قابل قبول | با احتیاط، نه در فایل .env commit شده |
فایل رمزگذاریشده | ⚠️ متوسط | نیاز به مدیریت کلید رمزگذاری |
Hardcode در کد | ❌ خطرناک | هرگز |
فایل .env در Git | ❌ خطرناک | هرگز |

مرحله ۳: محدودسازی Scope (Least Privilege)
هر کلید API باید فقط به منابعی دسترسی داشته باشد که واقعاً به آن نیاز دارد. این اصل Least Privilege یا حداقل دسترسی است.
- طراحی Scope محور
- اعمال محدودیتهای اضافی
مرحله ۴: چرخش (Rotation)
چرخش منظم کلید یعنی حتی اگر کلیدی فاش شود، پنجره زمانی سوءاستفاده محدود میشود.
استراتژی چرخش بدون توقف سرویس:
مشکل اصلی چرخش کلید این است که اگر بهدرستی انجام نشود، سرویسها down میشوند. راهحل: دوره همپوشانی (Overlap Period)
برنامه چرخش پیشنهادی بر اساس حساسیت:
سطح حساسیت | محیط | دوره چرخش |
بحرانی | Production – دسترسی کامل | هر ۳۰ روز |
بالا | Production – دسترسی محدود | هر ۹۰ روز |
متوسط | Staging | هر ۱۸۰ روز |
پایین | Development | هر ۳۶۵ روز |
فوری | هر محیط – پس از رویداد امنیتی | بلافاصله |
مرحله ۵: نظارت (Monitoring)
کلیدی که نظارت نمیشود، امن نیست. شما باید بدانید کدام کلید، چه زمانی، از کجا، و برای چه چیزی استفاده میشود.
داشبورد نظارتی باید نشان دهد:
- آخرین زمان استفاده از هر کلید
- کلیدهایی که ماههاست استفاده نشدهاند (کاندیدای لغو)
- کلیدهایی که در آستانه انقضا هستند
- الگوهای استفاده غیرعادی
- لیست کلیدهای بدون تاریخ انقضا
مرحله ۶: لغو (Revocation)
لغو فوری کلید باید همیشه ممکن باشد. این یک الزام، نه یک ویژگی اختیاری است.
سناریوهایی که نیاز به لغو فوری دارند:
- کارمندی که از سازمان جدا شده
- پروژهای که تمام شده
- کلید مشکوک به افشا
- کشف کلید در مخزن عمومی Git
- گزارش سوءاستفاده
اشتباهات رایج و فاجعهبار در مدیریت API Key
۱. Hardcoding کلید در کد منبع
۲. یک کلید برای همه سرویسها
۳. کلیدهای بدون انقضا
۴. عدم لغو کلیدهای استفاده نشده
۵. ارسال کلید در URL
پرسشهای متداول
۱. آیا کلیدهای API با OAuth 2.0 فرق دارند؟
بله، تفاوت اساسی دارند. OAuth 2.0 یک پروتکل تفویض اختیار است که به کاربر اجازه میدهد دسترسی محدودی به برنامه ثالث بدهد، بدون اینکه رمز عبورش را به اشتراک بگذارد. کلید API یک اعتبارنامه ساده برای شناسایی و احراز هویت برنامههاست. برای دسترسی به دادههای کاربران، OAuth مناسبتر است. برای ارتباط سرویسبهسرویس، API Key معمولتر است، هرچند ترکیب هر دو نیز ممکن است.
۲. چطور بفهمم کدام کلیدهای API باید فوری لغو شوند؟
ابتدا به دنبال کلیدهایی بگردید که: بیش از ۹۰ روز است استفاده نشدهاند، تاریخ انقضا ندارند، به صاحبانی تعلق دارند که دیگر در سازمان نیستند، یا Scope بیش از حد گسترده دارند. ابزارهایی مانند Trufflehog و GitGuardian میتوانند کلیدهای فاششده در مخازن کد را شناسایی کنند.
۳. آیا ذخیره کلید API در Environment Variable کافی است؟
برای محیطهای توسعه محلی، معمولاً قابل قبول است. برای محیط تولید، بهتر است از Secret Manager استفاده کنید. دلیل: Environment Variable ها ممکن است در لاگهای سیستم، گزارشهای خطا، یا پردازشهای فرزند در معرض نشت باشند. همچنین Secret Manager ها امکان چرخش خودکار، audit log و کنترل دسترسی دقیقتر را فراهم میکنند.
۴. چطور کلیدهای API را بین اعضای تیم به اشتراک بگذارم؟
اصلاً نگذارید! هر توسعهدهنده باید کلید جداگانهای برای محیط توسعه خود داشته باشد. برای محیطهای مشترک (staging, production)، کلید باید فقط در CI/CD pipeline و Secret Manager باشد، نه در اختیار شخص خاصی.
۵. اگر کلید APIام لو رفت، چه باید بکنم؟
سریع عمل کنید: (۱) بلافاصله کلید را لغو کنید. (۲) لاگهای دسترسی را برای شناسایی سوءاستفاده احتمالی بررسی کنید. (۳) کلید جدید ایجاد و جایگزین کنید. (۴) بررسی کنید چرا و چگونه کلید فاش شد. (۵) اگر از GitHub استفاده میکنید، به یاد داشته باشید که حتی پس از حذف commit، تاریخچه Git ممکن است کلید را نگه داشته باشد. از git filter-branch یا BFG Repo Cleaner استفاده کنید.
۶. آیا API Gateway میتواند جایگزین مدیریت کلید شود؟
API Gateway مدیریت کلید را تسهیل میکند، نه جایگزین آن. Gateway میتواند اعتبارسنجی، Rate Limiting و Logging را متمرکز کند، اما سیاستهای ایجاد، چرخش، Scope و لغو باید در لایه مدیریت هویت (IAM) تعریف شوند.
کسب اطلاعات بیشتر
مدیریت کلیدهای API وقتی بهدرستی انجام شود، یکی از مطمئنترین مکانیزمهای ارتباط ماشینبهماشین است. اما این تنها یک لایه از امنیت هویت سازمان شماست. پلتفرم نشانه به تیمهای امنیتی کمک میکند تا مدیریت هویت را در تمام لایهها – از کاربران انسانی تا سرویسهای ماشینی – بهصورت یکپارچه انجام دهند.
📞 ۰۲۱-۹۱۰۹۶۵۵۱
کلیک کنید: نشانه موبایل و نشانه توکن
نتیجهگیری
آیا میدانید چند کلید API در سازمان شما وجود دارد؟ چند تا از آنها بیش از یک سال است چرخش نشدهاند؟ چند تا به توسعهدهندگانی تعلق دارد که دیگر با شما نیستند؟ اگر پاسخ این سؤالها را نمیدانید، وقت آن رسیده که نشانه را امتحان کنید.
با دموی رایگان نشانه، ببینید چطور میتوانید در کمتر از یک روز کار، دید کاملی از تمام هویتهای ماشینی سازمانتان – از جمله کلیدهای API – به دست بیاورید و چرخه مدیریت آنها را خودکار کنید.
