Identifikace podporovaných přístupových tokenů
Tady se dozvíte o různých přístupových tokenech GitHubu, jejich aplikacích, omezeních a limitech rychlosti.
Pokud jde o udělení přístupu uživateli ve vaší společnosti, ověřování je neuvěřitelně důležité. Uživatelský přístup by měl být úzce vymezený a zahrnovat pouze to, co je nezbytné pro uživatele k dokončení jejich úkolů. Pochopení různých přístupových tokenů je důležité, protože pomáháte uživatelům ve společnosti používat nejlepší možnost pro jejich případy použití.
GitHub používá různé tokeny, které uživatelům umožňují ověřovat se v různých aktivitách, které potřebují k provedení. Obvykle jsou tyto různé tokeny jednoduché a je snadné zjistit, jaký token se má použít. Někdy se ale ke stejnému výsledku dá použít více tokenů, takže volba tokenu může přijít na rozhodnutí dobrého, lepšího a nejlepšího. V těchto situacích je důležité identifikovat charakteristiky tokenů GitHubu a správné určení rozsahu přístupu k tokenu. Tady je seznam různých přístupových tokenů, které jsou k dispozici:
- Osobní přístupové tokeny GitHubu
- Tokeny uživatele na server GitHubu
- Tokeny mezi servery GitHubu
- Přístupové tokeny OAuth
- Obnovovací tokeny
Je důležité podpořit vývojový tým, aby používal tokeny se správným oborem, aby při zjištění ohrožení zabezpečení bylo možné riziko rychle zmírnit. Pojďme se podrobněji podívat na každý z těchto přístupových tokenů.
Osobní přístupové tokeny
Osobní přístupový token (PAT) je alternativou k použití hesla pro ověřování na GitHubu. Aby bylo možné do úložišť nasdílit a vyžádat je, musí GitHub ověřit uživatelský přístup. Ověření se provádí prostřednictvím ověřené e-mailové adresy uživatele. Můžete vytvořit tolik osobních přístupových tokenů, kolik vyžaduje pracovní postup, a měli byste je považovat za zabezpečená jako hesla. Použití různých tokenů pro různé aplikace je osvědčeným postupem zabezpečení. Pokud chcete vytvořit osobní přístupový token na GitHubu, přejděte na Nastavení a v části Nastavení pro vývojáře najdete osobní přístupové tokeny.
Rozsah jednotlivých tokenů můžete nastavit pouze na přístup potřebný k ověření úlohy, pro kterou bude přiřazena. Token je svázaný s konkrétním uživatelem a je v souladu s přístupem uživatele k organizaci a úložištím. Osobní přístupový token můžete kdykoli odvolat, což je zvlášť důležité, když dojde k hacku zabezpečení. Je důležité sdělit týmu, že jejich osobní přístupové tokeny by se měly považovat za bezpečné uživatelské jméno a heslo. Pokud dojde k ohrožení zabezpečení tokenu, měli byste provést okamžitou akci k odvolání tokenu.
Podrobné kroky pro vytvoření osobního přístupového tokenu jsou k dispozici tady: Vytvoření osobního přístupového tokenu – Dokumentace GitHubu
Tokeny zařízení
Token zařízení je v podstatě verze pat účtu počítače používaná v kontextu zařízení, která poskytuje přístup ke konkrétnímu úložišti v konkrétních případech použití, které nejsou vázané na uživatele. Nastavení aplikace pomocí toku OAuth používá token zařízení. Obvykle se používají se spouštěči, speciálními aplikačními službami, úlohami Cron (v Linuxu) nebo jinými podobnými scénáři souvisejícími s automatizovanými úlohami. Stejně jako osobní přístupový token je svázaný s individuálním účtem a účtem, pro který vytvoříte token zařízení, využívá licenci.
Instalační tokeny aplikací GitHubu
Instalační token umožňuje aplikaci GitHubu provádět ověřené požadavky rozhraní API pro instalaci aplikace v organizaci. Před vytvořením instalačního tokenu je potřeba nainstalovat v cílovém úložišti aplikaci GitHub, na kterou se token použije. Instalační tokeny jsou platné po dobu jedné hodiny a protože se generují pro konkrétní účel a vyprší v relativně krátké době, jsou zabezpečené.
Přístupové tokeny OAuth
Tokeny OAuth2 slouží k autorizaci uživatelů pro standardní aplikace OAuth, které běží v prohlížeči, a pro bezobjemné aplikace, jako jsou nástroje rozhraní příkazového řádku. Umožňují vaší aplikaci přístup k rozhraní API pomocí přístupového tokenu uživatele. Tyto tokeny umožňují připojit identitu uživatele GitHubu k aplikacím třetích stran, což aplikaci umožňuje provádět akce vaším jménem. Pokud například chcete použít aplikaci, která požaduje user:email
obor, bude mít aplikace přístup jen pro čtení k vašim privátním e-mailovým adresům. Tyto tokeny je možné získat pomocí toku webové aplikace pro produkční aplikace. Vzhledem k tomu, že tyto tokeny jsou krátkodobé a vyprší za 10 minut, jsou také zabezpečené.
Obnovovací tokeny
Obnovovací token je připojený k tokenu OAuth. Když se udělí nový token OAuth (prostřednictvím požadavku uživatele na server), do odpovědi se zahrne obnovovací token. Když vyprší platnost tokenu uživatele, můžete obnovovací token vyměnit za nový token uživatele s požadavkem zpětného volání. Při každém vystavení nového tokenu OAuth se zahrne obnovovací token. Obnovovací tokeny jsou platné šest měsíců a jsou dobrým připomenutím k aktualizaci tokenů OAuth.
Identifikovatelné předpony
Jak vidíme v celém odvětví, předpony tokenů představují jasný způsob, jak identifikovat tokeny. GitHub obsahuje předpony se třemi písmeny, které představují každý token, počínaje znakem společnosti, gh
a následuje první písmeno typu tokenu. Výsledky pro výše uvedené typy tokenů jsou:
ghp
pro osobní přístupové tokeny GitHubughu
pro tokeny uživatele na server GitHubughs
pro tokeny mezi servery GitHubugho
pro přístupové tokeny OAuthghr
pro obnovovací tokeny
Kromě toho mají tyto předpony oddělovač (_
) v tokenu, aby se zlepšila čitelnost. Podtržítko není znak Base64, který pomáhá zajistit, aby tyto tokeny nebyly náhodně duplikovány náhodně generovanými řetězci, jako jsou SHA. Tyto předpony také pomáhají snížit falešně pozitivní rychlost kontroly tajných kódů, což je pokročilá funkce zabezpečení GitHubu, která dále vylepšuje zabezpečení v úložišti GitHub.
Omezení rychlosti tokenů
Překročení limitů rychlosti může vést ke ztrátě času vývoje. Pojďme si promluvit o limitech rychlosti pro aplikace GitHub a aplikace OAuth. Když pochopíte omezení rychlosti, můžete být prostředkem pro vývojáře ve vašem týmu, což pomáhá optimalizovat investice vaší organizace do těchto prostředků GitHubu.
Omezení rychlosti pomáhají řídit rychlost provozu na GitHubu a jsou založená na požadavcích za hodinu.
- Aplikace GitHub nainstalovaná na účtu GitHub Enterprise má limit rychlosti požadavků na 15 000 požadavků za hodinu.
- Aplikace OAuth se ověřuje pro jednotlivého uživatele a je omezená na 5 000 požadavků za hodinu.
Pro podnikové správce byste měli monitorovat limity rychlosti aplikací a spolupracovat s vývojáři na úpravě jejich skriptů tak, aby zůstaly v mezích limitů. Omezení četnosti se obvykle netýkají, dokud vývojář nesdělí něco jako psaní skriptu, který vyžaduje příliš mnoho informací v pracovním postupu. Najednou se vývoj zastaví a omezení rychlosti se stanou kritickým bodem. Těmto problémům s nadlimitní využití rychlosti se můžete vyhnout omezením počtu požadavků za hodinu nebo změnou pracovního postupu na čekání mezi požadavky. Pokud překročíte limit rychlosti pomocí základního ověřování nebo OAuth, můžete problém pravděpodobně vyřešit ukládáním odpovědí rozhraní API do mezipaměti a použitím podmíněných požadavků.
Z konzoly pro správu můžete nastavit vlastní limit rychlosti pro neověřené uživatele ve vašem podniku a vytvořit seznam vyloučení, který některým uživatelům umožní využívat úplný limit rychlosti rozhraní API.
Aktuální stav limitu rychlosti můžete kdykoli zkontrolovat pomocí následujícího rozhraní API pro omezení rychlosti. Vrácená hlavička HTTP libovolného požadavku rozhraní API zobrazuje aktuální stav limitu rychlosti.
curl \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/rate_limit
Příklad odpovědi
{
"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
}
}
Podrobnější informace o limitech rychlosti najdete v tématu Omezení rychlosti na Webu Docs na GitHubu.