Визначення підтримуваних маркерів Access

Завершено

Тут ви дізнаєтеся про різні токени доступу до GitHub, їх застосування, обмеження та обмеження швидкості.

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

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

  • Маркери особистого доступу GitHub
  • Маркери користувача-сервера GitHub
  • Маркери сервера-сервера GitHub
  • Маркери доступу OAuth
  • Оновлення маркерів

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

Маркери особистого доступу

Маркер особистого доступу (PAT) – це альтернатива використанню пароля для автентифікації на GitHub. Для того, щоб натиснути та витягнути репозиторії, GitHub має перевірити доступ користувачів. Перевірка виконується через перевірену адресу електронної пошти користувача. Ви можете створити стільки особистих маркерів доступу, скільки потрібно для робочого циклу, і ви повинні розглядати їх так само безпечно, як паролі. Радимо використовувати різні маркери для різних програм. Щоб створити персональний токен доступу на GitHub, перейдіть до Налаштувань і в розділі Налаштування розробника виберіть Особисті токени доступу.

знімок екрана з прикладом маркера особистого доступу GitHub.

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

Докладні інструкції зі створення маркера особистого доступу доступні тут: Створення маркера особистого доступу - Docs GitHub

Маркери пристрою

Токен пристрою — це, по суті, версія PAT для машинного облікового запису, яка використовується в контексті пристрою, яка надає доступ до певного репозиторію в конкретних випадках використання, які не прив'язані до користувача. Для настроювання програми за допомогою потоку OAuth використовується маркер пристрою. Зазвичай вони використовуються з бігунами, спеціальними службами додатків, завданнями Cron (у Linux) або іншими подібними сценаріями, пов'язаними з автоматизованими завданнями. Так само, як і персональний токен доступу, токен пристрою прив'язаний до індивідуального облікового запису, а обліковий запис, для якого ви створюєте токен пристрою, споживає ліцензію.

Маркери інсталяції програм GitHub

Маркер інсталяції дозволяє програмі GitHub робити автентифіковані запити API для інсталяції програми в організації. Перш ніж створювати інсталяційний токен, вам спочатку потрібно встановити програму GitHub, до якої застосовується токен, у репозиторії призначення. Інсталяційні токени дійсні протягом однієї години та є безпечними, оскільки вони генеруються з певною метою та закінчуються за відносно короткий проміжок часу.

Маркери OAuth Access

Маркери OAuth2 використовуються для авторизації користувачів для стандартних програм OAuth, які працюють у браузері, і для безголові програми, такі як інструменти CLI. Вони дають програмі доступ до API за допомогою маркера доступу користувача. Ці маркери дають змогу підключати ідентичність користувача GitHub до сторонніх програм, що дозволяє програмі виконувати дії від вашого імені. Наприклад, якщо ви хочете використовувати програму, яка запитує user:email обсяг, вона отримує доступ лише для читання до ваших особистих електронних адрес. Ці маркери можна придбати за допомогою потоку веб-застосунку для виробничих програм. Оскільки ці токени короткострокові та закінчуються через 10 хвилин, вони також безпечні.

Оновити маркери

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

Ідентифікувані префікси

Як ми бачимо в усій галузі, префікси маркерів – це чіткий спосіб зробити маркери ідентифікується. GitHub включає трилітерні префікси для позначення кожного токена. Префікс починається з двох букв, які означають компанію, gh, і за ним слідує перша буква типу токена. Префіксами для доступних типів токенів доступу є:

  • ghp для маркерів особистого доступу GitHub
  • ghu маркерів користувача-сервера GitHub
  • ghs маркерів сервера-сервера GitHub
  • gho маркерів доступу OAuth
  • ghr для маркерів оновлення

Крім того, ці префікси мають роздільник (_) в маркері, щоб полегшити читання. Нижнє підкреслення не є символом Base64, що допомагає гарантувати, що випадково згенеровані рядки, такі як Secure Hash Algorithms (SHA), не зможуть випадково дублювати ці токени. Префікси також допомагають зменшити частоту помилкових спрацьовувань при скануванні секретних даних, що є розширеною функцією безпеки GitHub для подальшого покращення безпеки у вашому репозиторії GitHub.

Обмеження швидкості маркерів

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

Обмеження ставок допомагають контролювати швидкість трафіку на GitHub і базуються на запитах на годину.

  • Програма GitHub, інстальована на корпоративному обліковому записі GitHub, має обмеження на ставку запиту в 15 000 запитів на годину.
  • Програма OAuth автентифікована для окремого користувача та не може перевищувати 5000 запитів на годину.

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

На консолі керування можна налаштувати спеціальне обмеження ставки для неавтентифікованих користувачів на підприємстві та створити виключений список, що дозволить певним користувачам використовувати повний ліміт ставки 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
  }
}

Докладні відомості про обмеження ставок див. в статті обмеження швидкості на Docs GitHub.