Replication
為什麼我會看到大量這些 mongodb 3.6.5 伺服器日誌消息?
有人可以對 3 成員副本集的主節點上的這些 mongodb 3.6.5 伺服器日誌消息有所了解嗎?rs.status() 表示所有節點都已啟動並正在執行,但會看到大量(I)資訊日誌。
2019-01-16T00:07:24.819+0000 我訪問
$$ conn95 $$未授權:管理員未授權執行命令 { replSetGetStatus: “1”, $ db: “admin”, $ 集群時間…
未授權:管理員未授權執行命令 { replSetGetStatus: “1”, $ db: “admin”, $ 集群時間…
該消息表明有使用者或應用程序試圖在沒有正確權限的情況下執行該
replSetGetStatus
命令。此命令從處理命令的伺服器的角度返回副本集的目前狀態。如果頻繁記錄此錯誤,則可能是監視腳本或代理的結果。
您可以通過在 MongoDB 伺服器日誌中搜尋相關連接歷史來追踪來源。給定連接 ID 的前幾行通常包括客戶端元數據(可選,因此會因驅動程序/應用程序而異)以及啟用身份驗證時使用的使用者名。
例如,使用類似 Linux 的命令行來查找 的第一個條目
conn95
:> grep conn95 mongod.log | head -2 2019-01-15T21:41:19.026+1100 I NETWORK [conn95] received client metadata from 192.168.1.123:59354 conn95: { driver: { name: "PyMongo", version: "3.6.0" }, os: { type: "Darwin", name: "Darwin", architecture: "x86_64", version: "10.14.2" }, platform: "CPython 2.7.14.final.0", application: { name: "monitoring-agent v1.2.3-dev" } } 2019-01-15T21:41:19.027+1100 I ACCESS [conn95] Successfully authenticated as principal monitoring-agent on admin
這些日誌行包括以下資訊:
- 連接起源於
192.168.1.123
- 客戶端應用程序將自己標識為
monitoring-agent v1.2.3-dev
monitoring-agent
應用程序通過admin
數據庫成功驗證為使用者如果這是來自監控代理的預期連接,則可能的解決方法是授予包含所需訪問權限的角色(
replSetGetStatus
例如,內置clusterMonitor
角色):use admin; db.grantRolesToUser("monitoring-agent", [{ role: "clusterMonitor", db: "admin" }]);
如果連接是意外的,您可以根據源 IP 或其他詳細資訊確定適當的操作。您可能希望關閉不再需要的監控應用程序或刪除關聯的使用者帳戶並阻止通過防火牆的連接。有關要考慮的一些可用安全措施,請參閱MongoDB 安全檢查表。