文章目錄
確認 MongoDB 驗證機制
前幾天在進行每日 server 狀態異常檢查時,偶然發現 MongoDB 的錯誤 log 很多,進一步整理後統整出每個 application 連線認證都會先出現一次 SCRAM-SHA-256
認證失敗之後才會出現 SCRAM-SHA-1
認證成功的 log 紀錄,今天就來紀錄一下當時追查的過程與語法
基本環境說明
- macOS Big Sur 11.2.1
- docker desktop 3.1.0(51484)
docker images
- mongo:4.4.4-bionic
檢查語法
指定連線驗證方式測試
請參考官方文件 Connection String URI Format
語法
mongo "mongodb[+srv]://[{username}:{password}@]{mongo host}:{mongo host}/?authMechanism=[SCRAM-SHA-1|SCRAM-SHA-256]"
範例
mongo "mongodb://root:[email protected]:27027/?authMechanism=SCRAM-SHA-256"
檢查 mongo server 相容性設定
請參考官方文件 setFeatureCompatibilityVersion/default-values 與 setFeatureCompatibilityVersion/view-featurecompatibilityversion
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
檢查 user 的 mechanisms
3.1 單一 user
語法
use admin; db.getUser("{username}")
範例
use admin; db.getUser("test")
3.2 所有 user
use admin; db.getUsers();
心得
原則上 MongoDB 4.0 之後,建立 user 時就會將 mechanisms 設定為 ["SCRAM-SHA-1","SCRAM-SHA-256"]
,但我們遇到狀況的環境是在 Mongo Atlas 上,經過與原廠確認:雖然 Mongo Atlas 的每個 instance 本身是 MongoDB 4.4 也支援 SCRAM-SHA-256
,但 Mongo Atlas 服務並不支援 SCRAM-SHA-256
XD,所以目前在 Mongo Atlas 只能使用 SCRAM-SHA-1
另外需要注意的是 Mongo Atlas 在不同 tier 上,可以執行的 admin command 不同,這個限制該讓問題追查難度更高
參考資訊
文章作者 Yowko Tsai
上次更新 2021-02-28
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。