Vad är GitHub-appar?

Slutförd

Här diskuterar vi vad GitHub Apps är, hur de fungerar och hur du kan använda dem för att förbättra dina arbetsflöden. Oavsett om du använder en lösning som skapats av någon annan eller utvecklar en så att den passar dina behov finns det alltid utrymme för att förbättra dina processer.

Utöka plattformen via GitHub-API:et

GitHub tillhandahåller ett robust API som gör det möjligt för utvecklare att göra nästan vad som helst på plattformen. API:et exponeras via REST-slutpunkter, så det är enkelt att integrera med från valfri plattform eller programmeringsspråk. API-åtkomsten står dock inte på egen hand. Utvecklare som vill dela sina funktioner med andra måste fortfarande paketera dem som en app och publicera dem innan någon kan använda dem.

Det finns flera faktorer att tänka på när du väljer mellan att införliva en OAuth-app eller GitHub-app i arbetsflödet. I det här avsnittet introducerar vi github-appar och OAuth-appar, deras skillnader i användning och behörighet samt händelseprenumerationer.

Bild av en installationsikon och en godkänna-ikon för GitHub Apps och OAuth-appar.

När du anpassar ett GitHub-arbetsflöde har du flera tillgängliga funktioner. Som att skriva anpassade skript, skapa och auktorisera dina egna OAuth-appar eller installera GitHub-appar som är tillgängliga från GitHub Marketplace. I allmänhet kan du bäst använda skript för dessa engångsuppgifter. För åtgärder som körs oftare kan automatiseringen av OAuth- och GitHub Apps hjälpa dig och ditt team att spara tid, samtidigt som du behåller den optimala säkerhetsnivån i dina arbetsflöden. Det finns många skillnader som påverkar hur du bestämmer dig för att använda en GitHub-app eller OAuth-app. Att förstå dessa skillnader i förväg kan minska vissa problem och omarbeta på vägen, och hjälpa dig att hitta det bästa programmet för ditt specifika användningsfall i arbetsflödet.

I slutet av det här avsnittet bör du ha en god förståelse för skillnaderna mellan en GitHub-app och en OAuth-app och veta hur du bäst väljer en app för rätt situation.

Bevilja åtkomst och behörighet

Ett av de viktigaste övervägandena för att tillåta att en app får åtkomst till en GitHub-lagringsplats är de behörigheter som krävs för att fungera. Vissa appar är lätta att lita på, men andra kan vara misstänkta. Se alltid till att du är bekväm med de behörigheter som du beviljar en app.

Skärmbild av granskning av begärda behörigheter och lagringsplatsåtkomst.

Kommentar

Varje app använder en unik API-nyckel för att göra förfrågningar om data i din lagringsplats. När du auktoriserar åtkomst är det den nyckeln du auktoriserar. Du kan återkalla åtkomsten till en apps nyckel när som helst från lagringsplatsens inställningar.

OAuth-appar

OAuth-appar ger ett sätt att komma åt GitHub-data för en användares räkning. Eftersom den agerar för användarens räkning är det viktigt att observera att den använder en GitHub-licens. Du kan skapa och registrera en OAuth-app på ditt personliga konto eller på organisationsnivå om du har administrativ åtkomst. En OAuth-app som integreras med GitHub visar vilken typ av åtkomst till organisationen eller lagringsplatsen som krävs. Användare auktoriserar OAuth-appar, vilket ger appen möjlighet att fungera som den autentiserade användaren, till exempel att läsa eller ändra data. Den här metoden är i princip ett automatiserat sätt att läsa, skriva eller redigera GitHub-data som användare. Det är också viktigt att observera att auktoriseringen är begränsad till de resurser som är tillgängliga för användaren. OAuth-appen får dock också åtkomst till alla resurser som är tillgängliga för användaren.

Kommentar

Åtkomstnivån begränsas av tokenomfånget (användare, organisation, lagringsplats).

För organisationer med åtkomstbegränsningar för OAuth-appar kan administratören bevilja godkännande för att använda programmet. Med händelseprenumerationer svarar OAuth Apps på aktivitet när det händer.

GitHub Apps

GitHub Apps installeras däremot på ditt personliga konto, i organisationer som du äger eller på specifika lagringsplatser där du har administratörsåtkomst. GitHub Apps installeras och interagerar med GitHub som en tjänst, inte en enskild användare som med OAuth Apps. En fördel med GitHub Apps är att GitHub Apps, till skillnad från OAuth-appar, inte använder en GitHub-licens.

GitHub Apps får åtkomst till data för själva programmet via en privat nyckel som används för att signera en JSON-webbtoken. Eftersom de är installerade på specifika lagringsplatser kan användarna välja vilka lagringsplatser som appen kan komma åt, vilket begränsar mängden data som appen kan komma åt. Behörigheter definierar vilka resurser GitHub-appen kan komma åt via API:et. Till skillnad från OAuth-appar har GitHub Apps anpassningsbara behörigheter för lagringsplatsdata, problem och pull-begäranden. Med anpassning kan du bevilja mer detaljerade behörigheter, vilket begränsar appen till att endast läsa och skriva på de lagringsplatser som du tillåter åtkomst till. Endast organisationsägare kan hantera inställningen för GitHub Apps i en organisation.

Du hittar och installerar GitHub Apps från GitHub Marketplace. Tänk på att vissa appar har ett verifierat märke när du söker efter GitHub-appar. Ett verifierat märke anger följande om appen och organisationen som äger den:

  • Organisationens ägarskap för deras domän verifieras.
  • GitHub Support bekräftar e-postadresserna för organisationen.
  • Organisationen kräver tvåfaktorautentisering.

Bild av ett verifierat märke för en GitHub-app.

  • En administratör kan bevilja behörigheter för lagringsplatsadministration, kontroller, lagringsplatsinnehåll, distributioner och problem (Administratörsändringarna kräver användargodkännande)
  • En administratör kan ge appen användarbehörighet för att blockera en annan användare, e-post, följare, GPG-nycklar, Git SSH-nycklar, stjärnmärka, titta (Administratörsändringarna kräver användargodkännande)
  • Händelseprenumerationer: Säkerhetsrådgivning, Check suite, Skapa, Distribuering, Förgrena, Etikett, Medlem, Checka in, Kommentar till commit, Ta bort, Distributionsstatus, Milstolpe, Medlemskap, Organisation (Administratören konfigurerar i GH Apps-gränssnittet och kan ändras)

Välj mellan GitHub-appar och OAuth-appar

Även om GitHub Apps är ett idealiskt sätt att integrera i arbetsflödet i vissa situationer, kan större organisationer finna det svårt att göra övergången från den traditionella användningen av OAuth-appar för automatisering. En säkerhetsprincipbegränsning kan till exempel också begränsa administratörens alternativ när de väljer att använda dessa verktyg.

Kommentar

Som systemadministratör bör du samarbeta med dina utvecklare för att hitta alternativ som passar bäst för automatisering genom att använda dessa program samtidigt som du följer din säkerhetsprincip.

Här är några viktiga frågor att tänka på för att avgöra vilken app som är rätt lösning för din situation:

  • Vill jag att appen ska fungera som en användare?
  • Vad behöver hastighetsgränsen vara?
  • Vilken åtkomst vill jag att appen ska ha i organisationen och lagringsplatserna?
  • Följer den här appen vår säkerhetsprincip?

Här följer några viktiga egenskaper och skillnader att tänka på när du väljer mellan en GitHub-app eller en OAuth-app.

GitHub Apps OAuth-appar
Om du installerar en GitHub-app får appen åtkomst till ett användar- eller organisationskontos valda lagringsplatser. Auktorisering av en OAuth-app ger appen åtkomst till användarens tillgängliga resurser. till exempel lagringsplatser som de kan komma åt.
Installationsåtkomsttoken är begränsade till angivna lagringsplatser med de behörigheter som valts av appens skapare. En OAuth-åtkomsttoken begränsas via omfång.
En installationstoken identifierar appen som GitHub Apps-roboten. En åtkomsttoken identifierar appen som den användare som beviljade token till appen.
GitHub Apps använder riktade behörigheter som gör att de endast kan begära åtkomst till det de behöver. OAuth-appar kan inte använda detaljerade behörigheter.
GitHub Apps omfattas inte av organisationens programprinciper. En GitHub-app har bara åtkomst till de lagringsplatser som en organisations ägare beviljar. Om en princip för organisationsprogram är aktiv kan endast en organisationsägare auktorisera installationen av en OAuth-app. Om den installeras får OAuth-appen åtkomst till allt som är synligt för den token som organisationens ägare har inom den godkända organisationen.
Hastighetsgränshöjningar kan beviljas både på GitHub Apps-nivå (som påverkar alla installationer) och på enskild installationsnivå. Ökningar av hastighetsgränser beviljas per OAuth-app. Varje token som beviljas till OAuth-appen får den ökade gränsen.
GitHub Apps kan autentiseras åt användaren, vilket kallas användar-till-server-begäranden. Flödet som ska auktoriseras är detsamma som Auktoriseringsflödet för OAuth-appen. Användar-till-server-token kan upphöra att gälla och förnyas med en uppdateringstoken. OAuth-flödet som används av OAuth Apps auktoriserar en OAuth-app för användarens räkning. Det här flödet är samma som används i GitHub App-auktorisering från användare till server.
GitHub Apps ber om behörighet för lagringsplatsinnehåll och använder din installationstoken för att autentisera via HTTP-baserad Git. OAuth-appar ber write:public_key om omfång och Skapa en distributionsnyckel via API:et. Du kan sedan använda den nyckeln för att utföra Git-kommandon.

Programåtkomst och behörigheter

Ett av de viktigaste övervägandena för att tillåta att en app får åtkomst till en GitHub-lagringsplats är de behörigheter som krävs för att fungera. Vissa appar är lätta att lita på, men andra kan vara misstänkta. Se alltid till att du är bekväm med de behörigheter som du beviljar en app.

Beslutet att använda en GitHub-app eller OAuth-app kan bero på vilken åtkomstnivå du vill att appen ska komma åt. I allmänhet bör du uppmuntra ditt team att använda verktyget med det minsta omfånget för att utföra uppgiften. En OAuth-app har åtkomst till alla en användares eller organisationsägares resurser.

  • OAuth-appar kan ha läs- eller skrivåtkomst till dina GitHub-data
  • Du kan ge en GitHub-app åtkomst till ett konto utan att beviljas åtkomst till ett annat

Programsäkerhet

När du hittar en säkerhetsrisk i ditt program bör det vara en prioritet och inom din säkerhetsprincip att berätta för projektets användare. Att snabbt kommunicera ett säkerhetsproblem kan innebära skillnaden mellan att användarna kan återkalla en komprometterad token eller att känsliga data exponeras. Token är mycket säkrare än lösenord, men säkerheten kan fortfarande äventyras och det är viktigt att din organisation förbereds.

Förutom en README.md fil rekommenderar vi att du lägger till en SECURITY.md fil i dina lagringsplatser. Filen SECURITY.md visar säkerhetsrelaterad information för lagringsplatsen. Filen bör innehålla säkerhetskontakterna, organisationens principer och beskriva det svar du planerar att vidta när en säkerhetsrisk upptäcks.

Reagerar på händelser

GitHub-appar är utformade för att vara passiva. De väntar på att något ska hända och reagerar sedan, vanligtvis via GitHub-API:et. När du väntar på att händelser ska inträffa på GitHub finns det två metoder: webhooks och avsökning.

Kommentar

GitHub-appar är inte begränsade till att fungera med GitHub-data. Du kan enkelt vänta på händelser som inträffar från andra källor eller utföra åtgärder som uppdaterar andra tjänster.

Använda GitHub-webhooks

Webhooks är den bästa metoden för händelsehantering. När något händer på GitHub inom omfånget för en webhook utlöses en händelse omedelbart. Webhooks push-meddelanden som appen kan lyssna efter och bearbeta i realtid. Du kan konfigurera webhooks i dina lagringsinställningar, som typer av händelser, autentisering och hur HTTP-meddelanden levereras.

avsökning

Ibland är webhooks inte ett alternativ. Din app kan behöva finnas bakom en företagsbrandvägg där GitHub inte kan nå den direkt. I så fall är ett alternativ att söka efter de data du spårar med hjälp av GitHub-API:et.

Webhook-reläande

Ett alternativ till pollning för appar bakom en brandvägg är att använda en tjänst för vidarebefordran av webhooks, till exempel smee.io. Med den här metoden prenumererar den offentliga tjänsten på lagringsplatsens webhook och vidarebefordrar sedan inkommande data till en klienttjänst som körs bakom brandväggen. Klienttjänsten skickar sedan meddelanden till appen som körs som om de kom från den ursprungliga källan.