包可以继承其可见性和访问权限自仓库,或者,对于支持细粒度权限的注册表,可以单独设置包的可见性和权限,而与仓库无关。
有关支持细粒度权限的注册表列表,以及有关包权限、PAT 的包相关作用域或管理 GitHub Actions 工作流权限的更多信息,请参阅“GitHub Packages 的权限”。
关于访问权限的继承
在支持细粒度权限的注册表中,包的作用域限定为个人帐户或组织。在这些注册表中,可以发布包而不将其链接到仓库,然后通过设置包设置中的访问权限和可见性来确定谁可以访问该包。
默认情况下,如果发布链接到仓库的包,则该包会自动继承链接仓库的访问权限(但不继承可见性)。例如,具有链接仓库读取权限的用户也将具有包的读取权限。当包自动继承访问权限时,链接仓库中的 GitHub Actions 工作流也会自动获得对该包的访问权限。
只有在发布包之前将仓库链接到包时(例如,通过向容器镜像添加 `org.opencontainers.image.source` Docker 标签),包才会自动继承链接仓库的访问权限。如果从包的设置页面将已发布的包连接到仓库,则该包将保留其现有访问权限,并且除非显式选择此选项,否则不会继承仓库的访问权限。此外,组织可以禁用对其组织作用域的所有新包的访问权限的自动继承。有关更多信息,请参阅下面的“禁用组织中访问权限的自动继承”。
当包继承自仓库的权限时,要授予或删除对包的访问权限,必须配置链接仓库的权限设置。如果要单独设置包的访问设置,而与链接到包的仓库无关,则必须从包中删除继承的权限。有关更多信息,请参阅下面的“选择包是否继承自仓库的权限”。
如果在仅支持仓库作用域权限的注册表中发布包,则该包始终链接到仓库,并且始终继承链接仓库的权限。
关于设置包的可见性和访问权限
如果包属于支持细粒度权限的注册表,则任何具有包管理员权限的用户都可以将包设置为私有或公共,并且可以授予包的访问权限,这些权限与在组织和仓库级别设置的权限分开。有关支持细粒度权限的注册表列表,请参阅“GitHub Packages 的权限”。
在大多数注册表中,要提取包,必须使用个人访问令牌或 `GITHUB_TOKEN` 进行身份验证,无论包是公共的还是私有的。但是,在容器注册表中,公共包允许匿名访问,并且无需身份验证或通过 CLI 登录即可提取。
注意
如果发布链接到仓库的包,则该包默认继承其权限自链接仓库。要访问包的细粒度权限设置,必须删除包的继承权限。如果你是组织的所有者,则可以禁用对所有作用域限定为你的组织的新包的权限自动继承。有关更多信息,请参阅“配置包的访问控制和可见性”和“配置包的访问控制和可见性”。
发布包时,会自动获得该包的管理员权限。如果将包发布到组织,则组织中具有 `owner` 角色的任何用户也会获得该包的管理员权限。
对于作用域限定为个人帐户的包,可以向任何人授予访问角色。对于作用域限定为组织的包,可以向组织中的任何人或团队授予访问角色。
如果您使用 GitHub Actions 工作流来管理您的软件包,您可以通过在软件包设置中的“管理 Actions 访问权限”下使用**添加仓库**按钮,向存储工作流的仓库授予访问角色。更多信息,请参见配置软件包的访问控制和可见性。
权限 | 访问描述 |
---|---|
读取 | 可以下载软件包。 可以读取软件包元数据。 |
写入 | 可以上传和下载此软件包。 可以读取和写入软件包元数据。 |
管理员 | 可以上传、下载、删除和管理此软件包。 可以读取和写入软件包元数据。 可以授予软件包权限。 |
注意
GitHub Actions 工作流使用 REST API 删除和恢复软件包的功能目前处于公开预览阶段,可能会发生更改。
配置个人帐户软件包的访问权限
如果您对属于个人帐户的软件包具有管理员权限,则可以为其他用户分配读取、写入或管理员角色。有关这些权限角色的更多信息,请参见关于访问权限的继承。
如果您的软件包是私有的或内部的,并且属于某个组织,则您只能向其他组织成员或团队授予访问权限。
-
搜索并点击您要管理的软件包的名称。
-
在软件包的登录页面右侧,点击** 软件包设置**。
-
在“管理访问权限”或“继承的访问权限”下,点击**邀请团队或人员**,然后输入您要授予访问权限的人员的姓名、用户名或电子邮件地址。不能向属于个人帐户的软件包授予团队访问权限。
-
在用户名或团队名称旁边,使用**角色**下拉菜单选择所需的权限级别。
选定的用户将自动获得访问权限,无需先接受邀请。
配置组织软件包的访问权限
如果您对属于某个组织的软件包具有管理员权限,则可以为其他用户和团队分配读取、写入或管理员角色。有关这些权限角色的更多信息,请参见关于访问权限的继承。
如果您的软件包是私有的或内部的,并且属于某个组织,则您只能向其他组织成员或团队授予访问权限。
-
在 GitHub 上,导航到您的组织的主页。
-
在您的组织名称下,点击 **软件包**选项卡。
-
搜索并点击您要管理的软件包的名称。
-
在软件包的登录页面右侧,点击** 软件包设置**。
-
在“管理访问权限”或“继承的访问权限”下,点击**邀请团队或人员**,然后输入您要授予访问权限的人员的姓名、用户名或电子邮件地址。您还可以输入组织中的团队名称,以向所有团队成员授予访问权限。
-
在用户名或团队名称旁边,使用**角色**下拉菜单选择所需的权限级别。
选定的用户或团队将自动获得访问权限,无需先接受邀请。
选择软件包是否从仓库继承权限
默认情况下,如果您发布与仓库关联的软件包,则该软件包将继承关联仓库的访问权限。我们建议您让软件包从仓库继承其权限,因为这简化了管理软件包访问权限的过程。
当软件包从仓库继承权限时,要授予或删除对软件包的访问权限,必须配置关联仓库的权限。
如果您想在与关联仓库分离的粒度级别配置软件包的访问设置,则必须从软件包中删除继承的权限。
注意
如果您更改软件包获取访问权限的方式,则软件包的任何现有权限都将被覆盖。
为属于您个人帐户的软件包选择继承设置
-
在 GitHub 上,导航到您个人帐户的主页。
-
在 GitHub 的右上角,点击您的个人资料照片,然后点击**您的个人资料**。
-
在您的个人资料页面标题中,点击 **软件包**选项卡。
-
搜索并点击您要管理的软件包的名称。
-
在软件包的登录页面右侧,点击** 软件包设置**。
-
要选择软件包是否从关联仓库继承访问权限,请在“管理访问权限”或“继承的访问权限”下选择或取消选择**从仓库继承访问权限(推荐)**。
注意
此部分的名称会根据软件包是否已从仓库继承其权限而变化。
为属于某个组织的软件包选择继承设置
提示
如果您是组织的所有者,您可以阻止所有属于您的组织的新软件包自动从关联仓库继承权限。更多信息,请参见下面的在组织中禁用访问权限的自动继承。
-
在 GitHub 上,导航到您的组织的主页。
-
在您的组织名称下,点击 **软件包**选项卡。
-
搜索并点击您要管理的软件包的名称。
-
在软件包的登录页面右侧,点击** 软件包设置**。
-
要选择软件包是否从关联仓库继承访问权限,请在“管理访问权限”或“继承的访问权限”下选择或取消选择**从仓库继承访问权限(推荐)**。
注意
此部分的名称会根据软件包是否已从仓库继承其权限而变化。
在组织中禁用访问权限的自动继承
默认情况下,如果您发布与仓库关联的软件包,则该软件包将自动继承关联仓库的访问权限。作为组织所有者,您可以为属于您组织的所有软件包禁用自动继承。
如果您禁用访问权限的自动继承,则属于您组织的新软件包将不会自动继承关联仓库的权限。但是,任何对您组织中的软件包具有管理员权限的人员都可以为该软件包启用或禁用权限继承。
- 在 GitHub 的右上角,选择您的个人资料照片,然后点击 您的组织.
- 在组织旁边,点击**设置**。
- 在侧边栏的“代码、规划和自动化”部分,点击** 软件包**。
- 在“默认软件包设置”下,取消选择**从源仓库继承访问权限**。
- 点击**保存**。
确保工作流可以访问您的软件包
对于属于个人帐户或组织的软件包,要确保 GitHub Actions 工作流可以访问您的软件包,必须向存储工作流的仓库授予显式访问权限。
指定的仓库不必是保存软件包源代码的仓库。您可以为多个仓库授予对软件包的工作流访问权限。
如果您发布与仓库关联的软件包,则关联仓库中的 GitHub Actions 工作流将自动获得对该软件包的访问权限,除非您的组织禁用了访问权限的自动继承。更多信息,请参见上面的关于访问权限的继承。
注意
- 使用软件包设置中“管理 Actions 访问权限”下的**添加仓库**按钮将软件包与仓库同步与将软件包连接到仓库不同。有关将仓库链接到软件包的更多信息,请参见将仓库连接到软件包。
- 您可以选择使用
permissions
键和packages
作用域来限制对工作流作业的权限。更多信息,请参见控制 GITHUB_TOKEN 的权限。 - 如果您向公共仓库授予对私有软件包的访问权限,则该仓库的分支可能能够访问私有软件包。
属于个人帐户的软件包的 GitHub Actions 访问权限
-
搜索并点击您要管理的软件包的名称。
-
在软件包的登录页面右侧,点击** 软件包设置**。
-
要确保您的工作流可以访问您的软件包,必须添加存储工作流的仓库。在“管理 Actions 访问权限”下,点击**添加仓库**并搜索您要添加的仓库。
-
使用**角色**下拉菜单选择您希望仓库对您的软件包具有的默认访问级别。
要进一步自定义对软件包的访问权限,请参见配置个人帐户软件包的访问权限。
属于组织的软件包的 GitHub Actions 访问权限
-
在 GitHub 上,导航到您的组织的主页。
-
在您的组织名称下,点击 **软件包**选项卡。
-
搜索并点击您要管理的软件包的名称。
-
在软件包的登录页面右侧,点击** 软件包设置**。
-
在“管理 Actions 访问权限”下,点击**添加仓库**并搜索您要添加的仓库。
-
使用**角色**下拉菜单选择您希望仓库对您的软件包具有的默认访问级别。
要进一步自定义对软件包的访问权限,请参见配置组织软件包的访问权限。
确保 GitHub Codespaces 可以访问您的软件包
默认情况下,codespace 可以无缝访问支持细粒度权限的注册表中的某些软件包,例如在同一仓库中发布并选择了**继承访问权限**选项的软件包。有关支持细粒度权限和无缝 GitHub Codespaces 访问的 GitHub Packages 注册表的列表,请参见关于 GitHub Packages 的权限。
否则,要确保 codespace 可以访问您的软件包,必须向启动 codespace 的仓库授予访问权限。
指定的仓库不必是保存软件包源代码的仓库。您可以为多个仓库中的 codespace 授予对软件包的访问权限。
选择好要与仓库中的 codespace 共享的软件包后,您可以授予该仓库访问权限。
-
搜索并点击您要管理的软件包的名称。
-
在软件包的登录页面右侧,点击** 软件包设置**。
-
在“管理 Codespaces 访问权限”下,点击**添加仓库**。
-
搜索您要添加的仓库。
-
要允许访问的任何其他仓库,请重复此操作。
-
如果仓库的 codespaces 不再需要访问某个包,您可以移除访问权限。点击****。
配置个人帐户的包可见性
首次发布作用域为个人帐户的包时,默认可见性为私有,只有您自己可以看到该包。您可以通过更改访问设置来修改私有或公共包的访问权限。
-
搜索并点击您要管理的软件包的名称。
-
在软件包的登录页面右侧,点击** 软件包设置**。
-
在页面底部,“危险区域”下,点击**更改可见性**。
-
选择可见性设置
-
要使包对所有人可见,请选择**公开**。
警告
将包设为公开后,将无法再将其设为私有。
-
要使包对自定义选择的使用者可见,请选择**私有**。
-
-
确认后,输入包的名称,然后点击**我理解后果,更改包可见性**。
组织成员的包创建可见性
对于支持细粒度权限的注册表,您可以选择组织成员默认可以发布的包的可见性。有关这些注册表的列表,请参阅“GitHub Packages 的权限”。
- 在 GitHub 的右上角,选择您的个人资料照片,然后点击 您的组织.
- 在组织旁边,点击**设置**。
- 在左侧,点击**包**。
- 在“包创建”下,选择是否要启用创建公共、私有或内部包。
- 要启用组织成员创建公共包,请点击**公开**。
- 要启用组织成员创建仅对其他组织成员可见的私有包,请点击**私有**。您可以进一步自定义私有包的可见性。
- 要启用组织成员创建对所有组织成员可见的内部包,请点击**内部**。如果组织属于企业,则所有企业成员都可以看到这些包。
配置组织的包可见性
首次发布包时,默认可见性为私有,只有您自己可以看到该包。您可以通过访问设置授予用户或团队不同的包访问角色。将包设为公开后,将无法再将其设为私有。
-
在 GitHub 上,导航到您的组织的主页。
-
在您的组织名称下,点击 **软件包**选项卡。
-
搜索并点击您要管理的软件包的名称。
-
在软件包的登录页面右侧,点击** 软件包设置**。
-
在页面底部,“危险区域”下,点击**更改可见性**并选择可见性设置
-
要使包对所有人可见,请点击**公开**。
警告
将包设为公开后,将无法再将其设为私有。
-
要使包对组织中的自定义人员选择可见,请点击**私有**。
-