成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

MongoDB用戶(hù)和角色解釋系列(上)

paney129 / 687人閱讀

摘要:每個(gè)角色只應(yīng)該為該角色授予必要的權(quán)限,并且只應(yīng)該為用戶(hù)分配適合其需求的角色。注解如果您還在掌握查詢(xún)語(yǔ)言,像這樣的工具有一個(gè)直觀的用戶(hù)管理器特性,這使得用戶(hù)管理更加直觀和直觀。

本文來(lái)自MongoDB中文社區(qū):http://www.mongoing.com/

1、介紹

本文討論保護(hù)MongoDB數(shù)據(jù)庫(kù)所需的訪問(wèn)控制。具體來(lái)說(shuō),我們可以使用這些特性來(lái)確保只有經(jīng)過(guò)授權(quán)的用戶(hù)才能訪問(wèn)數(shù)據(jù)庫(kù)。每個(gè)MongoDB用戶(hù)應(yīng)該只能訪問(wèn)他們?cè)诮M織中所扮演的角色所需要的數(shù)據(jù),這由組織中負(fù)責(zé)管理數(shù)據(jù)安全的人員來(lái)決定。這是管理數(shù)據(jù)和遵守國(guó)際要求所必需的良好特質(zhì)。

1.1 訪問(wèn)控制

訪問(wèn)控制確保訪問(wèn)數(shù)據(jù)庫(kù)的人員得到明確的標(biāo)識(shí),并且能夠訪問(wèn)、更新或刪除他們有權(quán)訪問(wèn)的數(shù)據(jù)。這是我們將在本文中討論的主題。在數(shù)據(jù)庫(kù)中,我們可以處理客戶(hù)機(jī)的身份驗(yàn)證和它們希望執(zhí)行的操作的授權(quán)。

1.2 認(rèn)證

當(dāng)客戶(hù)機(jī)或用戶(hù)訪問(wèn)數(shù)據(jù)庫(kù)時(shí),第一個(gè)任務(wù)是檢查該用戶(hù)是否是已知用戶(hù),并提供憑證以確保能夠令人信服地識(shí)別他們,這就是所謂的身份驗(yàn)證。使用MongoDB,我們可以使用以下工具之一來(lái)處理認(rèn)證問(wèn)題。

1.2.1 內(nèi)部工具

SCRAM:MongoDB默認(rèn)身份驗(yàn)證機(jī)制。它根據(jù)用戶(hù)名、密碼來(lái)進(jìn)行數(shù)據(jù)庫(kù)身份驗(yàn)證。
x.509證書(shū):該機(jī)制使用x.509證書(shū)代替用戶(hù)名和密碼?;诟北炯蚍制褐械姆?wù)器或成員對(duì)客戶(hù)機(jī)進(jìn)行身份驗(yàn)證。維基百科上說(shuō):“x.509證書(shū)包含公鑰和標(biāo)識(shí),由證書(shū)頒發(fā)機(jī)構(gòu)或自簽名,持有證書(shū)的人可以依賴(lài)證書(shū)所包含的公鑰來(lái)建立安全通信”。

1.2.2 外部工具

LDAP:這個(gè)協(xié)議最常見(jiàn)的用途是提供一個(gè)中心服務(wù)器來(lái)存儲(chǔ)用戶(hù)名和密碼,允許不同的應(yīng)用程序連接到LDAP服務(wù)器來(lái)驗(yàn)證用戶(hù)。
Kerberos:這是一個(gè)基于票據(jù)的行業(yè)標(biāo)準(zhǔn)認(rèn)證協(xié)議。
注解:外部工具只在MongoDB企業(yè)版中提供。

作為一種最佳實(shí)踐,我們將為需要訪問(wèn)數(shù)據(jù)庫(kù)的每個(gè)實(shí)體創(chuàng)建登錄憑據(jù),但只針對(duì)這些實(shí)體。這樣做,我們將能夠?qū)徲?jì)所有用戶(hù)所做的所有活動(dòng),并完成GDPR要求。除了用戶(hù)身份驗(yàn)證之外,還需要對(duì)服務(wù)器和網(wǎng)絡(luò)進(jìn)程進(jìn)行身份驗(yàn)證。在一套副本或分片集群的所有節(jié)點(diǎn)檢查彼此不斷為了確保都是已知的訪問(wèn)用戶(hù)(換句話說(shuō),確認(rèn)他們的會(huì)員),以及其他任務(wù),比如檢查每個(gè)成員的健康為了確定副本必須完成一次新的選舉。那么什么是選舉呢?在MongoDB中,只有一個(gè)節(jié)點(diǎn)能夠執(zhí)行寫(xiě)操作。當(dāng)此節(jié)點(diǎn)關(guān)閉或網(wǎng)絡(luò)部分開(kāi)始工作時(shí),其余節(jié)點(diǎn)開(kāi)始進(jìn)行一次選擇,以便選擇新的主節(jié)點(diǎn)并使服務(wù)在不停止的情況下運(yùn)行。

1.3 授權(quán)

數(shù)據(jù)庫(kù)管理員負(fù)責(zé)向用戶(hù)授予或拒絕對(duì)數(shù)據(jù)庫(kù)資源進(jìn)行操作的權(quán)限。通過(guò)使用角色,我們可以指定對(duì)資源執(zhí)行什么操作。因此,角色是授予用戶(hù)使用特定資源執(zhí)行特定任務(wù)的權(quán)限。

資源←動(dòng)作←角色(權(quán)限)→用戶(hù)

MongoDB提供內(nèi)置角色,還允許您根據(jù)數(shù)據(jù)庫(kù)的特定需求定義新的角色。這些角色是根據(jù)對(duì)資源的操作來(lái)定義的。動(dòng)作是我們可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行所有類(lèi)型的操作,例如查找、刪除、插入、更新或創(chuàng)建索引。資源可以是集合、文檔、索引、數(shù)據(jù)庫(kù)等等。使用只讀視圖,管理員通過(guò)限制對(duì)只公開(kāi)其子集的敏感數(shù)據(jù)的訪問(wèn)來(lái)獲得字段級(jí)安全性。對(duì)視圖授予的權(quán)限與授予底層集合的權(quán)限是分開(kāi)指定的。每個(gè)角色只應(yīng)該為該角色授予必要的權(quán)限,并且只應(yīng)該為用戶(hù)分配適合其需求的角色。

1.4 數(shù)據(jù)庫(kù)的身份驗(yàn)證

MongoDB用戶(hù)必須使用最初創(chuàng)建它們的數(shù)據(jù)庫(kù)來(lái)標(biāo)識(shí)自己。這通常是管理數(shù)據(jù)庫(kù),但也可以是其他數(shù)據(jù)庫(kù)。無(wú)論在哪個(gè)數(shù)據(jù)庫(kù)上創(chuàng)建了用戶(hù),如果將適當(dāng)?shù)慕巧谟枇擞脩?hù),他們將能夠?qū)ζ渌麛?shù)據(jù)庫(kù)采取操作。

2、MongoDB用戶(hù)

在啟用訪問(wèn)控制之前,應(yīng)該創(chuàng)建一個(gè)用戶(hù),該用戶(hù)可以在啟用訪問(wèn)控制后創(chuàng)建用戶(hù)并為用戶(hù)分配角色。然后,這個(gè)用戶(hù)管理員將用于創(chuàng)建和維護(hù)其他用戶(hù)和角色,因此需要分配一個(gè)合適的角色來(lái)支持。如果你不創(chuàng)建此管理用戶(hù),則在啟用訪問(wèn)控制時(shí)將無(wú)法登錄或創(chuàng)建新用戶(hù)和角色。

2.1 本地主機(jī)異常

如果在沒(méi)有創(chuàng)建至少一個(gè)管理用戶(hù)的情況下啟用訪問(wèn)控制,則無(wú)法登錄。localhost異常允許您在啟用訪問(wèn)控制之后創(chuàng)建第一個(gè)用戶(hù),從而避免了這個(gè)問(wèn)題。要做到這一點(diǎn),你需要:

? 啟用訪問(wèn)控制
? 連接到localhost接口
? 在管理數(shù)據(jù)庫(kù)中創(chuàng)建第一個(gè)用戶(hù),該用戶(hù)必須具有足夠的權(quán)限來(lái)管理其他用戶(hù)和角色。

這個(gè)localhost異常只適用于仍然沒(méi)有創(chuàng)建用戶(hù)的情況。您必須在兩個(gè)選項(xiàng)中進(jìn)行選擇,在啟用訪問(wèn)控制之前創(chuàng)建第一個(gè)用戶(hù),或者在啟用訪問(wèn)控制之后使用localhost異常創(chuàng)建第一個(gè)用戶(hù)。

2.2 如何啟用訪問(wèn)控制

在啟動(dòng)mongod服務(wù)時(shí),可以使用參數(shù)指定數(shù)據(jù)庫(kù)的特性,或者更好的方法是使用配置文件。無(wú)論哪種方式,你都必須使用安全選項(xiàng):
security
authorization:enabled
此設(shè)置啟用或禁用基于角色的訪問(wèn)控制(譯者注:上面的配置是激活狀態(tài))。

2.3 如何創(chuàng)建用戶(hù)

在創(chuàng)建MongoDB用戶(hù)之前,有必要考慮一下用戶(hù)將要執(zhí)行的任務(wù)。可能會(huì)有幾個(gè)具有相同權(quán)限級(jí)別的用戶(hù),所以最明智的選擇是創(chuàng)建一個(gè)角色并將其分配給每個(gè)用戶(hù)。通過(guò)只更改一個(gè)角色,您將更新所有使用它的用戶(hù)的權(quán)限。否則,需要為每個(gè)用戶(hù)對(duì)一組或一類(lèi)用戶(hù)的訪問(wèn)需求進(jìn)行更改。操作步驟如下:
第一步:將上下文更改為要?jiǎng)?chuàng)建角色的數(shù)據(jù)庫(kù):

use admin
第二步:執(zhí)行這個(gè)命令:

db.createUser({
user : "",
pwd : "",
roles : [ { role : "", db : "" } | "", …]
})

如果您想創(chuàng)建一個(gè)用戶(hù)而不為該用戶(hù)分配任何角色,您只需指定一個(gè)空的roles字段。

注解:如果您還在掌握MongoDB查詢(xún)語(yǔ)言,像MongoDB IDE Studio 3T這樣的工具有一個(gè)直觀的用戶(hù)管理器特性,這使得用戶(hù)管理更加直觀和直觀。

MongoDB IDE Studio 3T地址:https://studio3t.com/
用戶(hù)管理器地址:https://studio3t.com/knowledg...

2.4 如何刪除一個(gè)用戶(hù)

假設(shè)您有合適的登陸角色并允許刪除用戶(hù),您將需要將上下文更改到創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候,
use admin

之后執(zhí)行如下命令:
db.dropUser("")
2.5 用戶(hù)存儲(chǔ)在哪里?

要檢查用戶(hù),必須將上下文更改為創(chuàng)建用戶(hù)的數(shù)據(jù)庫(kù)的情景,例如管理員數(shù)據(jù)庫(kù)。

> use ""
然后您可以使用其中之一
> db.system.users.find()
或者
> db.getUsers()
但是,如果您只想詢(xún)問(wèn)特定的用戶(hù),請(qǐng)使用以下命令:
> db.getUser("")

2.6 如何登陸?

有三種可能的情況,顯然它們都有相同的哲學(xué)。讓我們來(lái)看看:

2.6.1 在數(shù)據(jù)庫(kù)內(nèi)部


$ mongo

use ""
db.auth("","")

我不建議您使用此方法,因?yàn)樵谀I入密碼時(shí)密碼是可見(jiàn)的。

2.6.2 通過(guò)Shell腳本


$ mongo --authenticationDatabase -u -p
MongoDB shell version v3.6.4-rc0
Enter password:
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.4-rc0
MongoDB Enterprise >

這是我的首選。在本例中,如果不指定authenticationDatabase參數(shù),數(shù)據(jù)庫(kù)將始終嘗試根據(jù)將要連接到的數(shù)據(jù)庫(kù)對(duì)用戶(hù)進(jìn)行身份驗(yàn)證。如果我們不指定要連接的數(shù)據(jù)庫(kù)名稱(chēng),就像我在上面的示例中所做的那樣,服務(wù)器將對(duì)“test”數(shù)據(jù)庫(kù)執(zhí)行此操作。

2.6.3 通過(guò)MongoDB客戶(hù)端

從MongoDB客戶(hù)端,我們必須使用這樣的連接字符串:


mongo://:@:27017/?options

2.7 怎樣注銷(xiāo)

注銷(xiāo)結(jié)束當(dāng)前身份驗(yàn)證會(huì)話。您必須在經(jīng)過(guò)身份驗(yàn)證的同一數(shù)據(jù)庫(kù)中執(zhí)行此操作。

use admin
db.logout()
3、MongoDB角色

正如您已經(jīng)知道的,角色是授予用戶(hù)對(duì)資源執(zhí)行操作的特權(quán)。角色定義角色成員可以執(zhí)行的任務(wù),以及可以執(zhí)行這些任務(wù)的資源。MongoDB為最常見(jiàn)的情景提供內(nèi)置角色。但是,也允許我們根據(jù)自己的特定需求創(chuàng)建自己的角色。每個(gè)角色的作用域都限定在創(chuàng)建它的數(shù)據(jù)庫(kù)中。角色只能包含應(yīng)用于其數(shù)據(jù)庫(kù)的特權(quán),并且只能從其數(shù)據(jù)庫(kù)中的其他角色繼承特權(quán)。在管理數(shù)據(jù)庫(kù)中創(chuàng)建的角色可以包含應(yīng)用于管理數(shù)據(jù)庫(kù)、其他數(shù)據(jù)庫(kù)或集群資源的特權(quán),還可以繼承其他數(shù)據(jù)庫(kù)和管理數(shù)據(jù)庫(kù)中的角色。因此,如果需要從另一個(gè)數(shù)據(jù)庫(kù)中創(chuàng)建的角色繼承,則必須在管理數(shù)據(jù)庫(kù)中創(chuàng)建新角色。

3.1 角色存儲(chǔ)在哪里?

之前已經(jīng)解釋過(guò),您可以在管理數(shù)據(jù)庫(kù)或任何其他數(shù)據(jù)庫(kù)中創(chuàng)建角色。因此,如果你想檢查它們,你必須在定義它們的數(shù)據(jù)庫(kù)中進(jìn)行:

use ""
要獲取數(shù)據(jù)庫(kù)的所有角色,請(qǐng)使用
db.system.roles.find()
或者
db.getRoles()
如果你只想要一個(gè)特定的角色,你可以使用這個(gè)命令:
use ""
db.getRole("")
3.2 內(nèi)置的角色

MongoDB將內(nèi)置角色分類(lèi)為:

? 數(shù)據(jù)庫(kù)用戶(hù)角色
? 數(shù)據(jù)庫(kù)管理員角色
? 集群管理員角色
? 備份和恢復(fù)角色
? 所有數(shù)據(jù)庫(kù)角色
? 超級(jí)用戶(hù)角色

下面將詳細(xì)介紹每一個(gè)角色。

3.2.1 數(shù)據(jù)庫(kù)用戶(hù)角色

數(shù)據(jù)庫(kù)級(jí)別角色如下:

? 讀——讀取所有非系統(tǒng)集合上的數(shù)據(jù)
? 讀寫(xiě)——包括所有“讀”角色特權(quán)和在所有非系統(tǒng)集合上寫(xiě)數(shù)據(jù)的能力

3.2.2 數(shù)據(jù)庫(kù)管理員角色

可以使用的數(shù)據(jù)庫(kù)管理員角色如下:

dbAdmin——授予執(zhí)行管理任務(wù)的特權(quán)
userAdmin——允許您在當(dāng)前數(shù)據(jù)庫(kù)上創(chuàng)建和修改用戶(hù)和角色
dbOwner——此角色結(jié)合了以下內(nèi)容:
readWrite
dbAdmin
userAdmin

3.2.3 集群管理員角色

用于管理整個(gè)系統(tǒng)的管理數(shù)據(jù)庫(kù)中的角色。
clusterMonitor——提供對(duì)監(jiān)視工具的只讀訪問(wèn)
clusterManager——用于管理和監(jiān)視集群上的操作
hostManager——監(jiān)視和管理服務(wù)器
clusterAdmin——結(jié)合了其他三個(gè)角色和dropDatabase操作

3.2.4 備份和恢復(fù)角色

這個(gè)角色屬于管理數(shù)據(jù)庫(kù)。
backup——提供備份數(shù)據(jù)所需的特權(quán)
restore——提供從備份中還原數(shù)據(jù)所需的特權(quán)

3.2.5 所有數(shù)據(jù)庫(kù)角色

這些角色位于管理數(shù)據(jù)庫(kù)上,并提供適用于所有數(shù)據(jù)庫(kù)的特權(quán)。

readAnyDatabase——與“read”角色相同,但適用于所有數(shù)據(jù)庫(kù)
readWriteAnyDatabase——與“readWrite”角色相同,但適用于所有數(shù)據(jù)庫(kù)
userAdminAnyDatabase——與‘userAdmin’角色相同,但適用于所有數(shù)據(jù)庫(kù)
dbAdminAnyDatabase——與“dbAdmin”角色相同,但適用于所有數(shù)據(jù)庫(kù)

3.2.6 超級(jí)用戶(hù)角色

以下角色不是直接的超級(jí)用戶(hù)角色,但是能夠?yàn)槿魏斡脩?hù)分配任何數(shù)據(jù)庫(kù)上的任何特權(quán),也包括他們自己。
userAdmin
dbOwner
userAdminAnyDatabase
root角色提供對(duì)所有資源的完全特權(quán):

root
3.3 如何檢查角色的特權(quán)

如果需要知道角色的特權(quán)(是否從其他角色繼承),可以通過(guò) “showPrivileges”字段來(lái)進(jìn)行激活:

use ""
db.getRole("", { showPrivileges : true })
3.4 角色匯總

管理MongoDB資產(chǎn)的人必須為自己的用例找到最合適的角色。在我看來(lái),以下角色通常是最有用的:

? userAdminAnyDatabase
? clusterManager
? clusterMonitor
? backup
? restore
? dbAdmin
? readWrite
? read

3.5 如何授予用戶(hù)角色

您可以在創(chuàng)建用戶(hù)時(shí)授予角色,也可以在事后授予角色。下一個(gè)命令對(duì)于在創(chuàng)建用戶(hù)的同時(shí)分配角色是有效的:

use ""
db.createUser(
{
user: "",
pwd: "",
roles: [ { role: "", db: "" } ]
})
你也可以用這個(gè)命令:
use ""
db.grantRolesToUser(
"",
[ { role : "", db : "" }, "", … ]
)

注解:第三方MongoDB工具中的角色管理器之類(lèi)的功能在這里非常方便,特別是如果您還在學(xué)習(xí)MongoDB查詢(xún)語(yǔ)言的時(shí)候。

3.6 如何從用戶(hù)撤消角色

use ""
db.revokeRolesFromUser(
"",
[ { role : "", db : "" } | "" ]
)
3.7 自定義用戶(hù)角色 3.7.1 怎樣創(chuàng)建一個(gè)自定義角色

use ""
db.createRole({
role: "",
privileges: [
{ resource: { db : “”,
collection : “” },
actions: [ "" ]
}
],
roles: [ { role : "", db : ""} | "" ]
})
3.7.2 怎樣刪除一個(gè)自定義角色

use ""
db.dropRole("")
3.7.3 如何授予或撤消自定義角色

這些命令是給自定義用戶(hù)授予和撤銷(xiāo)角色:

方案一:

use ""
db.grantPrivilegesToRole(
"",
[
{ resource : { db : "", collection : " },
actions : [ "",... ]
},
...
]
)

方案二:

db.revokePrivilegesFromRole(
"",
[
{ resource : { db : "", collection : " },
actions : [ "",... ]
},

]
)
3.7.4 對(duì)自定義用戶(hù)角色怎樣授予和撤銷(xiāo)

方案一:

use ""
db.grantRolesToRole(
"",
[ { role : "", db : "" } | ]
)

方案二:

db.revokeRolesFromRole(
"",
[ { role : "", db : "" } | ]
)
3.8 怎樣更新一個(gè)角色

小心!正如文檔所述:“特權(quán)或角色數(shù)組的更新將完全替換前一個(gè)數(shù)組的值”。

use ""
db.updateRole(
"",
{
privileges : [
{
resource : { db : "", collection : "" },
actions : [ "" ]
},...
],
roles : [ { role : "", db : "" } | "" ]
}
)

注解:您剛剛完成了MongoDB用戶(hù)和角色解釋系列的前半部分,MongoDB用戶(hù)和角色解釋系列的后半部分將了解如何在一個(gè)包含三個(gè)數(shù)據(jù)的節(jié)點(diǎn)副本集中啟用訪問(wèn)控制,創(chuàng)建第一個(gè)使用localhost異常的用戶(hù),并授予所需的角色。敬請(qǐng)期待~~~

譯者:管祥青
湖南大學(xué)研究生畢業(yè),畢業(yè)后在海康威視研究院從事大數(shù)據(jù)研發(fā)及機(jī)器學(xué)習(xí)相關(guān)工作,現(xiàn)在就職于一家大數(shù)據(jù)金融公司。

原文作者:Juan Roy Couto
Juan為了讓自己成為目前MongoDB大師之一(https://www.mongodb.com/commu...。他獲得了MongoDB認(rèn)證,DBA和DEV。目前,他的工作角色是MongoDB數(shù)據(jù)庫(kù)工程師。在此之前,在多家金融公司做了20年的開(kāi)發(fā)。他喜歡與皇馬的馬克杯合作,也喜歡與技術(shù)社區(qū)交流。你可以在twitter.com/juanroycouto上閱讀他的文章。

原文鏈接:MongoDB Users and Roles Explained – Part 1

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/19584.html

相關(guān)文章

  • GDPR: Impact to Your Data Management Landscape: Pa

    摘要:與歐盟的通用數(shù)據(jù)保護(hù)規(guī)定的時(shí)間越來(lái)越近了。因此無(wú)論是否加入了歐盟,只要你正在以任何方式處理歐盟公民的數(shù)據(jù),就必須服從的條約。保留個(gè)人資料通過(guò)使用特定的生存時(shí)間索引,管理員可以自動(dòng)將數(shù)據(jù)庫(kù)中的歐盟公民數(shù)據(jù)過(guò)期。 ??與歐盟的通用數(shù)據(jù)保護(hù)規(guī)定的(GDPR)1時(shí)間越來(lái)越近了。從2018年5月25日起,任何一個(gè)未能滿(mǎn)足新法規(guī)的組織將面臨高達(dá)全球收入4%的罰款,或者是2000萬(wàn)歐元——無(wú)論哪種罰...

    ningwang 評(píng)論0 收藏0
  • GDPR: Impact to Your Data Management Landscape: Pa

    摘要:與歐盟的通用數(shù)據(jù)保護(hù)規(guī)定的時(shí)間越來(lái)越近了。因此無(wú)論是否加入了歐盟,只要你正在以任何方式處理歐盟公民的數(shù)據(jù),就必須服從的條約。保留個(gè)人資料通過(guò)使用特定的生存時(shí)間索引,管理員可以自動(dòng)將數(shù)據(jù)庫(kù)中的歐盟公民數(shù)據(jù)過(guò)期。 ??與歐盟的通用數(shù)據(jù)保護(hù)規(guī)定的(GDPR)1時(shí)間越來(lái)越近了。從2018年5月25日起,任何一個(gè)未能滿(mǎn)足新法規(guī)的組織將面臨高達(dá)全球收入4%的罰款,或者是2000萬(wàn)歐元——無(wú)論哪種罰...

    Hwg 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<