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. Jest on dostępny za pośrednictwem punktów końcowych REST, dzięki czemu można go łatwo zintegrować na dowolnej platformie lub w dowolnym języku 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 aplikacje GitHub i aplikacje OAuth, ich różnice użycia i 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, takich jak pisanie skryptów niestandardowych, tworzenie i autoryzowanie własnych aplikacji OAuth lub instalowanie aplikacji GitHub dostępnych w witrynie GitHub Marketplace. Ogólnie rzecz biorąc, można najlepiej używać skryptów dla tych jednorazowych zadań. W przypadku akcji, które muszą być uruchamiane częściej, możesz użyć automatyzacji aplikacji OAuth i GitHub, aby pomóc Tobie i zespołowi zaoszczędzić czas i zachować 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 dobrze zrozumiesz różnice między aplikacją GitHub i aplikacją OAuth, a także dowiesz się, 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ń. Część aplikacji nie budzi zastrzeżeń, ale inne mogą wydawać się 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. W ustawieniach repozytorium można w dowolnym momencie odwołać dostęp klucza aplikacji.

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 będzie korzystać z licencjonowanego miejsca w usłudze 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 ujawni typ dostępu do organizacji lub repozytorium. 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 licencjonowanego miejsca w usłudze GitHub.

Usługa GitHub Apps uzyskuje dostęp do danych w imieniu samej aplikacji za pośrednictwem klucza prywatnego używanego do podpisywania tokenu JWT (tokenu internetowego JSON). Ponieważ są one instalowane w określonych repozytoriach, użytkownicy mogą wybrać repozytoria, do których aplikacja może uzyskać 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. Dzięki temu można udzielić bardziej szczegółowych uprawnień, ograniczając aplikację do odczytu i zapisu tylko w repozytoriach, do których może uzyskiwać 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. Ten wskaźnik pokazuje, że aplikacja jest własnością organizacji, która zweryfikowała własność swojej domeny, potwierdziła swoje adresy e-mail z pomocą techniczną usługi GitHub i wymaga uwierzytelniania dwuskładnikowego dla swojej organizacji.

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, może to być trudne dla większych organizacji, aby przejść od tradycyjnego korzystania z aplikacji OAuth na potrzeby automatyzacji. Na przykład ograniczenie zasad zabezpieczeń może również ograniczyć opcje administratora do korzystania z tych narzędzi.

Uwaga

Jako administrator systemu należy współpracować z deweloperami, aby znaleźć najlepsze opcje automatyzacji dzięki wykorzystaniu tych aplikacji, a jednocześnie przestrzegać zasad 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 będzie 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 ma uprawnienia docelowe, które pozwalają im żądać dostępu tylko do potrzebnych elementów. 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, którym udzielił właściciel 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. Jest to ten sam przepływ 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ń. Część aplikacji nie budzi zastrzeżeń, ale inne mogą wydawać się 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ą należy 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żna oczekiwać na zdarzenia występujące w innych źródłach lub wykonywać akcje, które aktualizują inne usługi.

Korzystanie z elementów webhook usługi GitHub

Preferowaną metodą obsługi zdarzeń jest korzystanie z elementów webhook. Zdarzenie, które wystąpi w usłudze GitHub w zakresie elementu webhook, jest natychmiast zgłaszane. 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 zasubskrybuje 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.