Skip to main content

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

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

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

GitHub Packages is available with GitHub Free, GitHub Pro, GitHub Free for organizations, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server 3.0 or higher.


GitHub Packages is not available for private repositories owned by accounts using legacy per-repository plans. Also, accounts using legacy per-repository plans cannot access registries that support granular permissions, because these accounts are billed by repository. Enterprise Managed Users do not have individual storage allocation to publish packages within their account's namespace, but can publish to an organization's namespace. For additional information on Enterprise Managed Users, see "About Enterprise Managed Users." For the list of registries that support granular permissions, see "About permissions for GitHub Packages." For more information, see "GitHub’s plans."

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

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

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

Следующие реестры 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Может отправлять и скачивать этот пакет.
Может считывать и записывать метаданные пакета.
АдминистрированиеМожет отправлять, скачивать, удалять этот пакет и управлять им.
Может считывать и записывать метаданные пакета.
Может предоставлять права доступа к пакету.

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

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

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

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

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

Например:

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

Примечание. Возможность для рабочих процессов GitHub Actions для удаления и восстановления пакетов с помощью REST API в настоящее время находится в 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".

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

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

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

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

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

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