Обзор
По умолчанию пространство кода назначается маркером с 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;
- интерфейс командной строки GitHub 2.5.2 или более поздней версии;
- расширение GitHub Codespaces Visual Studio Code 1.5.3 или более поздней версии.
Настройка дополнительных разрешений репозитория
Вы настраиваете разрешения репозитория для GitHub Codespaces в devcontainer.json
файле. Все настраиваемые разрешения, которые вы добавляете или изменяете, будут применяться только к новым пространствам кода, созданным после фиксации изменений в репозитории. При добавлении или изменении разрешений из пространства кода эти разрешения не будут применяться к текущему пространству кода, даже если вы перестроите пространство кода.
-
Если репозиторий еще не содержит файл
devcontainer.json
, добавьте его. Дополнительные сведения см. в разделе Добавление конфигурации контейнера разработки в репозиторий. -
Измените файл
devcontainer.json
, добавив имя репозитория и необходимые разрешения в отношении объектаrepositories
:JSON { "customizations": { "codespaces": { "repositories": { "my_org/my_repo": { "permissions": { "issues": "write" } } } } } }
{ "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 не будет повторно запрашивать данные, пока набор запрошенных разрешений для репозитория не будет изменен.
Авторизуйте разрешения только для тех репозиториев, которые вы знаете и которым доверяете. Если вы не доверяете набору запрошенных разрешений, нажмите Продолжить без авторизации, чтобы создать кодовое пространство с базовым набором разрешений. Отклонение дополнительных разрешений может повлиять на функциональные возможности проекта в кодовом пространстве, поскольку кодовое пространство будет иметь доступ только к тому репозиторию, из которого оно был создано.
Вы можете авторизовать только те разрешения, которые есть у вашей личной учетной записи. Если кодовое пространство запрашивает разрешения в отношении репозиториев, к которым у вас нет доступа, обратитесь к владельцу или администратору соответствующего репозитория для получения доступа, а затем попробуйте создать кодовое пространство еще раз.