Что такое приложения GitHub?
Здесь мы обсудим, что такое приложения GitHub, как они работают и как их можно использовать для улучшения рабочих процессов. Используете ли вы решение, созданное кем-то другим, или разрабатываете его в соответствии с вашими потребностями, всегда существует место для улучшения.
Расширение платформы с помощью API GitHub
GitHub предоставляет надежный API, позволяющий разработчикам выполнять практически любые действия на платформе. Он предоставляется через конечные точки REST, потому легко интегрируется с любой платформой или языком программирования. Однако доступ к API не стоит самостоятельно. Разработчики, желающие поделиться своими функциями с другими пользователями, по-прежнему должны упаковать их в качестве приложения и опубликовать его, прежде чем любой пользователь сможет использовать их.
При выборе между включением в рабочий процесс приложения OAuth или приложения GitHub необходимо учесть несколько факторов. В этом разделе мы познакомимся с приложениями 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 является то, что они не используют лицензированное рабочее место GitHub, в отличие от приложений OAuth.
GitHub Apps обращается к данным от имени самого приложения с помощью закрытого ключа, который используется для подписи маркера JWT (веб-токена 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. При таком подходе общедоступная служба будет подписываться на веб-перехватчик репозитория, а затем передавать входящие данные в клиентскую службу, работающую за брандмауэром. Затем служба клиента отправляет уведомления в работающее приложение, как будто они поступили из исходного источника.