Skip to main content

Сведения о разрешениях для пакетов GitHub

Узнайте о том, как управлять разрешениями для пакетов.

Кто может использовать эту функцию?

Enterprise Managed Users может публиковаться в пространстве имен организации. Эти пользователи не могут публиковать пакеты в пространстве имен своей учетной записи, так как личные ресурсы хранилища отсутствуют. Дополнительные сведения о Enterprise Managed Usersсм. в разделе Сведения о Enterprise Managed Users.

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

Настроенные разрешения для пакетов с областью пользователя или организации

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

Следующие реестры GitHub Packages поддерживают детализированные разрешения.

  • Container registry
  • Реестр npm
  • Реестр NuGet
  • Реестр RubyGems

Разрешения для пакетов на уровне репозитория

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

Следующие реестры GitHub Packages поддерживают только разрешения на уровне репозитория.

  • Реестр Apache Maven
  • Реестр Gradle

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

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

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

Для извлечения пакета в большинстве реестров необходимо пройти проверку подлинности с помощью personal access token или GITHUB_TOKENнезависимо от того, является ли пакет общедоступным или частным. Однако в Container registryобщедоступные пакеты разрешают анонимный доступ и могут быть извлечены без проверки подлинности или входа через CLI.

Примечание.

При публикации пакета, связанного с репозиторием, пакет наследует его разрешения от связанного репозитория по умолчанию. Чтобы получить доступ к параметрам детализированных разрешений пакета, необходимо удалить унаследованные разрешения пакета. Если вы являетесь владельцем организации, вы можете отключить автоматическое наследование разрешений для всех новых пакетов в вашей организации. Дополнительные сведения см. в разделе [AUTOTITLE и Настройка управления доступом и видимости пакета](/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility#disabling-automatic-inheritance-of-access-permissions-in-an-organization).

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

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

Если вы используете рабочий процесс GitHub Actions для управления пакетами, вы можете предоставить роль доступа к репозиторию, рабочий процесс хранится в с помощью кнопки "Добавить репозиторий" в разделе "Управление доступом к** действиям" в параметрах пакета. Дополнительные сведения см. в разделе Настройка управления доступом и видимости пакета.

РазрешениеОписание доступа
ЧитатьМожет скачивать пакет.
Может считывать метаданные пакета.
WriteМожет отправлять и скачивать этот пакет.
Может считывать и записывать метаданные пакета.
АдминистративныйМожет отправлять, скачивать, удалять этот пакет и управлять им.
Может считывать и записывать метаданные пакета.
Может предоставлять права доступа к пакету.

Примечание.

Возможность удаления и восстановления пакетов с помощью REST API GitHub Actions в настоящее время находится в public preview и подлежит изменению.

Дополнительные сведения см. в разделе Настройка управления доступом и видимости пакета.

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

Примечание.

GitHub Packages поддерживает проверку подлинности только с помощью personal access token (classic). Дополнительные сведения см. в разделе Управление личными маркерами доступа.

Чтобы использовать или управлять пакетом, размещенным в реестре пакетов, необходимо использовать personal access token (classic) с соответствующей областью, а личная учетная запись должны иметь соответствующие разрешения.

Например:

  • Чтобы скачать и установить пакеты из репозитория, у ваших personal access token (classic) должна быть read:packages область, а учетная запись пользователя должна иметь разрешение на чтение.
  • Чтобы удалить пакет, данные personal access token (classic) должны иметь по крайней мере область delete:packages и read:packages область. Дополнительные сведения см. в разделе Удаление и восстановление пакета.
ScopeDescriptionТребуемое разрешение
read:packagesСкачивание и установка пакетов из GitHub Packagesчтение
write:packagesОтправка и публикация пакетов в GitHub Packagesзапись
delete:packagesУдаление пакетов из GitHub Packagesадминистрирование

Примечание.

Возможность удаления и восстановления пакетов с помощью REST API GitHub Actions в настоящее время находится в public preview и подлежит изменению.

При создании рабочего процесса GitHub Actions можно использовать GITHUB_TOKEN для публикации, установки, удаления и восстановления пакетов в GitHub Packages без необходимости хранить и управлять данными personal access token.

Дополнительные сведения см. в следующих разделах:

Сведения о передаче репозиториев

Репозиторий можно перенести в другую личная учетная запись или организацию. Дополнительные сведения см. в разделе Передача репозитория.

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

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

Поддержка доступа к пакетам в рабочих процессах GitHub Actions

Чтобы рабочие процессы сохраняли доступ к пакетам, убедитесь, что вы используете правильный маркер доступа в рабочем процессе и включили доступ GitHub Actions к пакету.

Дополнительные концептуальные сведения о GitHub Actions или примерах использования пакетов в рабочих процессах см. в разделе Управление пакетами GitHub с помощью рабочих процессов GitHub Actions.

Маркеры доступа

Примечание.

Возможность удаления и восстановления пакетов с помощью REST API GitHub Actions в настоящее время находится в public preview и подлежит изменению.

  • Для публикации, установки, удаления и восстановления пакетов, связанных с репозиторием рабочих процессов, используйте GITHUB_TOKEN.
  • Чтобы установить пакеты, связанные с другими частными репозиториями, которые GITHUB_TOKEN не могут получить доступ, используйте personal access token (classic)

Дополнительные сведения об GITHUB_TOKEN использовании в рабочих процессах GitHub Actions см. в разделе Использование GITHUB_TOKEN для проверки подлинности в рабочих процессах.

Доступ к GitHub Actions для пакетов с подробными разрешениями

Чтобы рабочие процессы имели доступ к пакетам, хранящимся в реестрах, поддерживающих детализированные разрешения, необходимо предоставить GitHub Actions доступ к репозиториям, где выполняется рабочий процесс. Этот параметр можно найти на странице параметров пакета. Дополнительные сведения см. в разделе Настройка управления доступом и видимости пакета.