Wat zijn GitHub-apps?

Voltooid

Hier bespreken we wat GitHub-apps zijn, hoe ze werken en hoe u ze kunt gebruiken om uw werkstromen te verbeteren. Er is altijd ruimte om uw processen te verbeteren, of u nu een door iemand anders gebouwde oplossing wilt gebruiken of er een wilt ontwikkelen die voldoet aan uw exacte behoeften.

Het platform uitbreiden via de GitHub-API

GitHub biedt een robuuste API waarmee ontwikkelaars bijna alles op het platform kunnen doen. De API wordt beschikbaar gemaakt via REST-eindpunten, zodat u eenvoudig kunt integreren vanuit elk platform of elke programmeertaal. De API-toegang staat echter niet zelfstandig. Ontwikkelaars die hun functies met anderen willen delen, moeten ze nog steeds inpakken als een app en publiceren voordat iedereen ze kan gebruiken.

Er zijn verschillende factoren waarmee u rekening moet houden bij het kiezen tussen het opnemen van een OAuth-app of GitHub-app in uw werkstroom. In deze sectie maakt u kennis met GitHub-apps en OAuth-apps, hun verschillen in gebruik en machtigingen en gebeurtenisabonnementen.

Afbeelding van een installatiepictogram en een goedkeuringspictogram voor GitHub-apps en OAuth-apps.

Bij het aanpassen van een GitHub-werkstroom hebt u verschillende functies beschikbaar. Zoals het schrijven van aangepaste scripts, het maken en autoriseren van uw eigen OAuth-apps of het installeren van GitHub-apps die beschikbaar zijn via de GitHub Marketplace. Over het algemeen kunt u het beste scripts gebruiken voor deze eenmalige taken. Voor acties die vaker worden uitgevoerd, kan de automatisering van OAuth- en GitHub-apps u en uw team helpen tijd te besparen en tegelijkertijd het optimale beveiligingsniveau binnen uw werkstromen te behouden. Er zijn veel verschillen die van invloed zijn op de manier waarop u een GitHub-app of OAuth-app gebruikt. Als u deze verschillen van tevoren begrijpt, kunt u hoofdpijn verminderen en uw werk aan de weg aanpassen en u helpen de beste toepassing te vinden voor uw specifieke use case in uw werkstroom.

Aan het einde van deze sectie moet u een goed beeld hebben van de verschillen tussen een GitHub-app en een OAuth-app en weten hoe u het beste een app kunt kiezen voor de juiste situatie.

Toegang en machtigingen toekennen

Een van de belangrijkste aandachtspunten voor het toestaan van een app om toegang te krijgen tot een GitHub-opslagplaats is de machtigingen die nodig zijn om te kunnen worden gebruikt. Sommige apps zijn gemakkelijk te vertrouwen, maar anderen kunnen verdacht zijn. Zorg er altijd voor dat u vertrouwd bent met de machtigingen die u voor een app hebt verleend.

Schermopname van het controleren van aangevraagde machtigingen en toegang tot opslagplaatsen.

Notitie

Elke app gebruikt een unieke API-sleutel om aanvragen voor de gegevens in uw opslagplaats te maken. Wanneer u toegang verleent, is het de sleutel die u wilt autoriseren. U kunt de toegang tot de sleutel van een app op elk gewenst moment intrekken vanuit de instellingen van uw opslagplaats.

OAuth-apps

OAuth-apps bieden een manier om namens een gebruiker toegang te krijgen tot GitHub-gegevens. Omdat deze namens de gebruiker handelt, is het belangrijk om te weten dat er een GitHub-licentie wordt gebruikt. U kunt een OAuth-app maken en registreren in uw persoonlijke account of op organisatieniveau als u beheerderstoegang hebt. Een OAuth-app die kan worden geïntegreerd met GitHub geeft het type toegang tot de organisatie of opslagplaats openbaar dat nodig is. Gebruikers autoriseren OAuth-apps, waardoor de app kan fungeren als geverifieerde gebruiker, zoals het lezen of wijzigen van gegevens. Deze benadering is in wezen een geautomatiseerde manier om GitHub-gegevens als gebruiker te lezen, schrijven of bewerken. Het is ook belangrijk om te weten dat autorisatie beperkt is tot de resources die toegankelijk zijn voor de gebruiker. De OAuth-app krijgt echter ook toegang tot alle resources die beschikbaar zijn voor de gebruiker.

Notitie

Het toegangsniveau wordt beperkt door het bereik van het token (gebruiker, organisatie, opslagplaats).

Voor organisaties met toegangsbeperkingen voor OAuth-apps kan de beheerder goedkeuring verlenen voor het gebruik van de toepassing. Met gebeurtenisabonnementen reageren OAuth-apps op activiteit wanneer dit gebeurt.

GitHub-apps

GitHub-apps worden daarentegen geïnstalleerd in uw persoonlijke account, organisaties waarvan u eigenaar bent of specifieke opslagplaatsen waarin u beheerderstoegang hebt. GitHub-apps worden geïnstalleerd en communiceren met GitHub als een service, niet met een afzonderlijke gebruiker als met OAuth-apps. Een voordeel van GitHub-apps is dat GitHub-apps, in tegenstelling tot OAuth-apps, geen GitHub-licentie gebruiken.

GitHub Apps opent gegevens namens de toepassing zelf via een persoonlijke sleutel die wordt gebruikt om een JSON-webtoken te ondertekenen. Omdat ze zijn geïnstalleerd op specifieke opslagplaatsen, kunnen gebruikers kiezen tot welke opslagplaatsen de app toegang heeft, waardoor de hoeveelheid gegevens wordt beperkt waartoe de app toegang heeft. Machtigingen definiëren welke resources de GitHub-app kan openen via de API. In tegenstelling tot OAuth-apps hebben GitHub-apps aanpasbare machtigingen voor opslagplaatsgegevens, problemen en pull-aanvragen. Met aanpassing kunt u gedetailleerdere machtigingen verlenen, waardoor de app alleen kan lezen en schrijven in de opslagplaatsen die u toegang geeft. Alleen eigenaren van organisaties kunnen de instelling van GitHub-apps in een organisatie beheren.

U kunt GitHub-apps zoeken en installeren vanuit de GitHub Marketplace. Wanneer u naar GitHub-apps zoekt, moet u er rekening mee houden dat sommige apps een geverifieerde badge hebben. Een geverifieerde badge geeft het volgende aan over de app en de organisatie die eigenaar is van de app:

  • Het eigendom van de organisatie van hun domein wordt geverifieerd.
  • GitHub Support bevestigt de e-mailadressen voor de organisatie.
  • De organisatie vereist tweeledige verificatie.

Afbeelding van een geverifieerde badge voor een GitHub-app.

  • Een beheerder kan machtigingen verlenen met betrekking tot het beheer van opslagplaatsen, controles, inhoud van de opslagplaats, implementaties en problemen (de beheerderswijzigingen vereisen acceptatie van de gebruiker)
  • Een beheerder kan machtigingen voor app-gebruikers verlenen om een andere gebruiker, e-mails, volgers, GPG-sleutels, Git SSH-sleutels, aanbevelen, volgen te blokkeren (wijzigingen door de beheerder vereisen acceptatie van de gebruiker)
  • Gebeurtenisabonnementen: Beveiligingsadvies, Controle suite, Maken, Implementatie, Fork, Label, Lid, Inchecken, Opmerking doorvoeren, Verwijderen, Implementatiestatus, Mijlpaal, Lidmaatschap, Organisatie (Beheerder configureert in de gebruikersinterface van GH Apps en kan worden gewijzigd)

Kiezen tussen GitHub-apps en OAuth-apps

Hoewel GitHub-apps in sommige situaties een ideale manier zijn om te integreren in uw werkstroom, kunnen grotere organisaties het lastig vinden om de overgang te maken van het traditionele gebruik van OAuth-apps voor automatisering. Een beveiligingsbeleidsbeperking kan bijvoorbeeld ook de opties van een beheerder beperken bij het gebruik van deze hulpprogramma's.

Notitie

Als systeembeheerder moet u samenwerken met uw ontwikkelaars om opties te vinden die het meest geschikt zijn voor automatisering door deze toepassingen te gebruiken terwijl u uw beveiligingsbeleid nog steeds volgt.

Hier volgen enkele belangrijke vragen om te bepalen welke app de juiste oplossing is voor uw situatie:

  • Wil ik dat de app als gebruiker fungeert?
  • Wat moet de frequentielimiet zijn?
  • Welke toegang wil ik dat de app zich in de organisatie en opslagplaatsen bevindt?
  • Voldoet deze app aan ons beveiligingsbeleid?

Hier volgen enkele belangrijke kenmerken en verschillen waarmee u rekening moet houden bij het kiezen tussen een GitHub-app of OAuth-app.

GitHub-apps OAuth-apps
Als u een GitHub-app installeert, verleent u de app toegang tot de door een gebruiker of organisatie gekozen opslagplaatsen. Het autoriseren van een OAuth-app verleent de app toegang tot de toegankelijke bronnen van de gebruiker; Bijvoorbeeld opslagplaatsen die ze kunnen openen.
Toegangstokens voor installatie zijn beperkt tot opgegeven opslagplaatsen met de machtigingen die zijn gekozen door de maker van de app. Een OAuth-toegangstoken is beperkt via bereiken.
Een installatietoken identificeert de app als de GitHub Apps-bot. Een toegangstoken identificeert de app als de gebruiker die het token aan de app heeft verleend.
GitHub-apps gebruiken gerichte machtigingen waarmee ze alleen toegang kunnen aanvragen tot wat ze nodig hebben. OAuth-apps kunnen geen gedetailleerde machtigingen gebruiken.
GitHub-apps zijn niet onderworpen aan het toepassingsbeleid van de organisatie. Een GitHub-app heeft alleen toegang tot de opslagplaatsen die een organisatie-eigenaar verleent. Als een organisatietoepassingsbeleid actief is, kan alleen een organisatie-eigenaar de installatie van een OAuth-app autoriseren. Als de OAuth-app is geïnstalleerd, krijgt de OAuth-app toegang tot alles wat zichtbaar is voor het token dat de eigenaar van de organisatie heeft binnen de goedgekeurde organisatie.
Verhogingen van frequentielimieten kunnen zowel op gitHub-appsniveau (van invloed op alle installaties) als op het afzonderlijke installatieniveau worden toegekend. Verhogingen van frequentielimieten worden verleend per OAuth-app. Elk token dat aan die OAuth-app is verleend, krijgt de verhoogde limiet.
GitHub Apps kan worden geverifieerd namens de gebruiker, die gebruikers-naar-server-aanvragen wordt genoemd. De stroom die moet worden geautoriseerd, is hetzelfde als de OAuth-app-autorisatiestroom. Tokens van gebruiker naar server kunnen verlopen en worden vernieuwd met een vernieuwingstoken. De OAuth-stroom die door OAuth-apps wordt gebruikt, autoriseert een OAuth-app namens de gebruiker. Deze stroom is dezelfde die wordt gebruikt in de gebruikers-naar-serverautorisatie van GitHub App.
GitHub-apps vragen om machtiging voor de inhoud van de opslagplaats en gebruik uw installatietoken om te verifiëren via GIT op basis van HTTP. OAuth-apps vragen om write:public_key bereik en een implementatiesleutel maken via de API. Vervolgens kunt u die sleutel gebruiken om Git-opdrachten uit te voeren.

Toegang en machtigingen voor toepassingen

Een van de belangrijkste aandachtspunten voor het toestaan van een app om toegang te krijgen tot een GitHub-opslagplaats is de machtigingen die nodig zijn om te kunnen worden gebruikt. Sommige apps zijn gemakkelijk te vertrouwen, maar anderen kunnen verdacht zijn. Zorg er altijd voor dat u vertrouwd bent met de machtigingen die u voor een app hebt verleend.

Het nemen van de beslissing om een GitHub-app of OAuth-app te gebruiken, is mogelijk afhankelijk van het toegangsniveau dat de app moet openen. Over het algemeen moet u uw team aanmoedigen om het hulpprogramma te gebruiken met het kleinste bereik om de taak uit te voeren. Een OAuth-app heeft toegang tot alle resources van een gebruiker of organisatie-eigenaar.

  • OAuth-apps kunnen lees - of schrijftoegang hebben tot uw GitHub-gegevens
  • U kunt een GitHub-app toegang verlenen tot één account zonder toegang te krijgen tot een ander account

Toepassingsbeveiliging

Wanneer u een beveiligingsprobleem in uw toepassing vindt, moet dit een prioriteit zijn en binnen uw beveiligingsbeleid om de gebruikers van uw project te vertellen. Het snel communiceren van een beveiligingsprobleem kan betekenen dat het verschil is tussen uw gebruikers die een gecompromitteerd token kunnen intrekken of gevoelige gegevens beschikbaar kunnen maken. Hoewel tokens veel veiliger zijn dan wachtwoorden, kan de beveiliging nog steeds worden aangetast en is het belangrijk dat uw organisatie wordt voorbereid.

Naast een README.md-bestand raden we u aan een SECURITY.md bestand toe te voegen aan uw opslagplaatsen. Het SECURITY.md-bestand markeert beveiligingsgerelateerde informatie voor de opslagplaats. Het bestand moet de beveiligingscontactpersonen, het beleid van uw organisatie bevatten en de reactie die u wilt nemen wanneer er een beveiligingsprobleem wordt gedetecteerd.

Reageren op gebeurtenissen

GitHub-apps zijn zodanig ontworpen dat ze passief zijn. Ze wachten tot er iets gebeurt en reageren vervolgens, meestal via de GitHub-API. Bij het wachten op gebeurtenissen op GitHub, zijn er twee benaderingen: webhooks en navragen.

Notitie

GitHub-apps zijn niet beperkt tot het werken met GitHub-gegevens. U kunt eenvoudig wachten op gebeurtenissen die afkomstig zijn van andere bronnen of acties uitvoeren die andere services bijwerken.

GitHub-webhooks gebruiken

Webhooks zijn de voorkeursbenadering voor het verwerken van gebeurtenissen. Wanneer er iets gebeurt op GitHub binnen het bereik van een webhook, wordt er onmiddellijk een gebeurtenis gegenereerd. Webhooks pushmeldingen die uw app in realtime kan beluisteren en verwerken. U kunt webhooks configureren in de instellingen van uw opslagplaats, met inbegrip van de typen gebeurtenissen, verificatie en hoe de HTTP-meldingen worden bezorgd.

Navragen

Soms zijn webhooks geen optie. Mogelijk moet uw app zich achter een bedrijfsfirewall bevinden waar GitHub deze niet rechtstreeks kan bereiken. In dat geval kunt u als alternatief navraag doen over de data die u wilt bijhouden met behulp van de GitHub-API.

Webhook-relay

Een alternatief voor polling voor apps achter een firewall is het gebruik van een doorstuurservice voor webhook, zoals smee.io. Met deze methode abonneert de openbare service zich op de webhook van de opslagplaats en stuurt de binnenkomende gegevens vervolgens door naar een clientservice die achter de firewall wordt uitgevoerd. Deze clientservice stuurt vervolgens de meldingen naar uw actieve app, alsof ze afkomstig zijn van de oorspronkelijke bron.