Что такое приложения GitHub?

Завершено

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

Расширение платформы с помощью API GitHub

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

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

Изображение значка установки и значка утверждения для приложений GitHub и приложений OAuth.

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

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

Предоставление доступа и разрешений

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

Снимок экрана: просмотр запрошенных разрешений и доступа к репозиторию.

Примечание.

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

Приложения OAuth

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

Примечание.

Уровень доступа ограничен областью действия маркера (пользователь, организация, репозиторий).

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

Приложения GitHub

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

GitHub Apps обращается к данным от имени самого приложения с помощью закрытого ключа, который используется для подписи веб-маркера JSON. Так как они установлены в определенных репозиториях, пользователи могут выбрать, к каким репозиториям может получить доступ приложение, что ограничивает объем данных, к которым приложение может получить доступ. Разрешения определяют ресурсы, к которым приложение GitHub может получить доступ через API. В отличие от Приложение OAuth, приложения GitHub имеют настраиваемые разрешения для данных репозитория, проблем и запросов на вытягивание. Настройка позволяет предоставлять более детализированные разрешения, ограничивающие приложение для чтения и записи только в репозиториях, к которым можно получить доступ. Управлять настройками приложений GitHub в организации могут только владельцы организации.

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

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

Изображение значка

  • Администратор может предоставлять разрешения для администрирования репозитория, проверок, содержимого репозитория, развертываний и проблем (Изменения, внесенные администратором, требуют принятия пользователем.).
  • Администратор может предоставить пользователю приложения разрешение блокировать другого пользователя, адреса электронной почты, подписчиков, ключи GPG, ключи SSH Git, отмечать звездочками, наблюдать (Изменения, внесенные администратором, требуют принятия пользователем.).
  • Подписки на события: рекомендации по безопасности, набор тестов для проверки, создание, развертывание, ветвление, нанесение меток, участник, возврат, фиксация комментария, удаление, состояние развертывания, веха, членство, организация (Администратор настраивается в пользовательском интерфейсе приложений GH и может быть изменен.).

Выбор между приложениями GitHub и приложениями OAuth

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

Примечание.

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

Чтобы определить, какое приложение наилучшим образом подходит для вашей ситуации, следует рассмотреть некоторые важные вопросы:

  • Нужно ли, чтобы приложение действовало как пользователь?
  • Что должно быть ограничение скорости?
  • Какой доступ следует предоставить приложению в организации и в репозиториях?
  • Соответствует ли это приложение требованиям политики безопасности?

Ниже приведены некоторые ключевые характеристики и различия, которые следует учитывать при выборе между приложением GitHub и приложением OAuth.

Приложения GitHub Приложения OAuth
Установка приложения GitHub предоставляет приложению доступ к выбранным репозиториям учетной записи пользователя или организации. Авторизация приложения OAuth предоставляет приложению доступ к ресурсам, доступным пользователю, например к репозиториям.
Маркеры доступа установки ограничиваются указанными репозиториями с разрешениями, выбранными создателем приложения. Маркер доступа OAuth ограничивается через области действия.
Маркер установки определяет приложение как бот приложений GitHub. Маркер доступа определяет приложение как пользователя, который предоставил приложению маркер.
Приложения GitHub используют целевые разрешения, которые позволяют им запрашивать доступ только к нужным им ресурсам. Приложения OAuth не могут использовать детализированные разрешения.
Приложения GitHub не подчиняются политикам приложений организации. Приложение GitHub имеет доступ только к репозиториям, доступ к которым предоставляет владелец организации. Если политика приложения организации активна, то только владелец организации может разрешить установку приложения OAuth. При установке приложение OAuth получает доступ к любым ресурсам, видимым для маркера, который владелец организации имеет в утвержденной организации.
Разрешения на увеличение ограничений скорости можно предоставлять как на уровне приложений GitHub (это затронет все установки), так и на уровне отдельных установок. Разрешение на увеличение ограничения скорости предоставляется для каждого приложения OAuth. Каждый маркер, предоставленный этому приложению OAuth, получает увеличенное ограничение.
Приложения GitHub могут проходить проверку подлинности от имени пользователя, что известно как запросы "пользователь-сервер". Поток для авторизации аналогичен потоку авторизации приложения OAuth. Маркеры "пользователь-сервер" имеют ограниченный срок действия, который можно продлить с помощью маркера обновления. Поток OAuth, используемый приложениями OAuth, авторизует приложение OAuth от имени пользователя. Этот поток используется для авторизации пользователь-сервер в приложении GitHub.
Приложения GitHub запрашивают разрешение содержимого репозитория и используют маркер установки для проверки подлинности с помощью Git на основе HTTP. Приложения OAuth запрашивают область write:public_key и создают ключ развертывания через API. Затем этот ключ можно использовать для выполнения команд Git.

Доступ к приложениям и разрешения

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

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

  • Приложения OAuth могут иметь доступ к данным GitHub для выполнения операций чтения или записи.
  • Вы можете предоставить приложению GitHub доступ к одной учетной записи, не предоставляя доступа к другой.

Безопасность приложений

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

В дополнение к файлу README.md рекомендуется добавить во все репозитории файл SECURITY.md. Файл SECURITY.md подчеркивает сведения, связанные с безопасностью репозитория. Файл должен включать контакты безопасности, политики организации и подробные сведения о ответе, который вы планируете принять при обнаружении уязвимости.

Реагирование на события

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

Примечание.

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

Использование веб-перехватчиков GitHub

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

Опросы

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

Ретранслятор веб-перехватчиков

Альтернативой опросу приложений, защищенных брандмауэром, является использование службы пересылки веб-перехватчика, например smee.io. С помощью этого подхода общедоступная служба подписывается на вебхук репозитория, а затем ретранслирует входящие данные в клиентскую службу, работающую за брандмауэром. Затем служба клиента отправляет уведомления в работающее приложение, как будто они поступили из исходного источника.