Docs 菜单
Docs 主页
/
MongoDB Atlas
/ /

开始使用 Atlas Administration API

在此页面上

  • 授予 Atlas 的编程访问权限
  • 可选:需要针对 Atlas Administration API 的 IP 访问列表
  • 为组织授予编程访问权限
  • 授予对项目的编程访问权限
  • 提出 API 请求
  • 后续步骤

重要

每个 Atlas Administration API 都有自己的资源,需要进行初始设置。

您只能通过公共互联网访问 Atlas Administration API 服务器。Atlas Administration API 不适用于使用网络对等互连私有端点的连接。

要了解更多信息,请参阅 Atlas 编程访问权限

Atlas Administration API 遵循 REST 架构风格的原则,以开放大量内部资源,从而能够以编程方式访问 Atlas 的功能。要了解更多信息,请参阅 Atlas Administration API 参考文档

您可以使用以下两种身份验证方法之一向组织或项目授予编程访问权限:

API 密钥
服务帐户(预览版)

使用 HTTP 摘要式身份验证验证 Atlas 的旧版方法。

使用行业标准 OAuth2.0 协议和客户端凭证流 验证 Atlas 的新方法。目前处于预览阶段

API密钥分为两部分:公钥和私钥。当您向Atlas发出API请求时,这两个部分的提供服务与用户名和密码相同。

服务帐户允许您管理权限和创建访问权限令牌。 服务帐户具有客户端ID和密钥,密钥可用作创建访问权限令牌的用户名和密码。 访问权限令牌允许您向Atlas发出API请求。

Atlas 使用一个称为 nonce 的唯一值对公钥和私钥进行哈希化处理。根据 HTTP 摘要式身份验证规范,nonce 的有效期很短。这是为了防止重放攻击,因此您不能缓存 nonce 并永远使用它。

创建服务帐号后,您将使用其客户端 ID 和机密生成访问令牌,用于对您的 API 请求进行身份验证。根据 OAuth 2.0 规范,访问令牌的有效期仅为 1 小时(3600 秒)。访问令牌过期可以防止重放攻击;在重放攻击中,可以不受时间限制地使用泄露的访问令牌。

Atlas 角色限制 API 密钥可以执行的操作。您必须向 API 密钥授予角色,就像为用户授予角色一样,以确保 API 密钥可以毫无错误地调用 API 端点。

Atlas 角色限制了服务帐户使用其访问令牌可以执行的操作。必须向服务帐户授予角色,就像向用户授予角色一样,以确保访问令牌可以调用 API 端点而不会出错。

Atlas将许多资源绑定到一个项目。 许多API资源URL都遵循 /api/atlas/<version>/groups/<GROUP-ID>/<GROUP-ID>的格式,其中 是您的项目ID 。对于这些资源, API密钥必须是托管项目的组织的成员。否则, Atlas将返回401 错误进行响应。要授予组织级API密钥对项目的访问权限,请参阅为项目分配现有组织访问权限。

Atlas将许多资源绑定到一个项目。 许多API资源URL都遵循 /api/atlas/<version>/groups/<GROUP-ID>/<GROUP-ID>的格式,其中 是您的项目ID 。对于这些资源,服务帐户必须是托管项目的组织的成员。 否则, Atlas将返回401 错误进行响应。要授予组织级服务帐户对项目的访问权限,请参阅为项目分配现有组织访问权限。

每个 API 密钥仅属于一个组织,但您可以授予多个 API 密钥访问权限,以访问该组织中任意数量的项目。

每个服务帐号仅属于一个组织,但您可以授予服务帐号访问权限,以访问该组织中任意数量的项目。

您无法使用 API 密钥通过 Atlas 用户界面登录 Atlas。

您无法使用服务帐户或其访问令牌通过 Atlas 用户界面登录 Atlas。

使用Atlas用户界面创建组织时, Atlas默认启用API IP访问列表功能。这会将API请求限制为仅来自您在IP访问列表中指定的基于位置的IP或 CIDR 地址的请求。如果您在没有IP访问列表条目的情况下向Atlas Administration API发出请求,服务器将使用403 状态代码进行响应。

如果禁用该功能,只要IP访问列表为空,您就可以从互联网上的任何解决发出API请求。添加IP访问列表条目后,只有源自该IP解决的请求才能发出请求。

要将您的组织设置为在创建组织后要求为每个 Atlas Administration API 请求提供 IP 访问列表,请执行以下步骤:

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

  2. 单击 Organizations 菜单旁边的 Organization Settings 图标。

    显示“组织设置”页面。

2

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

重要

服务帐户当前处于预览状态。要了解更多信息,请参阅服务帐户概述

要执行以下操作,您必须拥有 Atlas 的 Organization Owner 访问权限。

要使用 Atlas CLI 在组织中创建 API 密钥,请运行以下命令:

atlas organizations apiKeys create [options]

要了解有关命令语法和参数的更多信息,请参阅 Atlas CLI 文档中的 atlas organizations apiKeys create

提示

请参阅:相关链接

要使用 Atlas CLI 创建 API 密钥的 IP 访问列表条目,请运行以下命令:

atlas organizations apiKeys accessLists create [options]

要了解有关命令语法和参数的更多信息,请参阅 Atlas CLI 文档中的 atlas organizations apiKeys accessLists create

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

  2. 执行以下步骤之一:

    • 从导航栏的Access Manager菜单中选择Organization Access

    • 单击侧边栏中的 Access Manager(支持)。

    显示“组织访问经理”页面。

2
3
  1. 输入一个 Description

  2. Organization Permissions 菜单中选择 API 密钥 的一个或多个新角色。

4
5

在发出 API 请求时,公钥充当用户名。

6

在发出 API 请求时,私钥充当密码。

警告

复制并保存公钥和私钥

Private Key仅显示一次:在此页面上。单击 Copy 按钮,将私钥添加到剪贴板。保存并保护公钥和私钥。

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

  2. 输入一个 IP 地址或 CIDR 块,Atlas 将从该 IP 地址或 CIDR 块接受此 API 密钥的 API 请求。

    如果您用来访问 Atlas 的主机也将使用此 API 密钥发出 API 请求,也可以单击 Use Current IP Address

  3. 单击 Save(连接)。

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

  2. 执行以下步骤之一:

    • 从导航栏的Access Manager菜单中选择Organization Access

    • 单击侧边栏中的 Access Manager(支持)。

    显示“组织访问经理”页面。

2
3
  1. 输入一个 Name

  2. 输入一个 Description

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

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

4
5

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

警告

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

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

  2. 输入一个 IP 地址或 CIDR 块,Atlas 将从该 IP 地址或 CIDR 块接受此服务帐户的 API 请求。

    如果您用来访问 Atlas 的主机也将使用此服务帐户发出 API 请求,也可以单击 Use Current IP Address(使用当前 IP 地址)。

  3. 单击 Save(连接)。

您可以使用 Atlas 管理 API 为您的组织创建服务帐户

创建服务帐号后,复制并保存输出中的 {CLIENT-ID}{CLIENT-SECRET},这应该与以下示例类似。只有在这个时候,您才能查看完整的客户机密。您在提出 API 请求时需要这些信息。

{
"createdAt" : "2024-04-23T17:47:17Z",
"description" : "Service account for my organization.",
"clientId" : "{CLIENT-ID}",
"name" : "My Service Account",
"roles" : [ "ORG_MEMBER" ],
"secrets" : [ {
"createdAt" : "2024-04-23T17:47:17Z",
"expiresAt" : "2024-12-01T00:00:00Z",
"id" : "6627f7259d39d858378c9e30",
"lastUsedAt" : null,
"secret" : "{CLIENT-SECRET}"
} ]
}%

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

重要

服务帐户当前处于预览状态。要了解更多信息,请参阅服务帐户概述

要给予 API 密钥访问某个项目的权限,您必须拥有该项目 Project Owner 权限。

要给予服务帐户访问项目的权限,您必须对拥有该项目的组织具有 Organization Owner 访问权限。

如果您已经为组织创建了 API 密钥或服务帐户,则可以将其分配给某个项目,以授予该项目访问 Atlas 管理 API 的权限。

要使用 Atlas CLI 将 API 密钥分配给项目,请运行以下命令:

atlas projects apiKeys assign <ID> [options]

要了解有关命令语法和参数的更多信息,请参阅 Atlas CLI 文档中的 atlas projects apiKeys assign 部分。

要使用 Atlas 用户界面将组织 API 密钥分配给项目,请执行以下操作:

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

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

  3. 执行以下步骤之一:

    • 从导航栏的Access Manager菜单中选择Project Access

    • Projects 菜单旁边,展开 Options 菜单,单击 Project Settings,然后单击侧栏中的 Access Manager

    将显示项目访问管理器页面。

2
3
  1. 将公钥键入到字段中。

  2. Project Permissions 菜单中选择 API 密钥 的一个或多个新角色。

4

警告

如果为项目指定了组织服务帐户,则组织 Project Owner 可以管理服务帐户,包括轮换机密和更新 IP 访问列表。

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

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

  3. 执行以下步骤之一:

    • 从导航栏的Access Manager菜单中选择Project Access

    • Projects 菜单旁边,展开 Options 菜单,单击 Project Settings,然后单击侧栏中的 Access Manager

    将显示项目访问管理器页面。

2
3

在字段中输入服务帐户的客户 ID,然后从菜单中选择服务帐户。

4

在出现的菜单中,为服务帐户选择一个或多个新角色

5

您可以使用 Atlas 管理 API 授予现有服务帐户访问项目的权限

如果您尚未为组织创建 API 密钥或服务帐户,则可以为项目创建它们,以授予该项目访问 Atlas 管理 API 的权限。为项目创建的 API 密钥或服务帐户会自动添加到父组织中,权限为 Organization Member

要使用 Atlas CLI 创建项目的 API 密钥,请运行以下命令:

atlas projects apiKeys create [options]

要了解有关命令语法和参数的更多信息,请参阅 Atlas CLI 文档中的 atlas projects apiKeys create

为项目创建 API 密钥后,使用 Atlas UI 添加 API 访问列表条目。在设置 API 访问列表之前,您无法使用项目的 API 密钥。

注意

Atlas CLI 限制

您无法使用 Atlas CLI 编辑项目 API 密钥的 API 访问列表。

要使用 Atlas 用户界面添加 API 访问列表条目,请执行以下操作:

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

  2. 输入您希望 Atlas 接受对此 API 密钥的 API 请求的 IP 地址。如果您用来访问 Atlas 的主机也将使用此 API 密钥发出 API 请求,也可以单击 Use Current IP Address

  3. 单击 Save(连接)。

2

要使用 Atlas 用户界面为项目创建 API 密钥:

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

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

  3. 执行以下步骤之一:

    • 从导航栏的Access Manager菜单中选择Project Access

    • Projects 菜单旁边,展开 Options 菜单,单击 Project Settings,然后单击侧栏中的 Access Manager

    将显示项目访问管理器页面。

2
3

Create API Key 页面中:

  1. 输入一个 Description

  2. Project Permissions 菜单中选择 API 密钥 的一个或多个新角色。

4
5

在发出 API 请求时,公钥充当用户名。

6

在发出 API 请求时,私钥充当密码。

警告

保存私钥

Private Key仅显示一次:在此页面上。单击 Copy 按钮,将私钥添加到剪贴板。保存并保护公钥和私钥。

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

  2. 输入您希望 Atlas 接受对此 API 密钥的 API 请求的 IP 地址。

    如果您用来访问 Atlas 的主机也将使用此 API 密钥发出 API 请求,也可以单击 Use Current IP Address

  3. 单击 Save(连接)。

8

要使用 Atlas 用户界面为项目创建服务帐户,请执行以下操作:

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

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

  3. 执行以下步骤之一:

    • 从导航栏的Access Manager菜单中选择Project Access

    • Projects 菜单旁边,展开 Options 菜单,单击 Project Settings,然后单击侧栏中的 Access Manager

    将显示项目访问管理器页面。

2
3
  1. 输入一个 Name

  2. 输入一个 Description

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

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

4
5

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

警告

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

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

  2. 输入一个 IP 地址或 CIDR 块,Atlas 将从该 IP 地址或 CIDR 块接受此服务帐户的 API 请求。

    如果您用来访问 Atlas 的主机也将使用此服务帐户发出 API 请求,也可以单击 Use Current IP Address(使用当前 IP 地址)。

  3. 单击 Save(连接)。

您可以使用 Atlas 管理 API 为项目创建服务帐户

创建服务帐号后,复制并保存输出中的 {CLIENT-ID}{CLIENT-SECRET},这应该与以下示例类似。只有在这个时候,您才能查看完整的客户机密。您在提出 API 请求时需要这些信息。

{
"createdAt" : "2024-04-23T17:47:17Z",
"description" : "Service account for my organization.",
"clientId" : "{CLIENT-ID}",
"name" : "My Service Account",
"roles" : [ "ORG_MEMBER" ],
"secrets" : [ {
"createdAt" : "2024-04-23T17:47:17Z",
"expiresAt" : "2024-12-01T00:00:00Z",
"id" : "6627f7259d39d858378c9e30",
"lastUsedAt" : null,
"secret" : "{CLIENT-SECRET}"
} ]
}%

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

重要

服务帐户当前处于预览状态。要了解更多信息,请参阅服务帐户概述

所有 Atlas Administration API 端点均有以下基本 URL:

https://cloud.mongodb.com/api/atlas/<version>

您的请求应类似于以下示例,其中,{PUBLIC-KEY} 是您的 API 公钥,{PRIVATE-KEY} 是相应的私钥。要通过 Atlas Administration API 浏览可用的端点,您可以使用 MongoDB 的 Postman 工作空间

以下示例 GET 请求返回组织中的所有项目

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \
--header "Content-Type: application/json" \
--header "Accept: application/vnd.atlas.2024-08-05+json" \
--include \
--request GET "https://cloud.mongodb.com/api/atlas/v2/groups"

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

curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \
--header "Content-Type: application/json" \
--header "Accept: application/vnd.atlas.2024-08-05+json" \
--include \
--request POST "https://cloud.mongodb.com/api/atlas/v2/groups" \
--data '
{
"name": "MyProject",
"orgId": "5a0a1e7e0f2912c554080adc"
}'

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

1

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

2

例如,运行:

echo -n {CLIENT-ID}:{CLIENT-SECRET} | base64
3

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

1curl --request POST \
2 --url https://cloud.mongodb.com/api/oauth/token \
3 --header 'accept: application/json' \
4 --header 'cache-control: no-cache' \
5 --header 'authorization: Basic {BASE64-AUTH}' \
6 --header 'content-type: application/x-www-form-urlencoded' \
7 --data 'grant_type=client_credentials'
{"access_token":"eyJhbGciOiJFUzUxMiIsInR5cCI6IkpXVCIsImtpZCI6ImYyZjE2YmE4LTkwYjUtNDRlZS1iMWYwLTRkNWE2OTllYzVhNyJ9.eyJpc3MiOiJodHRwczovL2Nsb3VkLWRldi5tb25nb2RiLmNvbSIsImF1ZCI6ImFwaTovL2FkbWluIiwic3ViIjoibWRiX3NhX2lkXzY2MjgxYmM2MDNhNzFhNDMwYjkwNmVmNyIsImNpZCI6Im1kYl9zYV9pZF82NjI4MWJjNjAzYTcxYTQzMGI5MDZlZjciLCJhY3RvcklkIjoibWRiX3NhX2lkXzY2MjgxYmM2MDNhNzFhNDMwYjkwNmVmNyIsImlhdCI6MTcxMzkwNTM1OSwiZXhwIjoxNzEzOTA4OTU5LCJqdGkiOiI4ZTg1MTM3YS0wZGU1LTQ0N2YtYTA0OS1hMmVmNTIwZGJhNTIifQ.AZSFvhcjwVcJYmvW6E_K5UnDmeiX2sJgL27vo5ElzeBuPawRciKkn6ervZ6IpUTx2HHllGgAAMmhaP9B66NywhfjAXC697X9KcOzm81DTtvDjLrFeRSc_3vFmeGvfUKKXljEdWBnbmwCwtBlO5SJuBxb1V5swAl-Sbq9Ymo4NbyepSnF","expires_in":3600,"token_type":"Bearer"}%

重要

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

4

将以下示例中的 {ACCESS-TOKEN} 替换为上一步的输出。

以下示例 GET 请求返回组织中的所有项目

curl --request GET \
--url https://cloud.mongodb.com/api/atlas/v2/groups \
--header 'Authorization: Bearer {ACCESS-TOKEN}' \
--header 'Accept: application/vnd.atlas.2023-02-01+json' \
--header 'Content-Type: application/json'

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

curl --header 'Authorization: Bearer {ACCESS-TOKEN}' \
--header "Content-Type: application/json" \
--header "Accept: application/vnd.atlas.2023-02-01+json" \
--include \
--request POST "https://cloud.mongodb.com/api/atlas/v2/groups" \
--data '
{
"name": "MyProject",
"orgId": "5a0a1e7e0f2912c554080adc"
}'

或者,您可以使用任何支持 OpenAPI v3 规范 的工具来生成代码示例或模拟服务器。例如,可以将 Atlas Admin API 规范导入 Postman,生成 curl 命令。要使用 Postman 生成 curl 命令:

1
2

将显示“导入”窗口。

3
4
5

要了解有关 Atlas Administration API 的更多信息,请参阅 Atlas Administration API 参考资料

要管理对 Atlas Administration API 的编程访问,请参阅以下任一过程:

后退

Atlas Administration API