Определите поддерживаемые токены доступа
Здесь вы узнаете о различных маркерах доступа GitHub, их применении, ограничениях и ограничениях скорости.
Когда дело доходит до предоставления доступа пользователю в компании, чрезвычайно важна проверка подлинности. Доступ пользователей должен быть строго ограничен и включать только то, что необходимо пользователям для выполнения своих задач. Осведомленность о различных маркерах доступа очень важна, так как вы помогаете пользователям в компании подбирать оптимальные варианты для конкретных случаев.
GitHub использует различные токены, которые позволяют пользователям проходить аутентификацию для выполнения необходимых действий. Как правило, эти маркеры просты, и понять, какой из них использовать, несложно. Но иногда для достижения того же результата можно использовать несколько маркеров, поэтому выбор маркера может сводиться к выбору между хорошим, лучшим и наилучшим. В таких ситуациях важно определять характеристики маркеров GitHub и правильно ограничивать область их действия. Ниже приведен список доступных маркеров доступа.
- личные токены доступа GitHub
- токены GitHub для связи между пользователем и сервером
- маркеры GitHub "сервер-сервер";
- токены доступа OAuth
- токены обновления.
Важно, чтобы команда разработчиков использовала маркеры с правильной областью действия. Тогда при обнаружении уязвимости системы безопасности риск можно будет быстро устранить. Давайте подробнее рассмотрим каждый из этих маркеров доступа.
Персональные токены доступа
Личный маркер доступа (PAT) — это альтернатива использованию пароля для проверки подлинности в GitHub. Для загрузки и выгрузки в репозитории GitHub необходимо проверить доступ пользователей. Проверка выполняется с помощью подтвержденного адреса электронной почты пользователя. Вы можете создать столько личных маркеров доступа, сколько требуется рабочему процессу. Обеспечивать их безопасность следует так же, как для паролей. В целях обеспечения безопасность рекомендуется использовать для разных приложений разные маркеры. Чтобы создать личный маркер доступа в GitHub, выберите Settings (Параметры) и щелкните Developer settings (Параметры разработчика), чтобы открыть раздел Personal access tokens (Личные маркеры доступа).
Вы можете ограничить отдельный маркер только доступом, необходимым для проверки подлинности задания, для которого он будет назначен. Маркер привязан к конкретному пользователю и согласуется с его доступом к организации и репозиториям. Вы можете отозвать маркер личного доступа в любое время, что особенно важно, когда происходит взлом системы безопасности. Важно сообщить вашей команде, что их личные маркеры доступа должны рассматриваться так же безопасно, как имя пользователя и пароль. Если маркер скомпрометирован, вы должны принять немедленные меры по его отзыву.
Подробные инструкции по созданию личного маркера доступа доступны здесь: создание личного маркера доступа — Документация 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.
Текущее состояние ограничения скорости можно проверить в любое время с помощью следующего 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.