Identyfikowanie obsługiwanych tokenów dostępu

Ukończone

Tutaj dowiesz się więcej na temat różnych tokenów dostępu usługi GitHub, ich aplikacji, ograniczeń i limitów szybkości.

Jeśli chodzi o udzielanie dostępu użytkownikowi w firmie, uwierzytelnianie jest niezwykle ważne. Dostęp użytkowników powinien być ściśle ograniczony i uwzględniać tylko to, co jest niezbędne dla użytkowników do wykonywania zadań. Zrozumienie różnych tokenów dostępu jest ważne, ponieważ ułatwiasz użytkownikom w firmie korzystanie z najlepszej opcji dla ich przypadków użycia.

Usługa GitHub używa różnych tokenów, które umożliwiają użytkownikom uwierzytelnianie w różnych działaniach, które muszą wykonać. Zazwyczaj te różne tokeny są proste i łatwo jest wiedzieć, jakiego tokenu użyć. Czasami jednak wiele tokenów może służyć do osiągnięcia tego samego wyniku, więc wybranie tokenu może sprowadzać się do decyzji o dobrym, lepszym i najlepszym. W takich sytuacjach ważne jest zidentyfikowanie cech tokenów usługi GitHub i prawidłowego określania zakresu dostępu tokenu. Oto lista różnych dostępnych tokenów dostępu:

  • Osobiste tokeny dostępu w usłudze GitHub
  • Tokeny użytkownika-serwera w usłudze GitHub
  • Tokeny serwer-serwer w usłudze GitHub
  • Tokeny dostępu OAuth
  • Tokeny odświeżania

Ważne jest, aby zachęcić zespół deweloperów do używania tokenów z odpowiednim zakresem, aby po wykryciu luki w zabezpieczeniach ryzyko można szybko ograniczyć. Przyjrzyjmy się bliżej każdemu z tych tokenów dostępu.

Osobiste tokeny dostępu

Osobisty token dostępu (PAT) jest alternatywą dla używania hasła do uwierzytelniania w usłudze GitHub. Aby wypchnąć i ściągnąć repozytoria, usługa GitHub musi zweryfikować dostęp użytkowników. Weryfikacja odbywa się za pośrednictwem zweryfikowanego adresu e-mail użytkownika. Możesz utworzyć dowolną liczbę osobistych tokenów dostępu zgodnie z wymaganiami przepływu pracy i traktować je tak bezpiecznie, jak hasła. Używanie różnych tokenów dla różnych aplikacji jest najlepszym rozwiązaniem w zakresie zabezpieczeń. Aby utworzyć osobisty token dostępu w usłudze GitHub, przejdź do pozycji Ustawienia i w obszarze Ustawienia dewelopera znajdziesz osobiste tokeny dostępu.

Zrzut ekranu przedstawiający przykład osobistego tokenu dostępu usługi GitHub.

Można określić zakres pojedynczego tokenu tylko do dostępu wymaganego do uwierzytelnienia zadania, dla którego zostanie przypisany. Token jest powiązany z określonym użytkownikiem i jest zgodny z dostępem użytkownika do organizacji i repozytoriów. Osobisty token dostępu można odwołać w dowolnym momencie, co jest szczególnie ważne w przypadku włamania do zabezpieczeń. Ważne jest, aby poinformować zespół, że ich osobiste tokeny dostępu powinny być traktowane tak bezpiecznie jak nazwa użytkownika i hasło. Jeśli token zostanie naruszony, należy podjąć natychmiastowe działania w celu odwołania tokenu.

Szczegółowe kroki tworzenia osobistego tokenu dostępu są dostępne tutaj: Tworzenie osobistego tokenu dostępu — GitHub Docs

Tokeny urządzeń

Token urządzenia to w zasadzie wersja konta maszynowego pat używana w kontekście urządzenia, która zapewnia dostęp do określonego repozytorium w określonych przypadkach użycia, które nie są powiązane przez użytkownika. Konfiguracja aplikacji przy użyciu przepływu OAuth używa tokenu urządzenia. Są one zwykle używane z modułami uruchamiającym, specjalnymi usługami aplikacji, zadaniami Cron (w systemie Linux) lub innymi podobnymi scenariuszami związanymi z zautomatyzowanymi zadaniami. Podobnie jak osobisty token dostępu, jest on powiązany z pojedynczym kontem, a konto, dla którego tworzysz token urządzenia, zużywa licencję.

Tokeny instalacji aplikacji usługi GitHub

Token instalacyjny umożliwia aplikacji GitHub wykonywanie uwierzytelnionych żądań interfejsu API dla instalacji aplikacji w organizacji. Przed utworzeniem tokenu instalacji aplikacja GitHub, do której zostanie zastosowany token, musi zostać zainstalowana w repozytorium docelowym. Tokeny instalacji są ważne przez jedną godzinę i ponieważ są generowane w określonym celu i wygasają w stosunkowo krótkim czasie, są one bezpieczne.

Tokeny dostępu OAuth

Tokeny OAuth2 są używane do autoryzowania użytkowników dla standardowych aplikacji OAuth uruchamianych w przeglądarce oraz aplikacji bezgłowych, takich jak narzędzia interfejsu wiersza polecenia. Umożliwiają aplikacji dostęp do interfejsu API przy użyciu tokenu dostępu użytkownika. Te tokeny umożliwiają łączenie tożsamości użytkownika usługi GitHub z aplikacjami innych firm, co umożliwia aplikacji wykonywanie akcji w Twoim imieniu. Jeśli na przykład chcesz użyć aplikacji, która żąda user:email zakresu, aplikacja będzie miała dostęp tylko do odczytu do prywatnych adresów e-mail. Te tokeny można uzyskać przy użyciu przepływu aplikacji internetowej dla aplikacji produkcyjnych. Ponieważ te tokeny są krótkoterminowe i wygasają w ciągu 10 minut, są one również bezpieczne.

Odświeżanie tokenów

Token odświeżania jest połączony z tokenem OAuth. Po udzieleniu nowego tokenu OAuth (za pośrednictwem żądania użytkownika do serwera) token odświeżania jest dołączany do odpowiedzi. Po wygaśnięciu tokenu użytkownika token odświeżania można wymienić dla nowego tokenu użytkownika za pomocą żądania wywołania zwrotnego. Za każdym razem, gdy jest wystawiany nowy token OAuth, dołączany jest token odświeżania. Tokeny odświeżania są ważne przez sześć miesięcy i są dobrym przypomnieniem, aby zaktualizować tokeny OAuth.

Możliwe do zidentyfikowania prefiksy

Jak widać w całej branży, prefiksy tokenów są wyraźnym sposobem na identyfikację tokenów. Usługa GitHub zawiera trzyliterowe prefiksy do reprezentowania każdego tokenu, począwszy od znaku firmowego, ghpo pierwszej literze typu tokenu. Wyniki powyższych typów tokenów to:

  • ghp dla osobistych tokenów dostępu w usłudze GitHub
  • ghu w przypadku tokenów użytkownika-serwera w usłudze GitHub
  • ghs dla tokenów serwer-serwer w usłudze GitHub
  • gho dla tokenów dostępu OAuth
  • ghr w przypadku tokenów odświeżania

Ponadto te prefiksy mają separator (_) w tokenie, aby zwiększyć czytelność. Podkreślenie nie jest znakiem Base64, co pomaga zagwarantować, że te tokeny nie mogą zostać przypadkowo zduplikowane przez losowo wygenerowane ciągi, takie jak shAs. Te prefiksy pomagają również zmniejszyć współczynnik fałszywie dodatni na potrzeby skanowania wpisów tajnych, który jest zaawansowaną funkcją zabezpieczeń usługi GitHub w celu dalszej poprawy bezpieczeństwa w repozytorium GitHub.

Limity szybkości tokenów

Przekroczenie limitów szybkości może prowadzić do utraty czasu programowania. Porozmawiajmy o limitach szybkości dla aplikacji GitHub i aplikacji OAuth. Dzięki zrozumieniu limitów szybkości możesz być zasobem dla deweloperów w zespole, pomagając zoptymalizować inwestycje organizacji w te zasoby usługi GitHub.

Limity szybkości pomagają kontrolować szybkość ruchu w usłudze GitHub i są oparte na żądaniach na godzinę.

  • Aplikacja GitHub zainstalowana na koncie przedsiębiorstwa usługi GitHub ma limit szybkości żądań wynoszący 15 000 żądań na godzinę.
  • Aplikacja OAuth jest uwierzytelniana dla pojedynczego użytkownika i jest ograniczona do 5000 żądań na godzinę.

W przypadku administratorów przedsiębiorstwa należy monitorować limity szybkości aplikacji i współpracować z deweloperami, aby dostosować swoje skrypty, aby utrzymać się w granicach. Często limity szybkości nie są problemem, dopóki deweloper nie zrobi czegoś takiego jak pisanie skryptu, który żąda zbyt dużej ilości informacji w przepływie pracy. Nagle rozwój zbliża się do zatrzymania, a limity szybkości stają się wąskim gardłem. Możesz uniknąć tych problemów z nadmiernym limitem szybkości, ograniczając liczbę żądań na godzinę lub zmieniając przepływ pracy na oczekiwanie między żądaniami. Jeśli przekroczysz limit szybkości przy użyciu uwierzytelniania podstawowego lub protokołu OAuth, prawdopodobnie możesz rozwiązać ten problem, buforując odpowiedzi interfejsu API i używając żądań warunkowych.

W konsoli zarządzania można skonfigurować niestandardowy limit szybkości dla nieuwierzytelnionych użytkowników w przedsiębiorstwie i utworzyć listę wykluczonych, umożliwiając niektórym użytkownikom korzystanie z pełnego limitu szybkości interfejsu API.

Zrzut ekranu przedstawiający konsolę zarządzania ustawiając limity szybkości interfejsu API.

Bieżący stan limitu szybkości można sprawdzić w dowolnym momencie przy użyciu następującego interfejsu API limitu szybkości. Zwrócone nagłówki HTTP dowolnego żądania interfejsu API pokazują bieżący stan limitu szybkości.

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

Przykładowa odpowiedź

{
  "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
  }
}

Aby uzyskać bardziej szczegółowe informacje na temat limitów szybkości, zapoznaj się z dokumentacją dotyczącą ograniczania szybkości w witrynie GitHub Docs.