Определение поддерживаемых маркеров доступа

Завершено

Здесь вы узнаете о различных маркерах доступа GitHub, их применении, ограничениях и ограничениях скорости.

Когда дело доходит до предоставления доступа пользователю в компании, чрезвычайно важна проверка подлинности. Доступ пользователей должен быть строго ограничен и включать только то, что необходимо пользователям для выполнения своих задач. Осведомленность о различных маркерах доступа очень важна, так как вы помогаете пользователям в компании подбирать оптимальные варианты для конкретных случаев.

GitHub использует различные маркеры, которые позволяют пользователям проходить проверку подлинности для выполнения различных действий. Как правило, эти маркеры просты, и понять, какой из них использовать, несложно. Но иногда для выполнения одного и того же результата можно использовать несколько маркеров, поэтому выбор маркера может прийти к решению хорошего, лучшего и лучшего. В таких ситуациях важно определять характеристики маркеров GitHub и правильно ограничивать область их действия. Ниже приведен список доступных маркеров доступа.

  • личные маркеры доступа GitHub;
  • маркеры GitHub "пользователь-сервер";
  • маркеры GitHub "сервер-сервер";
  • маркеры доступа OAuth;
  • маркеры обновления.

Важно, чтобы команда разработчиков использовала маркеры с правильной областью действия. Тогда при обнаружении уязвимости системы безопасности риск можно будет быстро устранить. Давайте подробнее рассмотрим каждый из этих маркеров доступа.

Личные маркеры доступа

Личный маркер доступа (PAT) — это альтернатива использованию пароля для проверки подлинности в GitHub. Для отправки и получения в репозитории GitHub необходимо проверить доступ пользователей. Проверка выполняется с помощью подтвержденного адреса электронной почты пользователя. Вы можете создать столько личных маркеров доступа, сколько требуется рабочему процессу. Обеспечивать их безопасность следует так же, как для паролей. В целях обеспечения безопасность рекомендуется использовать для разных приложений разные маркеры. Чтобы создать личный маркер доступа в GitHub, выберите Settings (Параметры) и щелкните Developer settings (Параметры разработчика), чтобы открыть раздел Personal access tokens (Личные маркеры доступа).

Screenshot with an example of a GitHub personal access token.

Вы можете область отдельный маркер только для доступа, необходимого для проверки подлинности задания, для которого он будет назначен. Маркер привязан к конкретному пользователю и согласуется с его доступом к организации и репозиториям. Вы можете отозвать маркер личного доступа в любое время, что особенно важно, когда происходит взлом системы безопасности. Важно сообщить вашей команде, что их личные маркеры доступа должны рассматриваться как безопасное имя пользователя и пароль. Если маркер скомпрометирован, вы должны принять немедленные меры по его отзыву.

Подробные инструкции по созданию личного маркера доступа доступны здесь: создание личного маркера доступа — Документация GitHub

Маркеры устройств

Маркер устройства — это, по сути, версия PAT для учетной записи компьютера, которая используется в контексте устройства и предоставляет доступ к конкретному репозиторию в конкретных сценариях использования, не привязанных к пользователям. При установке приложения с помощью потока OAuth используется маркер устройства. Они обычно используются в средствах выполнения тестов, специальных службах приложений, заданиях cron (в Linux) или других подобных сценариях, связанных с автоматизированными задачами. Так же как и личный маркер доступа, он привязывается к отдельной учетной записи, и учетная запись, для которой вы создаете маркер устройства, использует лицензию.

Маркеры установки приложения GitHub

Маркер установки позволяет приложению GitHub выполнять запросы API, прошедшие проверку подлинности, для установки приложения в организации. Перед созданием маркера установки приложение GitHub, к которому будет применен маркер, необходимо установить в целевом репозитории. Маркеры установки действительны в течение одного часа, и потому что они создаются для определенной цели и истекают в относительно короткий период времени, они защищены.

Маркеры доступа OAuth

Маркеры OAuth2 используются с целью авторизации пользователей для стандартных приложений OAuth, выполняемых в браузере, а также для таких приложений без монитора, как средства CLI. Они позволяют приложению получить доступ к API с помощью маркера доступа пользователя. Эти маркеры позволяют подключать удостоверение пользователя GitHub к сторонним приложениям, позволяя приложению выполнять действия от вашего имени. Например, если вы хотите использовать приложение, которое запрашивает область действия user:email, приложение будет иметь доступ к частным адресам электронной почты только для чтения. Их можно получить с помощью потока веб-приложения для рабочих приложений. Так как эти маркеры являются краткосрочными и срок их действия истекает через 10 минут, они также являются безопасными.

Маркеры обновления

Маркер обновления соединен с маркером OAuth. При предоставлении нового маркера OAuth (посредством запроса "пользователь-сервер") в ответ включается маркер обновления. По истечении срока действия маркера пользователя можно обменять маркер обновления на новый маркер пользователя с запросом обратного вызова. При выдаче каждого нового маркера OAuth включается маркер обновления. Маркеры обновления действительны в течение шести месяцев и представляют собой хорошее напоминание о необходимости обновления маркеров OAuth.

Идентифицируемые префиксы

Как видно из происходящего в отрасли, префиксы маркеров — доступный способ сделать маркеры идентифицируемыми. GitHub включает префиксы из трех букв для представления каждого маркера, начиная с обозначения компании gh, за которым следует первая буква типа маркера. Результаты для описанных выше типов маркеров:

  • ghp для личных маркеров доступа GitHub;
  • ghu для маркеров GitHub "пользователь-сервер";
  • ghs для маркеров GitHub "сервер-сервер";
  • gho для маркеров доступа OAuth;
  • ghr для маркеров обновления.

Кроме того, эти префиксы содержат разделитель _ внутри маркера для повышения удобочитаемости. Символ подчеркивания не является символом Base64, который помогает убедиться, что эти маркеры не могут быть случайно дублированы случайным образом созданными строками, такими как SHAs. Эти префиксы также позволяют сократить количество ложноположительных результатов при сканировании секретов, представляя расширенную защиту GitHub для дальнейшего повышения степени безопасности в репозитории GitHub.

Ограничения скорости маркеров

Превышение ограничений скорости может привести к потере времени при разработке. Давайте поговорим об ограничениях скорости для приложений GitHub и приложений OAuth. Если вы осведомлены об ограничениях скорости, вы можете стать ресурсом для разработчиков в вашей команде и помочь организации оптимизировать вложения в эти ресурсы GitHub.

Ограничения скорости позволяют управлять скоростью трафика на GitHub на основе количества запросов в час.

  • Приложение GitHub, установленное в корпоративной учетной записи GitHub, имеет ограничение скорости, равное 15 000 запросов в час.
  • Приложение OAuth проходит проверку подлинности для отдельного пользователя и ограничивается 5000 запросов в час.

Что касается администраторов Enterprise, вы должны отслеживать ограничения скорости приложения и совместно с разработчиками настраивать скрипты в соответствии с ограничениями. Как правило, ограничения скорости не являются проблемой, пока разработчик не делает что-то подобное написание скрипта, который запрашивает слишком много информации в рабочем процессе. Внезапно развитие приходит к остановке и ограничения скорости становятся узким местом. Вы можете избежать этих проблем с превышением скорости, ограничив количество запросов в час или изменив рабочий процесс для ожидания между запросами. Если вы превысили ограничение скорости, используя обычную проверку подлинности или OAuth, скорее всего, проблему можно устранить путем кэширования ответов API и использования условных запросов.

В консоли управления можно настроить пользовательское ограничение скорости для пользователей компании, не прошедших проверку подлинности, и создать список исключений, позволяющий некоторым пользователям использовать максимальную скорость API.

Screenshot of the management console setting the API rate limits.

Вы можете проверка текущее состояние ограничения скорости в любое время с помощью следующего API ограничения скорости. Возвращенные заголовки HTTP любого запроса API показывают текущее состояние ограничения скорости.

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

Пример отклика

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

Дополнительные сведения об ограничениях скорости см. в документации по GitHub.