Skip to main content

Управление доступом к другим репозиториям в кодовом пространстве

Вы можете управлять репозиториями, к которым у GitHub Codespaces есть доступ.

Обзор

По умолчанию пространство кода назначается маркером, область с read разрешением или read write разрешением на репозиторий, из которого он был создан. Область этого маркера автоматически изменяется в следующих обстоятельствах.

  • Если создать пространство кода для репозитория, к которому у вас есть доступ только для чтения, сделайте фиксацию в пространстве кода или отправьте новую ветвь, GitHub Codespaces автоматически связывает пространство кода с новым или существующим вилком репозитория и обновляет маркер, чтобы иметь read и write разрешение на вилку. Дополнительные сведения см. в разделе Использование системы управления версиями в codespace.
  • Если вы создаете пространство кода из шаблона, опубликуйте пространство кода в новый репозиторий, GitHub Codespaces обновляет маркер read write и разрешение на новый репозиторий. Дополнительные сведения см. в разделе Создание пространства кода на основе шаблона.

Дополнительные сведения см. в разделе Безопасность в GitHub Codespaces.

Если в проекте требуются дополнительные разрешения для других репозиториев, его можно настроить в devcontainer.json файле, как описано в разделе "Настройка дополнительных разрешений репозитория" далее в этой статье. Если разрешения перечислены в файле devcontainer.json, вам будет предложено просмотреть и авторизовать дополнительные разрешения в процессе создания кодового пространства для этого репозитория. После того как вы авторизуете перечисленные разрешения, GitHub Codespaces запомнит ваш выбор и не будет запрашивать авторизацию, пока разрешения в файле devcontainer.json не изменятся.

Примечание. Обновление разрешений в devcontainer.json файле не изменяет разрешения существующих пространств кода. Если вам нужны дополнительные разрешения в существующем пространстве кода, см. разделУстранение неполадок проверки подлинности в репозитории.

Создание пространств кода с пользовательскими разрешениями

Чтобы создать пространство кода с пользовательскими разрешениями, необходимо использовать одно из следующих элементов:

Настройка дополнительных разрешений репозитория

Вы настраиваете разрешения репозитория для GitHub Codespaces в devcontainer.json файле. Все настраиваемые разрешения, которые вы добавляете или изменяете, будут применяться только к новым пространствам кода, созданным после фиксации изменений в репозитории. При добавлении или изменении разрешений из пространства кода эти разрешения не будут применяться к текущему пространству кода, даже если вы перестроите пространство кода.

  1. Если репозиторий еще не содержит файл devcontainer.json, добавьте его. Дополнительные сведения см. в разделе Добавление конфигурации контейнера разработки в репозиторий.

  2. Измените файл devcontainer.json, добавив имя репозитория и необходимые разрешения в отношении объекта repositories:

    JSON
    {
      "customizations": {
        "codespaces": {
          "repositories": {
            "my_org/my_repo": {
              "permissions": {
                "issues": "write"
              }
            }
          }
        }
      }
    }
    

    Примечания:

    • Вы можете ссылаться только на репозитории, принадлежащие к той же личная учетная запись или организации, в которой сейчас работает репозиторий.
    • Вы можете использовать дикую * карта для предоставления разрешений нескольким репозиториям в организации. Например, чтобы предоставить разрешения всем репозиториям my_org в организации my_org/*. Этот синтаксис действителен только для пространств кода. В любых devcontainer.json файлах, используемых для предварительной сборки, необходимо определить разрешения для каждого репозитория отдельно. Дополнительные сведения см. в разделе Предоставление предварительной сборке доступа к другим репозиториям.

    Для каждого указанного репозитория можно предоставить любое количество следующих разрешений:

    • actions — чтение/запись;
    • checks — чтение/запись;
    • contents — чтение/запись;
    • deployments — чтение/запись;
    • discussions — чтение/запись;
    • issues — чтение/запись;
    • packages — чтение;
    • pages — чтение/запись;
    • pull_requests — чтение/запись;
    • repository_projects — чтение/запись;
    • statuses — чтение/запись;
    • workflows — запись.

    Чтобы задать разрешение для репозитория в организации, необходимо явно добавить это имя репозитория в repositories объект.

    {
      "customizations": {
        "codespaces": {
          "repositories": {
            "my_org/my_repo": {
              "permissions": {
                "issues": "write"
              }
            }
          }
        }
      }
    }
    

    Чтобы задать все разрешения для определенного репозитория, используйте в объекте репозитория "permissions": "read-all" или "permissions": "write-all".

    {
      "customizations": {
        "codespaces": {
          "repositories": {
            "my_org/my_repo": {
              "permissions": "write-all"
            }
          }
        }
      }
    }
    

Авторизация запрошенных разрешений

Если в файле devcontainer.json определены дополнительные разрешения репозитория, во время создания codespace или конфигурации предварительной сборки для этого репозитория появится запрос на просмотр и авторизацию разрешений при необходимости. При авторизации разрешений для репозитория GitHub Codespaces не будет повторно запрашивать данные, пока набор запрошенных разрешений для репозитория не будет изменен.

Снимок экрана: страница запрошенных разрешений. Два разрешения отображаются как запрошенные: разрешение на чтение метаданных и разрешение на запись для проблем.

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

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

Дополнительные материалы