包的权限可以将范围限定为用户、组织或存储库。
用户/组织作用域包的精细权限
具有精细权限的包仅限于个人用户或组织帐户。 您可以从与包相连(或链接)的仓库分别更改包的访问控制和可见性。
以下 GitHub Packages 注册表支持精细权限。
- Container registry - npm 注册表 - NuGet 注册表 - RubyGems 注册表
存储库范围的包的权限
存储库范围的包会继承拥有包的存储库的权限和可见性。 通过转到存储库的主页并单击页面右侧的“包”链接,可以找到范围限定为存储库的包。 有关详细信息,请参阅“将存储库连接到包”。
以下 GitHub Packages 注册表仅支持存储库范围的权限。
- Docker 注册表 (
docker.pkg.github.com
) - Apache Maven 注册表
- Gradle 注册表
对于 其他注册表,可以选择允许将包的范围限定为用户或组织,或链接到存储库。
容器映像的可见性和访问权限
如果您对容器映像具有管理员权限,可以将容器映像的访问权限设置为私有或公有。 公有映像允许匿名访问,无需身份验证或通过 CLI 登录即可进行拉取。
作为管理员,您还可以授予容器映像的访问权限,该权限与在组织和仓库级别设置的权限不同。
对于个人帐户发布和拥有的容器映像,你可以为任何人提供访问角色。 对于组织发布和拥有的容器映像,您可以为组织中的任何人或团队授予访问角色。
权限 | 访问描述 |
---|---|
读取 | 可以下载包。 可以读取包元数据。 |
写入 | 可以上传和下载此包。 可以读取和写入包元数据。 |
管理员 | 可以上传、下载、删除和管理此包。 可以读取和写入包元数据。 可以授予包权限。 |
有关详细信息,请参阅“配置包的访问控制和可见性“。
管理包
GitHub Packages 仅支持使用 personal access token (classic) 进行身份验证。 有关详细信息,请参阅“创建 personal access token”。
要使用或管理由包注册表托管的包,必须使用具有适当范围的 personal access token (classic),并且个人帐户必须具有适当的权限。
例如:
- 要从存储库下载和安装包,你的 personal access token (classic) 必须具有
read:packages
范围,并且用户帐户必须具有读取权限。 - 要删除 GitHub Enterprise Cloud 上的包,personal access token (classic) 必须至少具有
delete:packages
和read:packages
范围。 存储库范围的包也需要repo
范围。 有关详细信息,请参阅“删除和还原包”。
作用域 | 说明 | 必需的权限 |
---|---|---|
read:packages | 从 GitHub Packages 下载和安装包 | 读取 |
write:packages | 将包上传和发布到 GitHub Packages | 写入 |
delete:packages | 从 GitHub Packages 中删除包 | 管理员 |
repo | 上传和删除包(连同 write:packages 或 delete:packages )。 | 写入或管理员 |
创建 GitHub Actions 工作流时,可使用 GITHUB_TOKEN
发布和安装 GitHub Packages 中的包,无需存储和管理 personal access token。
更多信息请参阅:
在 GitHub Actions 工作流程中维持对包的访问权限
为了确保工作流程将保持对包的访问,请确保在工作流程中使用正确的访问令牌,并启用了 GitHub Actions 对包的访问权限。
有关 GitHub Actions 的更多概念背景或在工作流中使用包的示例,请参阅“使用 GitHub Actions 工作流管理 GitHub Packages”。
访问令牌
- 要发布与工作流存储库相关联的包,请使用
GITHUB_TOKEN
。 - 要安装与
GITHUB_TOKEN
无法访问的其他专用存储库相关联的包,请使用 personal access token (classic)
有关 GitHub Actions 工作流中使用的 GITHUB_TOKEN
的详细信息,请参阅“工作流中的身份验证”。
容器映像的 GitHub Actions 访问权限
要确保工作流程有权访问容器映像,您必须启用 GitHub Actions 访问运行工作流程的仓库。 您可以在包的设置页面上找到此设置。 有关详细信息,请参阅“确保工作流访问你的包”。