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