gh-safe-repo: ریپوی گیتهاب با تنظیمات امن از همان اول
خلاصهٔ کاملتر
تنظیمات پیشفرض گیتهاب برای راحتی و دیدهشدن طراحی شدن، نه امنیت. هر ریپوی جدید با ویکی و Projects فعال، بدون محافظت روی برنچ اصلی، بدون Dependabot، و با دسترسی read/write برای GitHub Actions تحویل داده میشه. gh-safe-repo این وضعیت رو با یه دستور ساده درست میکنه.
دستور اصلی اینه:
gh-safe-repo create <owner/repo>این دستور یه ریپوی خصوصی میسازه و بلافاصله تمام تنظیمات امن رو روش اعمال میکنه؛ از جمله غیرفعالسازی ویکی و Projects، محدود کردن Actions به سازندگان تأیید شده، تنظیم دسترسی پیشفرض workflow به read-only، و فعالسازی secret scanning با push protection.
قابلیت --dry-run به شما نشون میده دقیقاً چه تغییراتی قرار اعمال بشه، بدون اینکه کاری انجام بده. خروجی بهصورت جدول رنگی نشون داده میشه و با --json هم میشه خروجی ماشینخوان گرفت. علاوه بر ساخت ریپوی جدید، دستور fix به شما اجازه میده ریپوهای قدیمی رو آدیت کنید و تنظیمات ناقص رو اصلاح کنید.
یه امکان جالب دیگه اسکنر امنیتی pre-flight هست که قبل از هر push کدرو بررسی میکنه. این اسکنر بهصورت محلی اجرا میشه و کد رو به گیتهاب نمیفرسته. از truffleHog v3 برای شناسایی secret استفاده میکنه و اگه نصب نباشه، سراغ podman یا docker میره؛ در صورت نبود هر دو هم با regex جایگزین میشه.
وقتی با --from یه ریپو رو mirror میکنی یا با --local یه پوشه محلی رو آپلود میکنی، اسکنر بهصورت خودکار اجرا میشه. اگه یه یافتهی بحرانی مثل کلید AWS یا توکن گیتهاب پیدا بشه، پیش از ساخت هر ریپویی ازت میپرسه ادامه بدی یا نه:
CRITICAL config.py:12 AWS Access Key ID
[redacted]
Critical findings detected. Continue anyway? [y/N]:
نکات کلیدی:
- با یه دستور ریپوی امن میسازه، بدون نیاز به چکلیست دستی
- شامل محافظت از برنچ و تگ، محدودیت Actions، Dependabot و secret scanning
- دستور fix برای آدیت و اصلاح ریپوهای قدیمی
- اسکنر pre-flight برای شناسایی secret، ایمیل، و فایلهای حساس قبل از push
- پشتیبانی از truffleHog نیتیو، اجرا در container، و fallback به regex
- قابل تنظیم از طریق فایل .ini برای سفارشیسازی رفتار




