使用 Anaconda Cloud API 管理您的组织#

通过 Anaconda Cloud 图形用户界面 (GUI) 手动加入各个团队成员可能非常耗时。对于大型团队,Anaconda 建议使用 API 调用来简化流程。

Anaconda Cloud API 提供了各种调用,使您能够将用户添加到 Anaconda Cloud 组织并更改其席位和Token权限。您必须是具有有效付费订阅的 Anaconda Cloud 组织的管理员才能使用这些 API 调用。

与 API 交互#

Anaconda 维护一个 Jupyter 笔记本,其中包含用于与 API 交互的 Python 函数,以及使用笔记本本身的一些说明:jupyter-notebook-徽章

对 API 进行身份验证#

Anaconda Cloud API 使用 OAuth2 标准身份验证(使用组织管理员的 anaconda.cloud 用户名和密码)生成User_Token.一个User_Token需要创建服务帐户。

创建服务账户后,使用其凭证(返回的client_idclient_secret) 进行身份验证,以便生成ServiceAccount_Token通过下面描述的其他 API 调用管理用户。

创建服务帐户#

创建服务账户允许管理员用户为特定计算机或计算机(如构建服务器或其他用于管道自动化的计算机)指定凭证,并以与用户类似的能力管理这些计算机。然后,服务账户可以允许直接对计算机用户所属的组织进行其他 API 调用。

您可以根据需要为每个组织创建任意数量的服务账户。但是,Anaconda 建议将服务帐户的数量限制在绝对必要的范围内。限制服务账户的数量可以增强您的组织安全状况。

注意

服务账户名称必须使用小写字母、数字、连字符或下划线创建,并且不能包含空格或特殊字符。

API 调用#

# Replace <ORG_ID> with your organization ID, found in your Anaconda Cloud organization's URL: anaconda.cloud/organizations/<ORG_ID>/
POST /organizations/<ORG_ID>/service-accounts
{
   "name":"<SERVICE_ACCOUNT_NAME>"
}
{
   "name":"anaconda_cloud_org"
}
{
   "name": "<SERVICE_ACCOUNT_NAME>",
   "client_id": "<GUID>",
   "org_id": "<GUID>",
   "client_secret": "<SECRET_ID>"
}
{
   "name": "anaconda_cloud_org",
   "client_id": "1234abcd-1a2b-3c4d-5e6f-123456abcdef",
   "org_id": "abcd1234-1234-abcd-1a2b-3c4d5e6f7g8h",
   "client_secret": "1234567890abcdefghij_abcdefghij1234567_1a2b"
}

获取服务账户 ID#

此调用返回以前创建的服务账户的 ID,但不会泄露其密钥。

API 调用#

# Replace <ORG_ID> with your organization ID, found in your Anaconda Cloud organization's URL: anaconda.cloud/organizations/<ORG_ID>/
GET organizations/<ORG_ID>/service-accounts
{
   "name": "<SERVICE_ACCOUNT_NAME>",
   "client_id": "<GUID>",
   "org_id": "<GUID>",
}
{
   "name": "anaconda_cloud_org",
   "client_id": "1234abcd-1a2b-3c4d-5e6f-123456abcdef",
   "org_id": "abcd1234-1234-abcd-1a2b-3c4d5e6f7g8h",
}

删除服务帐户#

此调用将删除与提供的client_id.

API 调用#

# Replace <ORG_ID> with your organization ID, found in your Anaconda Cloud organization's URL: anaconda.cloud/organizations/<ORG_ID>/
# Replace <CLIENT_ID> with your client_id value
DELETE organizations/<ORG_ID>/service-accounts/<CLIENT_ID>

此调用没有请求或响应信息。如果请求成功,您将收到 204 状态代码。

新用户自动入职#

如果您要向组织添加尚未拥有 anaconda.cloud 账户的用户,则可以使用此调用启动自动载入流程,该过程会将他们添加到您的组织,为他们分配成员席位,并向他们颁发访问存储库的Token。

管理员将收到一封电子邮件,告知用户已添加到组织。用户将收到两封电子邮件,一封欢迎他们加入组织,另一封包含他们的私有访问Token,该Token允许他们使用 anaconda.cloud 中的包。

{
   "user_emails":"[<[email protected]>, <[email protected]>]"
}
{
   "user_emails":"[[email protected], [email protected]]"
}
{
   "users_in_onboarding_process": [
      "[email protected]" "[email protected]"
   ],
   "users_unavailable_for_onboarding": [],
   "total_organization_seats": "<TOTAL_SEATS>",
   "available_organization_seats": "<REMAINING_SEATS>"
}
{
   "users_in_onboarding_process": [
      "[email protected]" "[email protected]"
   ],
   "users_unavailable_for_onboarding": [],
   "total_organization_seats": "1000",
   "available_organization_seats": "921"
}

谨慎

  • 如果用户的 anaconda.cloud 账户与其电子邮件地址相关联,则自动载入将失败。

  • 如果users_in_onboarding_process已启动载入流程,则载入过程中出现的任何问题都不会反映在此处。如果用户未添加到您的组织,您将知道存在问题。

  • 如果可用席位的数量少于您尝试添加到组织的成员数量,则将添加用户,直到席位不再可用,其余用户将显示在users_unavailable_for_onboarding列表。

将用户添加到您的组织#

此调用将用户添加到组织。

如果您在进行此调用时未提供电子邮件地址,则系统会改为创建组织管理的用户。组织管理的用户不链接到个人账户,旨在用于编程用途,允许专门为自动化流程或集成生成Token。

您可以根据需要创建任意数量的托管用户。但是,Anaconda 建议将托管用户的数量限制为仅所需的数量。限制它们的使用可以增强组织的安全状况。

提示

在请求创建组织管理的用户时,请使用<FIRST_NAME><LAST_NAME>字段,为Token的预期用途提供描述性名称。例如,如果您要向 Jupyter Notebooks 服务器提供Token,则可以输入“Jupyter”和“Server-1”作为组织托管用户的名字和姓氏。

API 调用#

# Replace <ORG_ID> with your organization ID, found in your Anaconda Cloud organization's URL: anaconda.cloud/organizations/<ORG_ID>/
POST /organizations/<ORG_ID>/users
{
   "email":"<EMAIL_ADDRESS>"
   "first_name": "<FIRST_NAME>",
   "last_name": "<LAST_NAME>"
}
{
   "email":"[email protected]"
   "first_name": "Annie",
   "last_name": "Conda"
}
{
   "first_name": "<FIRST_NAME>",
   "last_name": "<LAST_NAME>",
   "email": "<EMAIL_ADDRESS>",
   "id": "<GUID>"
}
{
   "first_name": "Annie",
   "last_name": "Conda",
   "email": "[email protected]",
   "id": "1a2b3c4d-1a2b-3c4d-5e6f-1a2b3c4d5f"
}

注意

如果您没有提供用户的名字和姓氏,则 API 调用将返回null.如有必要,用户可以稍后从其配置文件中编辑此信息。

为用户分配席位#

此调用为用户所属组织的给定用户分配一个席位。

API 调用#

# Replace <ORG_ID> with your organization ID, found in your Anaconda Cloud organization's URL: anaconda.cloud/organizations/<ORG_ID>/
# Replace <USER_ID> with the ID of the user you want to assign a seat
POST  /organizations/<ORG_ID>/users/<USER_ID>/seats

此调用没有请求或响应信息。如果请求成功,您将收到 201 状态代码。

将Token分配给用户#

此调用将Token分配给给定用户。Token是一种唯一的安全密钥,使用户能够访问已分配给他们的订阅席位。

API 调用#

# Replace <ORG_ID> with your organization ID, found in your Anaconda Cloud organization's URL: anaconda.cloud/organizations/<ORG_ID>/
# Replace <USER_ID> with the ID of the user you want to assign a token
POST /organizations/<ORG_ID>/users/<USER_ID>/token
{
   "expires_at": "<DATETIME>"
}
{
   "expires_at": "2022-07-29T00:00:00+00:00"
}
{
   "token": "<TOKEN>",
   "expires_at": null
}
{
   "token": "1a2b34567c8d9101112e13f14g151617h18i19202122i23j",
   "expires_at": null
}

同步用户Token#

续订订阅不会延长Token的有效期。如果您已续订订阅并希望保留当前Token,请运行此调用以同步您的Token并将其有效期延长至组织的新订阅到期日期。

# Replace <ORG_ID> with your organization ID, found in your Anaconda Cloud organization's URL: anaconda.cloud/organizations/<ORG_ID>/
# Replace <USER_ID> with the ID of the user whose token needs to be synchronized
PATCH /organizations/<ORG_ID>/users/<USER_ID>/token

撤销 users token#

此调用将撤销给定用户 ID 的Token。当用户不再需要访问其软件订阅时,应使用此功能,并且可以将其用作用户删除过程中的第一部分。

API 调用#

# Replace <ORG_ID> with your organization ID, found in your Anaconda Cloud organization's URL: anaconda.cloud/organizations/<ORG_ID>/
# Replace <USER_ID> with the ID of the user whose token you want to delete
DELETE /organizations/<ORG_ID>/users/<USER_ID>/token

从用户中删除席位#

此调用会从给定用户中删除订阅席位,并可用作用户删除过程中的第二部分。

API 调用#

# Replace <ORG_ID> with your organization ID, found in your Anaconda Cloud organization's URL: anaconda.cloud/organizations/<ORG_ID>/
# Replace <USER_ID> with the ID of the user whose token you want to delete
DELETE /organizations/<ORG_ID>/users/<USER_ID>/seats

从组织中删除用户#

此调用从给定组织中删除给定用户,并可用作用户删除过程的最后一部分。

API 调用#

# Replace <ORG_ID> with your organization ID, found in your Anaconda Cloud organization's URL: anaconda.cloud/organizations/<ORG_ID>/
# Replace <USER_ID> with the ID of the user whose token you want to delete
DELETE /organizations/<ORG_ID>/users/<USER_ID>