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

