GitHub مدیریت دسترسی و مخزن‌های قدیمی را خودکار کرد

GitHub مدیریت دسترسی و مخزن‌های قدیمی را خودکار کرد

آنچه در این مقاله مطالعه می‌کنید:

۲۷ مهر ۱۴۰۵

۲۷ مهر ۱۴۰۵

به گزارش GitHub Blog، گیت‌هاب با ساخت اپلیکیشنی به نام Evergreen فرایند بازبینی دسترسی همکاران بیرونی و شناسایی مخزن‌های بلااستفاده را در یک سازمان مشترک خودکار کرده است. این سامانه هر سه ماه دسترسی‌ها را بررسی می‌کند و مخزن‌هایی را که از آستانه مشخصی بیشتر بدون فعالیت انسانی مانده‌اند، پس از هشدار بایگانی می‌کند.

Evergreen چگونه مخزن‌ها را مدیریت می‌کند؟

Evergreen یک GitHub App مبتنی بر قابلیت‌های بومی این پلتفرم است و از GitHub Actions زمان‌بندی‌شده، webhookها، issueها، ویژگی‌های سفارشی و فایل‌های عادی مخزن استفاده می‌کند. هسته فنی آن نیز یک سرور کوچک webhook با زبان Go است که در کانتینر اجرا می‌شود.

چهار گردش‌کار زمان‌بندی‌شده در روزهای اول، هشتم، شانزدهم و بیست‌وسوم چرخه فصلی اجرا می‌شوند. ابتدا مخزن‌های بدون فعالیت اخیر علامت‌گذاری و برای آن‌ها issue هشدار باز می‌شود؛ سپس فهرست همکاران بیرونی هر مخزن ثبت و یک چک‌لیست بازبینی ایجاد می‌شود. در مراحل بعد، مخزن‌هایی که همچنان غیرفعال مانده‌اند بایگانی و دسترسی‌های بدون پاسخ لغو می‌شوند. هر بازبینی دو هفته پیش از مرحله پاک‌سازی آغاز می‌شود.

مدیران مجاز با انتخاب نام افراد در چک‌لیست و بستن issue مشخص می‌کنند چه کسانی دسترسی خود را حفظ کنند. اگر فردی غیرمجاز issue را ببندد، Evergreen آن را دوباره باز می‌کند. در صورت بی‌پاسخ ماندن بازبینی نیز دسترسی تمام همکاران ثبت‌شده در همان تصویر لحظه‌ای لغو می‌شود. اگر حذف یکی از دسترسی‌ها به‌دلیل خطای موقت API شکست بخورد، وضعیت بازبینی باز می‌ماند تا اجرای بعدی دوباره تلاش کند.

ردپای قابل بررسی و بایگانی برگشت‌پذیر

وضعیت هر مخزن در یک فایل JSON داخل مخزن کنترل‌کننده ذخیره می‌شود؛ بنابراین تاریخچه commitها نقش مسیر ممیزی را دارد. تغییرات دسترسی نیز در issue مربوط ثبت می‌شوند. Evergreen هیچ مخزن یا محتوایی را حذف نمی‌کند و بایگانی مخزن‌ها برگشت‌پذیر است.

گیت‌هاب این سامانه را در سازمانی با بیش از ۱۴۰۰ کارمند خود و شمار بیشتری مشتری و شریک به‌کار گرفته است. اجرای اولیه با حالت آزمایشی DRY_RUN، اطلاع‌رسانی گسترده و پایش لاگ‌ها در Splunk انجام شد. سامانه همچنین برای رعایت محدودیت ثانویه GitHub در ایجاد محتوا ــ ۸۰ درخواست در دقیقه و ۵۰۰ درخواست در ساعت ــ مخزن‌ها را دسته‌ای پردازش می‌کند و میان درخواست‌ها فاصله می‌گذارد.

این تجربه نشان می‌دهد تیم‌های توسعه می‌توانند کارهای دوره‌ای امنیت و نگهداری مخزن را با ابزارهای موجود GitHub خودکار کنند؛ به‌شرط آنکه نتیجه پیش‌فرض امن، تغییرات قابل بازگشت و همه تصمیم‌ها قابل ردیابی باشند.