跳至主要内容

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

选择谁可以对您的包进行读、写或管理员访问,以及您在 GitHub 上的包的可见性。

谁可以使用此功能?

GitHub Packages 可用于 GitHub Free、GitHub Pro、GitHub Free for organizations、GitHub Team、GitHub Enterprise Cloud 和 GitHub Enterprise Server 3.0 或更高版本。


GitHub Packages 不适用于使用传统按仓库计费计划的帐户拥有的私有仓库。此外,使用传统按仓库计费计划的帐户无法访问支持细粒度权限的注册表,因为这些帐户按仓库计费。有关支持细粒度权限的注册表列表,请参阅“关于 GitHub Packages 的权限”。有关更多信息,请参阅“GitHub 的计划”。

包可以从仓库继承其可见性和访问权限,或者,对于支持细粒度权限的注册表,您可以单独设置包的可见性和权限,与仓库分开。

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

关于访问权限的继承

在支持细粒度权限的注册表中,包被限定到个人帐户或组织。在这些注册表中,您可以发布包而不将其链接到仓库,然后通过在包的设置中设置访问权限和可见性来确定谁可以访问该包。

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

只有在您在发布包之前将仓库链接到包时,例如通过向容器镜像添加 org.opencontainers.image.source Docker 标签,包才会自动继承链接仓库的访问权限。如果您从包的设置页面将已发布的包连接到仓库,该包将保留其现有的访问权限,并且不会继承仓库的访问权限,除非您明确选择此选项。此外,组织可以禁用对其组织范围内的所有新包的访问权限自动继承。有关更多信息,请参阅下面“在组织中禁用访问权限的自动继承”。

当包从仓库继承权限时,要授予或撤销对包的访问权限,您必须配置链接仓库的权限设置。如果您想单独设置包的访问设置,与链接到包的仓库分开,您必须从包中删除继承的权限。有关更多信息,请参阅下面“选择包是否从仓库继承权限”。

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

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

如果包属于支持细粒度权限的注册表,任何具有包管理员权限的人都可以将包设置为私有或公开,并且可以授予包的访问权限,这些权限与组织和仓库级别设置的权限分开。有关支持细粒度权限的注册表列表,请参阅“关于 GitHub 包的权限”。

在大多数注册表中,要拉取包,您必须使用个人访问令牌或GITHUB_TOKEN进行身份验证,无论包是公开的还是私有的。但是,在容器注册表中,公共包允许匿名访问,并且可以在没有身份验证或通过 CLI 登录的情况下拉取。

注意:如果您发布与存储库关联的包,则该包默认情况下会从关联的存储库继承其权限。要访问包的细粒度权限设置,您必须删除包的继承权限。如果您是组织的所有者,则可以为组织范围内的所有新包禁用权限的自动继承。有关更多信息,请参阅“配置包的访问控制和可见性”和“配置包的访问控制和可见性”。

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

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

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

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

注意:GitHub Actions 工作流使用 REST API 删除和恢复软件包的功能目前处于公开测试阶段,可能会发生变化。

配置对个人帐户软件包的访问权限

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

如果您的软件包是私有的或内部的,并且范围限定为组织,那么您只能向其他组织成员或团队授予访问权限。

  1. 搜索并单击要管理的软件包的名称。

  2. 在您的软件包的登录页面上,右侧点击 ** 软件包设置**。

    Screenshot of a package's landing page. In the lower right corner, "Package settings" is highlighted with an orange outline.

  3. 在“管理访问权限”或“继承访问权限”下,点击 **邀请团队或人员** 并输入您要授予访问权限的人员的姓名、用户名或电子邮件。团队无法获得对个人帐户范围内的软件包的访问权限。

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

选定的用户将自动获得访问权限,无需先接受邀请。

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

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

如果您的软件包是私有的或内部的,并且范围限定为组织,那么您只能向其他组织成员或团队授予访问权限。

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

  2. 在您的组织名称下,单击 Packages 选项卡。

    Screenshot of @octo-org's profile page. The "Packages" tab is highlighted with an orange outline.

  3. 搜索并单击要管理的软件包的名称。

  4. 在您的软件包的登录页面上,右侧点击 ** 软件包设置**。

    Screenshot of a package's landing page. In the lower right corner, "Package settings" is highlighted with an orange outline.

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

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

选定的用户或团队将自动获得访问权限,无需先接受邀请。

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

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

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

如果您想在与链接存储库分离的粒度级别上配置包的访问设置,则必须从包中删除继承的权限。

注意:如果您更改包获取其访问权限的方式,则包的任何现有权限都将被覆盖。

选择针对个人帐户范围内的包的继承设置

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

  2. 在 GitHub 的右上角,单击您的个人资料照片,然后单击 您的个人资料

    Screenshot of the dropdown menu under @octocat's profile picture. "Your profile" is outlined in dark orange.

  3. 在您的个人资料页面上的页眉中,单击 Packages 选项卡。

  4. 搜索并单击要管理的软件包的名称。

  5. 在您的软件包的登录页面上,右侧点击 ** 软件包设置**。

    Screenshot of a package's landing page. In the lower right corner, "Package settings" is highlighted with an orange outline.

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

    注意:此部分的名称会根据包是否已从存储库继承其权限而有所不同。

选择作用域为组织的包的继承设置

提示:如果您是组织的所有者,您可以阻止作用域为您的组织的所有新包自动从链接的存储库继承权限。有关更多信息,请参阅下面的“禁用组织中访问权限的自动继承”。

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

  2. 在您的组织名称下,单击 Packages 选项卡。

    Screenshot of @octo-org's profile page. The "Packages" tab is highlighted with an orange outline.

  3. 搜索并单击要管理的软件包的名称。

  4. 在您的软件包的登录页面上,右侧点击 ** 软件包设置**。

    Screenshot of a package's landing page. In the lower right corner, "Package settings" is highlighted with an orange outline.

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

    注意:此部分的名称会根据包是否已从存储库继承其权限而有所不同。

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

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

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

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

确保工作流可以访问您的包

对于作用域为个人帐户或组织的包,要确保 GitHub Actions 工作流可以访问您的包,您必须明确授予存储工作流的存储库访问权限。

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

如果您发布的包与某个仓库关联,则关联仓库中的 GitHub Actions 工作流将自动获得对该包的访问权限,除非您的组织已禁用自动继承访问权限。有关更多信息,请参阅上面的“关于继承访问权限”。

注意

  • 使用包设置中“管理 Actions 访问权限”下的“添加仓库”按钮将您的包与仓库同步与将您的包连接到仓库不同。有关将仓库链接到您的包的更多信息,请参阅“将仓库连接到包”。
  • 您可以选择使用 permissions 键和 packages 范围来限制对工作流作业的权限。有关更多信息,请参阅“为作业分配权限”。
  • 如果您授予公共仓库对私有包的访问权限,则该仓库的分支可能能够访问私有包。

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

  1. 搜索并单击要管理的软件包的名称。

  2. 在您的软件包的登录页面上,右侧点击 ** 软件包设置**。

    Screenshot of a package's landing page. In the lower right corner, "Package settings" is highlighted with an orange outline.

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

    Screenshot of the "Manage Actions access" section of the package settings page. The "Add repository" button is highlighted with an orange outline.

  4. 使用“角色”下拉菜单选择您希望仓库对您的包具有的默认访问级别。

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

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

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

  2. 在您的组织名称下,单击 Packages 选项卡。

    Screenshot of @octo-org's profile page. The "Packages" tab is highlighted with an orange outline.

  3. 搜索并单击要管理的软件包的名称。

  4. 在您的软件包的登录页面上,右侧点击 ** 软件包设置**。

    Screenshot of a package's landing page. In the lower right corner, "Package settings" is highlighted with an orange outline.

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

    Screenshot of the "Manage Actions access" section of the package settings page. The "Add repository" button is highlighted with an orange outline.

  6. 使用“角色”下拉菜单选择您希望仓库对您的包具有的默认访问级别。

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

确保 GitHub Codespaces 能够访问您的包

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

否则,要确保 codespace 能够访问您的包,您必须授予对启动 codespace 的仓库的访问权限。

指定的仓库不必是存放包源代码的仓库。您可以让多个仓库中的代码空间访问一个包。

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

  1. 搜索并单击要管理的软件包的名称。

  2. 在您的软件包的登录页面上,右侧点击 ** 软件包设置**。

    Screenshot of a package's landing page. In the lower right corner, "Package settings" is highlighted with an orange outline.

  3. 在“管理代码空间访问权限”下,单击**添加仓库**。

    Screenshot of the "Manage Codespaces access" section of the package settings page. The "Add repository" button is highlighted with an orange outline.

  4. 搜索您要添加的仓库。

  5. 对您想要允许访问的任何其他仓库重复此操作。

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

    Screenshot of the "Manage Codespaces access" section of the package settings page. The trash icon is highlighted with an orange outline.

配置个人帐户的包可见性

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

  1. 搜索并单击要管理的软件包的名称。

  2. 在您的软件包的登录页面上,右侧点击 ** 软件包设置**。

    Screenshot of a package's landing page. In the lower right corner, "Package settings" is highlighted with an orange outline.

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

  4. 选择可见性设置

    • 要使包对所有人可见,请选择**公共**。

      **警告:**将包设为公共后,您将无法再将其设为私有。

    • 要使包对自定义选择的人员可见,请选择**私有**。

  5. 要确认,请键入包的名称,然后单击**我了解后果,更改包可见性**。

组织成员的包创建可见性

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

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

配置组织的包可见性

首次发布软件包时,默认可见性为私有,只有您自己可以看到该软件包。您可以通过访问设置授予用户或团队对软件包的不同访问角色。将软件包设为公开后,您将无法再将其设为私有。

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

  2. 在您的组织名称下,单击 Packages 选项卡。

    Screenshot of @octo-org's profile page. The "Packages" tab is highlighted with an orange outline.

  3. 搜索并单击要管理的软件包的名称。

  4. 在您的软件包的登录页面上,右侧点击 ** 软件包设置**。

    Screenshot of a package's landing page. In the lower right corner, "Package settings" is highlighted with an orange outline.

  5. 在页面底部,在“危险区域”下,点击更改可见性并选择一个可见性设置。

    • 要使软件包对所有人可见,请点击公开

      **警告:**将包设为公共后,您将无法再将其设为私有。

    • 要使软件包对您组织中的自定义人员选择可见,请点击私有