IBM Cloud Docs
管理访问权限 IBM Cloudant

管理访问权限 IBM Cloudant

IBM Cloud® Identity and Access Management 提供了统一的方法来管理用户身份、服务和访问控制。

以下文本描述了 IBM® Cloudant® for IBM Cloud® 与 IBM Cloud Identity and Access Management的集成。 讨论了以下话题:

  • IBM Cloudant 旧访问控制与 IBM Cloud IAM 访问控制之间的差异。
  • 每个选项的优点和缺点可帮助您决定要使用的选项。
  • 如何使用 HTTP在 IBM Cloudant客户端库中使用IAM。
  • IBM Cloudant中可用的 IAM 操作和角色的描述。

有关更多信息,请参阅包含以下主题的 IAM 概述:

  • 管理用户和服务标识。
  • 管理可用的凭证。
  • 使用 IAM 访问策略来允许和撤销对 IBM Cloudant 服务实例的访问权。

IBM Cloudant 旧访问控制与 IAM 访问控制之间的差异

以下部分简要概述了 IBM Cloudant 之间的差异 旧访问控制和 IBM Cloud IAM 的访问控制机制。

IBM Cloud Identity and Access Management

  • 跨 IBM Cloud 集中管理访问管理。
  • 允许用户或服务使用同一组凭证(例如,相同的用户名和密码或IAM API密钥)访问许多不同的资源。
  • 可以授予 IAM API 密钥对帐户管理功能(例如,创建新数据库)的访问权。

IBM Cloudant 旧访问控制

  • 对 IBM Cloudant 唯一。
  • 对每个服务实例的访问都需要该服务自己的一组凭证。
  • 将 HTTP 基本认证与未绑定到单个用户或服务的凭证配合使用。
  • IBM Cloudant API密钥只能在数据库级别授予权限。

API 密钥说明

在本文档中,凡是提到 API 密钥的地方,都是指 IAM API 密钥。 IBM Cloudant 旧访问控制还具有 API 密钥概念,有关 IBM Cloudant 旧凭证或用户名和密码组合的任何讨论也包含 IBM Cloudant API 密钥。

启用 IBM Cloudant 的 IAM

所有在 2018 年 7 月或之后供应的 IBM Cloudant 服务实例都在“资源组”下供应,且通过 IBM Cloud IAM 启用。 (可选)您还可以选择启用 IBM Cloudant 旧认证机制。 从 IBM Cloud 目录供应新的 IBM Cloudant 实例时,请选择下列其中一种认证方法。

同时使用旧凭证和 IAM
此方式意味着可以使用 IAM 和旧凭证来访问帐户。 尤其是,对于绑定到帐户的所有应用程序和生成的服务凭证,会同时提供 IAM 和旧凭证集。
仅使用 IAM
此模式意味着仅使用服务绑定和凭证生成提供IAM凭证。

使用 Manager 以外的 IAM 角色 (例如 ReaderWriterMonitorCheckpointer) 时,必须 使用 仅使用 IAM 以避免向用户提供包含更大访问许可权的旧凭证。

策略强制实施

IAM 政策从最大的访问权限到最严格的访问权限分级执行,权限越大的政策优先于权限较小的政策。 例如,如果用户在数据库中同时拥有 WriterReader 服务访问角色,则授予 Reader 角色的策略将被忽略。

这也适用于服务实例和数据库级别的策略。

  • 如果用户拥有在服务实例上授予 Writer 角色和在单个数据库上授予 Reader 角色的策略,则数据库级别的策略将被忽略。
  • 如果用户拥有授予服务实例上的 Reader 角色和单个数据库上的 Writer 角色的策略,则两个策略都会执行,并且对于单个数据库而言,权限更大的 Writer 角色优先。

如果需要限制对单个数据库(或数据库集)的访问,请使用控制台或 CLI 确保用户或服务 ID 没有其他实例级别的策略。

如需了解更多信息,请参阅“组织资源和分配访问权限的最佳实践”。

IBM Cloudant API密钥,仅限于IAM用户使用

可以将 IBM Cloudant API 密钥与 IAM 一起使用,但建议不要这样做。 提出这一建议是因为 通过使用 IAM 策略接口,IBM Cloudant API 密钥和许可权不可见或不可管理,导致无法进行整体访问管理。

仅使用IAM同时使用旧凭据和IAM 会影响以下因素:

  1. 旧 IBM Cloudant 帐户级凭证是否可用于管理数据库和其他帐户级别的操作。
  2. 在服务凭证生成期间传递的凭证的样式。

尤其是,IBM Cloudant API 密钥仍可用于管理数据库访问。 必须使用 HTTP API 来生成和配置这些凭证。

使用命令行进行供应

当您从命令行配置新的 IBM Cloudant 实例时,请向 ibmcloud 工具提供一个选项,使用 -p 参数启用或禁用帐户的旧凭据。 该选项以 JSON 格式传递,名为 legacyCredentials

要以仅使用 IAM(建议)方式供应实例,请运行以下命令:

ibmcloud resource service-instance-create  "Instance Name" \
    cloudantnosqldb Standard us-south \
    -p {"legacyCredentials": false}

使用 Manager 以外的 IAM 角色 (例如 ReaderWriterMonitorCheckpointer) 时,必须 使用 仅使用 IAM 以避免向用户提供包含更大访问许可权的旧凭证。

要以同时使用旧凭证和 IAM 方式供应实例,请运行以下命令:

ibmcloud resource service-instance-create  "Instance Name" \
    cloudantnosqldb Standard us-south \
    -p {"legacyCredentials": true}

每个选项的服务凭证 JSON 示例

仅使用IAM同时使用传统凭证和IAM 访问控制 之间的选择会影响您在绑定和生成 服务凭证时凭证如何传递到您的应用程序。 在主 IBM Cloud 中生成凭证时 IAM 接口,API 密钥在生成时显示在该接口中。

您还可以通过服务实例的“服务凭证”部分生成凭证。 通过此方法生成服务凭证将创建服务凭证 JSON BLOB,此 BLOB 可以连同访问服务所需的所有详细信息一起粘贴到应用程序中。

接下来,您可以看到服务证书JSON是什么样子,以及 每个值是什么意思。

当您选择仅使用IAM 时,生成的服务凭证仅包含IAM 值,如下例所示。

{
  "apikey": "MxVp86XHkU82Wc97tdvDF8qM8B0Xdit2RqR1mGfVXPWz",
  "iam_apikey_description": "Auto generated apikey during resource-key [...]",
  "iam_apikey_name": "auto-generated-apikey-050d21b5-5f[...]",
  "iam_role_crn": "crn:v1:bluemix:public:iam::::serviceRole:Manager",
  "iam_serviceid_crn": "crn:v1:staging:public:iam-identity::[...]",
  "url": "https://76838001-b883-444d-90d0-46f89e942a15-bluemix.cloudant.com",
  "username": "76838001-b883-444d-90d0-46f89e942a15-bluemix"
}

必须使用以下定义来解释先前 JSON 示例中的每个值:

apikey
IAM API 密钥。
iam_apikey_description
IAM API密钥说明。
iam_apikey_name
IAM API密钥的ID。
iam_role_crn
IAM API 密钥具有的 IAM 角色。
iam_serviceid_crn
服务ID的CRN。
url
IBM Cloudant }} 服务URL。
username
内部 IBM Cloudant 帐户名称。

当您选择同时使用旧版凭证和IAM 时,生成的服务凭证将同时包含IAM和旧版凭证,其格式如下例所示。

{
  "apikey": "MxVp86XHkU82Wc97tdvDF8qM8B0Xdit2RqR1mGfVXPWz",
  "host": "76838001-b883-444d-90d0-46f89e942a15-bluemix.cloudant.com",
  "iam_apikey_description": "Auto generated apikey during resource-key [...]",
  "iam_apikey_name": "auto-generated-apikey-050d21b5-5f[...]",
  "iam_role_crn": "crn:v1:bluemix:public:iam::::serviceRole:Manager",
  "iam_serviceid_crn": "crn:v1:staging:public:iam-identity::[...]",
  "password": "8fb6a16b48903e87b769e7f4968521e85c2394ed8f0e69b2769e56dcb27d2e76",
  "port": 443,
  "url": "https://<username>:<password>@76838001-b883-444d-90d0-46f89e942a15-bluemix.cloudant.com",
  "username": "apikey-v2-58B528DF5397465BB6673E1B79482A8C"
}

必须使用以下定义来解释先前 JSON 示例中的每个值:

apikey
IAM API 密钥。
host
IBM Cloudant 服务主机名。
iam_apikey_description
IAM API密钥说明。
iam_apikey_name
IAM API密钥的ID。
iam_role_crn
IAM API 密钥具有的 IAM 角色。
iam_serviceid_crn
服务ID的CRN。
password
IBM Cloudant 旧凭证密码。
port
IBM Cloudant 服务端口。
url
IBM Cloudant 服务,包括嵌入的 旧版证书。URL IBM Cloudant
username
IBM Cloudant 旧凭证用户名。

请注意,包含的 usernamepassword 始终等同于 IAM 的“管理者”凭证。 因此,与 ReaderWriterMonitorCheckpointer IAM 角色配合使用时,使用 同时使用旧凭证和 IAM 是不安全的。

我必须使用 IAM吗?只能使用IAM 吗?还是可以使用旧凭据和IAM

如果可能,请首选仅使用 IAM。 使用的主要优点 IBM Cloud IAM 显示在以下列表中:

  • 使用 IBM Cloud 的标准工具 (而不是 IBM Cloud 和 IBM Cloudant特定凭证管理的组合) 来管理对 IBM Cloudant 的访问权。
  • 使用 IBM Cloud IAM 时,可以轻松撤销和轮换凭证。

下面进一步描述了每种方法的优缺点。

使用 Manager 以外的 IAM 角色 (例如 ReaderWriterMonitorCheckpointer) 时,必须 使用 仅使用 IAM 以避免向用户提供包含更大访问许可权的旧凭证。

两种访问控制机制的优缺点

总体而言,IBM Cloud IAM 是建议的认证模型。 然而,这种方法的主要缺点是,如果您有现有的应用程序 或无法使用 IBM Cloudant 支持的客户端库。

IAM 方式的优点

  • 使用一个接口管理多个服务的访问权。
  • 全局撤销用户访问权。
  • 使用服务标识的帐户级别 API 密钥。
  • 易于轮换的凭证。
  • Activity Tracker 日志会捕获个人和服务。
  • IAM 可与其他身份系统(例如,企业 LDAP 存储库)联合。
  • 细颗粒度许可权 (例如,ReaderWriterMonitorCheckpointer)。

IAM 方式的缺点

  • 如果您没有使用 IBM Cloudant 提供的支持库,可能需要更改应用程序才能使用IAM的API密钥和访问令牌。
  • 某些终端不可用。 有关更多信息,请参阅不可用的端点
  • 无法将数据库指定为“公共”,即无需授权用户访问。

旧方式的优点

  • 无需更改现有应用程序或客户机库依赖性。

旧方式的缺点

  • IBM Cloudant 凭证单独管理,无法在集中式界面中全面了解所有访问情况。

数据库级 IAM 政策

可以定义 IAM 策略,以限制对单个数据库或与通配符模式匹配的数据库的访问。

要以数据库为目标,请将属性“资源类型设置为”database。 有两个运营商 可用:

数据库级 IAM 操作员
运算符 描述
string equals 与 URL 编码的数据库名称完全匹配。
string matches 匹配使用多字符通配符(*),匹配任何零个或多个字符的序列;匹配使用单字符通配符(?),匹配任何单个字符;或同时匹配两者。

数据库名称应在策略的 “资源ID” 字段中URL,但斜杠 / 除外。 这不适用于策略中的任何通配符。

请注意,将资源类型资源ID 字段留空将创建实例级策略。

示例

数据库级 IAM 操作员示例
描述 属性 运算符
名为 "movies 的数据库 资源类型 string equals database
资源标识 string equals movies
以 "movies 开头的数据库 资源类型 string equals database
资源标识 string matches movies*
名为 "movies+new 的数据库 资源类型 string equals database
资源标识 string equals movies%2Bnew
以 "movies+* 开头的数据库 资源类型 string equals database
资源标识 string matches movies%2B*
名为 "movies/new 的数据库 资源类型 string equals database
资源标识 string equals movies/new

仅使用 IAM 凭证创建复制作业

请遵循以下指示信息来生成 IAM API 密钥,生成不记名令牌,创建 _replicator 数据库以及创建复制作业。

为“源”和“目标”生成 IAM API 密钥,为 IBM Cloudant API 访问权生成一个 IAM API 密钥

在本练习中,将创建前两个 API 密钥,以便这两个实例可以在复制过程中相互交谈。 第三个 API 密钥供用户访问 IBM Cloudant API,创建 _replicator 数据库,然后向其添加复制文档。

遵循以下步骤为 IBM Cloudant生成 IAM API 密钥和 API 访问权。 您必须记下以下步骤中请求的凭证,才能继续执行此示例。

请确保选择指定的实例,即“源”或“目标”。

  1. 登录到 cloud.ibm.com

  2. 从“资源”列表中,选择 服务 和源实例。

    1. 点击“服务凭证”,然后点击“新建凭证”。

    2. 将新凭证命名为 replicator-source,然后选择“管理者”角色。

    3. 单击 添加,并记录其 apikey,该位于“操作”列中的“查看凭证”下。

  3. 对目标实例重复步骤 2 到 2.c。

    1. 创建具有“管理者”角色的名为 replicator-target 的凭证。

    2. 记下其 IAM API 密钥,该密钥位于“操作”列中的“查看凭证”下。

  4. 选择源实例,然后单击 服务凭证新建凭证

    1. 将新凭证命名为 apiaccess,然后选择“管理者”角色。

    2. 记下“操作”列中“查看凭证”下的实际 IAM API 密钥。

  5. 记录源和目标实例 URL。

根据工作流程,您可以使用个人 IAM API 密钥,而不是创建服务级别凭证 (步骤 4),如 创建 API 密钥中所述。

您还可以使用 IBM Cloud CLI 工具链在命令行上完成这些步骤。

生成不记名令牌以针对 IBM Cloudant API 进行认证

在步骤 4.b中,您写下了 apiaccess 键。 立即使用该密钥:

curl -k -X POST \
  --header "Content-Type: application/x-www-form-urlencoded" \
  --header "Accept: application/json" \
  --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" \
  --data-urlencode "apikey=aSCsx4...2lN97h_2Ts" \
  "https://iam.cloud.ibm.com/identity/token"

apiaccess 键返回以下信息 (缩写):

{
   "access_token": "eyJraWQiOiIyMDE5MD...tIwkCO9A",
   "refresh_token": "ReVbNrHo3UA38...mq67g",
   "token_type": "Bearer",
   "expires_in": 3600,
   "expiration": 1566313064,
   "scope": "ibm openid"
}

创建环境变量以通过在响应数据中使用 access_token 键下的值来保存某些类型:

export TOK="Bearer eyJraWQiOiIyMDE5MD...tIwkCO9A"

在源端创建 _replicator 数据库

URL 是您之前在4.b中记录的URL。

curl -k -X PUT \
     -H"Content-type: application/json" \
     -H'Authorization: '"$TOK"'' \
     'https://d43caf1b-e2c8-4d3e-9b85-1d04839fa68f-bluemix.cloudant.com/_replicator'

请参阅以下示例中的结果:

{"ok": "true"}

创建复制作业

创建包含以下信息的名为 data.json 的文件。 这两个键是在开头创建的“源”和“目标”API 键,以及添加了数据库名称的“源”和“目标”实例 URL。

{
  "source": {
    "url": "https://d43caf1b-e2c8-4d3e-9b85-1d04839fa68f-bluemix.cloudant.com/source",
    "auth": {
      "iam": {
        "api_key": "xju1...TxuS"
      }
    }
  },
  "target": {
    "url": "https://dbc68dd8-f69f-4083-97dd-bf0a3e1a467a-bluemix.cloudant.com/target",
    "auth": {
      "iam": {
        "api_key": "UElc7...QIaL01Bjn"
      }
    }
  },
  "create_target": true,
  "continuous": true
}

现在,将名为 source_dest 的复制文档写入源实例上的 _replicator 数据库。

curl -k -X PUT \
     -H"Content-type: application/json" \
     -H'Authorization: '"$TOK"'' \
     'https://d43caf1b-e2c8-4d3e-9b85-1d04839fa68f-bluemix.cloudant.com/_replicator/source_dest' -d@data.json

请参阅以下示例中的结果:

{"ok":true,"id":"source_dest","rev":"1-89b01e42968acd5944ed657b87c49f0c"}

从实例除去 IBM Cloudant 旧凭证

IBM Cloud IAM 是建议的认证模型。 为确保安全,可以请求除去 IBM Cloudant 旧凭证,从而仅对实例使用 IAM 认证。 以下步骤中显示了除去旧凭证的正确过程:

  1. 确保 IBM Cloudant 实例已启用 IAM 身份验证。

  2. 更新应用程序以使用 IAM 认证而不是 IBM Cloudant 旧认证。

  3. 根据需要生成新服务凭证

  4. 打开新的 IBM Cloud 支持案例,该案例请求除去实例的 IBM Cloudant 旧凭证。 包括服务凭证中显示的实例用户名。 有关更多信息,请参阅查找服务凭证

  5. 在支持人员回复已除去旧凭证后,除去之前创建的任何服务凭证都包含不再起作用的旧用户名和密码详细信息。 建议除去所有这些服务凭证条目。

使用 IAM 凭证对实例发出请求

现在,以下部分描述如何通过 IAM 认证将 IBM Cloudant 与服务实例配合使用。 它使用 针对每个选项的服务凭证 JSON 示例 中的详细信息。

在对资源或服务发出请求之前,IBM Cloud IAM 需要用 IAM API 密钥交换有时间限制的访问令牌。 然后,该访问令牌会包含在服务的 Authorization HTTP 头中。 访问令牌到期后,使用应用程序必须负责从 IAM 令牌服务获取新的令牌。 如需了解更多信息,请参阅 《 使用API密钥获取 IBM Cloud IAM令牌 》文档。

IBM Cloudant 的官方客户机库负责为您从 API 密钥中获取令牌。 您可以使用 HTTP直接访问 IBM Cloudant,而无需使用 IBM Cloudant库。 但是,必须通过将 IAM API 密钥与 IAM 令牌服务配合使用来处理交换和刷新有时间限制的访问令牌。 令牌到期后,IBM Cloudant 将返回 HTTP 401 状态码。

必需的客户机库版本

IAM 连接在所有受支持客户机库的最新发行版中可用。 有关更多信息,请参阅 客户机库

Java

以下链接提供了 IBM Cloudant Java™ 库的最新受支持版本:

有关使用 IBM Cloudant SDK for Java的示例,请参阅 API 和 SDK 文档

Node.js

以下链接提供了 IBM Cloudant Node.js 库的最新受支持版本:

有关使用 IBM Cloudant SDK for Node的示例,请参阅 API 和 SDK 文档

Python

以下链接提供了 IBM Cloudant Python 库的最新受支持版本:

有关使用 IBM Cloudant SDK for Python的示例,请参阅 API 和 SDK 文档

执行

以下链接提供了 IBM Cloudant Go 库的最新受支持版本:

有关使用 IBM Cloudant SDK for Go 的示例,请参阅 API 和 SDK 文档

使用 HTTP 客户机进行访问

在对资源或服务发出请求之前,IBM Cloud IAM 需要用 IAM API 密钥交换有时间限制的访问令牌。 然后,该访问令牌会包含在服务的 Authorization HTTP 头中。 访问令牌到期后,客户机必须负责从 IAM 令牌服务获取新的令牌。

如前所述,如果使用 IBM Cloud IAM,那么它要求您首先将 IBM API 密钥交换为限时访问令牌。 之后,使用该令牌向 IBM Cloudant API 进行认证。

在 Python 中,示例可能类似于以下内容:

import time

import requests

API_KEY = "MxVp86XHkU82Wc97tdvDF8qM8B0Xdit2RqR1mGfVXPWz"
ACCOUNT = "76838001-b883-444d-90d0-46f89e942a15-bluemix"

def get_access_token(api_key):
    """Retrieve an access token from the IAM token service."""
    token_response = requests.post(
        "https://iam.cloud.ibm.com/identity/token",
        data={
            "grant_type": "urn:ibm:params:oauth:grant-type:apikey",
            "response_type": "cloud_iam",
            "apikey": api_key
        },
        headers={
            "Accept": "application/json"
        }
    )
    if token_response.status_code == 200:
        print "Got access token from IAM"
        return token_response.json()['access_token']
    else:
        print token_response.status_code, token_response.json()
        return None

def main(api_key, account):
    access_token = None
    while True:
        if not access_token:
            access_token = get_access_token(api_key)

        if access_token:
            response = requests.get(
                "https://{0}.cloudant.com/_all_dbs".format(account),
                headers={
                    "Accept": "application/json",
                    "Authorization": "Bearer {0}".format(access_token)
                }
            )
            print "Got Cloudant response, status code", response.status_code
            if response.status_code == 401:
                print "Token has expired."
                access_token = None

        time.sleep(1)

if __name__ == "__main__":
    main(API_KEY, ACCOUNT)

将 IAM IP 允许列表与 Cloudant 配合使用

您可以在使用 IBM Cloudant时启用 IAM IP 地址访问限制。

要启用 IAM IP 地址访问限制,必须确保配置了 Cloud Identity and Access Management (IAM) IP allowlist,以便 IBM Cloudant 服务仍能正常工作。 IBM Cloudant 在向传递 IAM 凭证的 IBM Cloudant API 认证请求时以及在运行配置为使用 IAM API 密钥进行认证的 复制 时使用 IAM。

IAM 令牌可以在 最多 60 分钟内有效。 这意味着对 IAM IP 允许列表的更改可能不会完全生效,直到此验证周期到期为止,因为仅在令牌创建时实施允许列表。

创建网络区域

要将 IBM Cloudant 添加到 IAM 访问列表,必须首先创建包含 IBM Cloudant 服务的 网络区域

要创建网络区域,请完成以下步骤。

  1. 在 IBM Cloud 控制台中,单击 管理 > 基于上下文的限制,然后选择 网络区域
  2. 单击创建
  3. 输入唯一名称 (例如 cloudant-network) 和 (可选) 描述。
  4. Reference a service 下,选择服务类型 IAM Services 和服务 IBM Cloudant。 单击 添加 以将 IBM Cloudant IP 地址与网络区域相关联。
  5. 单击 下一步 以查看网络区域。
  6. 单击创建

在 IAM IP 允许列表中引用网络区域

以上创建的 网络区域 (称为 cloudant-network) 现在可以在 IAM IP 允许列表中使用。

  1. 在 IBM Cloud 控制台中,单击 管理 > 访问权 (IAM),然后选择 设置
  2. 从“帐户”部分中,启用 IP 地址访问 设置。
  3. Allowed IP addresses 字段中,添加您在上面创建的网络区域的名称 (例如 cloudant-network)。
  4. 单击保存

角色和操作

下表包含 IBM Cloudant的 IAM 角色和操作的完整列表,以及每个 IAM 系统角色所允许的操作的映射。

IBM Cloudant 角色

下表列出了 IBM Cloudant 的可用 IAM 服务角色以及每个角色的简要描述。

IBM Cloudant的 IAM 服务角色
角色 描述
Manager 包括访问所有端点和在实例上执行所有管理功能的能力,例如创建数据库,更改容量,读写数据和索引以及访问仪表板。
Writer 包含对所有数据库和文档进行读写的能力,但无法创建索引。
Reader 包含读取所有数据库和文档的能力,但无法编写新文档或创建索引。
Monitor 包含读取监视端点 (例如 _active_tasks 和复制 _scheduler 端点) 的功能。
Checkpointer 包含编写复制 checkpointer _local 文档的功能。 复制期间在源数据库上必需。

Manager 包含 Reader 和 Writer 的所有操作,Writer 包含 Reader 的所有操作。

IBM Cloudant 操作

下表描述了可用的IAM操作和角色。 对于细颗粒度授权,可以使用 ManagerReaderWriterMonitorCheckpointer 的角色。

使用 Manager 以外的 IAM 角色 (例如 ReaderWriterMonitorCheckpointer) 时,必须 使用 仅使用 IAM 以避免向用户提供包含更大访问许可权的旧凭证。

经理角色的行动和映射
方法 端点 操作名称
GET/PUT /_api/v2/db/<path:db>/_security cloudantnosqldb.sapi.db-security
GET /_api/v2/user/capacity/throughput cloudantnosqldb.capacity-throughput.read
PUT /_api/v2/user/capacity/throughput cloudantnosqldb.capacity-throughput.write
GET /_api/v2/user/current/throughput cloudantnosqldb.current-throughput.read
GET /_api/v2/user/capacity/databases cloudantnosqldb.account-capacity-dbs.read
GET /_api/v2/user/current/databases cloudantnosqldb.account-current-dbs.read
GET /_api/v2/user/activity_tracker/events cloudantnosqldb.activity-tracker-event-types.read
POST /_api/v2/user/activity_tracker/events cloudantnosqldb.activity-tracker-event-types.write
POST /_api/v2/api_keys cloudantnosqldb.sapi.apikeys
GET/POST /_api/v2/user/config/cors/ cloudantnosqldb.sapi.usercors
GET/PUT /_api/v2/user/plan cloudantnosqldb.sapi.userplan
GET /_api/v2/user/ccm_diagnostics cloudantnosqldb.sapi.userccmdiagnostics
GET /_api/v2/user/last_activity cloudantnosqldb.sapi.lastactivity
GET /_api/v2/support/tickets/$CASEID/files/$ATTACHMENTID cloudantnosqldb.sapi.supportattachments
GET/POST /_api/v2/support/tickets cloudantnosqldb.sapi.supporttickets
GET/PUT/DELETE /_api/v2/support/tickets/$CASEID cloudantnosqldb.sapi.supporttickets
GET /_api/v2/user cloudantnosqldb.sapi.userinfo
GET /_api/v2/usage/data_volume/_api/v2/usage/$YEAR/$MONTH cloudantnosqldb.sapi.usage-data-volume
GET/HEAD / cloudantnosqldb.account-meta-info.read
GET/HEAD /_active_tasks cloudantnosqldb.account-active-tasks.read
GET/HEAD /_replicator cloudantnosqldb.replicator-database-info.read
GET/HEAD /_replicator/$DOCUMENT cloudantnosqldb.replication.read
GET/HEAD /_scheduler/jobs cloudantnosqldb.replication-scheduler.read
GET/HEAD /_scheduler/docs cloudantnosqldb.replication-scheduler.read
POST /_replicate cloudantnosqldb.replication.write
POST /_replicator cloudantnosqldb.replication.write
PUT/DELETE /_replicator cloudantnosqldb.replicator-database.create
PUT/DELETE /_replicator/$DOCUMENT cloudantnosqldb.replication.write
GET/HEAD /_up cloudantnosqldb.account-up.read
PUT /$DATABASE/ cloudantnosqldb.database.create
DELETE /$DATABASE cloudantnosqldb.database.delete
POST /$DATABASE/_design_docs/queries cloudantnosqldb.any-document.read
GET/HEAD /$DATABASE/_design/$DOCUMENT_ID/_geo_info cloudantnosqldb.any-document.read
GET/HEAD /$DATABASE/_design/$DOCUMENT_ID/_info/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
GET /$DATABASE/_design/$DOCUMENT_ID/_search_disk_size/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
GET /$DATABASE/_design/$DOCUMENT_ID/_search_info/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
GET/HEAD /$DATABASE/_index/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
GET /$DATABASE/_design_docs cloudantnosqldb.any-document.read
GET /$DATABASE/_design/$DOCUMENT_ID cloudantnosqldb.any-document.read
GET/HEAD /$DATABASE/_design/$DOCUMENT_ID/$ATTACHMENT cloudantnosqldb.any-document.read
PUT /$DATABASE/_design/$DOCUMENT_ID cloudantnosqldb.design-document.write
COPY /$DATABASE/_design/$DOCUMENT_ID cloudantnosqldb.design-document.write
DELETE /$DATABASE/_design/$DOCUMENT_ID cloudantnosqldb.design-document.write
PUT /$DATABASE/_design/$DOCUMENT_ID/$ATTACHMENT cloudantnosqldb.design-document.write
DELETE /$DATABASE/_design/$DOCUMENT_ID/$ATTACHMENT cloudantnosqldb.design-document.write
POST/DELETE /$DATABASE/_index/$FURTHER_PATH_PARTS cloudantnosqldb.design-document.write
GET/HEAD /$DATABASE/_security cloudantnosqldb.database-security.read
PUT /$DATABASE/_security cloudantnosqldb.database-security.write
GET/HEAD /$DATABASE/_shards cloudantnosqldb.database-shards.read
COPY (取决于写入文档类型。) /$DATABASE/$DOCUMENT_ID cloudantnosqldb.any-document.read + cloudantnosqldb.design-document.write 其中一个或两个 cloudantnosqldb.local-document.write 其中一个或两个 cloudantnosqldb.data-document.write
GET /_membership cloudantnosqldb.cluster-membership.read
POST /$DATABASE/_ensure_full_commit cloudantnosqldb.database-ensure-full-commit.execute
PUT /_users cloudantnosqldb.users-database.create
GET/HEAD /_users cloudantnosqldb.users-database-info.read
DELETE /_users cloudantnosqldb.users-database.delete
GET/HEAD /_users/$DOCUMENT cloudantnosqldb.users.read
GET/POST /_users/_all_docs cloudantnosqldb.users.read
GET/POST /_users/_changes cloudantnosqldb.users.read
POST /_users/_missing_revs cloudantnosqldb.users.read
POST /_users/_revs_diff cloudantnosqldb.users.read
POST /_users/_bulk_get cloudantnosqldb.users.read
PUT/DELETE /_users/$DOCUMENT cloudantnosqldb.users.write
POST /_users/_bulk_docs cloudantnosqldb.users.write
POST /_users/ cloudantnosqldb.users.write
GET/HEAD /_uuids cloudantnosqldb.cluster-uuids.execute
POST /$DATABASE/ cloudantnosqldb.data-document.writecloudantnosqldb.design-document.writecloudantnosqldb.local-document.write
POST /$DATABASE/_bulk_docs cloudantnosqldb.data-document.write 一个或两个 cloudantnosqldb.design-document.write 一个或两个 cloudantnosqldb.local-document.write
PUT /$DATABASE/$DOCUMENT_ID cloudantnosqldb.data-document.write
DELETE /$DATABASE/$DOCUMENT_ID cloudantnosqldb.data-document.write
PUT /$DATABASE/$DOCUMENT_ID/$ATTACHMENT cloudantnosqldb.data-document.write
DELETE /$DATABASE/$DOCUMENT_ID/$ATTACHMENT cloudantnosqldb.data-document.write
PUT/DELETE /$DATABASE/_local/$DOCUMENT_ID cloudantnosqldb.local-document.write
COPY (取决于写入文档类型。) /$DATABASE/_local/$DOCUMENT_ID cloudantnosqldb.any-document.read + cloudantnosqldb.design-document.write 其中一个或两个 cloudantnosqldb.local-document.write 其中一个或两个 cloudantnosqldb.data-document.write
GET/HEAD /_iam_session cloudantnosqldb.iam-session.read
POST /_iam_session cloudantnosqldb.iam-session.write
DELETE /_iam_session cloudantnosqldb.iam-session.delete
GET/HEAD /_session cloudantnosqldb.session.read
POST /_session cloudantnosqldb.session.write
DELETE /_session cloudantnosqldb.session.delete
GET/HEAD /_all_dbs cloudantnosqldb.account-all-dbs.read
POST /_dbs_info cloudantnosqldb.account-dbs-info.read
GET /$DATABASE/ cloudantnosqldb.database-info.read
GET/POST /$DATABASE/_all_docs cloudantnosqldb.any-document.read
GET/POST /$DATABASE/_changes cloudantnosqldb.any-document.read
GET/HEAD /$DATABASE/$DOCUMENT_ID cloudantnosqldb.any-document.read
GET/HEAD /$DATABASE/$DOCUMENT_ID/$ATTACHMENT cloudantnosqldb.any-document.read
POST /$DATABASE/_bulk_get cloudantnosqldb.any-document.read
GET/POST /_search_analyze cloudantnosqldb.account-search-analyze.execute
POST /$DATABASE/_all_docs/queries cloudantnosqldb.any-document.read
GET/HEAD /$DATABASE/_design/$DOCUMENT_ID/_geo/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
GET/POST /$DATABASE/_design/$DOCUMENT_ID/_search/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
POST /$DATABASE/_design/$DOCUMENT_ID/_view/$VIEW/queries cloudantnosqldb.any-document.read
GET/POST /$DATABASE/_design/$DOCUMENT_ID/_view/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
POST /$DATABASE/_explain/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
POST /$DATABASE/_find/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
GET /$DATABASE/_local/$DOCUMENT_ID cloudantnosqldb.any-document.read
POST /$DATABASE/_missing_revs cloudantnosqldb.any-document.read
POST /$DATABASE/_revs_diff cloudantnosqldb.any-document.read
作家角色的行动和映射
方法 端点 操作名称
GET /_api/v2/user/activity_tracker/events cloudantnosqldb.activity-tracker-event-types.read
GET /_api/v2/user/capacity/databases cloudantnosqldb.account-capacity-dbs.read
GET /_api/v2/user/current/databases cloudantnosqldb.account-current-dbs.read
GET/HEAD /_uuids cloudantnosqldb.cluster-uuids.execute
POST /$DATABASE/ cloudantnosqldb.data-document.writecloudantnosqldb.design-document.writecloudantnosqldb.local-document.write
POST /$DATABASE/_bulk_docs cloudantnosqldb.data-document.write 一个或两个 cloudantnosqldb.design-document.write 一个或两个 cloudantnosqldb.local-document.write
PUT /$DATABASE/$DOCUMENT_ID cloudantnosqldb.data-document.write
DELETE /$DATABASE/$DOCUMENT_ID cloudantnosqldb.data-document.write
PUT /$DATABASE/$DOCUMENT_ID/$ATTACHMENT cloudantnosqldb.data-document.write
DELETE /$DATABASE/$DOCUMENT_ID/$ATTACHMENT cloudantnosqldb.data-document.write
PUT/DELETE /$DATABASE/_local/$DOCUMENT_ID cloudantnosqldb.local-document.write
GET/HEAD /_iam_session cloudantnosqldb.iam-session.read
POST /_iam_session cloudantnosqldb.iam-session.write
DELETE /_iam_session cloudantnosqldb.iam-session.delete
GET/HEAD /_session cloudantnosqldb.session.read
POST /_session cloudantnosqldb.session.write
DELETE /_session cloudantnosqldb.session.delete
GET/HEAD /_all_dbs cloudantnosqldb.account-all-dbs.read
POST /_dbs_info cloudantnosqldb.account-dbs-info.read
GET /$DATABASE/ cloudantnosqldb.database-info.read
GET/POST /$DATABASE/_all_docs cloudantnosqldb.any-document.read
GET/POST /$DATABASE/_changes cloudantnosqldb.any-document.read
GET/HEAD /$DATABASE/$DOCUMENT_ID cloudantnosqldb.any-document.read
GET/HEAD /$DATABASE/$DOCUMENT_ID/$ATTACHMENT cloudantnosqldb.any-document.read
POST /$DATABASE/_bulk_get cloudantnosqldb.any-document.read
GET/POST /_search_analyze cloudantnosqldb.account-search-analyze.execute
POST /$DATABASE/_all_docs/queries cloudantnosqldb.any-document.read
GET/HEAD /$DATABASE/_design/$DOCUMENT_ID/_geo/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
GET/POST /$DATABASE/_design/$DOCUMENT_ID/_search/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
POST /$DATABASE/_design/$DOCUMENT_ID/_view/$VIEW/queries cloudantnosqldb.any-document.read
GET/POST /$DATABASE/_design/$DOCUMENT_ID/_view/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
POST /$DATABASE/_explain/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
POST /$DATABASE/_find/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
GET /$DATABASE/_local/$DOCUMENT_ID cloudantnosqldb.any-document.read
POST /$DATABASE/_missing_revs cloudantnosqldb.any-document.read
POST /$DATABASE/_revs_diff cloudantnosqldb.any-document.read
GET/HEAD / cloudantnosqldb.account-meta-info.read
POST /$DATABASE/_ensure_full_commit cloudantnosqldb.database-ensure-full-commit.execute
读者角色的行动和映射
方法 端点 操作名称
GET /_api/v2/user/activity_tracker/events cloudantnosqldb.activity-tracker-event-types.read
GET /_api/v2/user/capacity/databases cloudantnosqldb.account-capacity-dbs.read
GET /_api/v2/user/current/databases cloudantnosqldb.account-current-dbs.read
GET/HEAD /_iam_session cloudantnosqldb.iam-session.read
POST /_iam_session cloudantnosqldb.iam-session.write
DELETE /_iam_session cloudantnosqldb.iam-session.delete
GET/HEAD /_session cloudantnosqldb.session.read
POST /_session cloudantnosqldb.session.write
DELETE /_session cloudantnosqldb.session.delete
GET/HEAD /_all_dbs cloudantnosqldb.account-all-dbs.read
POST /_dbs_info cloudantnosqldb.account-dbs-info.read
GET /$DATABASE/ cloudantnosqldb.database-info.read
GET/POST /$DATABASE/_all_docs cloudantnosqldb.any-document.read
GET/POST /$DATABASE/_changes cloudantnosqldb.any-document.read
GET/HEAD /$DATABASE/$DOCUMENT_ID cloudantnosqldb.any-document.read
GET/HEAD /$DATABASE/$DOCUMENT_ID/$ATTACHMENT cloudantnosqldb.any-document.read
POST /$DATABASE/_bulk_get cloudantnosqldb.any-document.read
GET/POST /_search_analyze cloudantnosqldb.account-search-analyze.execute
POST /$DATABASE/_all_docs/queries cloudantnosqldb.any-document.read
GET/HEAD /$DATABASE/_design/$DOCUMENT_ID/_geo/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
GET/POST /$DATABASE/_design/$DOCUMENT_ID/_search/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
POST /$DATABASE/_design/$DOCUMENT_ID/_view/$VIEW/queries cloudantnosqldb.any-document.read
GET/POST /$DATABASE/_design/$DOCUMENT_ID/_view/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
POST /$DATABASE/_explain/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
POST /$DATABASE/_find/$FURTHER_PATH_PARTS cloudantnosqldb.any-document.read
GET /$DATABASE/_local/$DOCUMENT_ID cloudantnosqldb.any-document.read
POST /$DATABASE/_missing_revs cloudantnosqldb.any-document.read
POST /$DATABASE/_revs_diff cloudantnosqldb.any-document.read
GET/HEAD / cloudantnosqldb.account-meta-info.read
监测员角色的行动和映射
方法 端点 操作名称
GET /_api/v2/usage/data_volume/_api/v2/usage/$YEAR/$MONTH cloudantnosqldb.sapi.usage-data-volume
GET /_api/v2/user/capacity/throughput cloudantnosqldb.capacity-throughput.read
GET /_api/v2/user/current/throughput cloudantnosqldb.current-throughput.read
GET /_api/v2/user/capacity/databases cloudantnosqldb.account-capacity-dbs.read
GET /_api/v2/user/current/databases cloudantnosqldb.account-current-dbs.read
GET/HEAD / cloudantnosqldb.account-meta-info.read
GET/HEAD /_active_tasks cloudantnosqldb.account-active-tasks.read
GET/HEAD /_scheduler/jobs cloudantnosqldb.replication-scheduler.read
GET/HEAD /_scheduler/docs cloudantnosqldb.replication-scheduler.read
GET/HEAD /_up cloudantnosqldb.account-up.read
GET/HEAD /$DATABASE/_shards cloudantnosqldb.database-shards.read
PUT/DELETE /$DATABASE/_local/$DOCUMENT_ID cloudantnosqldb.local-document.write
POST /_dbs_info cloudantnosqldb.account-dbs-info.read
GET /$DATABASE/ cloudantnosqldb.database-info.read
校验指针角色的行动和映射
方法 端点 操作名称
PUT/DELETE /$DATABASE/_local/$DOCUMENT_ID cloudantnosqldb.local-document.write

不可用端点

以下终端对通过 IAM 授权的请求不可用:

  • HTTP 重写处理程序 -。/db/_design/design-doc/_rewrite/path

虽然设计文档可以包含重写处理程序,但用户无法对其进行调用。

  • 更新处理程序 - POST /db/_design/ddoc/_update/func.

虽然设计文档可以包含更新函数,但用户无法对其进行调用。

故障诊断

如果在向 IBM Cloudant 服务实例发出请求时无法使用 IAM 进行认证,请验证您的帐户,如下一节中所示。

确保您的帐户已启用IAM

在 IBM Cloudant 仪表板的“概览”部分,部署详情下列出了“认证方法”。 此处列出了可用的认证方法。