12 KiB
12 KiB
مشخصات درسنامه: مدیریت Secretها، کلیدهای API و واکنش اضطراری به نشت اطلاعات
- شناسه در سیلابس:
L11.3 - فصل: فصل ۱۱: امنیت و استفاده مسئولانه (Ch 11)
- نوع محتوا: 📘 درسنامه متنی
- زمان تقریبی مطالعه: ۱۸ دقیقه
- پیشنیازهای مستقیم:
L11.2(چکلیست پیش از انتشار)
۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy)
دانشجو پس از مطالعهٔ این درسنامه باید بتواند:
- درک کند (Understand): چرا نشت کلیدهای API در گیتهاب کابوس شماره یک توسعهدهندگان است و چرا ایجنتهای هوش مصنوعی مستعد هاردکد کردن تصادفی توکنها در کلاینت هستند.
- تحلیل/ارزیابی کند (Evaluate): تفاوت پاک کردن یک فایل در کامیت جدید را با پاک کردن کامل آن از تاریخچه عمیق گیت (Git History) درک کرده و ضرورت باطلسازی فوری کلیدها را ارزیابی نماید.
- بهکار ببندد (Apply): پروتکل ۳ مرحلهای واکنش به حادثه امنیتی نشت کلید (Incident Response: باطلسازی در پنل
\rightarrowصدور کلید جدید\rightarrowپاکسازی تاریخچه با ابزارهای خودکار) را اجرا کند. - ایجاد کند (Create): یک پرامپت بازرسی امنیتی برای اسکن تمام فایلهای پروژه تنظیم کند تا ایجنت هرگونه کلید مشکوک، توکن هاردکد شده یا متغیر کلاینتی ناامن را کشف و ایزوله کند.
۲. محدوده و مرزهای محتوا (Scope & Boundaries)
آنچه باید پوشش داده شود (In-Scope):
- کابوس نشت کلید: واقعیتی تلخ در دنیای وایب کدینگ:
- چرا هوش مصنوعی گاهی برای سریعتر کار کردن، مقادیر کلیدها را مستقیماً داخل کدهای React میگذارد؟
- سرعت باورنکردنی رباتهای اسکنر: رصد مداوم خروجی گیتهاب و خالی کردن شارژ در عرض چند ثانیه.
- سپرهای پیشگیرانه پیش از ارسال کد به گیتهاب:
- فعالسازی قابلیت رایگان GitHub Push Protection (مسدودسازی خودکار پوش در صورت شناسایی کلید).
- چکلیست بازرسی نهایی فایل
.gitignoreبرای اطمینان از قرار گرفتن.env*.
- پروتکل واکنش اضطراری به حادثه امنیتی (Emergency Protocol):
- سناریو: «همین الان ناخواسته فایل
.env.localرا روی گیتهاب پوش کردم! چه کنم؟» - گام اول (بسیار فوری): متوقف کردن وحشت و ورود به پنل ارائهدهنده (OpenRouter, Supabase, Kavenegar) و زدن دکمه Revoke / Delete Key (باطل کردن کلید در کمتر از ۱ دقیقه).
- گام دوم: ساخت کلید جدید و جایگزینی آن در فایل محلی.
- گام سوم: چرا کامیت کردن حذف فایل کافی نیست؟ آموزش پاک کردن تاریخچه با کامندهای استاندارد.
- سناریو: «همین الان ناخواسته فایل
- چرخش دورهای کلیدها (Secret Rotation):
- استراتژی تعویض دورهای کلیدهای حساس برای حفظ حداکثر امنیت در طول زمان.
- دستورات چندسکویی برای بررسی سریع تاریخچه و فایلهای پیگیریشده:
- دستورات گیت برای بررسی اینکه آیا فایلی از نوع
.envردیابی شده است یا خیر در سه سیستمعامل.
- دستورات گیت برای بررسی اینکه آیا فایلی از نوع
- کالاوتهای آموزشی و هشدار کوئرا:
- کالاوت بنفش (
<details class="violet">): نحوه کار رباتهای ماینر و اسکرپرهای اختصاصی که کلیدهای OpenAI و کلاد را هدف میگیرند. - کالاوت سبز (
<details class="green">): فعال بودن پیشفرض GitHub Secret Scanning در مخازن عمومی. - کالاوت قرمز (
<details class="red">): اشتباه مرگبار؛ زدنgit rm .envو پوش کردن مجدد، کلید را از کامیتهای قبلی پاک نمیکند! تاریخچه گیت ابدی است مگر اینکه بازنویسی شود.
- کالاوت بنفش (
آنچه نباید وارد آن شویم (Out-of-Scope):
- استفاده از سیستمهای سازمانی گاوصندوق سختافزاری مانند HashiCorp Vault یا AWS KMS.
- مباحث کریپتوگرافی و الگوریتمهای رمزنگاری متقارن/نامتقارن.
۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms)
| اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یکخطی ساده |
|---|---|---|
| Secret Leak | نشت اطلاعات محرمانه | حادثه امنیتی فاش شدن کلیدهای دسترسی، رمزها یا توکنها در مخزن کدهای عمومی |
| Key Revocation | ابطال فوری کلید | غیرفعالسازی آنی کلید از پنل شرکت ارائهدهنده برای بیاثر کردن دسترسی نفوذگران |
| Push Protection | محافظت در برابر پوش ناامن | قابلیتی در گیتهاب که با شناسایی توکنها مانع از ارسال کامیت حاوی رمز میشود |
| Secret Rotation | چرخش دورهای کلیدها | رویه استاندارد تعویض و صدور مجدد کلیدهای دسترسی در بازههای زمانی مشخص |
| Hardcoded Credentials | اطلاعات هویتی هاردکد شده | نوشتن مستقیم رمز یا توکن در میان خطوط کد به جای خواندن امن آن از متغیرهای محیطی |
۴. جایگاههای تصاویر و نمودارها (Visual & Diagram Placeholders)
راهنمای ایجنت نویسنده: تمام تصاویر باید در پوشهٔ
images/ذخیره شده و در جدول تکخانهای وسطچین درج شوند:
- تصویر کاور درس:
images/cover.png- موضوع: زنگ خطر قرمز امنیتی که کلید شکسته شدهای را هشدار میدهد و یک دست دیجیتال کلید را ابطال و کلید جدید جایگزین میکند.
- سرعت رباتهای شکارچی کلید در گیتهاب:
images/github-bot-scraping-speed.png- موضوع: اینفوگرافیک تایملاین: ثانیه ۱: کامیت اشتباه
\rightarrowثانیه ۳: اسکن توسط ربات نفوذگر\rightarrowثانیه ۱۰: مصرف اعتبار و ساخت ماشین مجازی غیرمجاز.
- موضوع: اینفوگرافیک تایملاین: ثانیه ۱: کامیت اشتباه
- پروتکل ۳ مرحلهای نجات در زمان نشت اطلاعات:
images/incident-response-flow.png- موضوع: فلوچارت امداد فوری: ۱) باطلسازی آنی در پنل ارائهدهنده
\rightarrow۲) صدور کلید جدید\rightarrow۳) بازنویسی تاریخچه گیت.
- موضوع: فلوچارت امداد فوری: ۱) باطلسازی آنی در پنل ارائهدهنده
- پیام هشدار GitHub Push Protection در ترمینال:
images/github-push-protection-alert.png- موضوع: اسکرینشات از مسدود شدن
git pushدر ترمینال توسط گیتهاب به دلیل وجود کلید مشکوک.
- موضوع: اسکرینشات از مسدود شدن
۵. بخشبندی و ساختار محتوایی پیشنهادی درسنامه (README.md)
- تیتر اصلی:
# مدیریت Secretها، کلیدهای API و واکنش اضطراری به نشت اطلاعات - مقدمه: فاجعهای که در ۳ ثانیه رخ میدهد: داستان تلخ برنامهنویسانی که بخاطر یک پوش اشتباه، چند هزار دلار بدهی بالا آوردند!
- جدول کاور درس
- چرا ایجنتهای هوش مصنوعی مستعد لو دادن کلیدها هستند؟
- خطای شایع قرار دادن کلیدها داخل فایلهای کامپوننت یا ساختن فایلهای کانفیگ بدون
.gitignore.
- خطای شایع قرار دادن کلیدها داخل فایلهای کامپوننت یا ساختن فایلهای کانفیگ بدون
- آزمایشگاه بازرسی پروژه پورتفولیو: شکار کلیدهای هاردکد شده:
- جستجوی عباراتی نظیر
sk-,eyJh,api_keyدر سرتاسر کدهای پروژه.
- جستجوی عباراتی نظیر
- سپر دفاعی اول: فعالسازی Push Protection در گیتهاب:
- تنظیمات رایگان مخزن در گیتهاب برای سد کردن راه پوشهای خطرناک.
- پروتکل اتاق فرمان در زمان بحران (کارهایی که در ۳ دقیقه اول باید انجام دهید):
- گام ۱: ابطال فوری در پنل سوپابیس، کاوهنگار یا OpenRouter.
- گام ۲: تولید کلید جایگزین.
- گام ۳: پاک کردن ردپای فایل از تاریخچه گیت با ابزار
git filter-repo.
- جعبه پرامپت طلایی: اسکن امنیتی کل کدهای پروژه با ایجنت:
- پرامپت دقیق:
«تمام فایلهای پروژه من را اسکن کن. بررسی کن که آیا هیچ کلید API، رمز عبور یا توکن هاردکد شدهای داخل کدهای فرانتاند یا کامپوننتهای کلاینت وجود دارد یا خیر. همچنین بررسی کن که متغیرهای حاوی اطلاعات محرمانه تصادفاً پیشوند
NEXT_PUBLIC_نگرفته باشند و گزارش کاملی از موارد مشکوک به همراه راهکار اصلاح ارائه بده.»
- پرامپت دقیق:
- دستورات چندسکویی بررسی وضعیت فایلهای ردیابیشده در گیت:
- منوی کشویی سهگانه برای ویندوز، مک و لینوکس:
- Windows (PowerShell):
git ls-files | Select-String "\.env" - macOS (Terminal):
git ls-files | grep "\.env" - Linux (Bash):
git ls-files | grep "\.env"
- Windows (PowerShell):
- منوی کشویی سهگانه برای ویندوز، مک و لینوکس:
- باکس نکته Quera (
<details class="violet">): چرا سطل زباله گیت پاک نمیشود؟ مفهوم Commit Tree و دلایل باقی ماندن دیتا در تاریخچه حتی پس از حذف فایل. - باکس هشدار Quera (
<details class="red">): هرگز کلید سوپابیسservice_roleرا در پروژههای فرانتاند استفاده نکنید؛ این کلید شاهکلید تمام دیتابیس است! - باکس رضایتبخش Quera (
<details class="green">): اجرای موفق اسکن امنیتی و اطمینان از اینکه هیچ کلیدی در کدهای گیت جا نمانده است. - جمعبندی درسنامه: ایمنسازی کامل کلیدها؛ ورود به لایه بعدی دفاع: احراز هویت و کنترل دسترسی پیشرفته (Auth & RBAC) در درس بعدی.
۶. معیارهای پذیرش (Acceptance Criteria for Reviewer)
- خطرات نشت کلید و سرعت رباتهای اسکنر به زبان شفاف بیان شود.
- پروتکل گامبهگام واکنش اضطراری به نشت کلید ارائه گردد.
- روشهای پیشگیری نظیر GitHub Push Protection و بررسی
.gitignoreتشریح شود. - پرامپت ممیزی امنیتی پروژه توسط ایجنت در متن گنجانده شود.