Верх страницы
Обложка к записи GITHUB_TOKEN в GitHub Actions
Время для прочтения: 0 мин. 41 сек.

GITHUB_TOKEN в GitHub Actions

Как это работат, изменение привелегий, кастомизация.

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

Видео

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

GitHub Actions: GITHUB_TOKEN Explained | How it works, Change Permissions, CustomizationsGitHub Actions: GITHUB_TOKEN Explained | How it works, Change Permissions, Customizations

Если вы предпочитаете читать, что ж… давайте продолжим 🙂

Что такое GITHUB_TOKEN

Давайте начнем с того, что такое GITHUB_TOKEN в GitHub Actions и как он работает.

GITHUB_TOKEN — это специальный токен доступа, который вы можете использовать для аутентификации от имени GitHub Actions. GitHub автоматически создает для вас секрет GITHUB_TOKEN для использования в рабочем процессе, и вы можете использовать его для аутентификации при выполнении рабочего процесса.

Это работает следующим образом: когда вы включаете GitHub Actions в репозитории, GitHub устанавливает на него GitHub App. Секрет GITHUB_TOKEN — это, по сути, токен доступа к установке приложения GitHub.

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

Надеюсь, теперь механизм стал более понятным. Давайте быстро посмотрим, как использовать GITHUB_TOKEN

Использование токена GitHub

Существует 2 способа использования токена: из секретов и из контекста.

      - uses: actions/labeler@v2
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}

В этом первом примере мы используем секрет secrets.GITHUB_TOKEN для его использования. Как уже упоминалось, секрет генерируется автоматически, поэтому вы можете сразу же использовать его.

      - name: Create a Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ github.token }}

Здесь вместо этого мы используем контекст GitHub, который содержит токен. Обратите внимание, что эти два варианта эквивалентны.

Персональный токен доступа против GITHUB_TOKEN

Если вы думаете: «Почему я должен использовать GITHUB_TOKEN вместо моего обычного PAT?», помните, что персональный токен всегда доступен, поэтому если кто-то сможет украсть этот PAT, он может причинить вред.

Срок действия GITHUB_TOKEN истекает сразу после завершения работы. Поэтому даже если кто-то сможет украсть его (что практически невозможно), он в принципе не сможет сделать ничего плохого.

Права по умолчанию

По умолчанию GITHUB_TOKEN имеет довольно внушительный список разрешений, назначенных ему.

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

Разрешения в UI

Итак, давайте посмотрим, как мы можем изменить разрешения GITHUB_TOKEN, чтобы сделать его еще более безопасным.

Просто зайдите в Настройки (Settings) вашего хранилища или организации, затем нажмите на Действия (Actions).

Здесь вы можете изменить разрешения, назначенные вашему токену, выбрав «Чтение и запись» (что позволяет вам получить доступ к содержимому и вносить изменения) или «Только чтение«.

Это очень быстро, но, с другой стороны, довольно ограниченно. Что если я хочу назначить разрешения более детально?

Гранулярные разрешения через YAML

Вы можете использовать ключ permissions в YAML-файле рабочего процесса, чтобы изменить разрешения GITHUB_TOKEN как для всего рабочего процесса так и для отдельных заданий.

permissions:
  contents: write
  pull-requests: write 
  issues: read
  packages: none

И вы можете использовать все разрешения, которые перечислены в таблице выше. Кроме того, как вы можете видеть ниже, он поддерживает дополнение ввода, если вы делаете это непосредственно в интерфейсе GitHub:

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

Вы можете персонализировать разрешения токенов либо на уровне конкретного задания, либо на уровне всего рабочего процесса (или и то, и другое):

[...]
permissions:
  contents: write
  pull-requests: write  

jobs:
  job1:
    runs-on: ubuntu-latest

    steps:
      [...]

  job2:   
    runs-on: ubuntu-latest  
    permissions:
      issues: write
    steps:
    [...]

Заключение

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

Источник: The GITHUB_TOKEN in GitHub Actions: How it Works, Change Permissions, Customizations

Комментарии
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии