Skip to main content

Выбор момента создания приложения GitHub

При создании интеграции следует рассмотреть возможность использования GitHub App в следующих сценариях вместо OAuth app, personal access tokenили GitHub Actions.

Использование GitHub App вместо OAuth app

Как правило, GitHub Apps предпочтительнее OAuth apps.

Данные OAuth apps и GitHub Apps используют OAuth 2.0.

OAuth apps может действовать только от имени пользователя, а GitHub Apps может действовать от имени пользователя или независимо от пользователя.

Дополнительные сведения см. в разделе Различия между приложениями GitHub и приложениями OAuth.

Сведения о переносе существующих данных OAuth app в GitHub Appсм. в разделе Перенос приложений OAuth в приложения GitHub.

GitHub Apps обеспечивают повышенную безопасность

GitHub Apps обеспечивают больше контроля над тем, что может сделать приложение. Вместо широких областей, которые используют OAuth apps, GitHub Apps используют точные разрешения. Например, если приложению требуется прочитать содержимое репозитория, для OAuth app потребуется repo область, которая также позволит приложению изменять содержимое и параметры репозитория. GitHub App может запрашивать доступ только для чтения к содержимому репозитория, что не позволит приложению выполнять более привилегированные действия, такие как изменение содержимого репозитория или параметров.

GitHub Apps также обеспечивают более широкий контроль над доступом к репозиторию. С помощью GitHub Appпользователь или владелец организации, который установил приложение, может решить, к каким репозиториям приложение может получить доступ. И наоборот, OAuth app может получить доступ к каждому репозиторию, к которому пользователь, авторизованный приложением, может получить доступ.

GitHub Apps используют короткие маркеры. Если маркер просочится, маркер будет действителен в течение более короткого времени, что снижает ущерб, который можно сделать. И наоборот, маркеры OAuth app не истекают до тех пор, пока пользователь, авторизованный OAuth app отменяет маркер.

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

GitHub Apps может действовать независимо от имени или от имени пользователя

GitHub Apps может действовать независимо от пользователя. Это полезно для автоматизации, для которых не требуются входные данные пользователя.

Аналогично OAuth apps, GitHub Apps по-прежнему может выполнять действия от имени пользователя. В отличие от OAuth apps, которые не указывают на то, что действие было выполнено приложением, GitHub Apps указывает, что действие было выполнено приложением от имени пользователя.

GitHub Apps не привязаны к учетной записи пользователя и не используют место на GitHub Enterprise Server. GitHub Apps остаются установленными, даже если пользователь, который первоначально установил приложение, покидает организацию. Это позволяет интеграции продолжать работать, даже если люди покидают свою команду.

GitHub Apps имеют масштабируемые ограничения скорости

Ограничение скорости для GitHub Apps с помощью маркера доступа к установке масштабируется с числом репозиториев и числом пользователей организации. И наоборот, OAuth apps имеют более низкие ограничения скорости и не масштабировать. Дополнительные сведения см. в разделе Ограничения скорости для приложений GitHub.

GitHub Apps создали в веб-перехватчиках

GitHub Apps имеют встроенные централизованные веб-перехватчики. GitHub Apps может получать события веб-перехватчика для всех репозиториев и организаций, к которые приложение может получить доступ. И наоборот, OAuth apps должен настраивать веб-перехватчики по отдельности для каждого репозитория и организации.

Доступ к API немного отличается

Как правило, GitHub Apps и OAuth apps могут выполнять те же запросы API. Но между ними существуют некоторые отличия.

  • REST API для управления проверками и наборами проверок доступен только для GitHub Apps.
  • Ресурсы корпоративного уровня, такие как сам корпоративный объект, недоступны для GitHub Apps. Это означает, что GitHub Apps не может вызывать такие GET /enterprise/settings/licenseконечные точки. Однако доступны корпоративные организации и ресурсы репозитория.
  • Некоторые запросы могут возвращать неполные данные в зависимости от разрешений и доступа к репозиторию, предоставленных GitHub App. Например, если приложение отправляет запрос на получение всех репозиториев, к которым пользователь может получить доступ, ответ будет включать только репозитории, к которым приложение также было предоставлено доступ.

Дополнительные сведения о конечных точках REST API, доступных для GitHub Apps, см. в разделе Конечные точки, доступные для маркеров доступа к установке приложений GitHub.

Выбор между GitHub App или personal access token

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

Для тестирования API или кратковременных сценариев можно использовать personal access tokens. Так как personal access token связан с пользователем, автоматизация может нарушиться, если пользователь больше не имеет доступа к нужным ресурсам. Объект GitHub App, установленный в организации, не зависит от пользователя. Кроме того, в отличие от пользователя, GitHub App не использует место GitHub.

GitHub поддерживает два типа данных personal access tokens, но рекомендуется использовать fine-grained personal access tokens вместо personal access tokens (classic) по возможности. Дополнительные сведения о personal access tokensсм. в разделе Управление личными маркерами доступа.

Выбор между GitHub App или GitHub Actions

GitHub Apps и GitHub Actions предоставляют способы создания средств автоматизации и рабочих процессов.

GitHub Actions обеспечивает автоматизацию, которая может выполнять такие задания, как непрерывная интеграция, задачи развертывания и управление проектами в репозитории. Они выполняются непосредственно на компьютерах, размещенных на GitHub, размещенных на компьютерах runner или локальных запусках, настроенных администратором. GitHub Actions не выполняются постоянно. Рабочие процессы GitHub Actions выполняются в ответ на события, происходящие в их репозитории, и имеют доступ только к ресурсам репозитория, для которых они настроены. Однако пользовательские действия можно совместно использовать в репозиториях и организациях, позволяя разработчикам повторно использовать и изменять существующие действия в соответствии с их потребностями. GitHub Actions также предоставляет встроенное управление секретами, которое можно использовать для безопасного взаимодействия со сторонними службами и безопасного управления ключ развертывания.

GitHub Apps выполняется постоянно на сервере или вычислительной инфраструктуре, которую вы предоставляете или запускаете на пользовательском устройстве. Они могут реагировать на события веб-перехватчика GitHub, а также события вне экосистемы GitHub. Они являются хорошим вариантом для операций, охватывающих несколько репозиториев или организаций, или для предоставления размещенных служб другим организациям. GitHub App — это лучший выбор при создании средства с функциями, которые происходят в основном за пределами GitHub или требуют больше времени выполнения или разрешений, чем то, что выделен рабочий процесс GitHub Actions .

Дополнительные сведения о сравнении данных GitHub Actions с GitHub Appsсм. в разделе Сведения о настраиваемых действиях.

Для проверки подлинности в рабочем процессе GitHub Actions можно использовать GitHub App, если встроенные GITHUB_TOKEN не имеют достаточных разрешений. Дополнительные сведения см. в разделе Выполнение запросов API с проверкой подлинности с помощью приложения GitHub в рабочем процессе GitHub Actions.