Skip to main content

Выбор разрешений для приложения GitHub

Разрешения приложения GitHub определяют, что приложение может делать с GitHubпомощью API-интерфейсов и веб-перехватчиков, которые может получать приложение.

О GitHub App разрешениях

GitHub Apps По умолчанию у вас нет разрешений. При регистрации GitHub Appприложения можно выбрать разрешения. Разрешения, которые вы выбираете, определяют, что приложение может делать с GitHubпомощью API и какие веб-перехватчики приложение может подписаться. Необходимо выбрать минимальные разрешения, необходимые для приложения.

Хотя GitHub Apps у них нет разрешений по умолчанию, они имеют неявные разрешения на чтение общедоступных ресурсов при действии от имени пользователя. Когда пользователь разрешает приложению действовать от имени, GitHub App можно использовать полученный маркер доступа пользователя для выполнения запросов к REST API и API GraphQL для чтения общедоступных ресурсов. Дополнительные сведения о действии от имени пользователя см. в разделе Аутентификация с помощью приложения GitHub от имени пользователя.

Разрешения приложения классифицируются как репозиторий, организация, предприятие или разрешения учетной записи.

  • Разрешения репозитория позволяют приложению получать доступ к ресурсам, связанным с репозиториями, принадлежащими учетной записи, в которой установлено приложение.
  • Разрешения организации позволяют приложению получать доступ к ресурсам, связанным с организацией, в которой установлено приложение, если оно установлено в учетной записи организации.
  • Корпоративные разрешения позволяют приложению управлять предприятием, если он установлен на корпоративной учетной записи.
  • Разрешения учетной записи позволяют приложению получать доступ к ресурсам, связанным с пользователем, если пользователь также авторизовать приложение. Дополнительные сведения о авторизации пользователей приложений см. в разделе Аутентификация с помощью приложения GitHub от имени пользователя.

Любой пользователь, организация или предприятие может создать приложение с помощью любого из типов разрешений. Приложение с корпоративными разрешениями должно быть public``internal установлено или установлено в корпоративной учетной записи. Приложение public может быть установлено любым предприятием, в то время как internal приложение может быть установлено только компанией, которая владеет приложением или предприятием организации, которая владеет приложением. Дополнительные ограничения, на которые можно установить приложение, не могут быть установлены организации или личные учетные записи.

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

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

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

Дополнительные сведения об указании разрешений во время регистрации см. в GitHub App разделе Регистрация приложения GitHub.

Для некоторых веб-перехватчиков и доступа к API требуются разрешения "Администрирование". Если приложению требуются разрешения "Администрирование", рассмотрите возможность объяснить это требование на домашней странице вашего приложения. Это поможет пользователям понять, почему приложению требуется высокий уровень разрешений.

Сведения об изменениях разрешений

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

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

Дополнительные сведения об изменении разрешений см. в разделе Изменение регистрации приложения 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