

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用角色型存取控制進行資料庫存取
<a name="role_based_access_control"></a>

您可以在 Amazon DocumentDB （具有 MongoDB 相容性） 中使用*角色型存取控制* (RBAC)，限制存取使用者可以在資料庫上執行的動作。RBAC 的運作方式是將一或多個角色授予使用者。這些角色決定使用者可以對資料庫資源執行的操作。Amazon DocumentDB 目前支援範圍在資料庫層級的內建角色，例如 `read`、`clusterAdmin`、、 `readWrite` `readAnyDatabase`和使用者定義的角色，這些角色可以範圍限定於特定動作和精細的資源，例如根據您的需求收集。

RBAC 的常見使用案例包括透過建立對叢集中的資料庫或集合具有唯讀存取權的使用者來強制執行最低權限，以及多租用戶應用程式設計，可讓單一使用者存取叢集中的指定資料庫或集合。

**注意**  
所有在 **2020 年 3 月 26 日**之前建立的新使用者均獲授予 `dbAdminAnyDatabase`、`readWriteAnyDatabase` 和 `clusterAdmin` 角色。建議您重新評估所有現有使用者，並視需要修改角色，以強制執行叢集的最低權限。

**Topics**
+ [RBAC 概念](#role_based_access_control-concepts)
+ [RBAC 內建角色入門](#role_based_access_control-getting_started)
+ [RBAC 使用者定義角色入門](#w2aac29c29c15)
+ [以使用者身分連線至 Amazon DocumentDB](#role_based_access_control-connecting_as_user)
+ [常見命令](#role_based_access_control-common_commands)
+ [功能差異](#role_based_access_control-functional_differences)
+ [限制](#role_based_access_control-limits)
+ [使用角色型存取控制進行資料庫存取](#role_based_access_control-built_in_roles)

## RBAC 概念
<a name="role_based_access_control-concepts"></a>

以下是與以角色為基礎的存取控制相關的重要術語與概念。如需 Amazon DocumentDB 使用者的詳細資訊，請參閱 [管理 Amazon DocumentDB 使用者](security.managing-users.md)。
+ **使用者** — 可對資料庫進行身分驗證並執行操作的個別實體。
+ **密碼** — 用來驗證使用者的秘密。
+ **角色** — 授權使用者在一或多個資料庫上執行動作。
+ **Admin Database** — 存放和授權使用者的資料庫。
+ **資料庫 (`db`)** — 叢集內的命名空間，其中包含用於存放文件的集合。

以下命令會建立一個名為 `sample-user` 的使用者。

```
db.createUser({user: "sample-user", pwd: "abc123", roles: [{role: "read", db: "sample-database"}]})
```

在此範例中：
+ `user: "sample-user"` — 表示使用者名稱。
+ `pwd: "abc123"` — 表示使用者密碼。
+ `role: "read", "db: "sample-database"` — 表示使用者`sample-user`在 中具有讀取許可`sample-database`。

![\[顯示 createUser 命令的程式碼範例，當中指出使用者名稱、密碼和許可。\]](http://docs.aws.amazon.com/zh_tw/documentdb/latest/developerguide/images/rbac-createuser-command.png)


以下範例顯示在您透過 `db.getUser(sample-user)` 取得使用者 `sample-user` 後的輸出 。在此範例中，使用者 `sample-user` 位於 `admin` 資料庫中，但具有 `sample-database` 資料庫的讀取角色。

![\[程式碼輸出範例顯示定義新使用者 ID 的 createUser 命令結果、新使用者指派的管理員資料庫，以及套用至使用者的角色許可。\]](http://docs.aws.amazon.com/zh_tw/documentdb/latest/developerguide/images/rbac-createuser-output-json.png)


建立使用者時，如果您在指定角色時省略 `db` 欄位，Amazon DocumentDB 會將角色隱含地歸因於發出連線的資料庫。例如，如果您的連線是針對資料庫 `sample-database` 發出，並執行以下命令，則使用者 `sample-user` 將建立於 `admin` 資料庫中，並將具有資料庫 `sample-database` 的 `readWrite` 許可。

```
db.createUser({user: "sample-user", pwd: "abc123", roles: ["readWrite"]})
```

此操作的輸出將會如下所示。

```
{
   "user":"sample-user",
   "roles":[
      {
         "db":"sample-database",
         "role":"readWrite"
      }
   ]
}
```

建立具有所有資料庫範圍的角色的使用者 (例如，`readAnyDatabase`) 時，您必須在建立使用者時位於 `admin` 資料庫內容中，或是在建立使用者時明確地陳述角色的資料庫。要對 `admin` 資料庫發出命令，您可以使用命令 `use admin`。如需詳細資訊，請參閱[常見命令](#role_based_access_control-common_commands)。

## RBAC 內建角色入門
<a name="role_based_access_control-getting_started"></a>

為了協助您開始使用以角色為基礎的存取控制，本節會逐一解說透過為具有不同任務職能的三個使用者建立角色，強制最低權限的案例範例。
+ `user1` 是一名新主管，需要能夠檢視和存取叢集中的所有資料庫。
+ `user2` 是一名新員工，只需要存取同一個叢集中的一個資料庫 `sample-database-1`。
+ `user3` 是現有員工，需要在同一個叢集中檢視和存取他們之前無法存取的不同資料庫 `sample-database-2`。

`user1` 和 `user2` 稍後離職，因此必須撤銷他們的存取權。

若要建立使用者並授予角色，您向叢集驗證的使用者必須具有可對 `createUser` 和 `grantRole` 執行動作的相關角色。例如，角色 `admin` 和 `userAdminAnyDatabase` 都可以授予這些能力。如需每個角色的動作，請參閱[使用角色型存取控制進行資料庫存取](#role_based_access_control-built_in_roles)。

**注意**  
在 Amazon DocumentDB 中，無論您是否針對`admin`資料庫發出命令`create`，所有使用者和角色操作 （例如 、`revoke`、`get``drop``grant`、、 等） 都會隱含地在`admin`資料庫中執行。

首先，要了解叢集中目前有哪些使用者和角色，您可以執行 `show users` 命令，如下列範例所示。您將看到兩個使用者，`serviceadmin`以及叢集的主要使用者。這兩個使用者永遠存在且無法刪除。如需詳細資訊，請參閱[管理 Amazon DocumentDB 使用者](security.managing-users.md)。

```
show users
```

對於 `user1`，使用下列命令建立對整個叢集中所有資料庫具有讀寫存取權的角色。

```
db.createUser({user: "user1", pwd: "abc123", roles: [{role: "readWriteAnyDatabase", db: "admin"}]})
```

此操作的輸出將會如下所示。

```
{
   "user":"user1",
   "roles":[
      {
         "role":"readWriteAnyDatabase",
         "db":"admin"
      }
   ]
}
```

對於 `user2`，使用下列命令建立對資料庫 `sample-database-1` 具有唯讀存取權的角色。

```
db.createUser({user: "user2", pwd: "abc123", roles: [{role: "read", db: "sample-database-1"}]})
```

此操作的輸出將會如下所示。

```
{
   "user":"user2",
   "roles":[
      {
         "role":"read",
         "db":"sample-database-1"
      }
   ]
}
```

若要模擬 `user3` 為現有使用者的案例，請先建立使用者 `user3`，然後指派新角色給 `user3`。

```
db.createUser({user: "user3", pwd: "abc123", roles: [{role: "readWrite", db: "sample-database-1"}]})
```

此操作的輸出將會如下所示。

```
{
   "user":"user3",
   "roles":[
      {
         "role":"readWrite",
         "db":"sample-database-1"
      }
   ]
}
```

建立使用者 `user3` 後，請將 `user3` 的角色 `read` 指派給 `sample-database-2`。

```
db.grantRolesToUser("user3", [{role: "read", db: "sample-database-2"}])
```

最後，`user1` 和 `user2` 都離職了，而需要撤銷他們對叢集的存取權。您可以透過捨棄使用者來做到這一點，如下所示。

```
db.dropUser("user1")
db.dropUser("user2")
```

若要確保所有使用者都具有適當的角色，您可以使用下列命令列出所有使用者。

```
show users
```

此操作的輸出將會如下所示。

```
{
   "_id":"serviceadmin",
   "user":"serviceadmin",
   "db":"admin",
   "roles":[
      {
         "db":"admin",
         "role":"root"
      }
   ]
}
{
   "_id":"master-user",
   "user":"master-user",
   "db":"admin",
   "roles":[
      {
         "db":"admin",
         "role":"root"
      }
   ]
}
{
   "_id":"user3",
   "user":"user3",
   "db":"admin",
   "roles":[
      {
         "db":"sample-database-2",
         "role":"read"
      },
      {
         "db":"sample-database-1",
         "role":"readWrite"
      }
   ]
}
```

## RBAC 使用者定義角色入門
<a name="w2aac29c29c15"></a>

為了協助您開始使用使用者定義的角色，本節會逐步解說範例案例：透過為具有不同任務職能的三個使用者建立角色，強制執行最低權限。

在此範例中，適用下列內容：
+ `user1` 是一名新主管，需要能夠檢視和存取叢集中的所有資料庫。
+ `user2` 是新員工，只需要對該相同叢集`sample-database-1`中的一個資料庫 執行「尋找」動作。
+ `user3` 是現有員工，需要檢視和存取相同叢集中先前`sample-database-2`無法存取之不同資料庫中的特定集合 col2。
+ 對於 `user1`，使用下列命令建立對整個叢集中所有資料庫具有讀寫存取權的角色。

```
db.createUser(
	{
	    user: "user1", pwd: "abc123", 
	    roles: [{role: "readWriteAnyDatabase", db: "admin"}]
	}
	)
```

此操作的輸出將會如下所示。

```
{
   "user":"user1",
   "roles":[
      {
         "role":"readWriteAnyDatabase",
         "db":"admin"
      }
   ]
}
```

對於 `user2`，`sample-database-1`使用下列命令，為資料庫中的所有集合建立具有「尋找」權限的角色。請注意，此角色會確保任何相關聯的使用者只能執行尋找查詢。

```
db.createRole(
{
    role: "findRole",
    privileges: [
    {
        resource: {db: "sample-database-1", collection: ""}, actions: ["find"]
    }],
    roles: []
}
)
```

此操作的輸出將會如下所示。

```
{
   "role":"findRole",
   "privileges":[
      {
         "resource":{
            "db":"sample-database-1",
            "collection":""
         },
         "actions":[
            "find"
         ]
      }
   ],
   "roles":[
      
   ]
}
```

接著，建立使用者 (`user2`) 並將最近建立的角色連接到`findRole`使用者。

```
db.createUser(
{
    user: "user2", 
    pwd: "abc123", 
    roles: []
})

	db.grantRolesToUser("user2",["findRole"])
```

若要模擬`user3`現有使用者的案例，請先建立使用者 `user3`，然後建立名為 collectionRole 的新角色，我們將在下一個步驟中說明該角色`user3`。

現在您可以將新角色指派給 `user3`。這個新角色將允許 `user3`插入、更新、刪除和尋找 中某個特定集合 col2 的存取權`sample-database-2`。

```
db.createUser(
{
    user: "user3", 
    pwd: "abc123", 
    roles: []
})

db.createRole(
{
    role: "collectionRole",
    privileges: [
    {
        resource: {db: "sample-database-2", collection: "col2"}, actions: ["find", "update", "insert", "remove"]
    }],
    roles: []
}
)
```

此操作的輸出將會如下所示。

```
{
   "role":"collectionRole",
   "privileges":[
      {
         "resource":{
            "db":"sample-database-2",
            "collection":"col2"
         },
         "actions":[
            "find",
            "update",
            "insert",
            "remove"
         ]
      }
   ],
   "roles":[
      
   ]
}
```

現在`user3`已建立使用者，您可以授予`user3`角色 `collectionFind`。

```
db.grantRolesToUser("user3",["collectionRole"])
```

最後，`user1` 和 `user2` 都離職了，而需要撤銷他們對叢集的存取權。您可以透過捨棄使用者來做到這一點，如下所示。

```
db.dropUser("user1")
db.dropUser("user2")
```

若要確保所有使用者都具有適當的角色，您可以使用下列命令列出所有使用者。

```
show users
```

此操作的輸出將會如下所示。

```
{
   "_id":"serviceadmin",
   "user":"serviceadmin",
   "db":"admin",
   "roles":[
      {
         "db":"admin",
         "role":"root"
      }
   ]
}
{
   "_id":"master-user",
   "user":"master-user",
   "db":"admin",
   "roles":[
      {
         "db":"admin",
         "role":"root"
      }
   ]
}
{
   "_id":"user3",
   "user":"user3",
   "db":"admin",
   "roles":[
      {
         "db":"admin",
         "role":"collectionRole"
      }
   ]
}
```

## 以使用者身分連線至 Amazon DocumentDB
<a name="role_based_access_control-connecting_as_user"></a>

連線至 Amazon DocumentDB 叢集時，您會在特定資料庫的內容中連線。根據預設，如果您未在連線字串中指定資料庫，則會自動連接到 `test` 資料庫內容中的叢集。會對 `test` 資料庫中的集合發出所有像 `insert` 和 `find` 之類的集合層級命令。

若要查看您位於 或 的資料庫，換句話說，針對 發出命令，請在 mongo shell 中使用 `db`命令，如下所示。

查詢：

```
db
```

輸出：

```
test
```

雖然預設連線可能在 `test` 資料庫的內容中，但這並不一定表示與連線關聯的使用者有權對 `test` 資料庫執行動作。在上述範例案例中，如果您以具有 `sample-database-1` 資料庫 `readWrite` 角色的使用者 `user3` 身分驗證，則連線的預設內容是 `test` 資料庫。不過，如果您嘗試將文件插入 `test` 資料庫上的集合中，您會收到*授權失敗*的錯誤訊息。這是因為該使用者未獲權在該資料庫上執行該命令，如下圖所示。

查詢：

```
db
```

輸出：

```
test
```

查詢：

```
db.col.insert({x:1})
```

輸出：

```
WriteCommandError({ "ok" : 0, "code" : 13, "errmsg" : "Authorization failure" })
```

如果您變更連接到 `sample-database-1` 資料庫的內容，則可以寫入使用者有權執行此操作的集合。

查詢：

```
use sample-database-1
```

輸出：

```
switched to db sample-database-1
```

查詢：

```
db.col.insert({x:1})
```

輸出：

```
WriteResult({ "nInserted" : 1})
```

當您對具有特定使用者的叢集進行驗證時，也可以在連線字串中指定資料庫。如此在使用者通過 `admin` 資料庫驗證之後就不必執行 `use` 命令。

以下連線字串會對 `admin` 資料庫驗證使用者，但連線的內容將是針對 `sample-database-1` 資料庫。

```
mongo "mongodb://user3:abc123@sample-cluster.node.us-east-1.docdb.amazonaws.com:27017/sample-database-2"
```

## 常見命令
<a name="role_based_access_control-common_commands"></a>

本節提供在 Amazon DocumentDB 中使用角色型存取控制的常見命令範例。您必須位於 `admin` 資料庫的內容中，才能建立和修改使用者和角色。您可以使用 `use admin` 命令切換至 `admin` 資料庫。

**注意**  
對使用者和角色的修改將隱含地發生在 `admin` 資料庫中。建立具有所有資料庫範圍之角色的使用者 (例如，`readAnyDatabase`) 時，您必須在建立使用者時位於 `admin` 資料庫內容中 (亦即 `use admin`)，或是在建立使用者時明確地陳述角色的資料庫 (如本節中的範例 2 所示)。

**範例 1**：建立具有資料庫 `read`角色的使用者`foo`。

```
db.createUser({user: "readInFooBar", pwd: "abc123", roles: [{role: "read", db: "foo"}]})
```

此操作的輸出將會如下所示。

```
{
   "user":"readInFooBar",
   "roles":[
      {
         "role":"read",
         "db":"foo"
      }
   ]
}
```

**範例 2**：在所有資料庫上建立具有讀取存取權的使用者。

```
db.createUser({user: "readAllDBs", pwd: "abc123", roles: [{role: "readAnyDatabase", db: "admin"}]})
```

此操作的輸出將會如下所示。

```
{
   "user":"readAllDBs",
   "roles":[
      {
         "role":"readAnyDatabase",
         "db":"admin"
      }
   ]
}
```

**範例 3**：將`read`角色授予新資料庫上的現有使用者。

```
db.grantRolesToUser("readInFooBar", [{role: "read", db: "bar"}])
```

**範例 4**：更新使用者的角色。

```
db.updateUser("readInFooBar", {roles: [{role: "read", db: "foo"}, {role: "read", db: "baz"}]})
```

**範例 5**：撤銷使用者資料庫的存取權。

```
db.revokeRolesFromUser("readInFooBar", [{role: "read", db: "baz"}])
```

**範例 6**：描述內建角色。

```
db.getRole("read", {showPrivileges:true})
```

此操作的輸出將會如下所示。

```
{
   "role":"read",
   "db":"sample-database-1",
   "isBuiltin":true,
   "roles":[
      
   ],
   "inheritedRoles":[
      
   ],
   "privileges":[
      {
         "resource":{
            "db":"sample-database-1",
            "collection":""
         },
         "actions":[
            "changeStream",
            "collStats",
            "dbStats",
            "find",
            "killCursors",
            "listCollections",
            "listIndexes"
         ]
      }
   ],
   "inheritedPrivileges":[
      {
         "resource":{
            "db":"sample-database-1",
            "collection":""
         },
         "actions":[
            "changeStream",
            "collStats",
            "dbStats",
            "find",
            "killCursors",
            "listCollections",
            "listIndexes"
         ]
      }
   }
```

**範例 7**：從叢集捨棄使用者。

```
db.dropUser("readInFooBar")
```

此操作的輸出將會如下所示。

```
true
```

**範例 8**：建立具有特定集合讀取和寫入存取權的角色

```
db.createRole(
{
    role: "collectionRole",
    privileges: [
    {
        resource: {db: "sample-database-2", collection: "col2"}, actions: ["find", "update", "insert", "remove"]
    }],
    roles: []
}
)
```

此操作的輸出將會如下所示。

```
{
   "role":"collectionRole",
   "privileges":[
      {
         "resource":{
            "db":"sample-database-2",
            "collection":"col2"
         },
         "actions":[
            "find",
            "update",
            "insert",
            "remove"
         ]
      }
   ],
   "roles":[
      
   ]
}
```

**範例 9**：建立使用者並指派使用者定義的角色

```
db.createUser(
{
    user: "user3", 
    pwd: "abc123", 
    roles: []
})

db.grantRolesToUser("user3",["collectionRole"])
```

**範例 10**：將其他權限授予使用者定義的角色 

```
db.grantPrivilegesToRole(
  "collectionRole",
  [
    {
      resource: { db: "sample-database-1", collection: "col1" },
      actions: ["find", "update", "insert", "remove"]
    }
  ]
)
```

**範例 11**：從使用者定義的角色移除權限 

```
db.revokePrivilegesFromRole(
  "collectionRole",
  [
    {
      resource: { db: "sample-database-1", collection: "col2" },
      actions: ["find", "update", "insert", "remove"]
    }
  ]
)
```

**範例 12**：更新現有的使用者定義角色

```
db.updateRole(
  "collectionRole",
  {
    privileges: [
    {
        resource: {db: "sample-database-3", collection: "sample-collection-3"}, actions: ["find", "update", "insert", "remove"]
    }],
    roles: []
  }
)
```

## 功能差異
<a name="role_based_access_control-functional_differences"></a>

在 Amazon DocumentDB 中，使用者和角色定義會存放在`admin`資料庫中，並對`admin`資料庫進行身分驗證。此功能不同於 MongoDB Community Edition，但與 MongoDB Atlas 一致。

Amazon DocumentDB 也支援變更串流，提供在叢集集合中發生的按時間順序排列的變更事件序列。`listChangeStreams` 動作會套用到叢集層級 （也就是所有資料庫），而`modifyChangeStreams`動作則可套用到資料庫層級和叢集層級。

## 限制
<a name="role_based_access_control-limits"></a>

下表包含 Amazon DocumentDB 中角色型存取控制的限制。


****  

| Description | 限制 | 
| --- | --- | 
| 每個叢集的使用者數目 | 1000 | 
| 與使用者相關聯的角色數目 | 1000 | 
| 使用者定義角色的數量 | 100 | 
| 與權限相關聯的資源數量 | 100 | 

## 使用角色型存取控制進行資料庫存取
<a name="role_based_access_control-built_in_roles"></a>

您可以使用以角色為基礎的存取控制建立使用者並授予其一或多個角色，以決定使用者可以在資料庫或叢集中執行哪些操作。

以下是 Amazon DocumentDB 目前支援的內建角色清單。

**注意**  
在 Amazon DocumentDB 4.0 和 5.0 中， `ListCollection`和 `ListDatabase`命令可以選擇性地使用 `authorizedCollections`和 `authorizedDatabases` 參數，分別列出使用者有權使用 和 `listDatabase`角色存取的集合`listCollections`和資料庫。此外，使用者現在可以終止自己的游標，而不需要該`KillCursor`角色。

------
#### [ Database user ]


****  

| 角色名稱 | Description | 動作 | 
| --- | --- | --- | 
| read | 授予使用者對指定資料庫的讀取權限。 |  `[changeStreams](https://docs.aws.amazon.com//documentdb/latest/developerguide/change_streams.html)` `collStats` `dbStats` `find` `killCursors` `listIndexes` `listCollections`  | 
| readWrite | 授予使用者對指定資料庫的讀取和寫入權限。 |  `read` 許可中的所有動作。 `createCollection` `dropCollection` `createIndex` `dropIndex` `insert` `killCursors` `listIndexes` `listCollections` `remove` `update`  | 

------
#### [ Cluster user ]


****  

| 角色名稱 | Description | 動作 | 
| --- | --- | --- | 
| readAnyDatabase | 授予使用者對叢集中所有資料庫的讀取存取權。 |  `read` 許可中的所有動作。 `listChangeStreams` `listDatabases`  | 
| readWriteAnyDatabase | 授予使用者對叢集中所有資料庫的讀寫存取權。 |  `readWrite` 許可中的所有動作。 `listChangeStreams` `listDatabases`  | 
| userAdminAnyDatabase | 授予使用者指派和修改任何使用者對指定資料庫所具有的角色或許可的能力。 |  `changeCustomData` `changePassword` `createUser` `dropRole` `dropUser` `grantRole` `listDatabases` `revokeRole` `viewRole` `viewUser`  | 
| dbAdminAnyDatabase | 授予使用者在任何指定的資料庫上執行資料庫管理角色的能力。 |  `dbAdmin` 許可中的所有動作。 `dropCollection` `listDatabases` `listChangeStreams` `modifyChangeStreams`  | 

------
#### [ Superuser ]


****  

| 角色名稱 | Description | 動作 | 
| --- | --- | --- | 
| root | 授予使用者存取合併下列所有角色的資源與操作：readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin、restore 和 backup。 |  來自 `readWriteAnyDatabase`、`dbAdminAnyDatabase`、`userAdminAnyDatabase`、`clusterAdmin`、`restore` 和 `backup` 的所有動作。  | 

------
#### [ Database administrator ]


****  

| 角色名稱 | Description | 動作 | 
| --- | --- | --- | 
| dbAdmin | 授予使用者在指定的資料庫上執行管理任務的能力。 |  `bypassDocumentValidation` `collMod` `collStats` `createCollection` `createIndex` `dropCollection` `dropDatabase` `dropIndex` `dbStats` `find` `killCursors` `listIndexes` `listCollections` `modifyChangeStreams`  | 
| dbOwner | 透過結合角色 dbAdmin 和 readWrite，授予使用者在指定的資料庫上執行任何管理任務的能力。 |  來自 `dbAdmin` 和 `readWrite` 的所有動作。  | 

------
#### [ Cluster administrator ]


****  

| 角色名稱 | Description | 動作 | 
| --- | --- | --- | 
| clusterAdmin | 透過結合 clusterManager、clusterMonitor 和 hostManager 角色，授予使用者最大的叢集管理存取權。 |  來自 `clusterManager`、`clusterMonitor` 和 `hostManager` 的所有動作。 `listChangeStreams` `dropDatabase` `modifyChangeStreams`  | 
| clusterManager | 授予使用者對指定叢集執行管理和監控動作的能力。 |  `listChangeStreams` `listSessions` `modifyChangeStreams` `replSetGetConfig`  | 
| clusterMonitor | 授予使用者對監視工具具有唯讀存取權的能力。 |  `collStats` `dbStats` `find` `getParameter` `hostInfo` `indexStats` `killCursors` `listChangeStreams` `listCollections` `listDatabases` `listIndexes` `listSessions` `replSetGetConfig` `serverStatus` `top`  | 
| hostManager | 授予使用者監控和管理伺服器的能力。 |  `auditConfigure` `killCursors` `killAnyCursor` `killAnySession` `killop`  | 

------
#### [ Backup administrator ]


****  

| 角色名稱 | Description | 動作 | 
| --- | --- | --- | 
| backup | 授予使用者備份資料所需的存取權。 |  `getParameter` `insert` `find` `listChangeStreams` `listCollections` `listDatabases` `listIndexes` `update`  | 
| restore | 授予使用者還原資料所需的存取權。 |  `bypassDocumentValidation` `changeCustomData` `changePassword` `collMod` `createCollection` `createIndex` `createUser` `dropCollection` `dropRole` `dropUser` `getParameter` `grantRole` `find` `insert` `listCollections` `modifyChangeStreams` `revokeRole` `remove` `viewRole` `viewUser` `update`  | 

------