控制包访问#

默认情况下,所有上传到 Repository 的包、notebook 和环境都是公开的,这意味着任何有权访问 Repository 的人都可以访问它们。

当您将包设为私有后,只有您和您授权的用户才能访问它。

您可以通过两种方式授权用户访问您的私有包

  • 使用组织帐户内的群组—只有登录的群组成员才能访问该包。这是控制对您的私有包访问权限的最佳方式,因为它允许您为每个包、notebook 或环境设置单独的权限。

  • 使用令牌控制系统—只有拥有适当令牌的用户才能访问私有包或频道。

在您授予其他用户访问权限后,他们可以使用 Web UI 或 Client 下载并安装您的包。

将包设为私有#

  1. 在 Web UI 中,在工具菜单中,选择包。

  2. 可选:如果您要查找的包不可见,请在“过滤器”下的“类型”列表中,选择“全部”。

  3. 选中您要设为私有的每个包旁边的复选框。

  4. 单击设置选项卡,然后单击侧边栏中的管理选项卡。

    注意:您也可以通过以下 URL 访问此页面

    https://<your-anaconda-repo>/USERNAME/PACKAGE/settings/admin
    

    <your-anaconda-repo> 替换为您的本地 Repository 的名称,将 USERNAME 替换为您的用户名,将 PACKAGE 替换为包的名称。

  5. 单击“设置访问权限”,然后选择“私有”。

注意:您可以使用相同的步骤和 URL 将 Jupyter Notebook 和 conda 环境设为私有。

使用群组允许访问私有包#

  1. 创建一个组织.

  2. 上传转移包到组织。

  3. 在组织内,创建一个群组,其中包含适当的用户、权限和包。

创建令牌以允许访问私有包或频道#

您可以使用令牌系统控制对私有包和频道的访问。所有 Repository URL 都可以添加 /t/<token> 前缀以允许访问。

令牌授予的访问权限程度在您生成令牌时是完全可配置的。您可以生成多个令牌来控制哪些用户组在拥有适当令牌的情况下可以访问某些功能。

令牌提供对指定频道中所有包的访问权限。对于每个包、notebook 或环境的单独权限,使用组织和群组可能更好。

您可以使用 Web UI 或 Anaconda Client 生成令牌。

注意:默认情况下,令牌在一年后过期。

在 Web UI 中生成令牌#

  1. 导航到

    https://<your-anaconda-repo>/<channel>/settings/access
    

    注意:将 <your-anaconda-repo> 替换为您的本地 Repository 的名称,将 <channel> 替换为所需的频道名称。

  2. 在“令牌名称”框中,键入令牌的名称

  3. 为您要允许此令牌用户访问的类型选择相应的复选框。

    示例:要允许用户从私有频道或私有包下载包,请选择“允许从 Conda 仓库进行私有下载”。

  4. 单击“创建”按钮。

使用 Client 生成令牌#

  1. 在 Client 终端窗口或 Anaconda Prompt 中,运行

    anaconda auth --create --name YOUR-TOKEN-NAME --scopes 'repos conda:download'
    

    注意:将 YOUR-TOKEN-NAME 替换为新令牌的名称。

    以空格分隔的带引号列表形式提供作用域。上述命令生成的令牌提供下载您的任何私有 conda 仓库的权限。可用的作用域是

    • all:允许所有操作。

    • api:允许所有 API 操作。

    • api:modify-group:允许添加和修改群组。

    • api:read:允许对 API 站点进行读取访问。

    • api:write:允许对 API 站点进行写入访问。

    • conda:允许对 conda 仓库进行所有操作。

    • conda:download:允许从 conda 仓库进行私有下载。

    • pypi:允许对 PyPI 仓库进行所有操作。

    • pypi:download:允许从 PyPI 仓库进行私有下载。

    • pypi:upload:允许上传到 PyPI 仓库。

    • repos:允许访问所有包仓库。

  2. 您可以使用 conda config 命令启用令牌

    conda config --add channels https://conda.anaconda.org/t/<token>/<channel>
    

    或者添加带有令牌和标签的频道

    conda config --add channels https://conda.anaconda.org/t/<token>/<channel>/label/<labelname>
    

    注意:将 <token> 替换为您的令牌字符串,``<channel>`` 替换为所需的频道名称,将 <labelname> 替换为标签名称。

    注意:如果您丢失了令牌的随机字母数字字符串,您必须撤销令牌并创建一个新令牌。

使用令牌#

令牌可用于

  • 添加从中安装私有包的频道

    conda config --add channels https://conda.<your-anaconda-repo>/t/<token>/<channel>
    

    注意:将 <your-anaconda-repo> 替换为您的本地 Repository 的名称,将 <token> 替换为提供的令牌,将 <channel> 替换为用户频道。

  • 安装私有包,无需先添加频道

    conda install -c https://conda.<your-anaconda-repo>/t/<token>/<channel> <package>
    

    要使用令牌和标签名称从频道安装包

    conda install -c https://conda.<your-anaconda-repo>/t/<token>/<channel>/label/<labelname> <package>
    

    注意:将 <your-anaconda-repo> 替换为您的本地 Repository 的名称,将 <token> 替换为提供的令牌,将 <channel> 替换为用户频道,将 <labelname> 替换为标签名称,将 <package> 替换为要安装的包的名称。

  • 安装私有 PyPI 包

    pip install --index-url https://pypi.<your-anaconda-repo>/t/<token>/<channel>/PACKAGE
    

    注意:将 <your-anaconda-repo> 替换为您的本地 Repository 的名称,将 <token> 替换为提供的令牌,将 <channel> 替换为用户频道,将 PACKAGE 替换为所需包的名称。

    注意:私有 PyPI 包也可以使用以下方式安装

    https://pypi.<your-anaconda-repo>/t/<token>/<channel>
    

撤销令牌#

您可以使用 Web UI 或 Client 撤销令牌。

要使用 Web UI 撤销令牌,请从最右侧的下拉菜单中选择“我的设置”,然后从左侧导航栏中选择“访问权限”。

在页面底部,您将看到您生成的所有令牌的列表。单击您要撤销的令牌的名称,然后在出现的对话框中,单击“撤销令牌”按钮。

或者要使用 Client 撤销令牌,请运行

anaconda auth -r YOUR-TOKEN-NAME

注意:将 YOUR-TOKEN-NAME 替换为您要撤销的令牌的名称。