对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

使用服务帐号以编程方式访问Cloud Manager

To grant programmatic access to an organization or project using only the API, create an API key or a service account. This ensures that the keys and access tokens that serve as usernames and passwords are never sent over the network. API keys and service accounts:

  • 不能用于通过用户界面日志Cloud Manager 。

  • 必须像授予用户一样被授予角色,以确保API密钥和服务帐户可以调用API终结点而不会出错。

  • 属于一个组织,但可被授予对该组织中任意数量项目的访问权限。

要学习;了解有关这两种身份验证方法的更多信息,请参阅身份验证。

注意

所需权限

您可以查看具有任何角色的组织的编程访问权限。

要执行任何其他动作,您必须具有Organization Owner 角色。

使用以下过程通过 API 密钥或服务帐户向组织授予编程访问权限。要了解有关这两种身份验证方法的更多信息,请参阅 身份验证。

1
  1. 如果尚未显示,组织从导航栏中的Organizations菜单。

  2. 在侧边栏中,单击 Identity & Access 标题下的 Applications`。

显示应用程序页面。

2
3
  1. 输入一个 Name。

  2. 输入一个 Description。

  3. 从 Client Secret Expiration(客户端密钥到期)菜单中选择持续时间。

  4. 从Organization Permissions(组织权限)菜单中,为服务帐户选择一个或多个新角色。

4
5

客户端密钥在创建访问令牌时充当密码。

警告

只有在这个时候,您才能查看完整的客户机密。点击 Copy(复制)并将其保存到安全位置。否则,您需要生成新的客户端机密。

6
  1. 单击 Add Access List Entry(连接)。

  2. 输入您希望Cloud Manager接受针对该服务帐号的API请求的IP解决或 APIIPCIDR区块。Cloud Manager

    Use Current IP AddressCloud ManagerAPI如果用于访问权限Cloud Manager的托管也将使用此服务帐号发出API请求,则也可以单击 。

  3. 单击 Save(连接)。

您可以查看所有有权访问您的组织的 API 密钥或服务账户的详细信息。

1
  1. 如果尚未显示,组织从导航栏中的Organizations菜单。

  2. 在侧边栏中,单击 Identity & Access 标题下的 Applications`。

显示应用程序页面。

2
3

列出有权访问权限组织的所有服务帐户。

单击服务帐户名称可查看其详细信息,包括:

  • 服务帐户的混淆客户端密钥

  • 上次使用客户端密钥的日期

  • 创建客户端密钥的日期

  • The IP addresses from which the service account can access the API

  • 已为服务帐户分配的角色

您可以更改组织中API密钥或服务帐号的角色、说明或访问列表。您还可以为服务账户生成新的客户端秘密。

1
  1. 如果尚未显示,组织从导航栏中的Organizations菜单。

  2. 在侧边栏中,单击 Identity & Access 标题下的 Applications`。

显示应用程序页面。

2
3
4

要修改 Name 或 Description,请单击 。

5
  1. 单击 Generate New Client Secret

  2. 从菜单中选择客户端密钥的持续时间。 客户端密钥在此持续时间后过期。

  3. 单击 Generate New(连接)。

  4. 单击 Copy 并将客户端密钥保存到安全位置。这是您唯一一次可以查看完整的客户端密钥。

6
  1. 单击 Edit Permissions(连接)。

  2. 从Organization Permissions 菜单中,为服务帐户选择一个或多个新角色。

  3. 单击 Save and next(连接)。

    重要

    服务帐户凭证将保持活动状态,直到过期或被用户撤销。

7
  1. 要添加一个 IP 地址或 CIDR 块,Cloud Manager 将从该 IP 地址或 CIDR 块接受针对此服务帐户的 API 请求。请点击 Add Access List Entry 并输入 IP 地址。

    Use Current IP AddressCloud ManagerAPI如果用于访问权限Cloud Manager的托管也将使用此服务帐号发出API请求,则也可以单击 。

  2. 要从访问权限列表中删除IP解决,请单击在IP解决右侧。

  3. 单击 Save(连接)。

1
  1. 如果尚未显示,组织从导航栏中的Organizations菜单。

  2. 在侧边栏中,单击 Identity & Access 标题下的 Applications`。

显示应用程序页面。

2
3
  1. Click the icon under Actions to the right of the service account you want to delete.

  2. 单击 Delete(连接)。

从组织中删除服务帐户还会将其从服务帐户被授予访问权限的任何项目中删除。

注意

所需权限

您可以查看任何角色对项目的编程访问权限。

要执行任何其他动作,您必须具有Project User Admin 角色。

使用以下步骤,通过 API 密钥或服务账户授予对项目的编程访问权限。要了解有关这两种身份验证方法的更多信息,请参阅 身份验证。

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 在侧边栏中,单击 Project Settings。

    显示项目设置页面。

2

在侧边栏中,单击 Identity & Access 标题下的 Applications。

显示应用程序页面。

3
4
  1. 输入一个 Name。

  2. 输入一个 Description。

  3. 从 Client Secret Expiration(客户端密钥到期)菜单中选择持续时间。

  4. 从项目权限菜单中,为服务帐户选择一个或多个新角色。

5
6

客户端密钥在创建访问令牌时充当密码。

警告

只有在这个时候,您才能查看完整的客户机密。点击 Copy(复制)并将其保存到安全位置。否则,您需要生成新的客户端机密。

7
  1. 单击 Add Access List Entry(连接)。

  2. 输入您希望Cloud Manager接受针对该服务帐号的API请求的IP解决或 APIIPCIDR区块。Cloud Manager

    Use Current IP AddressCloud ManagerAPI如果用于访问权限Cloud Manager的托管也将使用此服务帐号发出API请求,则也可以单击 。

  3. 单击 Save(连接)。

You can view the details of all API keys or service accounts that have access to your project.

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 在侧边栏中,单击 Project Settings。

    显示项目设置页面。

2

在侧边栏中,单击 Identity & Access 标题下的 Applications。

显示应用程序页面。

3

列出有权访问权限您的项目的所有服务帐户。

单击服务帐户名称可查看其详细信息,包括:

  • 服务帐户的混淆客户端密钥

  • 上次使用客户端密钥的日期

  • 创建客户端密钥的日期

  • The IP addresses from which the service account can access the API

  • 已为服务帐户分配的角色

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 在侧边栏中,单击 Project Settings。

    显示项目设置页面。

2

在侧边栏中,单击 Identity & Access 标题下的 Applications。

显示应用程序页面。

3
4
5

要修改 Name 或 Description,请单击 。

6
  1. 单击 Generate New Client Secret

  2. 从菜单中选择客户端密钥的持续时间。 客户端密钥在此持续时间后过期。

  3. 单击 Generate New(连接)。

  4. 单击 Copy 并将客户端密钥保存到安全位置。这是您唯一一次可以查看完整的客户端密钥。

7
  1. 单击 Edit Permissions(连接)。

  2. 从Project Permissions 菜单中,为服务帐户选择一个或多个新角色。

  3. 单击 Save and next(连接)。

    重要

    服务帐户凭证将保持活动状态,直到过期或被用户撤销。

8
  1. 要添加一个 IP 地址或 CIDR 块,Cloud Manager 将从该 IP 地址或 CIDR 块接受针对此服务帐户的 API 请求。请点击 Add Access List Entry 并输入 IP 地址。

    Use Current IP AddressCloud ManagerAPI如果用于访问权限Cloud Manager的托管也将使用此服务帐号发出API请求,则也可以单击 。

  2. 要从访问权限列表中删除IP解决,请单击在IP解决右侧。

  3. 单击 Save(连接)。

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。

  2. 如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。

  3. 在侧边栏中,单击 Project Settings。

    显示项目设置页面。

2

在侧边栏中,单击 Identity & Access 标题下的 Applications。

显示应用程序页面。

3
4
  1. Click the icon under Actions to the right of the service account you want to remove from the project.

  2. 单击 Remove from this project(连接)。

重要

服务帐户仍然存在于组织中,任何现有凭证都保持活动状态,直到过期或手动撤销。

Cloud Manager API 使用以下两种身份验证方法之一来验证请求:API 密钥或服务账户。您需要在配置首选身份验证方法时保存的密钥或机密才能完成以下过程。

要使用服务帐户发出 API 请求,请使用该服务帐户生成访问令牌,然后在请求中使用访问令牌:

1

找到以 mdb_sa_sk_ 开头的客户机密;这是创建服务帐户后立即保存的客户机密,当时也是唯一一次可以查看客户机密的时机。如果未保存客户端机密,则必须生成新的客户端机密。

2

例如,运行:

echo -n {clientId}:{clientSecret} | base64 -w0
3

将以下示例中的 {base64Auth} 替换为上一步的输出,然后运行:

curl --request POST \ --url https://cloud.mongodb.com/api/oauth/token \ --header 'accept: application/json' \ --header 'cache-control: no-cache' \ --header 'authorization: Basic {base64Auth}' \ --header 'content-type: application/x-www-form-urlencoded' \ --data 'grant_type=client_credentials'
{"access_token":"{accessToken}""expires_in":3600,"token_type":"Bearer"}%

重要

访问令牌的有效期为 1 小时(3600 秒)。您无法刷新访问令牌。当此访问令牌过期时,重复此步骤以生成新的访问令牌。

4

将以下示例中的 {accessToken} 替换为上一步的输出。示例,--header 'Authorization: Bearer eyJ...pSnF' \。

以下示例GET请求将返回当前用户的所有项目:

curl --request GET \ --url https://cloud.mongodb.com/api/public/v1.0/groups \ --header 'Authorization: Bearer {accessToken}' \ --header 'Accept: application/json' \

以下示例POST请求采用请求正文并在组织中创建名为 MyProject 的项目:

curl --header 'Authorization: Bearer {accessToken}' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --include \ --request POST 'https://cloud.mongodb.com/api/public/v1.0/groups' \ --data ' { "name": "MyProject", "orgId": "5a0a1e7e0f2912c554080adc" }'