Що таке програми GitHub?

Завершено

Тут ми обговорюємо, що таке додатки GitHub, як вони працюють і як ви можете використовувати їх для покращення своїх робочих процесів. Незалежно від того, чи ви приймаєте рішення, створене кимось іншим або розробляєте його для задоволення ваших точних потреб, завжди є місце для вдосконалення процесів.

Розширення платформи через API GitHub

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

Є кілька факторів, які варто враховувати під час вибору між включенням програми OAuth або GitHub до робочого циклу. У цьому розділі ми познайомимо вас із додатками GitHub та OAuth Apps, їхнім використанням та відмінностями в дозволах, а також підписками на події.

Зображення піктограми інсталяції та піктограми затвердження для програм GitHub і OAuth.

Під час налаштування робочого процесу на GitHub у вас є кілька доступних функцій. Наприклад, написання користувацьких сценаріїв, створення та авторизація власних додатків OAuth або встановлення додатків GitHub, доступних на ринку GitHub. Загалом для цих одноразових завдань найкраще використовувати сценарії. Для дій, які виконуються частіше, автоматизація додатків OAuth і GitHub може допомогти вам і вашій команді заощадити час, зберігаючи при цьому оптимальний рівень безпеки у ваших робочих процесах. Існує багато відмінностей, які впливають на те, як ви вирішуєте між використанням програми GitHub або OAuth App. Розуміння цих відмінностей заздалегідь може зменшити деякі головні болі та переоформити дорогу, а також допомогти вам знайти найкращу програму для конкретного випадку використання в робочому циклі.

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

Надання доступу та дозволів

Одним з найважливіших міркувань надання програмі доступу до сховища GitHub є дозволи, необхідні для роботи. Деяким програмам легко довіряти, але інші можуть викликати підозру. Завжди переконайтеся, що ви задоволені дозволами, які ви надаєте програмі.

Знімок екрана: перегляд запитаних дозволів і доступу до сховища.

Примітка

Кожна програма використовує унікальний ключ API, щоб запитувати дані у вашому сховищі. Під час авторизації доступу це ключ, який ви дозволяєте. Ви можете будь-коли відкликати доступ до ключа програми в налаштуваннях вашого сховища.

Програми OAuth

Програми OAuth дають змогу отримувати доступ до даних GitHub від імені користувача. Оскільки він діє від імені користувача, важливо зазначити, що він використовує ліцензію GitHub. Ви можете створити та зареєструвати програму OAuth в особистому обліковому записі або на рівні організації, якщо у вас є адміністративний доступ. Додаток OAuth, який інтегрується з GitHub, розкриває тип доступу до організації або репозиторію, який йому потрібен. Користувачі авторизувати OAuth Apps, що дає програмі можливість виступати автентифікованим користувачем, наприклад читати або змінювати дані. Цей підхід – це, по суті, автоматичний спосіб читання, записування або редагування даних GitHub як користувача. Також важливо відзначити, що авторизація обмежується ресурсами, які доступні користувачеві. Однак додаток OAuth також отримує доступ до всіх ресурсів, які доступні користувачеві.

Примітка

Рівень доступу обмежено областю маркера (користувач, організатор, сховище).

Для організацій із обмеженнями доступу до програм OAuth адміністратор може надати дозвіл на використання програми. З передплатами на події програми OAuth реагують на дії, як це відбувається.

Програми GitHub

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

Додатки GitHub отримують доступ до даних від імені самої програми за допомогою приватного ключа, який використовується для підписання веб-токена JSON. Оскільки вони встановлюються на певні репозиторії, користувачі можуть вибирати, до яких репозиторіїв має доступ програма, що обмежує обсяг даних, до яких програма може отримати доступ. Дозволи визначають ресурси, до яких програма GitHub може отримати доступ за допомогою API. На відміну від програм OAuth, програми GitHub мають настроювані дозволи для даних сховища, питань і запитів на витягнення. Налаштування дозволяє вам надавати більш детальні дозволи, обмежуючи програму для читання та запису лише в репозиторіях, до яких ви надаєте їй доступ. Керувати параметрами програм GitHub в організації можуть лише власники організації.

Ви можете знайти та інсталювати програми GitHub з Ринку GitHub. Коли ви шукаєте додатки на GitHub, пам'ятайте, що деякі додатки мають значок перевірено. Значок підтвердження вказує на наведене нижче про програму та організацію, якій вона належить:

  • Перевіряється право власності організації на свій домен.
  • Служба підтримки GitHub підтверджує адреси електронної пошти організації.
  • Організація вимагає двофакторної аутентифікації.

Зображення перевіреної емблеми для програми GitHub.

  • Адміністратор може надати дозволи на адміністрування сховища, перевірки, вміст сховища, розгортання та проблеми (Зміни адміністратора вимагають прийняття користувачем)
  • Адміністратор може надати користувачам програми дозволи на блокування іншого користувача, електронних листів, послідовників, ключів GPG, ключів Git SSH, у головних ролях, перегляду (Зміни адміністратора вимагають прийняття користувачем)
  • Підписки на події: Рекомендації з безпеки, Check suite, Create, Deployment, Fork, Label, Member, Check in, Commit comment, Delete, Deployment status, Milestone, Membership, Organization (Administrator configures in the GH Apps UI and can be changed)

Вибір між програмами GitHub і програмами OAuth

У той час як додатки GitHub є ідеальним способом інтеграції у ваш робочий процес у деяких ситуаціях, великим організаціям може бути складно перейти від традиційного використання OAuth Apps для автоматизації. Наприклад, обмеження політики безпеки може також обмежити можливості адміністратора у виборі цих засобів.

Примітка

Як системний адміністратор, ви повинні співпрацювати зі своїми розробниками, щоб знайти варіанти, які найкраще підходять для автоматизації, використовуючи ці програми, дотримуючись політики безпеки.

Щоб визначити, яка програма є правильним рішенням для вашої ситуації, ось кілька важливих питань, які слід розглянути:

  • Чи потрібно, щоб програма виступала користувачем?
  • Яким має бути ліміт ставки?
  • Який доступ має програма в організації та репозиторіях?
  • Чи відповідає ця програма нашій політиці безпеки?

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

Програми GitHub Програми OAuth
Інсталяція програми GitHub надає програмі доступ до вибраних репозиторіїв облікового запису користувача або організації. Авторизація програми OAuth надає програмі доступ до спеціальних ресурсів користувача; наприклад, репозиторії, до яких вони можуть отримати доступ.
Маркери доступу до інсталяції обмежені вказаними репозиторіями з дозволами, вибраними автором програми. Маркер доступу OAuth обмежено областями.
Маркер інсталяції визначає програму як бота GitHub Apps. Маркер доступу визначає програму як користувача, який надав маркер програмі.
Додатки GitHub використовують цільові дозволи, які дозволяють їм запитувати доступ лише до того, що їм потрібно. Програмам OAuth не вдалося використовувати деталізовані дозволи.
На програми GitHub не поширюються політики програм організації. Застосунок GitHub має доступ лише до репозиторіїв, які надає власник організації. Якщо політика програми організації активна, лише власник організації може авторизувати інсталяцію програми OAuth. Якщо її інстальовано, програма OAuth отримає доступ до будь-яких елементів, видимих маркеру, який власник організації має в затвердженій організації.
Підвищення ліміту ставки можна надати як на рівні програм GitHub (що впливають на всі інсталяції), так і на окремому рівні інсталяції. Обмеження ставки надається для кожної програми OAuth. Кожен маркер, наданий цій програмі OAuth, отримує збільшене обмеження.
Програми GitHub можуть автентифікуватися від імені користувача, який називається запитами користувача на сервер. Потік, який потрібно авторизувати, такий самий, як і потік авторизації програми OAuth. Термін дії маркерів користувача-сервера може минати й поновлюватися за допомогою маркера оновлення. Потік OAuth, що використовується програмами OAuth, авторизує програму OAuth від імені користувача. Цей потік є тим самим, що використовується в авторизації від користувача до сервера GitHub App.
Програми 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 є два підходи: webhooks і опитування.

Примітка

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

Використання веб-команд GitHub

Webhooks – це основний підхід для обробки подій. Коли щось відбувається на GitHub в рамках веб-хука, подія виникає негайно. Push-сповіщення Webhooks, які програма може прослуховувати та обробляти в режимі реального часу. У настройках сховища можна настроїти веб-кнопки, зокрема типи подій, автентифікацію та спосіб доставки сповіщень HTTP.

Опитування

Іноді webhooks не є варіантом. Можливо, програмі знадобиться жити за корпоративним брандмауером, де GitHub не може безпосередньо до неї зв'язатися. У такому випадку альтернативою є опитування даних, які ви відстежуєте за допомогою API GitHub.

Ретрансляція Webhook

Альтернатива опитуванню програм, що стоять за брандмауером, полягає в тому, щоб використовувати службу пересилання webhook, наприклад smee.io. При такому підході публічна служба підписується на веб-хук репозиторію, а потім ретранслює вхідні дані клієнтській службі, що працює за брандмауером. Ця клієнтська служба потім натискає сповіщення на запущену програму так, ніби вони походили з вихідного джерела.