deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak GitHub Blog

GitHub'un Evergreen uygulaması üç aylık erişim gözden geçirmelerini ve pasif repo arşivlemeyi otomatikleştiriyor

GitHub'un mühendislik ekibi, yalnızca platformun yerleşik özelliklerini kullanarak üç aylık dış iş birlikçi erişim gözden geçirmelerini yürüten ve aktif olmayan depoları arşivleyen Evergreen adlı bir GitHub App'i tanıttı.

GitHub'un Evergreen uygulaması üç aylık erişim gözden geçirmelerini ve pasif repo arşivlemeyi otomatikleştiriyor

GitHub kendi organizasyon temizliğini otomatikleştiriyor

GitHub'un platform mühendislik ekibi, yoğun organizasyonlarda genellikle ihmal edilen iki görevi otomatikleştiren Evergreen adlı bir GitHub App'i tanıttı: hangi dış iş birlikçilerin hâlâ erişime ihtiyacı olduğunu teyit etmek ve sessizliğe gömülmüş depoları arşivlemek. GitHub Blog'a göre araç, GitHub çalışanlarının — şirket içinde 'Hubber' olarak bilinirler — müşteriler ve iş ortaklarıyla ürün denemeleri ve hizmet projeleri üzerinde çalıştığı paylaşımlı bir organizasyon için geliştirildi.

İki otomatik iş akışı

Evergreen üç aylık bir döngüde çalışıyor. Erişim gözden geçirmesi, her deponun dış iş birlikçilerinin anlık görüntüsünü alır ve sahiplerine kimin kalması gerektiğini onaylatmak için bir kontrol listesi issue'su açar; işaretlenmeyen herkes erişimini kaybeder. Pasiflik iş akışı ise belirlenen eşiği aşan süre boyunca insan faaliyeti olmayan depoları izler; bu depolar önce işaretlenir, sonra uyarılır ve hiçbir şey değişmezse sonunda arşivlenir.

Yazıya göre yapıyı iki tasarım kuralı şekillendirmiş. Bir gözden geçirmeye yanıt gelmezse erişim olduğu gibi bırakılmak yerine iptal edilir; böylece güvenli sonuç varsayılan haline gelir. Ve hiçbir şey asla silinmez: arşivlenen depolar geri yüklenebilir ve her erişim değişikliği bir takip issue'suna yazılır; dolayısıyla bir hatayı geri almak, orada listelenen hesapları yeniden eklemek demektir.

Üç aylık takvim

Ayrı bir kontrolcü deposu takvimi yönetir ve sistemin durumunu tutar. Dört zamanlanmış GitHub Actions iş akışı, çeyrek boyunca repository_dispatch event'lerini tetikler:

    1. gün: pasif depoları işaretle ve uyarı issue'ları aç
    1. gün: dış iş birlikçilerinin anlık görüntüsünü al ve her depo için bir gözden geçirme issue'su aç
    1. gün: süre tanındığı halde hâlâ aktif olmayan depoları arşivle
    1. gün: yanıtlanmayan gözden geçirmelerde erişimi iptal et

Gözden geçirmeler, ilgili temizlikten iki hafta önce açılır ve sabit bir bekleme süresi, manuel bir çalışmanın erken davranmasını engeller. Her iş akışı ayrıca isteğe bağlı tetikleme için workflow_dispatch'i destekler.

Kaputun altında Evergreen bir container içinde çalışan küçük bir Go webhook sunucusudur; ancak yazıda vurgulandığı gibi diğer her bileşen GitHub'un zaten sunduğu şeylerdir: uygulamanın kendisi, zamanlanmış Actions iş akışları, webhook'lar, issue'lar, custom property'ler ve depodaki düz dosyalar.

Git denetim kaydı olarak

Her deponun durumu, kontrolcü deposuna işlenen bir JSON dosyası olarak saklanır (state/repos/<repo_id>.json yolunda); bu dosya erişim anlık görüntüsünü, son tarihleri, kimin karar verdiğini ve sonucu içerir. Durum yalnızca dosyalardan oluştuğu için commit geçmişi aynı zamanda denetim izi olarak da işlev görür — yazı, birinin erişimini neden kaybettiğini görmek için bir dosyanın commit geçmişine bakılabileceğine işaret ediyor — ve ayrı bir veritabanı ya da özel denetim aracına gerek yoktur.

Kararlar, güvenceler ve bildirimler

Etkileşim modeli issue tabanlıdır: erişimi sürdürmesi gereken iş birlikçilerin kutucuklarını işaretleyin, sonra issue'yu kapatın. Evergreen kapatılan issue webhook'unu dinler, işaretlenen hesapları korur, diğerlerini kaldırır ve tam olarak neyin kaldığını neyin gittiğini listeleyen bir özet yorumu yayınlar. Bir gözden geçirmeyi kapatmak ayrıcalıklı bir eylem olarak değerlendirilir; yetkili çalışan grubu dışındaki biri kapatırsa uygulama issue'yu yeniden açar ve nedenini açıklar.

Ekip her depoyu hangi çalışanın sahiplendiğini her zaman bilmediği için Evergreen, kime haber verileceğini bir yedekleme zinciriyle çözer: ayarlanmışsa bir custom property (evergreen_repo_owner), aksi halde erişim gözden geçirme ekibine üye son issue ve commit yazarları.

Hata yönetimi sıkıdır. Bazı kaldırma işlemleri başarılı olurken bazıları geçici bir API hatasıyla karşılaşırsa, gözden geçirme beklemede kalır ve issue açık kalır; sonraki çalışma kalanı yeniden dener; bir gözden geçirme yalnızca tüm kaldırma işlemleri başarılı olduğunda iptal edilmiş olarak kaydedilir. Her son tarihten önce bir hatırlatma yorumu düşer ve depolar, evergreen_exempt_from_access_review veya evergreen_exempt_from_archive custom property'leri kullanılarak her iki iş akışından muaf tutulabilir.

Dikkatli bir kullanıma sunum

Organizasyonda 1.400'den fazla GitHub çalışanı ve çok sayıda müşteri ile iş ortağı bulunduğundan ekip otomasyonu yavaş yavaş devreye aldı. Evergreen, yapmayı planladığı her değişikliği kaydeden ama iş birlikçilere ve depolara dokunmayan bir dry-run moduyla geliyor; ekip, önerdiği kararları doğrularken canlı organizasyonda bu modu çalıştırdı. Ayrıca uygulamayı açmadan önce neyin geleceğini ve ne zaman geleceğini herkese duyurdular.

Neden önemli

Atıl depolar ve bayat dış erişim, güvenlik denetimlerinde sık rastlanan bulgulardır ve manuel gözden geçirme programları organizasyon büyüdükçe yozlaşır. Bu yazıyı pratik kılan şey, bir ürün değil taklit edilebilir bir örüntüyü tanımlamasıdır: zamanlanmış Actions saat görevi görür, issue'lar insan arayüzünü sağlar, git denetim izini sağlar ve sessizlikte iptal politikası güvenli varsayılanı sağlar — hepsi yeni bir altyapı olmadan, yalnızca platformun yerleşik özellikleriyle. Paylaşımlı organizasyonların, deneme kiracılarının veya iş ortaklığı iş birliklerinin yöneticileri bu koreografiyi doğrudan alabilir; ve tasarım seçimleri — geri alınabilir eylemler, tutarlılığa kadar yeniden denenen temizlik, depo başına muafiyetler — izinlere dokunan her otomasyon için sağlam bir şablondur.

  • #github
  • #automation
  • #security
  • #access-management
  • #devops

İlgili yazılar