使用Anaconda Cloud API管理您的组织#
通过Anaconda Cloud图形用户界面(GUI)手动加入个别团队成员可能非常耗时。对于大型团队,Anaconda建议使用API调用来简化流程。
Anaconda Cloud API 提供了各种调用,使您能够将用户添加到 Anaconda Cloud 组织并更改他们的席位和令牌权限。您必须是具有有效付费订阅的 Anaconda Cloud 组织的管理员才能使用这些 API 调用。
与API交互#
Anaconda 维护了一个 Jupyter 笔记本,其中包含用于与 API 接口的 Python 函数,以及一些使用笔记本本身的说明:
API认证#
Anaconda Cloud API 使用 OAuth2 标准认证(使用组织管理员的 anaconda.cloud 用户名和密码)来生成 User_Token
。创建服务账户需要 User_Token
。
一旦创建了服务账户,使用其凭据(返回的client_id
和client_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账户的用户添加到您的组织中,您可以使用此调用来启动自动加入流程,这将把他们添加到您的组织中,为他们分配一个成员席位,并为他们颁发访问仓库的令牌。
管理员将收到一封电子邮件,通知用户已被添加到组织中。用户将收到两封电子邮件,一封是欢迎他们加入组织的邮件,另一封包含他们的私人访问令牌,该令牌允许他们使用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
列表中。
将用户添加到您的组织#
此调用将用户添加到组织中。
如果您在进行此调用时未提供电子邮件地址,系统将创建一个组织管理的用户。组织管理的用户不与个人账户关联,旨在用于编程用途,允许生成专门用于自动化流程或集成的令牌。
您可以根据需要创建任意数量的托管用户。然而,Anaconda建议将托管用户的数量限制在仅需要的范围内。限制其使用可以增强您组织的安全态势。
提示
在请求创建组织管理的用户时,使用
和
字段为令牌的预期用途提供描述性名称。例如,如果您正在为Jupyter Notebooks服务器提供令牌,您可能会输入“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状态码。
将令牌分配给用户#
此调用将令牌分配给给定用户。令牌是一种独特的安全密钥,使用户能够访问他们被分配的订阅席位。
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
}
同步用户令牌#
续订您的订阅不会延长您的令牌的有效期。如果您已经续订了订阅并希望保留当前的令牌,请运行此调用来同步您的令牌并将其有效期延长至您组织的新订阅到期日期。
# 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
撤销用户的令牌#
此调用从给定的用户ID撤销令牌。当用户不再需要访问其软件订阅时,应使用此调用,并可用作用户移除过程的第一部分。
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>