Перейти к содержимому
davidka.net > 💻 🧠 Код 1001 > 🛠️ DevOps > 🧭 GitHub Personal Access Token (PAT)

🧭 GitHub Personal Access Token (PAT)

Введение

GitHub Personal Access Token (PAT), или личный токен доступа, — это современный способ безопасной аутентификации на платформе GitHub.

С августа 2021 года GitHub перестал поддерживать использование паролей для операций с Git через HTTPS. Это значит, что для любых действий, где раньше требовался пароль, теперь нужен токен. PAT позволяет:

  • безопасно подключаться к репозиториям;
  • работать с GitHub API;
  • автоматизировать процессы в скриптах, CI/CD и других инструментах без риска компрометации аккаунта.

Если коротко: PAT — это «ключ», который даёт точечно ограниченный доступ, легко отзывается и может иметь срок действия.


Зачем нужен PAT

Главная цель PAT — обезопасить работу с GitHub и при этом сохранить удобство.

Ключевые задачи:

  1. Безопасность
    Пароль — это полный доступ к аккаунту. Если он скомпрометирован, пострадает всё. Токен можно ограничить по правам и срокам действия.
  2. Автоматизация
    Скрипты, CI/CD, боты и другие инструменты могут использовать PAT вместо ручного ввода логина и пароля.
  3. Контроль доступа
    Можно создать несколько токенов с разными правами для разных задач. Если один токен утёк — его легко отозвать, не затрагивая остальные.

Виды токенов

GitHub предлагает два типа токенов:

  1. Classic (классический)
  • Доступ определяется через scopes (например, repo, workflow).
  • Дает права ко всем репозиториям пользователя.
  • Простой в использовании, но менее гибкий.
  1. Fine-grained (детальный)
  • Позволяет ограничить доступ до конкретных репозиториев.
  • Можно задавать точечные права, например, «только чтение issues».
  • Организации могут требовать одобрения таких токенов.

💡 Совет: используйте fine-grained токены там, где важна безопасность и ограничение доступа, классические — для совместимости со старыми инструментами.


Как создать PAT

Шаг 1. Перейти в настройки

  1. Откройте GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic).

Шаг 2. Генерация нового токена

  1. Нажмите Generate new token (classic).
  2. Задайте имя (Note), например CI-token или Git-PC.
  3. Установите срок действия (Expiration) — рекомендуются 90 дней или 1 год.
  4. Выберите права (Scopes) — минимум для Git: repo, для Actions: workflow.
  5. Сгенерируйте токен и немедленно сохраните его — после этого он больше не отображается.

Использование PAT

1. Git через HTTPS

git clone https://github.com/username/repo.git
# Username: ваш логин
# Password: сгенерированный токен

Кэширование токена:

git config --global credential.helper manager   # Windows/Mac
git config --global credential.helper 'cache --timeout=3600'  # Linux

2. Работа с GitHub API

$token = Get-Secret -Name GitHubToken  # безопасное получение токена
$headers = @{ Authorization = "token $token" }

$repos = Invoke-RestMethod -Uri "https://api.github.com/user/repos" -Headers $headers
$repos | ForEach-Object { $_.name }

Создание issue:

$body = @{
    title = "Новая задача для теста"
    body  = "Описание задачи"
} | ConvertTo-Json

Invoke-RestMethod -Uri "https://api.github.com/repos/username/repo/issues" `
                  -Method Post `
                  -Headers $headers `
                  -Body $body

3. CI/CD и скрипты

$token = Get-Secret -Name GitHubToken
git config --global user.name "CI Bot"
git config --global user.email "ci@example.com"

git add .
git commit -m "Автоматическое обновление"
git push "https://$token@github.com/username/repo.git" main

💡 Совет: используйте отдельный токен с минимальными правами для CI/CD.


4. IDE и локальная разработка

  • В Visual Studio Code и других IDE можно вставлять PAT вместо пароля для работы с приватными репозиториями и pull requests.
  • Для разных машин или IDE создавайте отдельные токены — так можно ограничить последствия утечки.

5. Управление и безопасность

  • Храните токены в менеджерах паролей или SecretStore.
  • Создавайте отдельные токены для разных задач.
  • Регулярно проверяйте и отзывайте неиспользуемые.
  • Всегда устанавливайте срок действия (не используйте «No expiration»).
  • Планируйте ротацию для CI/CD и автоматизированных скриптов.

6. Альтернатива: GitHub CLI

gh auth login

CLI откроет браузер, проведёт аутентификацию, создаст и сохранит токен локально. Это избавляет от ручной генерации PAT и упрощает управление ключами.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *