GitHub Uygulamaları nedir?
Burada GitHub Uygulamalarının ne olduğunu, nasıl çalıştıklarını ve iş akışlarınızı geliştirmek için bunları nasıl kullanabileceğinizi ele aacağız. İster başka biri tarafından oluşturulmuş bir çözümü benimsiyor olun, isterse tam olarak ihtiyaçlarınızı karşılayacak bir çözüm geliştiriyor olun, süreçlerinizi daha da iyileştirmeniz her zaman mümkündür.
GitHub API'sini kullanarak platformu genişletme
GitHub, geliştiricilerin platformda hemen hemen her şeyi yapmasına olanak tanıyan sağlam bir API sağlar. API REST uç noktaları aracılığıyla kullanıma sunulduğundan, herhangi bir platformdan veya programlama dilinden kolayca tümleştirebilirsiniz. Ancak API erişimi tek başına çalışmaz. Özelliklerini başkalarıyla paylaşmak isteyen geliştiricilerin, bu özellikleri herkesin kullanabilmesi için önce uygulama olarak paketleyip yayımlaması gerekir.
bir OAuth uygulamasını veya GitHub Uygulamasını iş akışınıza dahil etme arasında seçim yaparken dikkate alınması gereken birkaç faktör vardır. Bu bölümde, GitHub Uygulamaları ve OAuth Uygulamaları, kullanım ve izin farklılıkları ve olay abonelikleri tanıtacağız.
GitHub iş akışını özelleştirirken kullanabileceğiniz çeşitli özellikler vardır. Örneğin, özel betikler yazma, kendi OAuth Uygulamalarınızı oluşturma ve yetkilendirme veya GitHub marketinden edinilebilen GitHub Uygulamalarını yükleme. Genel olarak, bu tek seferlik görevler için betikleri en iyi şekilde kullanabilirsiniz. Daha sık çalıştırılacak eylemler için, OAuth ve GitHub Uygulamalarının otomasyonu size ve ekibinize zaman kazandırırken iş akışlarınızda en iyi güvenlik düzeyini korumanıza yardımcı olabilir. GitHub Uygulaması veya OAuth Uygulaması kullanma arasında karar verme şeklinizi etkileyen birçok fark vardır. Bu farklılıkları önceden anlamak, bazı baş ağrılarını azaltabilir ve yol boyunca yeniden çalışabilir ve iş akışınızda özel kullanım örneğiniz için en iyi uygulamayı bulmanıza yardımcı olabilir.
Bu bölümün sonunda, GitHub Uygulaması ile OAuth Uygulaması arasındaki farkları iyi anlamanız ve doğru durum için bir uygulamayı en iyi nasıl seçeceğinizi bilmeniz gerekir.
Erişim ve izin verme
Bir uygulamanın GitHub deposuna erişmesine izin verirken dikkat edilmesi gereken en önemli noktalardan biri, uygulamanın çalışması için gereken izinlerdir. Bazı uygulamalara güvenmek kolaydır, ancak bazıları şüpheli olabilir. Bir uygulamaya verdiğiniz izinle ilgili olarak her zaman içinizin rahat olduğundan emin olun.
Not
Her uygulama, deponuzdaki verilere yönelik istekte bulunmak için benzersiz bir API anahtarı kullanır. Erişim yetkisi verdiğinizde, anahtarı yetkilendirirsiniz. Bir uygulamanın anahtarına erişimi istediğiniz zaman depo ayarlarınızdan iptal edebilirsiniz.
OAuth Uygulamalarının Karşılaştırması
OAuth Uygulamaları, kullanıcı adına GitHub verilerine erişmek için bir yol sağlar. Kullanıcı adına hareket ettiğinden Bir GitHub lisansı tükettiğine dikkat etmek önemlidir. Kişisel hesabınızda veya yönetici erişiminiz varsa kuruluş düzeyinde bir OAuth Uygulaması oluşturup kaydedebilirsiniz. GitHub ile tümleşen bir OAuth Uygulaması, kuruluşa veya depoya gereken erişim türünü açıklar. Kullanıcılar, uygulamaya verileri okuma veya değiştirme gibi kimliği doğrulanmış kullanıcı gibi davranma olanağı sağlayan OAuth Uygulamalarını yetkilendirilir . Bu yaklaşım temelde GitHub verilerini kullanıcı olarak okumanın, yazmanın veya düzenlemenin otomatik bir yoludur. Yetkilendirmenin kullanıcı tarafından erişilebilen kaynakla sınırlı olduğunu da unutmayın. Ancak, OAuth Uygulaması kullanıcının kullanabileceği tüm kaynaklara da erişim elde eder.
Not
Erişim düzeyi belirtecin kapsamıyla sınırlıdır (kullanıcı, kuruluş, depo).
OAuth Uygulaması erişim kısıtlamaları olan kuruluşlar için Yönetici, uygulamayı kullanmak için onay verebiliyor. Olay abonelikleri ile OAuth Uygulamaları etkinliğe olduğu gibi yanıt verir.
GitHub Uygulamaları
Buna karşılık, GitHub Uygulamaları kişisel hesabınıza, sahip olduğunuz kuruluşlara veya yönetici erişimine sahip olduğunuz belirli depolara yüklenir . GitHub Uygulamaları, OAuth Uygulamaları'nda olduğu gibi bireysel bir kullanıcı değil, hizmet olarak GitHub ile yüklenir ve etkileşim kurar. GitHub Uygulamalarının avantajlarından biri, OAuth uygulamalarından farklı olarak GitHub Uygulamalarının GitHub lisansı kullanmamadır.
GitHub Apps, JSON Web Belirtecini imzalamak için kullanılan bir Özel Anahtar aracılığıyla uygulamanın kendisi adına verilere erişmektedir. Belirli depolara yüklendiklerinden, kullanıcılar uygulamanın erişebileceği depoları seçebilir ve bu da uygulamanın erişebileceği veri miktarını sınırlar. İzinler, GitHub Uygulamasının API aracılığıyla erişebileceği kaynakları tanımlar. OAuth Uygulamalarından farklı olarak GitHub Uygulamalarının depo verileri, sorunları ve çekme istekleri için özelleştirilebilir izinleri vardır. Özelleştirme, daha ayrıntılı izinler vermenizi sağlar ve uygulamayı yalnızca erişmesine izin ettiğiniz depolarda okuma ve yazma ile sınırlandırabilirsiniz. Bir kuruluştaki GitHub Apps ayarını yalnızca kuruluş sahipleri yönetebilir.
GitHub Uygulamalarını GitHub Marketi'nden bulabilir ve yükleyebilirsiniz. GitHub Uygulamaları'nı ararken bazı Uygulamaların doğrulanmış bir rozeti olduğunu unutmayın. Doğrulanmış rozet, uygulama ve sahibi olan kuruluş hakkında aşağıdakileri gösterir:
- Kuruluşun domain sahipliği doğrulanır.
- GitHub Desteği, kuruluşun e-posta adreslerini onaylar.
- Kuruluş iki öğeli kimlik doğrulaması gerektirir.
- Bir yönetici depo yönetimi, denetimler, depo içeriği, dağıtımlar ve sorunlarla ilgili izinler verebilir (Yönetici değişiklikleri için kullanıcı kabulü gerekir)
- Yönetici, uygulama kullanıcı izinlerini başka bir kullanıcıyı, e-postaları, takipçileri, GPG Anahtarlarını, Git SSH Anahtarlarını, yıldızlamayı ve izlemeyi engellemek için verebilir (Yönetici değişiklikleri için kullanıcı kabulü gerekir)
- Olay Abonelikleri: Güvenlik önerisi, Denetim paketi, Oluşturma, Dağıtım, Çatal, Etiket, Üye, İade Et, İşleme açıklaması, Sil, Dağıtım durumu, Kilometre Taşı, Üyelik, Kuruluş (Yönetici GH Uygulamaları kullanıcı arabiriminde yapılandırılır ve değiştirilebilir)
GitHub Uygulamaları ile OAuth Uygulamaları arasında seçim yapma
GitHub Uygulamaları bazı durumlarda iş akışınızla tümleştirmenin ideal bir yolu olsa da, büyük kuruluşlar otomasyon için OAuth Uygulamalarının geleneksel kullanımından geçiş yapmayı zor bulabilir. Örneğin, bir güvenlik ilkesi kısıtlaması yöneticinin bu araçları kullanmayı seçme seçeneklerini de sınırlayabilir.
Not
Sistem Yöneticisi olarak, güvenlik ilkenizi takip ederken bu uygulamaları kullanarak otomasyon için en uygun seçenekleri bulmak için geliştiricilerinizle birlikte çalışmanız gerekir.
Hangi uygulamanın durumunuz için doğru çözüm olduğunu belirlemek için göz önünde bulundurmanız gereken bazı önemli sorular şunlardır:
- Uygulamanın kullanıcı olarak davranmasını istiyor musunuz?
- Hız sınırının ne olması gerekir?
- Uygulamanın kuruluşta ve depolarda hangi erişime sahip olmasını istiyorum?
- Bu uygulama güvenlik ilkemizle uyumlu mu?
GitHub Uygulaması veya OAuth Uygulaması arasında seçim yaparken göz önünde bulundurmanız gereken bazı temel özellikler ve farklılıklar aşağıdadır.
| GitHub Uygulamaları | OAuth Uygulamalarının Karşılaştırması |
|---|---|
| GitHub Uygulaması'nı yüklemek, uygulamaya kullanıcı veya kuruluş hesabının seçtiği depolara erişim verir. | OAuth Uygulamasını yetkilendirmek, uygulamaya kullanıcının erişilebilir kaynaklarına erişim verir; örneğin, erişebilecekleri depolar. |
| Yükleme erişim belirteçleri, uygulamanın oluşturucusu tarafından seçilen izinlere sahip belirtilen depolarla sınırlıdır. | OAuth erişim belirteci kapsamlar aracılığıyla sınırlıdır. |
| Yükleme belirteci, uygulamayı GitHub Apps botu olarak tanımlar. | Erişim belirteci, uygulamayı uygulamaya belirteç veren kullanıcı olarak tanımlar. |
| GitHub Uygulamaları, yalnızca ihtiyaç duydukları erişim isteğinde bulunmalarına olanak sağlayan hedeflenen izinleri kullanır. | OAuth Uygulamaları ayrıntılı izinleri kullanamaz. |
| GitHub Uygulamaları kuruluş uygulama ilkelerine tabi değildir. GitHub Uygulaması yalnızca kuruluş sahibinin izin aldığı depolara erişebilir. | Kuruluş uygulama ilkesi etkinse, OAuth Uygulamasının yüklenmesine yalnızca kuruluş sahibi yetki verebilir. Yüklüyse, OAuth Uygulaması, kuruluş sahibinin onaylanan kuruluş içinde sahip olduğu belirtecin görünür olduğu herhangi bir şeye erişim kazanır. |
| Hız sınırı artışları hem GitHub Uygulamaları düzeyinde (tüm yüklemeleri etkiler) hem de tek tek yükleme düzeyinde verilebilir. | OAuth Uygulaması başına hız sınırı artışları verilir. OAuth Uygulamasına verilen her belirteç, artan sınırı alır. |
| GitHub Apps, kullanıcı adına kimlik doğrulaması yapabilir ve kullanıcıdan sunucuya istekler olarak adlandırılır. Yetkilendirme akışı, OAuth Uygulaması yetkilendirme akışıyla aynıdır. Kullanıcıdan sunucuya belirteçlerin süresi dolabilir ve yenileme belirteci ile yenilenebilir. | OAuth Uygulamaları tarafından kullanılan OAuth akışı, kullanıcı adına bir OAuth Uygulamasını yetkiler. Bu akış, GitHub Uygulaması kullanıcıdan sunucuya yetkilendirmede kullanılan akışla aynıdır. |
| GitHub Uygulamaları depo içeriği izni ister ve yükleme belirtecinizi kullanarak HTTP tabanlı Git aracılığıyla kimlik doğrulaması yapar. | OAuth Uygulamaları, write:public_key kapsamını ve API aracılığıyla bir dağıtım anahtarı oluşturmayı talep eder. Daha sonra Git komutlarını gerçekleştirmek için bu anahtarı kullanabilirsiniz. |
Uygulama erişimi ve izinleri
Bir uygulamanın GitHub deposuna erişmesine izin verirken dikkat edilmesi gereken en önemli noktalardan biri, uygulamanın çalışması için gereken izinlerdir. Bazı uygulamalara güvenmek kolaydır, ancak bazıları şüpheli olabilir. Bir uygulamaya verdiğiniz izinle ilgili olarak her zaman içinizin rahat olduğundan emin olun.
GitHub uygulamasını veya OAuth uygulamasını kullanmaya karar vermek, uygulamanın erişmesini istediğiniz erişim düzeyine bağlı olabilir. Genel olarak, ekibinizi görevi gerçekleştirmek için en küçük kapsamlı aracı kullanmaya teşvik etmelisiniz. OAuth Uygulaması, bir kullanıcı veya kuruluş sahibinin tüm kaynaklarına erişebilir.
- OAuth Uygulamaları GitHub verilerinize okuma veya yazma erişimine sahip olabilir
- Bir GitHub Uygulamasına başka bir hesaba erişim izni verilmeden bir hesaba erişim vekleyebilirsiniz
Uygulama güvenliği
Uygulamanızda bir güvenlik açığı bulduğunuzda, projenizin kullanıcılarına bildirmek bir öncelik ve güvenlik ilkeniz içinde olmalıdır. Bir güvenlik sorununun hızlı bir şekilde iletilmesi, kullanıcılarınızın güvenliği aşılmış bir belirteci iptal edebilmesi veya hassas verilerin kullanıma sunulmuş olması arasındaki fark anlamına gelebilir. Belirteçler parolalardan çok daha güvenli olsa da, güvenlik yine de tehlikeye girebilir ve kuruluşunuzun hazırlıklı olması önemlidir.
README.md dosyasına ek olarak, depolarınıza bir SECURITY.md dosyası eklemenizi öneririz. SECURITY.md dosyası, depoyla ilgili güvenlikle ilgili bilgileri vurgular. Dosya güvenlik kişilerini, kuruluş ilkelerinizi içermeli ve bir güvenlik açığı bulunduğunda almayı planladığınız yanıtı ayrıntılı olarak içermelidir.
Olaylara tepki verme
GitHub Uygulamaları, pasif olacak şekilde tasarlanmıştır. Bir şeyin gerçekleşmesini bekler ve ardından genellikle GitHub API'sini kullanarak tepki gösterir. GitHub’da olayların gerçekleşmesi beklenirken iki yaklaşım vardır: web kancaları ve yoklama.
Not
GitHub Uygulamaları, GitHub verileriyle çalışmakla sınırlı değildir. Diğer kaynaklardan gelen olayları kolayca bekleyebilir veya diğer hizmetleri güncelleştiren eylemler gerçekleştirebilirsiniz.
GitHub web kancalarını kullanma
Web kancaları, olay işleme için tercih edilen yaklaşımdır. GitHub'da webhook kapsamında bir şey olduğunda, hemen bir olay tetiklenir. Web kancaları, uygulamanızın gerçek zamanlı olarak dinleyebileceği ve işleyebileceği anında iletme bildirimleri sağlar. Olay türleri, kimlik doğrulaması ve HTTP bildirimlerinin teslim edilme şekli de dahil olmak üzere, depo ayarlarınızda web kancalarını yapılandırabilirsiniz.
Yoklamanın Karşılaştırması
Bazen web kancaları kullanılamaz. Uygulamanızın GitHub'ın doğrudan erişebildiği kurumsal bir güvenlik duvarının arkasında yaşaması gerekebilir. Bu durumda, izlemekte olduğunuz verileri GitHub API’sini kullanarak yoklamak da bir alternatiftir.
Web kancası geçişi
Güvenlik duvarının arkasındaki uygulamaları yoklamanın alternatifi, smee.io gibi bir web kancası iletme hizmeti kullanmaktır. Bu yaklaşımla, kamu hizmeti deponun web kancasına abone olur ve ardından gelen verileri güvenlik duvarının arkasında çalışan bir istemci servisine iletir. Bu istemci hizmeti daha sonra bildirimleri, özgün kaynaktan gelmiş gibi, çalışan uygulamanıza gönderir.