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终结点而不会出错。
属于一个组织,但可被授予对该组织中任意数量项目的访问权限。
要学习;了解有关这两种身份验证方法的更多信息,请参阅身份验证。
管理对组织的编程访问
为组织授予编程访问权限
使用以下过程通过 API 密钥或服务帐户向组织授予编程访问权限。要了解有关这两种身份验证方法的更多信息,请参阅 身份验证。
查看对组织的编程访问权限
您可以查看所有有权访问您的组织的 API 密钥或服务账户的详细信息。
更新对组织的编程访问权限
您可以更改组织中API密钥或服务帐号的角色、说明或访问列表。您还可以为服务账户生成新的客户端秘密。
填写API Key Information 表单。
在Add API Key页面的API Key Information步骤中:
字段 | 值 |
|---|---|
说明 | 输入新API密钥的描述。 |
组织权限 | 为 API 密钥选择一个 或多个新角色 。 |
撤销对组织的编程访问权限
托管对项目的编程访问
授予对项目的编程访问权限
使用以下步骤,通过 API 密钥或服务账户授予对项目的编程访问权限。要了解有关这两种身份验证方法的更多信息,请参阅 身份验证。
查看项目的编程访问权限
You can view the details of all API keys or service accounts that have access to your project.
在MongoDB Cloud Manager中,转到 Project Settings 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在侧边栏中,单击 Project Settings。
显示项目设置页面。
在MongoDB Cloud Manager中,转到 Project Settings 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在侧边栏中,单击 Project Settings。
显示项目设置页面。
更新项目的编程访问权限
在MongoDB Cloud Manager中,转到 Project Settings 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在侧边栏中,单击 Project Settings。
显示项目设置页面。
撤销对项目的编程访问权限
在MongoDB Cloud Manager中,转到 Project Settings 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在侧边栏中,单击 Project Settings。
显示项目设置页面。
在MongoDB Cloud Manager中,转到 Project Settings 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在侧边栏中,单击 Project Settings。
显示项目设置页面。
提出 API 请求
Cloud Manager API 使用以下两种身份验证方法之一来验证请求:API 密钥或服务账户。您需要在配置首选身份验证方法时保存的密钥或机密才能完成以下过程。
要使用服务帐户发出 API 请求,请使用该服务帐户生成访问令牌,然后在请求中使用访问令牌:
检索您的服务帐户的客户端机密。
找到以 mdb_sa_sk_ 开头的客户机密;这是创建服务帐户后立即保存的客户机密,当时也是唯一一次可以查看客户机密的时机。如果未保存客户端机密,则必须生成新的客户端机密。
请求访问令牌。
将以下示例中的 {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 秒)。您无法刷新访问令牌。当此访问令牌过期时,重复此步骤以生成新的访问令牌。
调用 API。
将以下示例中的 {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" }'您的请求应类似于以下示例,其中,{publicKey} 是您的 API 公钥,{privateKey} 是相应的私钥。
以下示例GET请求将返回当前用户的所有项目:
curl --user "{publicKey}:{privateKey}" --digest \ --header "Accept: application/json" \ --include \ --request GET "https://cloud.mongodb.com/api/public/v1.0/groups?pretty=true"以下示例POST请求采用请求正文并在组织中创建名为 MyProject 的项目:
curl --user "{publicKey}:{privateKey}" --digest \ --header "Accept: application/json" \ --header "Content-Type: application/json" \ --include \ --request POST "https://cloud.mongodb.com/api/public/v1.0/groups?pretty=true" \ --data ' { "name": "MyProject", "orgId": "deffb2031b938da53f16d714" }'