Co to są aplikacje GitHub?

Ukończone

W tym miejscu omówimy, czym są aplikacje GitHub, jak działają i jak można ich używać do ulepszania przepływów pracy. Nieważne, czy wdrażasz czyjeś rozwiązanie, czy tworzysz produkt na miarę swoich potrzeb — zawsze możliwe jest usprawnienie procesów.

Rozszerzanie platformy za pomocą interfejsu API usługi GitHub

Usługa GitHub udostępnia niezawodny interfejs API, który umożliwia deweloperom wykonywanie niemal wszystkich czynności na platformie. Interfejs API jest uwidaczniony za pośrednictwem punktów końcowych REST, więc łatwo jest zintegrować go z dowolną platformą lub językiem programowania. Jednak dostęp do interfejsu API nie działa samodzielnie. Deweloperzy, którzy chcą udostępniać swoje funkcje innym osobom, nadal muszą je spakować jako aplikację i opublikować, zanim będzie można ich używać.

Istnieje kilka czynników, które należy wziąć pod uwagę podczas wybierania między dołączeniem aplikacji OAuth lub aplikacji GitHub do przepływu pracy. W tej sekcji przedstawimy usługi GitHub Apps i OAuth Apps, ich użycie i różnice uprawnień oraz subskrypcje zdarzeń.

Obraz przedstawiający ikonę instalacji i ikonę zatwierdzenia dla aplikacji GitHub i aplikacji OAuth.

Podczas dostosowywania przepływu pracy usługi GitHub dostępnych jest kilka funkcji. Na przykład pisanie skryptów niestandardowych, tworzenie i autoryzowanie własnych aplikacji OAuth lub instalowanie aplikacji GitHub dostępnych na platformie handlowej GitHub. Ogólnie rzecz biorąc, można najlepiej używać skryptów dla tych jednorazowych zadań. W przypadku akcji uruchamianych częściej automatyzacja usług OAuth i GitHub Apps może pomóc Tobie i Zespołowi zaoszczędzić czas, zachowując jednocześnie optymalny poziom zabezpieczeń w przepływach pracy. Istnieje wiele różnic, które mają wpływ na sposób, w jaki decydujesz się na korzystanie z aplikacji GitHub lub aplikacji OAuth. Zrozumienie tych różnic wcześniej może zmniejszyć niektóre bóle głowy i przerobić w dół drogi i pomóc znaleźć najlepszą aplikację dla konkretnego przypadku użycia w przepływie pracy.

Na końcu tej sekcji należy dobrze zrozumieć różnice między aplikacją GitHub i aplikacją OAuth oraz wiedzieć, jak najlepiej wybrać aplikację w odpowiedniej sytuacji.

Przyznawanie dostępu i uprawnień

W przypadku zezwalania aplikacji na dostęp do repozytorium GitHub ważna staje się kwestia wymaganych uprawnień. Niektóre aplikacje są łatwe do zaufania, ale inne mogą być podejrzane. Uprawnienia przyznane aplikacji powinny w każdym przypadku być odpowiednie i zapewniać komfort użytkowania.

Zrzut ekranu przedstawiający przeglądanie żądanych uprawnień i dostępu do repozytorium.

Uwaga

Z poszczególnymi aplikacjami są skojarzone unikatowe klucze interfejsu API, które umożliwiają wysyłanie żądań obejmujących dane w repozytorium. Autoryzowanie dostępu tak naprawdę polega na autoryzowaniu klucza. Dostęp do klucza aplikacji można odwołać w dowolnym momencie z ustawień repozytorium.

aplikacje OAuth

Aplikacje OAuth umożliwiają dostęp do danych usługi GitHub w imieniu użytkownika. Ponieważ działa on w imieniu użytkownika, należy pamiętać, że korzysta z licencji usługi GitHub. Możesz utworzyć i zarejestrować aplikację OAuth na swoim koncie osobistym lub na poziomie organizacji, jeśli masz dostęp administracyjny. Aplikacja OAuth zintegrowana z usługą GitHub ujawnia typ dostępu do organizacji lub repozytorium, którego wymaga. Użytkownicy autoryzować aplikacje OAuth, co daje aplikacji możliwość działania jako uwierzytelniony użytkownik, takich jak odczytywanie lub modyfikowanie danych. Takie podejście jest zasadniczo zautomatyzowanym sposobem odczytywania, zapisywania lub edytowania danych usługi GitHub jako użytkownika. Należy również pamiętać, że autoryzacja jest ograniczona do zasobów, które są dostępne dla użytkownika. Jednak aplikacja OAuth uzyskuje również dostęp do wszystkich zasobów, które są dostępne dla użytkownika.

Uwaga

Poziom dostępu jest ograniczony przez zakres tokenu (użytkownik, organizacja, repozytorium).

W przypadku organizacji z ograniczeniami dostępu do aplikacji OAuth administrator może udzielić zatwierdzenia w celu korzystania z aplikacji. W przypadku subskrypcji zdarzeń aplikacje OAuth reagują na działanie w takim przypadku.

Aplikacje GitHub

Z kolei aplikacje GitHub są instalowane na twoim koncie osobistym, organizacjach będących właścicielami lub określonych repozytoriach, w których masz dostęp administratora. Aplikacje GitHub są instalowane i współdziałają z usługą GitHub jako usługą, a nie z poszczególnymi użytkownikami, tak jak w przypadku aplikacji OAuth. Jedną z zalet usługi GitHub Apps jest to, że w przeciwieństwie do aplikacji OAuth aplikacje GitHub nie korzystają z licencji usługi GitHub.

Usługa GitHub Apps uzyskuje dostęp do danych w imieniu samej aplikacji za pośrednictwem klucza prywatnego używanego do podpisywania tokenu internetowego JSON. Ponieważ są one instalowane w określonych repozytoriach, użytkownicy mogą wybrać repozytoria, do których aplikacja może uzyskiwać dostęp, co ogranicza ilość danych, do których aplikacja może uzyskać dostęp. Uprawnienia definiują zasoby, do których aplikacja GitHub może uzyskiwać dostęp za pośrednictwem interfejsu API. W przeciwieństwie do aplikacji OAuth aplikacje GitHub mają dostosowywalne uprawnienia do danych repozytorium, problemów i żądań ściągnięcia. Dostosowywanie umożliwia przyznanie bardziej szczegółowych uprawnień, ograniczając aplikację do odczytu i zapisu tylko w repozytoriach, do których można uzyskać dostęp. Tylko właściciele organizacji mogą zarządzać ustawieniem aplikacji GitHub w organizacji.

Aplikacje GitHub można znaleźć i zainstalować w witrynie GitHub Marketplace. Podczas wyszukiwania aplikacji GitHub pamiętaj, że niektóre aplikacje mają zweryfikowany wskaźnik. Wskaźnik zweryfikowany wskazuje następujące informacje o aplikacji i organizacji, która jest jej właścicielem:

  • Własność domeny organizacji jest weryfikowana.
  • Pomoc techniczna usługi GitHub potwierdza adresy e-mail organizacji.
  • Organizacja wymaga uwierzytelniania dwuskładnikowego.

Obraz zweryfikowanego znaczka dla aplikacji GitHub.

  • Administrator może udzielić uprawnień dotyczących administrowania repozytorium, sprawdzania, zawartości repozytorium, wdrożeń i problemów (zmiany administratora wymagają akceptacji użytkownika)
  • Administrator może przyznać użytkownikowi aplikacji uprawnienia do blokowania innego użytkownika, wiadomości e-mail, obserwujących, kluczy gpG, kluczy SSH Usługi Git, obserwowania, obserwowania (zmiany administratora wymagają akceptacji użytkownika)
  • Subskrypcje zdarzeń: Porady dotyczące zabezpieczeń, Sprawdzanie pakietu, Tworzenie, Wdrażanie, Rozwidlenie, Etykieta, Członek, Zaewidencjonowanie, Komentarz zatwierdzenia, Usuwanie, Stan wdrożenia, Punkt kontrolny, Członkostwo, Organizacja (administrator konfiguruje w interfejsie użytkownika aplikacji GH i można je zmienić)

Wybieranie między aplikacjami GitHub i aplikacjami OAuth

Chociaż usługa GitHub Apps jest idealnym sposobem integracji z przepływem pracy w niektórych sytuacjach, większe organizacje mogą mieć trudności z przejściem z tradycyjnego użycia aplikacji OAuth na potrzeby automatyzacji. Na przykład ograniczenie zasad zabezpieczeń może również ograniczyć opcje administratora w celu korzystania z tych narzędzi.

Uwaga

Jako administrator systemu należy współpracować z deweloperami, aby znaleźć opcje, które są najlepiej dopasowane do automatyzacji przy użyciu tych aplikacji, podczas gdy nadal są zgodne z zasadami zabezpieczeń.

Aby określić, która aplikacja jest właściwym rozwiązaniem dla Twojej sytuacji, oto kilka ważnych pytań, które należy wziąć pod uwagę:

  • Czy chcę, aby aplikacja działała jako użytkownik?
  • Jaki jest limit szybkości?
  • Jaki dostęp ma mieć aplikacja w organizacji i repozytoriach?
  • Czy ta aplikacja jest zgodna z naszymi zasadami zabezpieczeń?

Poniżej przedstawiono niektóre kluczowe cechy i różnice, które należy wziąć pod uwagę podczas wybierania między aplikacją GitHub lub aplikacją OAuth.

Aplikacje GitHub aplikacje OAuth
Zainstalowanie aplikacji GitHub przyznaje aplikacji dostęp do wybranych repozytoriów użytkownika lub konta organizacji. Autoryzowanie aplikacji OAuth przyznaje aplikacji dostęp do dostępnych zasobów użytkownika; na przykład repozytoria, do których mogą uzyskiwać dostęp.
Tokeny dostępu do instalacji są ograniczone do określonych repozytoriów z uprawnieniami wybranymi przez twórcę aplikacji. Token dostępu OAuth jest ograniczony za pośrednictwem zakresów.
Token instalacyjny identyfikuje aplikację jako bota usługi GitHub Apps. Token dostępu identyfikuje aplikację jako użytkownika, który udzielił tokenu aplikacji.
Usługa GitHub Apps używa uprawnień docelowych, które umożliwiają im żądanie dostępu tylko do tego, czego potrzebują. Aplikacje OAuth nie mogą używać szczegółowych uprawnień.
Aplikacje GitHub nie podlegają zasadom aplikacji organizacji. Aplikacja GitHub ma dostęp tylko do repozytoriów udzielanych przez właściciela organizacji. Jeśli zasady aplikacji organizacji są aktywne, tylko właściciel organizacji może autoryzować instalację aplikacji OAuth. Jeśli jest zainstalowana, aplikacja OAuth uzyskuje dostęp do wszystkich elementów widocznych dla tokenu, który właściciel organizacji ma w zatwierdzonej organizacji.
Zwiększenie limitu szybkości można przyznać zarówno na poziomie aplikacji GitHub (wpływającym na wszystkie instalacje) jak i na poziomie poszczególnych instalacji. Podwyżki limitów szybkości są przyznawane dla aplikacji OAuth. Każdy token przyznany tej aplikacji OAuth otrzymuje zwiększony limit.
Usługa GitHub Apps może uwierzytelniać się w imieniu użytkownika, który jest nazywany żądaniami typu użytkownik-serwer. Przepływ autoryzacji jest taki sam jak przepływ autoryzacji aplikacji OAuth. Tokeny typu użytkownik-serwer mogą wygasać i odnawiać przy użyciu tokenu odświeżania. Przepływ OAuth używany przez aplikacje OAuth autoryzuje aplikację OAuth w imieniu użytkownika. Ten przepływ jest taki sam, który jest używany w autoryzacji użytkownika do serwera aplikacji GitHub.
Usługa GitHub Apps prosi o uprawnienie do zawartości repozytorium i użyj tokenu instalacyjnego do uwierzytelniania za pośrednictwem usługi Git opartej na protokole HTTP. Aplikacje OAuth pytają o write:public_key zakres i Utwórz klucz wdrażania za pośrednictwem interfejsu API. Następnie możesz użyć tego klucza do wykonywania poleceń usługi Git.

Dostęp do aplikacji i uprawnienia

W przypadku zezwalania aplikacji na dostęp do repozytorium GitHub ważna staje się kwestia wymaganych uprawnień. Niektóre aplikacje są łatwe do zaufania, ale inne mogą być podejrzane. Uprawnienia przyznane aplikacji powinny w każdym przypadku być odpowiednie i zapewniać komfort użytkowania.

Podjęcie decyzji o użyciu aplikacji GitHub lub aplikacji OAuth może zależeć od poziomu dostępu, do którego aplikacja ma uzyskać dostęp. Ogólnie rzecz biorąc, należy zachęcić zespół do korzystania z narzędzia z najmniejszym zakresem w celu wykonania zadania. Aplikacja OAuth ma dostęp do wszystkich zasobów użytkownika lub organizacji.

  • Aplikacje OAuth mogą mieć dostęp do odczytu lub zapisu do danych usługi GitHub
  • Możesz udzielić aplikacji GitHub dostępu do jednego konta bez udzielenia dostępu do innego

Zabezpieczenia aplikacji

Jeśli znajdziesz lukę w zabezpieczeniach w aplikacji, powinno to być priorytetem i w ramach zasad zabezpieczeń, aby poinformować użytkowników projektu. Szybkie komunikowanie problemu z zabezpieczeniami może oznaczać różnicę między użytkownikami w stanie odwołać naruszony token lub uwidocznić poufne dane. Chociaż tokeny są znacznie bezpieczniejsze niż hasła, zabezpieczenia mogą być nadal zagrożone i ważne jest, aby organizacja była przygotowana.

Oprócz pliku README.md zalecamy dodanie pliku SECURITY.md do repozytoriów. Plik SECURITY.md wyróżnia informacje dotyczące zabezpieczeń dla repozytorium. Plik powinien zawierać kontakty zabezpieczeń, zasady organizacji i szczegółowo odpowiedź, którą planujesz podjąć po wykryciu luki w zabezpieczeniach.

Reagowanie na zdarzenia

Aplikacje GitHub są pasywne. Oczekują, aż coś się stanie, a następnie zareagują, zwykle za pośrednictwem interfejsu API usługi GitHub. Zapewniając obsługę oczekiwania na zdarzenia w usłudze GitHub, można korzystać z dwóch metod: elementów webhook i sondowania.

Uwaga

Aplikacje GitHub mogą współdziałać nie tylko z danymi usługi GitHub. Możesz łatwo czekać na zdarzenia pochodzące z innych źródeł lub wykonywać akcje aktualizujące inne usługi.

Korzystanie z elementów webhook usługi GitHub

Preferowaną metodą obsługi zdarzeń jest korzystanie z elementów webhook. Gdy coś się stanie w usłudze GitHub w zakresie elementu webhook, zdarzenie jest zgłaszane natychmiast. Elementy webhook powiadomienia wypychane, które aplikacja może nasłuchiwać i przetwarzać w czasie rzeczywistym. W ustawieniach repozytorium można skonfigurować elementy webhook — typy zdarzeń, uwierzytelnianie i sposób dostarczania powiadomień HTTP.

Sondowanie

Czasami nie można użyć elementów webhook. Aplikacja może wymagać korzystania z zapory firmowej, w której usługa GitHub nie może bezpośrednio nawiązać z nią połączenia. W takim przypadku trzeba sondować śledzone dane za pomocą interfejsu API usługi GitHub.

Przekazywanie elementu webhook

W przypadku aplikacji znajdujących się za zaporą alternatywą dla sondowania jest użycie usługi przekazywania elementów webhook, takiej jak smee.io. Dzięki temu podejściu usługa publiczna subskrybuje element webhook repozytorium, a następnie przekazuje dane przychodzące do usługi klienta działającej za zaporą. Usługa klienta wypycha powiadomienia do uruchomionych aplikacji tak jak z pierwotnego źródła.