To-Do Calendar - Day23 為 MongoDB 加上驗證機制

MongoDB 預設並沒有啟用認證功能(Authentication),相當於資料庫的機敏資料們在網路中裸奔任何人都可以連線到資料庫,進行讀取和寫入, 因此這篇就來為 MongoDB 加上身分驗證,提升資料庫的安全性!

建立 MongoDB 的管理者帳號

  • 連線至 MongoDB
  • 切換至 admin 資料庫
    use admin
    
  • 加入帳號密碼並設定 role
    (這裡的 role 只接受 userAdmin 與 userAdminAnyDatabase)
    db.createUser(
    {
      user: "admin",
      pwd: "password",
      roles: [{ role: "userAdminAnyDatabase", db: "admin"} ]
    })
    
image
  • 認證測試
    • 成功:返回 1
    • 失敗:返回 Error: Authentication failed. 0
    db.auth("admin","password")
    

image

修改 config

  • 打開 ~MongoDB\bin\mongod.cfg 檔案的 security 註解,並加上 authorization: enabled 設定
    security:
      authorization: enabled
    

加入指定 DB 使用者帳號

  • 切換至目標 DB
    use todoCalendar
    
  • 建立使用者
    db.createUser(
    {
      user: "todoCalendar",
      pwd: "123456",
      roles: [{ role: "readWrite", db: "todoCalendar"} ]
    })
    
image
  • 切換回 admin 資料庫
    use admin
    
  • 查看帳號是否建立成功
    db.system.users.find({user:"todoCalendar"})
    
image
  • 重啟 MongoDB 服務
    net stop MongoDB
     net start MongoDB
    

修改 application.properties

  • 在 spring.data.mongodb.uri 加上帳號:密碼
    spring.data.mongodb.uri=mongodb://todoCalendar:123456@localhost:27017/todoCalendar
    
  • 重啟 Spring Boot,於 API Trester 測試

image

改 application.properties 設定之前

image

改 application.properties 設定之後



延伸閱讀

參考資料

comments

comments powered by Disqus