Сведения о разрешениях GitHub App
GitHub Apps по умолчанию не имеют разрешений. При регистрации GitHub Appможно выбрать разрешения для приложения. Разрешения, которые вы выбираете, определяют, что приложение может делать с помощью API -интерфейсов GitHubи веб-перехватчиков, на которые может подписаться приложение. Необходимо выбрать минимальные разрешения, необходимые для приложения.
Хотя у GitHub Apps нет разрешений по умолчанию, у них есть неявные разрешения на чтение общедоступных ресурсов при действии от имени пользователя. Когда пользователь разрешает приложению действовать от имени, GitHub App может использовать полученный маркер доступа пользователя для выполнения запросов к REST API и API GraphQL для чтения общедоступных ресурсов. Дополнительные сведения о действии от имени пользователя см. в разделе "Проверка подлинности с помощью приложения GitHub от имени пользователя".
Разрешения приложения классифицируются как репозиторий, организация или разрешения учетной записи. Разрешения репозитория позволяют приложению получать доступ к ресурсам, связанным с репозиториями, принадлежащими учетной записи, в которой установлено приложение. Разрешения организации позволяют приложению получать доступ к ресурсам, связанным с организацией, в которой установлено приложение, если оно установлено в учетной записи организации. Разрешения учетной записи позволяют приложению получать доступ к ресурсам, связанным с пользователем, если пользователь также авторизовать приложение. Дополнительные сведения о авторизации пользователей приложений см. в разделе "Проверка подлинности с помощью приложения GitHub от имени пользователя".
Когда пользователь устанавливает приложение в своей учетной записи или организации, он видит и предоставляет репозиторий и организации разрешения, запрошенные приложением. Они также увидят список разрешений учетной записи, которые приложение может запрашивать для отдельных пользователей. Когда пользователь разрешает приложению действовать от своего имени, он увидит и предоставит разрешения учетной записи, запрошенные приложением.
Успех запроса API с маркером доступа пользователя зависит от разрешений пользователя, а также разрешений приложения. Например, если приложению было предоставлено разрешение на запись содержимого репозитория, но пользователь может только прочитать содержимое, то маркер доступа пользователя может прочитать только содержимое. Успех запроса API с маркером доступа к установке зависит только от разрешений приложения.
Разрешения для приложения можно изменить в любое время. При изменении разрешений владелец каждой учетной записи, в которой было установлено приложение, будет предложено утвердить новые разрешения. Если владелец учетной записи не утверждает новые разрешения, их установка продолжит использовать старые разрешения.
Для некоторых веб-перехватчиков и доступа к API требуются разрешения Администратор istration. Если приложению требуются разрешения "Администратор istration", рассмотрите возможность объяснить это требование на домашней странице вашего приложения. Это поможет пользователям понять, почему приложению требуется высокий уровень разрешений.
Дополнительные сведения об указании разрешений во время регистрации GitHub App см. в разделе "Регистрация приложения GitHub". Дополнительные сведения об изменении разрешений см. в разделе "Изменение регистрации приложения GitHub".
Выбор разрешений для доступа к веб-перехватчику
Документация по веб-перехватчику указывает, доступен ли каждый веб-перехватчик GitHub Apps. Для каждого веб-перехватчика, на который вы хотите подписаться, обратитесь к документации по веб-перехватчику, чтобы узнать, какие разрешения необходимо подписаться на этот веб-перехватчик GitHub App. Дополнительные сведения см. в разделе События и полезные данные веб-перехватчика.
Например, если вы хотите, чтобы приложение подписывалось на team
события, ваше приложение должно иметь разрешение "Участники" организации.
На странице регистрации GitHub App доступные события веб-перехватчика изменятся при изменении разрешений приложения. Если вы не выбрали достаточные разрешения для ваших GitHub App для подписки на событие, событие не будет отображаться на странице регистрации приложения.
Выбор разрешений для доступа к REST API
Справочная документация по REST API для каждой конечной точки указывает, работает ли конечная точка с GitHub Apps и указывает, какие разрешения необходимы для использования конечной точкой приложения. Для некоторых конечных точек может потребоваться несколько разрешений, а для некоторых конечных точек может потребоваться одно из нескольких разрешений. Общие сведения о том, к каким конечным точкам REST API предоставляет доступ GitHub App с каждым разрешением, см. в разделе "Разрешения, необходимые для приложений GitHub".
Например, чтобы использовать конечную точку GET /orgs/{org}/dependabot/secrets
, приложение должно иметь по крайней мере разрешение на чтение для разрешения "секреты зависимостей организации".
Если приложение выполняет запрос REST API с недостаточными разрешениями, API вернет 403
ответ.
Чтобы выбрать правильные разрешения, вы получите X-Accepted-GitHub-Permissions
заголовок в ответе REST API. Заголовок сообщит вам, какие разрешения необходимы для доступа к конечной точке. Дополнительные сведения см. в разделе Устранение неполадок с REST API.
Выбор разрешений для доступа к API GraphQL
Для запросов GraphQL необходимо протестировать приложение, чтобы убедиться, что у него есть необходимые разрешения для запросов и мутаций GraphQL, которые вы хотите сделать.
Если приложение создает запрос API GraphQL или изменение с недостаточными разрешениями, API вернет 401
ответ.
Выбор разрешений для доступа к Git
Если вы хотите, чтобы приложение использовало маркер установки или доступа пользователей для проверки подлинности для доступа к Git на основе HTTP, необходимо запросить разрешение репозитория "Содержимое". Если приложению требуется доступ к файлам действий или редактированию файлов действий в каталоге .github/workflows
, запросите разрешение репозитория Workflows.
Затем вы можете использовать маркер доступа в качестве пароля HTTP. Замените TOKEN
маркером доступа:
git clone https://x-access-token:TOKEN@github.com/owner/repo.git