国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

paney129 / 603人閱讀

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

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

1、介紹

本文討論保護MongoDB數(shù)據(jù)庫所需的訪問控制。具體來說,我們可以使用這些特性來確保只有經(jīng)過授權的用戶才能訪問數(shù)據(jù)庫。每個MongoDB用戶應該只能訪問他們在組織中所扮演的角色所需要的數(shù)據(jù),這由組織中負責管理數(shù)據(jù)安全的人員來決定。這是管理數(shù)據(jù)和遵守國際要求所必需的良好特質(zhì)。

1.1 訪問控制

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

1.2 認證

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

1.2.1 內(nèi)部工具

SCRAM:MongoDB默認身份驗證機制。它根據(jù)用戶名、密碼來進行數(shù)據(jù)庫身份驗證。
x.509證書:該機制使用x.509證書代替用戶名和密碼。基于副本集或分片集群中的服務器或成員對客戶機進行身份驗證。維基百科上說:“x.509證書包含公鑰和標識,由證書頒發(fā)機構或自簽名,持有證書的人可以依賴證書所包含的公鑰來建立安全通信”。

1.2.2 外部工具

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

作為一種最佳實踐,我們將為需要訪問數(shù)據(jù)庫的每個實體創(chuàng)建登錄憑據(jù),但只針對這些實體。這樣做,我們將能夠?qū)徲嬎杏脩羲龅乃谢顒樱⑼瓿蒅DPR要求。除了用戶身份驗證之外,還需要對服務器和網(wǎng)絡進程進行身份驗證。在一套副本或分片集群的所有節(jié)點檢查彼此不斷為了確保都是已知的訪問用戶(換句話說,確認他們的會員),以及其他任務,比如檢查每個成員的健康為了確定副本必須完成一次新的選舉。那么什么是選舉呢?在MongoDB中,只有一個節(jié)點能夠執(zhí)行寫操作。當此節(jié)點關閉或網(wǎng)絡部分開始工作時,其余節(jié)點開始進行一次選擇,以便選擇新的主節(jié)點并使服務在不停止的情況下運行。

1.3 授權

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

資源←動作←角色(權限)→用戶

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

1.4 數(shù)據(jù)庫的身份驗證

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

2、MongoDB用戶

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

2.1 本地主機異常

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

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

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

2.2 如何啟用訪問控制

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

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

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

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

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

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

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

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

2.4 如何刪除一個用戶

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

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

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

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

2.6 如何登陸?

有三種可能的情況,顯然它們都有相同的哲學。讓我們來看看:

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


$ mongo

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

我不建議您使用此方法,因為在您鍵入密碼時密碼是可見的。

2.6.2 通過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ù)庫將始終嘗試根據(jù)將要連接到的數(shù)據(jù)庫對用戶進行身份驗證。如果我們不指定要連接的數(shù)據(jù)庫名稱,就像我在上面的示例中所做的那樣,服務器將對“test”數(shù)據(jù)庫執(zhí)行此操作。

2.6.3 通過MongoDB客戶端

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


mongo://:@:27017/?options

2.7 怎樣注銷

注銷結(jié)束當前身份驗證會話。您必須在經(jīng)過身份驗證的同一數(shù)據(jù)庫中執(zhí)行此操作。

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

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

3.1 角色存儲在哪里?

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

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

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

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

下面將詳細介紹每一個角色。

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

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

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

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

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

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

3.2.3 集群管理員角色

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

3.2.4 備份和恢復角色

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

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

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

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

3.2.6 超級用戶角色

以下角色不是直接的超級用戶角色,但是能夠為任何用戶分配任何數(shù)據(jù)庫上的任何特權,也包括他們自己。
userAdmin
dbOwner
userAdminAnyDatabase
root角色提供對所有資源的完全特權:

root
3.3 如何檢查角色的特權

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

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

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

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

3.5 如何授予用戶角色

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

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

注解:第三方MongoDB工具中的角色管理器之類的功能在這里非常方便,特別是如果您還在學習MongoDB查詢語言的時候。

3.6 如何從用戶撤消角色

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

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

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

這些命令是給自定義用戶授予和撤銷角色:

方案一:

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

方案二:

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

]
)
3.7.4 對自定義用戶角色怎樣授予和撤銷

方案一:

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

方案二:

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

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

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

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

譯者:管祥青
湖南大學研究生畢業(yè),畢業(yè)后在??低曆芯吭簭氖麓髷?shù)據(jù)研發(fā)及機器學習相關工作,現(xiàn)在就職于一家大數(shù)據(jù)金融公司。

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

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

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/19584.html

相關文章

  • GDPR: Impact to Your Data Management Landscape: Pa

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

    ningwang 評論0 收藏0
  • GDPR: Impact to Your Data Management Landscape: Pa

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

    Hwg 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<