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 概觀:

  • 管理使用者及服務 ID。
  • 管理可用的認證。
  • 使用容許及撤銷對 IBM Cloudant 服務實例之存取權的 IAM 存取原則。

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,但不建議如此使用。 提出這項建議的原因是 IBM Cloudant API 金鑰和許可權無法使用 IAM 原則介面來顯示或管理,因此無法進行整體存取管理。

選擇只使用 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。

接下來,您可以看到服務憑證 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。 使用的主要優點 IBM Cloud IAM 顯示在下列清單中:

  • 使用 IBM Cloud 標準工具 (而不是 IBM Cloud 和 IBM Cloudant特定認證管理的組合) 來管理對 IBM Cloudant 的存取權。
  • 當您使用 IBM Cloud IAM 時,可以輕鬆地撤銷及輪替認證。

每種方法的優缺點進一步說明如下。

當您使用 Manager 以外的 IAM 角色 (例如 ReaderWriterMonitorCheckpointer) 時,您 必須 使用 僅使用 IAM,以避免為使用者提供包含更高存取權的舊式認證。

兩種存取控制機制的優缺點

整體而言,IBM Cloud IAM 是建議的鑑別模型。 但是,這種方法的主要缺點是,如果您有一個現有的應用程式 或無法使用 IBM Cloudant 支援的用戶端函式庫。

IAM 模式的優點

  • 使用一個介面,來管理許多服務的存取權。
  • 整體地撤銷使用者存取權。
  • 使用服務 ID 的帳戶層次 API 金鑰。
  • 容易輪替的認證。
  • Activity Tracker 日誌會擷取個人及服務。
  • IAM 會與其他身分系統(例如企業 LDAP 儲存庫)聯合。
  • 精細許可權 (例如,ReaderWriterMonitorCheckpointer)。

IAM 模式的缺點

  • 如果您沒有使用 IBM Cloudant 支援的函式庫,可能需要變更應用程式才能使用 IAM 的 API 金鑰和存取權限。
  • 某些端點無法使用。 如需相關資訊,請參閱無法使用的端點
  • 無法指定資料庫為「公開」,也就是不需要授權使用者才能存取。

舊式模式的優點

  • 不需要變更現有應用程式或用戶端程式庫相依關係。

舊式模式的缺點

  • IBM Cloudant 認證的獨立管理,因此無法在集中化介面中全面掌握所有存取權限。

資料庫級 IAM 策略

可以定義 IAM 策略來限制對單一資料庫或與通配符模式相符的資料庫的存取。

若要定位資料庫,請將屬性 Resource Type 設為 database。 有兩個可用的運算子:

資料庫級 IAM 運算符
操作員 說明
string equals 完全匹配 URL 編碼的資料庫名稱。
string matches 匹配使用多字元通配符 (*)(匹配零個或多個字元的任何序列)、單字元通配符 (?)(匹配任何單字元)或兩者皆使用。

資料庫名稱應在政策的資源 ID 欄位中使用 URL 編碼,但正斜線除外 /。 這不適用於策略中的任何通配符。

請注意,將 Resource Type(資源類型 )或 Resource ID(資源 ID )欄位留空,將會建立一個實體層級政策。

範例

資料庫級 IAM 運算子範例
說明 屬性 操作員
名為 movies 的資料庫 資源類型 string equals database
資源 ID string equals movies
movies 開頭的資料庫 資源類型 string equals database
資源 ID string matches movies*
名為 movies+new 的資料庫 資源類型 string equals database
資源 ID string equals movies%2Bnew
movies+* 開頭的資料庫 資源類型 string equals database
資源 ID string matches movies%2B*
名為 movies/new 的資料庫 資源類型 string equals database
資源 ID 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 允許清單,以便 IBM Cloudant 服務仍可運作。 IAM 由 IBM Cloudant 在向傳遞 IAM 認證的 IBM Cloudant API 鑑別要求時,以及執行配置為使用 IAM API 金鑰進行鑑別的 抄寫 時使用。

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 文件的能力。 抄寫期間來源資料庫上的必要項目。

「管理員」包含「讀者」和「撰寫者」的所有動作,「撰寫者」包含「讀者」的所有動作。

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 Dashboard 的「總覽」部分,「驗證方法」列在部署詳細資訊下。 此處列出了可用的鑑別方法。