Identifiera åtkomsttoken som stöds

Slutförd

Här får du lära dig mer om de olika GitHub-åtkomsttoken, deras program, begränsningar och hastighetsbegränsningar.

När det gäller att bevilja åtkomst till en användare i ditt företag är autentisering otroligt viktigt. Användaråtkomsten bör vara strikt begränsad och innehålla endast det som krävs för att användarna ska kunna utföra sina uppgifter. Att förstå de olika åtkomsttoken är viktigt eftersom du hjälper användare inom företaget att använda det bästa alternativet för sina användningsfall.

GitHub använder olika token som gör det möjligt för användare att autentisera till de olika aktiviteter som de behöver utföra. Vanligtvis är dessa olika token enkla och det är lätt att veta vilken token som ska användas. Men ibland kan flera token användas för att uppnå samma resultat, så att välja en token kan bero på ett beslut som är bra, bättre och bäst. I dessa situationer är det viktigt att identifiera egenskaperna för GitHubs token och hur du på rätt sätt omfångsbegränsar en tokens åtkomst. Här är en lista över de olika åtkomsttoken som är tillgängliga:

  • Personliga Åtkomsttoken för GitHub
  • GitHub-token för användare till server
  • GitHub-server-till-server-token
  • OAuth-åtkomsttoken
  • Uppdatera token

Det är viktigt att uppmuntra utvecklingsteamet att använda token med rätt omfång så att risken kan minskas snabbt när en säkerhetsrisk upptäcks. Låt oss ta en närmare titt på var och en av dessa åtkomsttoken.

Personliga åtkomsttoken

En personlig åtkomsttoken (PAT) är ett alternativ till att använda ett lösenord för autentisering till GitHub. För att kunna skicka och hämta lagringsplatser måste GitHub verifiera användaråtkomst. Verifieringen görs via en användares verifierade e-postadress. Du kan skapa så många personliga åtkomsttoken som ditt arbetsflöde kräver, och du bör behandla dem så säkert som lösenord. Att använda olika token för olika program är bästa praxis för säkerhet. Om du vill skapa en personlig åtkomsttoken i GitHub går du till Inställningar. Under Utvecklarinställningar hittar du personliga åtkomsttoken.

Skärmbild med ett exempel på en personlig Åtkomsttoken för GitHub.

Du kan begränsa en enskild token till den åtkomst som krävs för att autentisera jobbet som den ska tilldelas till. Token är knuten till en specifik användare och överensstämmer med användarens åtkomst till organisationen och lagringsplatserna. Du kan återkalla en personlig åtkomsttoken när som helst, vilket är särskilt viktigt när ett säkerhetshack inträffar. Det är viktigt att kommunicera med ditt team om att deras personliga åtkomsttoken ska behandlas lika säkert som ett användarnamn och lösenord. Om en token komprometteras bör du vidta omedelbara åtgärder för att återkalla token.

Detaljerade steg för att skapa en personlig åtkomsttoken finns här: Skapa en personlig åtkomsttoken – GitHub Docs

Enhetstoken

En enhetstoken är i princip en datorkontoversion av en PAT, som används i samband med en enhet, vilket ger åtkomst till en specifik lagringsplats i specifika användningsfall som inte är användarbundna. En programkonfiguration med ett OAuth-flöde använder en enhetstoken. De används vanligtvis med löpare, särskilda programtjänster, Cron-jobb (i Linux) eller andra liknande scenarier som rör automatiserade uppgifter. Precis som den personliga åtkomsttoken är den kopplad till ett enskilt konto och kontot som du skapar enhetstoken för använder en licens.

Installationstoken för GitHub-program

Med en installationstoken kan en GitHub-app göra autentiserade API-begäranden för programmets installation i en organisation. Innan du skapar en installationstoken måste GitHub-appen som token ska tillämpas på installeras på mållagringsplatsen. Installationstoken är giltiga i en timme och eftersom de genereras för ett specifikt syfte och upphör att gälla på relativt kort tid är de säkra.

OAuth-åtkomsttoken

OAuth2-token används för att auktorisera användare för OAuth-standardappar som körs i webbläsaren och för huvudlösa appar som CLI-verktyg. De gör att din app kan komma åt API:et med en användaråtkomsttoken. Med dessa token kan du ansluta din GitHub-användaridentitet till program från tredje part, så att appen kan utföra åtgärder åt dig. Om du till exempel vill använda en app som begär user:email omfång har appen skrivskyddad åtkomst till dina privata e-postadresser. Dessa token kan hämtas med hjälp av webbappflödet för produktionsprogram. Eftersom dessa token är kortsiktiga och upphör att gälla om 10 minuter är de också säkra.

Uppdatera token

En uppdateringstoken är ansluten med en OAuth-token. När en ny OAuth-token (via en användar-till-server-begäran) beviljas inkluderas en uppdateringstoken i svaret. När användartoken upphör att gälla kan uppdateringstoken bytas ut mot en ny användartoken med en begäran om återanrop. Varje gång en ny OAuth-token utfärdas ingår en uppdateringstoken. Uppdateringstoken är giltiga i sex månader och är en bra påminnelse om att uppdatera dina OAuth-token.

Identifierbara prefix

Som vi ser i hela branschen är tokenprefix ett tydligt sätt att göra token identifierbara. GitHub innehåller prefix med tre bokstäver för att representera varje token, som börjar med en företagssignatör, gh, följt av den första bokstaven i tokentypen. Resultatet för tokentyperna ovan är:

  • ghp för personliga Åtkomsttoken för GitHub
  • ghu för GitHub-användar-till-server-token
  • ghs för GitHub-server-till-server-token
  • gho för OAuth-åtkomsttoken
  • ghr för uppdateringstoken

Dessutom har dessa prefix en avgränsare (_) i token för att förbättra läsbarheten. Ett understreck är inte ett Base64-tecken, vilket hjälper till att säkerställa att dessa token inte oavsiktligt kan dupliceras av slumpmässigt genererade strängar som SHAs. Dessa prefix bidrar också till att minska den falska positiva hastigheten för hemlig genomsökning, vilket är en avancerad GitHub-säkerhetsfunktion för att ytterligare förbättra säkerheten på din GitHub-lagringsplats.

Gränser för tokenfrekvens

Att överskrida hastighetsgränserna kan leda till förlorad utvecklingstid. Nu ska vi prata om hastighetsbegränsningar för GitHub-appar och OAuth-appar. Genom att förstå hastighetsbegränsningar kan du vara en resurs för utvecklare i ditt team som hjälper till att optimera organisationens investering i dessa GitHub-resurser.

Hastighetsbegränsningar hjälper till att styra trafikhastigheten på GitHub och baseras på begäranden per timme.

  • En GitHub-app som är installerad på ett GitHub Enterprise-konto har gränsen för begärandefrekvens på 15 000 begäranden per timme.
  • En OAuth-app autentiseras till en enskild användare och är begränsad till 5 000 begäranden per timme.

För Företagsadministratörer bör du övervaka hastighetsbegränsningar för appar och arbeta med utvecklarna för att justera sina skript så att de håller sig inom gränserna. Vanligtvis är hastighetsgränserna inte ett problem förrän utvecklaren gör något som att skriva ett skript som begär för mycket information i ett arbetsflöde. Plötsligt stoppas utvecklingen och hastighetsgränserna blir en flaskhals. Du kan undvika dessa problem med hastighetsbegränsningsöverförbrukning genom att begränsa antalet begäranden per timme eller ändra ett arbetsflöde för att vänta mellan begäranden. Om du överskrider hastighetsgränsen med grundläggande autentisering eller OAuth kan du förmodligen åtgärda problemet genom att cachelagra API-svar och använda villkorsstyrda begäranden.

Från hanteringskonsolen kan du konfigurera en anpassad hastighetsgräns för oautentiserade användare i företaget och skapa en undantagslista så att vissa användare kan använda den fullständiga API-hastighetsgränsen.

Skärmbild av hanteringskonsolen som anger API-hastighetsgränserna.

Du kan kontrollera din aktuella hastighetsgränsstatus när som helst med hjälp av följande API för hastighetsbegränsning. De returnerade HTTP-huvudena för en API-begäran visar din aktuella hastighetsgränsstatus.

curl \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/rate_limit

Exempelsvar

{
  "resources": {
    "core": {
      "limit": 5000,
      "remaining": 4999,
      "reset": 1372700873,
      "used": 1
    },
    "search": {
      "limit": 30,
      "remaining": 18,
      "reset": 1372697452,
      "used": 12
    },
    "graphql": {
      "limit": 5000,
      "remaining": 4993,
      "reset": 1372700389,
      "used": 7
    },
    "integration_manifest": {
      "limit": 5000,
      "remaining": 4999,
      "reset": 1551806725,
      "used": 1
    },
    "code_scanning_upload": {
      "limit": 500,
      "remaining": 499,
      "reset": 1551806725,
      "used": 1
    }
  },
  "rate": {
    "limit": 5000,
    "remaining": 4999,
    "reset": 1372700873,
    "used": 1
  }
}

Mer detaljerad information om hastighetsbegränsningar finns i Hastighetsbegränsning på GitHub Docs.