Skip to main content

配置包的访问控制和可见性

选择谁对包具有读取、写入或管理员访问权限,以及包在 GitHub 上的可见性。

谁可以使用此功能?

GitHub Packages 适用于 GitHub Free、GitHub Pro、面向组织的 GitHub Free、GitHub Team、GitHub Enterprise Cloud、GitHub Enterprise Server 3.0 或更高版本。
GitHub Packages 不适用于使用旧版按仓库计划的帐户所拥有的私有仓库。 此外,使用旧版按存储库计划的帐户无法访问支持精细权限的注册表,因为这些帐户按存储库计费。 Enterprise Managed Users 没有单独的存储分配来在其帐户的命名空间内发布包,但可以发布到组织的命名空间。 有关 Enterprise Managed Users 的其他信息,请参阅“关于 Enterprise Managed Users”。有关支持精细权限的注册表列表,请参阅“关于 GitHub Packages 的权限”。 有关详细信息,请参阅“GitHub 的计划”。

包可以从存储库继承其可见性和访问权限,或者,对于支持精细权限的注册表,可以独立于存储库设置包的可见性和权限。

有关支持精细权限的注册表列表,以及有关包权限、PAT 的包相关范围或管理 GitHub Actions 工作流的权限的详细信息,请参阅“关于 GitHub Packages 的权限”。

关于访问权限的继承

在支持精细权限的注册表中,包的范围限定为个人帐户或组织。 在这些注册表中,可以在不将包链接到存储库的情况下发布包,然后通过在包的设置中设置访问权限和可见性来确定谁可以访问包。

默认情况下,如果发布链接到存储库的包,该包会自动继承链接存储库的访问权限(但不继承可见性)。 例如,对链接存储库具有读取访问权限的用户也将具有对包的读取访问权限。 当包自动继承访问权限时,链接存储库中的 GitHub Actions 工作流也会自动获取对包的访问权限。

如果在发布包之前将存储库链接到包(例如,通过将 org.opencontainers.image.source Docker 标签添加到容器映像),则包仅自动继承链接存储库的访问权限。 如果从包的设置页中将已发布的包连接到存储库,该包会保留其现有访问权限,并且不会继承存储库的访问权限,除非显式选择此选项。 此外,组织可以禁用其组织范围内所有新包的访问权限的自动继承。 有关详细信息,请参阅下面的“在组织中禁用访问权限的自动继承”。

当包从存储库继承权限时,要授予或移除对包的访问权限,必须配置链接存储库的权限设置。 如果要独立于链接到包的存储库设置包的访问权限设置,则必须从包中移除继承的权限。 有关详细信息,请参阅下面的“选择包是否从存储库继承权限”。

如果在仅支持存储库范围权限的注册表中发布包,则该包始终链接到存储库,并始终继承链接存储库的权限。

关于设置包的可见性和访问权限

如果包属于支持粒度权限的注册表,对包具有管理员权限的任何人都可以将包设置为专用或公共,并且可以授予对包的访问权限,这些权限不同于在组织和存储库级别设置的权限。 有关支持精细权限的注册表的列表,请参阅“关于 GitHub Packages 的权限”。

在大多数注册表中,若要拉取包,必须使用 personal access token 或 GITHUB_TOKEN 进行身份验证,无论该包是公共包还是专用包。 但是,在 Container registry 中,公共包支持匿名访问,无需身份验证或通过 CLI 登录即可进行拉取。

Note

如果发布链接到存储库的包,则默认情况下,该包会从链接的存储库继承其权限。 要访问包的精细权限设置,必须移除该包的继承权限。 如果你是组织的所有者,则可以禁用针对组织范围的所有新包的权限的自动继承。 有关详细信息,请参阅“配置包的访问控制和可见性”和“配置包的访问控制和可见性”。

你发布包时,会自动获取对包的管理员权限。 如果将包发布到组织,则组织中具有 owner 角色的任何人也会获得包的管理员权限。

对于范围限定为个人帐户的包,可以授予任何人访问角色。 对于范围限定为组织的包,可以为组织中的任何人或团队授予访问角色。

如果使用 GitHub Actions 工作流来管理包,可以通过 :使用包的设置中“管理 Actions 访问”下的“添加存储库”**** 按钮 向存储工作流的存储库授予访问角色。 有关详细信息,请参阅“配置包的访问控制和可见性”。

权限访问说明
读取可以下载包。
可以读取包元数据。
写入可以上传和下载此包。
可以读取和写入包元数据。
管理员可以上传、下载、删除和管理此包。
可以读取和写入包元数据。
可以授予包权限。

Note

GitHub Actions 工作流使用 REST API 删除和还原包的功能目前为 公共预览版,可能随时更改。

为个人帐户配置对包的访问

如果你对范围限定为个人帐户的包具有管理员权限,你可以向其他用户分配读取、写入或管理员角色。 有关这些权限角色的详细信息,请参阅“关于访问权限的继承”。

如果你的包是私人或内部的且范围限定为组织,则你只能向其他组织成员或团队授予访问。

  1. 搜索要管理的包的名称,然后单击该名称。

  2. 在包的登陆页面上,单击右侧的“ 包设置”。

    包的登陆页面的屏幕截图。 右下角是以橙色边框突出显示的“包设置”。

  3. 在“管理访问权限”或“继承的访问权限”下,单击“邀请团队或人员”,然后输入名称、用户名或你想要授予访问权限的人员的电子邮件。 不能向团队授予对范围限定为个人帐户的包的访问权限。

  4. 在用户名或团队名称旁边,使用“角色”下拉菜单选择所需的权限级别。

所选用户将自动被授予访问权限,不需要先接受邀请。

为组织配置对包的访问权限

如果你对范围限定为组织的包具有管理员权限,可以向其他用户和团队分配读取、写入或管理员角色。 有关这些权限角色的详细信息,请参阅“关于访问权限的继承”。

如果你的包是私人或内部的且范围限定为组织,则你只能向其他组织成员或团队授予访问。

  1. 在 GitHub 上,导航到组织的主页面。

  2. 在组织名称下,单击 “包”选项卡。

    @octo-org 的个人资料页面的屏幕截图。 “包”选项卡以橙色边框突出显示。

  3. 搜索要管理的包的名称,然后单击该名称。

  4. 在包的登陆页面上,单击右侧的“ 包设置”。

    包的登陆页面的屏幕截图。 右下角是以橙色边框突出显示的“包设置”。

  5. 在“管理访问权限”或“继承的访问权限”下,单击“邀请团队或人员”,然后输入名称、用户名或你想要授予访问权限的人员的电子邮件。 你还可以输入组织中的团队名称,以允许所有团队成员访问。

  6. 在用户名或团队名称旁边,使用“角色”下拉菜单选择所需的权限级别。

所选用户或团队将自动被授予访问权限,不需要先接受邀请。

选择包是否从存储库继承权限

默认情况下,如果你发布链接到存储库的包,该包会继承链接存储库的访问权限。 建议让包从存储库继承其权限,因为这简化了管理对包的访问的过程。

当包从存储库继承权限时,要授予或移除对包的访问权限,必须配置链接存储库的权限。

如果要独立于链接存储库在非常精细的级别配置包的访问设置,则必须从包中移除继承的权限。

Note

如果更改包获取其访问权限的方式,则会覆盖包的任何现有权限。

为范围限定为个人帐户的包选择继承设置

  1. 在 GitHub 上,导航到个人帐户的主页面。

  2. 在 GitHub 的右上角,单击个人资料照片,然后单击“你的个人资料”。

    @octocat 的个人资料图片下的下拉菜单的屏幕截图。 “你的个人资料”用深橙色框出。

  3. 在个人资料页面上的标题中,单击 “包”选项卡。

  4. 搜索要管理的包的名称,然后单击该名称。

  5. 在包的登陆页面上,单击右侧的“ 包设置”。

    包的登陆页面的屏幕截图。 右下角是以橙色边框突出显示的“包设置”。

  6. 若要选择包是否从链接的存储库继承访问权限,请在“管理访问权限”或“继承的访问权限”下,选择或取消选择“从存储库继承访问权限(建议)”。

    Note

    此部分的名称会根据包是否已从存储库继承其权限而更改。

为范围限定为组织的包选择继承设置

Tip

如果你是组织的所有者,则可以阻止所有范围限定为组织的新包自动继承链接存储库的权限。 有关详细信息,请参阅下面的“在组织中禁用访问权限的自动继承”。

  1. 在 GitHub 上,导航到组织的主页面。

  2. 在组织名称下,单击 “包”选项卡。

    @octo-org 的个人资料页面的屏幕截图。 “包”选项卡以橙色边框突出显示。

  3. 搜索要管理的包的名称,然后单击该名称。

  4. 在包的登陆页面上,单击右侧的“ 包设置”。

    包的登陆页面的屏幕截图。 右下角是以橙色边框突出显示的“包设置”。

  5. 若要选择包是否从链接的存储库继承访问权限,请在“管理访问权限”或“继承的访问权限”下,选择或取消选择“从存储库继承访问权限(建议)”。

    Note

    此部分的名称会根据包是否已从存储库继承其权限而更改。

在组织中禁用访问权限的自动继承

默认情况下,如果发布链接到存储库的包,该包会自动继承链接存储库的访问权限。 作为组织所有者,你可以禁用所有范围限定为组织的包的自动继承。

如果禁用访问权限的自动继承,则范围限定为组织的新包不会自动继承链接存储库的权限。 但是,对组织中的某个包具有管理员权限的任何人都可以启用或禁用该包的权限继承。

  1. 在 GitHub 的右上角,选择个人资料照片,然后单击 你的组织”。
  2. 在组织旁边,单击“设置”。
  3. 在边栏的“代码、规划和自动化”部分中,单击 “包”。
  4. 在“默认包设置”下,取消选择“从源存储库继承访问权限”。
  5. 单击“ 保存”。

确保工作流程访问您的包

对于范围限定为个人帐户或组织的包,为确保 GitHub Actions 工作流程能访问你的包,你必须授予存储工作流程的存储库以明确的访问权限。

指定的仓库不需要是保存包源代码的仓库。 您可以授予多个仓库工作流程对包的访问权限。

如果发布链接到存储库的包,则链接存储库中的 GitHub Actions 工作流会自动获取对包的访问权限,除非组织已禁用访问权限的自动继承。 有关详细信息,请参阅上面的“关于访问权限的继承”。

Note

  • 将包与存储库 :使用包的设置中“管理 Actions 访问”下的“添加存储库”**** 按钮 同步不同于将包连接到存储库。 有关将存储库链接到包的详细信息,请参阅“将仓库连接到包”。
  • 可以选择使用 permissions 密钥和 packages 范围来限制工作流作业的权限。 有关详细信息,请参阅“控制 GITHUB_TOKEN 的权限”。
  • 如果授予公共存储库对专用包的访问权限,存储库的分支可能能够访问专用包。

针对范围限定为个人帐户的包的 GitHub Actions 访问权限

  1. 搜索要管理的包的名称,然后单击该名称。

  2. 在包的登陆页面上,单击右侧的“ 包设置”。

    包的登陆页面的屏幕截图。 右下角是以橙色边框突出显示的“包设置”。

  3. 为确保工作流程有权访问包,必须添加存储工作流程的存储库。 在“管理 Actions 访问权限”下,击“添加存储库”并搜索要添加的存储库。

    包设置页的“管理 Actions 访问权限”部分的屏幕截图。 “添加存储库”按钮以橙色边框突出显示。

  4. 使用 使用“角色”下拉菜单,选择你希望存储库访问你的包所拥有的默认访问级别。

若要进一步自定义对包的访问,请参阅“配置对个人帐户的包的访问”。

针对范围限定为组织的包的 GitHub Actions 访问权限

  1. 在 GitHub 上,导航到组织的主页面。

  2. 在组织名称下,单击 “包”选项卡。

    @octo-org 的个人资料页面的屏幕截图。 “包”选项卡以橙色边框突出显示。

  3. 搜索要管理的包的名称,然后单击该名称。

  4. 在包的登陆页面上,单击右侧的“ 包设置”。

    包的登陆页面的屏幕截图。 右下角是以橙色边框突出显示的“包设置”。

  5. 在“管理 Actions 访问权限”下,击“添加存储库”并搜索要添加的存储库。

    包设置页的“管理 Actions 访问权限”部分的屏幕截图。 “添加存储库”按钮以橙色边框突出显示。

  6. 使用 使用“角色”下拉菜单,选择你希望存储库访问你的包所拥有的默认访问级别。

若要进一步自定义对包的访问,请参阅“配置对组织的包的访问”。

确保 GitHub Codespaces 具有包的访问权限

默认情况下,codespace 可以无缝访问支持精细权限的注册表中的某些包,例如在选择了“继承访问”选项的同一存储库中发布的包。 有关支持精细权限和无缝 GitHub Codespaces 访问的 GitHub Packages 注册表的列表,请参阅“关于 GitHub Packages 的权限”。

否则,为了确保代码空间能够访问您的软件包,必须授予对启动代码空间的仓库的访问权限。

指定的仓库不需要是保存包源代码的仓库。 您可以授予多个仓库中的代码空间对包的访问权限。

选择您想与仓库中的代码空间共享的包后,可以授予该仓库访问权限。

  1. 搜索要管理的包的名称,然后单击该名称。

  2. 在包的登陆页面上,单击右侧的“ 包设置”。

    包的登陆页面的屏幕截图。 右下角是以橙色边框突出显示的“包设置”。

  3. 在“管理 Codespaces 访问”下,单击“添加存储库”。

    包设置页的“管理 Codespaces 访问权限”部分的屏幕截图。 “添加存储库”按钮以橙色轮廓突出显示。

  4. 搜索要添加的仓库。

  5. 对要允许访问的任何其他仓库重复此步骤。

  6. 如果存储库的代码空间不再需要访问包,则可以删除访问权限。 单击

    包设置页的“管理 Codespaces 访问权限”部分的屏幕截图。 回收站图标以橙色轮廓突出显示。

为个人帐户配置包的可见性

首次发布范围限定为个人帐户的包时,默认可见性是私有的,只有你才能看到包。 可以通过更改访问设置来修改私有或公共包的访问权限。

  1. 搜索要管理的包的名称,然后单击该名称。

  2. 在包的登陆页面上,单击右侧的“ 包设置”。

    包的登陆页面的屏幕截图。 右下角是以橙色边框突出显示的“包设置”。

  3. 在页面底部的“危险区域”下,单击“更改可见性”。

  4. 选择可见性设置:

    • 要使包对任何人都可见,请选择“公共”。

      Warning

      包一旦被设为公共,便无法再次将其设为私有。

    • 要使包只对选择的人员可见,请选择“专用”。

  5. 要进行确认,请输入包名称,然后单击“我明白后果,更改包可见性”。

组织成员的包创建可见性

对于支持精细权限的注册表,可以选择组织成员默认可以发布的包的可见性。 有关这些注册表的列表,请参阅“关于 GitHub Packages 的权限”。

  1. 在 GitHub 的右上角,选择个人资料照片,然后单击 你的组织”。
  2. 在组织旁边,单击“设置”。
  3. 在左侧,单击“包”。
  4. 在“包创建”下,选择是要启用公共、专用,还是内部包的创建。
    • 若要让组织成员创建公共包,请单击“公共”。
    • 若要让组织成员创建只对其他组织成员可见的专用包,请单击“专用”。 可以进一步自定义专用包的可见性。
    • 若要让组织成员创建对所有组织成员可见的内部包,请单击“内部”。 如果组织属于企业,则包将对所有企业成员可见。

为组织配置包的可见性

首次发布包时,默认可见性是私有的,只有您才能看到包。 可以通过访问设置授予用户或团队对包的不同访问角色。 包一旦被设为公共,便无法再次将其设为私有。

  1. 在 GitHub 上,导航到组织的主页面。

  2. 在组织名称下,单击 “包”选项卡。

    @octo-org 的个人资料页面的屏幕截图。 “包”选项卡以橙色边框突出显示。

  3. 搜索要管理的包的名称,然后单击该名称。

  4. 在包的登陆页面上,单击右侧的“ 包设置”。

    包的登陆页面的屏幕截图。 右下角是以橙色边框突出显示的“包设置”。

  5. 在页面底部的“危险区域”下,单击“更改可见性”并选择可见性设置:

    • 要使包对任何人都可见,请单击“公共”。

      Warning

      包一旦被设为公共,便无法再次将其设为私有。

    • 要使包只对组织中选择的人员可见,请单击“专用”。

    • 要使包对所有组织成员可见,请单击“内部”。 如果组织属于企业,则包将对所有企业成员可见。