
MongoDBã«ã¯ãããŒã¿ããã®ãŸãŸä¿æããããã«å¿ èŠãªãã®ããã¹ãŠæã£ãŠããŸãã å¿ èŠãªãã®ãšãã®æ§ææ¹æ³ãæ£ç¢ºã«èª¬æããŸãã
MongoDBã»ãã¥ãªãã£ããã¥ãŒã¹ã«æ»ã£ãŠããŸããã æè¿ãã¡ãã£ã¢ã¯ããã«ãŒãã©ã®ããã«MongoDBããŒã¿ããŒã¹ãæŒåãããããã³ã€ã³ã§ã®èº«ä»£éãèŠæ±ããããäŒããç©èªã殺å°ããŸãã ã Rapid7ã«ãããš ãäœäžãã®MongoDBã€ã³ã¹ããŒã«ã䟵害ãããŠããŸã ã
ç§ãã¡ã¯çãã»ãã¥ãªãã£ãå¿é ããŠããŸãã ã¢ããªã±ãŒã·ã§ã³ããããã¯ãŒã¯ããŸãã¯ããŒã¿ããŒã¹ããµããŒãããå Žåãã»ãã¥ãªãã£ãåžžã«åªå ãããŸãã å€ãã®äŒæ¥ãéèŠãªäŒæ¥ããŒã¿ãä¿åããããã«MongoDBãªã©ã®ãªãŒãã³ãœãŒã¹ãœãããŠã§ã¢ã«åãæ¿ããŠãããããã»ãã¥ãªãã£åé¡ã¯ããã«éèŠã«ãªã£ãŠããŸãã ããžãã¹ã«ãã£ãŠã¯ãæ¿åºïŒå»çä¿éºã®æºè¡æ§ãšè²¬ä»»ã«é¢ããæ³åŸãHIPAAãªã©ïŒãŸãã¯ããžãã¹ïŒãã€ã¡ã³ãã«ãŒãæ¥çããŒã¿ã»ãã¥ãªãã£æšæºããŸãã¯PCI DSSïŒãããã¯ãŒã¯æšæºãç°ãªãå ŽåããããŸããããªããåŸããªããã°ãªããªãã»ãã¥ãªãã£ã
MongoDBããŒã¿ããŒã¹ãœãããŠã§ã¢ã¯å®å šã§ããïŒ ãããã®åºæºãæºãããŠããŸããïŒ ç°¡åãªçãã¯ã€ãšã¹ã§ããããã¯å®å šã§ãããããŠããã§ãïŒ ç¹å®ã®ã€ã³ã¹ããŒã«ãæ§æãæ§æãããã³æäœããæ¹æ³ãç¥ãå¿ èŠããããŸãã
ãã®èšäºã§ã¯ãMongoDBã»ãã¥ãªãã£ã«ã€ããŠèª¬æããŸãã MongoDBã¯ãäœãæ€çŽ¢ããã©ã®ããã«æ§æããããããã£ãŠããå Žåã«äœ¿çšããŠãå®å šã§ãã
æåã«ãMongoDBãæäœãããšãã«äººã ãç¯ãééããã»ãã¥ãªãã£ã®èŠ³ç¹ããèŠãŠã¿ãŸãããã MongoDBã»ãã¥ãªãã£ã«é¢ããŠããŠãŒã¶ãŒãã€ãŸããéèŠãªãã€ã³ããããã€ããããŸãã
- ããã©ã«ãã®ããŒãã䜿çšãã
- ããã«èªèšŒãæå¹ã«ããªãã§ãã ããïŒæãæ·±å»ãªåé¡ïŒïŒã
- èªèšŒã䜿çšããå Žåãå šå¡ããã³å šå¡ã«å¹ åºãã¢ã¯ã»ã¹ãèš±å¯ããŸãã
- ãã¹ã¯ãŒãã®å€æŽã匷å¶ããããã«LDAPã䜿çšããªãã§ãã ãã
- ããŒã¿ããŒã¹ã§SSLã®äœ¿çšã䞻匵ããªãã§ãã ããã
- æ¢ç¥ã®ãããã¯ãŒã¯ããã€ã¹ïŒã¢ããªã±ãŒã·ã§ã³ãã¹ããããŒããã©ã³ãµãŒãªã©ïŒã®ããŒã¿ããŒã¹ãžã®ã¢ã¯ã»ã¹ãå¶éããªãã§ãã ããã
- æ¥ç¶ããªãã¹ã³ãããã€ã³ã¿ãŒãã§ã€ã¹ãå¶éããŸããïŒãã ãããã®é ç®ã¯ãµããŒããããŠããããŒãžã§ã³ã«ã¯åœ±é¿ããŸããïŒã
MongoDBã«ã¯5ã€ã®äž»èŠãªã»ãã¥ãªãã£ãŸãŒã³ããããŸãã
- èªèšŒ LDAPèªèšŒã¯ãäŒç€Ÿã®ãã£ã¬ã¯ããªå ã®ã¢ã€ãã ãéäžåããŸãã
- èªå¯ èªå¯ã¯ããŠãŒã¶ãŒã®ããŒã«ã«å¿ããŠãããŒã¿ããŒã¹ãæäŸããã¢ã¯ã»ã¹æš©ã決å®ããŸãã
- æå·å æå·åã¯ãä¿ç®¡äžãšè»¢éäžã«åããããšãã§ããŸãã MongoDBã»ãã¥ãªãã£ã«ãšã£ãŠéèŠã§ãã
- ç£æ» ç£æ»ã«ã¯ãããŒã¿ããŒã¹ã§èª°ãäœããããã確èªããæ©èœãå«ãŸããŸãã
- 管çã 管çã«ã¯ãããã¥ã¡ã³ããšæ©å¯ããŒã¿ïŒã¢ã«ãŠã³ãçªå·ããã¹ã¯ãŒãã瀟äŒä¿éçªå·ãç幎ææ¥ãªã©ïŒã®ç¢ºèªãå«ãŸããŸãã ããã¯ãæ©å¯ããŒã¿ãä¿åãããŠããå Žæã«é¢ããç¥èãšãã·ã¹ãã ãžã®ããŒã¿ã®äŸµå ¥ãé²ãããã®äž¡æ¹ã«é©çšãããŸãã
LDAPèªèšŒ
MongoDBã«ã¯ãããã©ã«ãã§ç¡å¹ã«ãªã£ãŠããçµã¿èŸŒã¿ã®ãŠãŒã¶ãŒããŒã«ããããŸãã ãã ãããã¹ã¯ãŒãã®è€éãã幎霢ã®ããŒããŒã·ã§ã³ãå©çšå¯èœãªæ©èœã®ç°ãªãã»ãããæã€ãŠãŒã¶ãŒããŒã«ã®éäžåãšèå¥ãªã©ã®èŠçŽ ãæ¬ ããŠããŸãã ããã¯ã PCI DSSæºæ ãªã©ã®èŠå¶ã¬ãã¥ãŒã«ãšã£ãŠéèŠã§ãã ããšãã°ãPCI DSSã¯ãå€ããŠç°¡åã«è§£èªããããã¹ã¯ãŒãã®äœ¿çšãçŠæ¢ããŠãããã¹ããŒã¿ã¹ãå€ãããã³ã«ïŒããšãã°ããŠãŒã¶ãŒãéšéãäŒç€ŸãèŸãããšãïŒãŠãŒã¶ãŒã¢ã¯ã»ã¹ã®å€æŽãèŠæ±ããŸãã
幞ããªããšã«ãLDAPã䜿çšããŠãããã®ã®ã£ããã®ã»ãšãã©ãåããããšãã§ããŸãã å€ãã®ã³ãã¯ã¿ã§ã¯ãWindows Active DirectoryïŒADïŒã䜿çšããŠLDAPãšå¯Ÿè©±ã§ããŸãã
泚 ïŒLDAPãµããŒãã¯ãMongoDB Enterpriseã§ã®ã¿å©çšå¯èœã§ãã ã³ãã¥ããã£çã§ã¯ãããŸããã ãã ããMongoDBçšã®Percona Serverãªã©ãMongoDBã®ä»ã®ãªãŒãã³ãœãŒã¹ããŒãžã§ã³ã§äœ¿çšã§ããŸãã
MongoDB 3.2ã¯ãŠãŒã¶ãŒãLDAPã«ä¿åããŸãããããŒã«ã¯ä¿åããŸããïŒçŸåšã¯åã ã®ãã·ã³ã«ä¿åãããŠããŸãïŒã MongoDB 3.4 Enterprise 㯠ãéäžã¢ã¯ã»ã¹ã®ããã«LDAPã«ããŒã«ãä¿åããæ©èœãæäŸããå¿ èŠããããŸãã ïŒåœ¹å²ã«ã€ããŠã¯åŸã§èª¬æããŸãïŒã

å³ 1. SASLèªèšŒã®æé ïŒç°¡æèªèšŒããã³ã»ãã¥ãªãã£ã¬ã€ã€ãŒïŒã
LDAPãšADã䜿çšããŠããŠãŒã¶ãŒãäŒç€Ÿã®ãã£ã¬ã¯ããªã«é¢é£ä»ããããšãã§ããŸãã 圹å²ãå€æŽãããäŒç€ŸãèŸããããããšã人äºã¹ã¿ããã¯ããŒã¿ããŒã¹å ã®ã°ã«ãŒãããããããåé€ã§ããŸãã ãããã£ãŠãæåã§ããŒã¿ãæäœããã¢ã¯ã»ã¹æš©ãä»äžããã人ã ãããããåãåãã誀ã£ãŠããŒã¿ã倱ãããããšã®ãªãèªåã·ã¹ãã ããããŸãã
Mongoã§ã®LDAPã®æäœã¯éåžžã«ç°¡åã§ãã MongoDBã«ã¯ãå€éšLDAPããŒã¿ããŒã¹ããã§ãã¯ããããæ瀺ããç¹å¥ãªã³ãã³ã$ externalããããŸãã
LDAPã䜿çšããå Žåã®æ³šæç¹ãããã€ããããŸãã
- éåžžã©ãã.createUserã䜿çšããŠãŠãŒã¶ãŒãäœæããŸãããdb / collectionãªãœãŒã¹ã¿ã°ãå¿ ãè¿œå ããŠãã ããã
- ããã«ãLDAPèªèšŒã«ã¯ããã«2ã€ã®ãã£ãŒã«ããå¿
èŠã§ãã
- ã¡ã«ããºã ïŒããã¬ãŒã³ã
- digestPasswordïŒfalse
ãŠãŒã¶ãŒåœ¹å²
ããŒã«ããŒã¹ã®ã¢ã¯ã»ã¹å¶åŸ¡ïŒRBACïŒã¯ãMongoDBã®äžå¿ã§ãã çµã¿èŸŒã¿ã®åœ¹å²ã¯ãããŒãžã§ã³2.6以éã§äœ¿çšå¯èœã§ãã ç¹å®ã®ãŠãŒã¶ãŒãå®è¡ã§ããã¢ã¯ã·ã§ã³ãæ£ç¢ºã«æžãçããããšã§ãç¬èªã®ããŒã«ãäœæã§ããŸãã ãã®æ©èœã¯MongoDBã®ã³ã¢ã«çµã¿èŸŒãŸããŠããããªãŒãã³ãœãŒã¹ãœãããŠã§ã¢ã®ã»ãšãã©ãã¹ãŠã®åçšããŒãžã§ã³ã§å©çšã§ããŸãã
ç¥ã£ãŠããã¹ã5ã€ã®åºæ¬çãªMongoDBã®çµã¿èŸŒã¿ããŒã« ïŒ
- èªã ïŒ
- éåžžãã»ãšãã©ã®ãŠãŒã¶ãŒã«äžããããèªã¿åãã¢ã¯ã»ã¹ã
- readWrite ïŒ
- readWriteã¢ã¯ã»ã¹ã«ãããããŒã¿ãç·šéã§ããŸãã
- readWriteã«ã¯èªã¿åãèš±å¯ãå«ãŸããŸãã
- dbOwner ïŒ
- readWriteãdbAdminãuserAdminïŒããŒã¿ããŒã¹çšïŒãå«ãŸããŸãã userAdminã«ã¯ããŠãŒã¶ãŒã®è¿œå ãšåé€ããŠãŒã¶ãŒãžã®æš©éã®ä»äžãããŒã«ã®äœæãå«ãŸããŸãã ãããã®æš©éã¯ã1ã€ã®ç¹å®ã®ããŒã¿ããŒã¹ãµãŒããŒã«ã®ã¿å²ãåœãŠãããŸãã
- dbAdminAnyDatabase ïŒ
- ãã¹ãŠã®ããŒã¿ããŒã¹ã§dbAdminãäœæããŸããããŠãŒã¶ãŒã®ç®¡çïŒããšãã°ãäœæãšåé€ïŒã¯èš±å¯ããŸããã ã€ã³ããã¯ã¹ã®äœæãããŒã¿å§çž®æé ã®åŒã³åºããªã©ãã§ããŸãã ããã§ã¯åå¥ã®ã¢ã¯ã»ã¹ã¯æäŸãããŠããŸããã
- ã«ãŒã ïŒ
- ããã¯ã¹ãŒããŒãŠãŒã¶ãŒã§ãããå¶éããããŸãã
- ã»ãšãã©ã®ã¢ã¯ã·ã§ã³ãå®è¡ã§ããŸããããã¹ãŠã§ã¯ãããŸããã
- ã·ã¹ãã ã³ã¬ã¯ã·ã§ã³ãå€æŽã§ããŸããã
- ãã®åœ¹å²ã®äžéšã®ã³ãã³ãã¯ãããŒãžã§ã³ã«ãã£ãŠã¯äœ¿çšã§ããŸããã ããšãã°ãMongoDB 3.2ã®ã«ãŒãããŒã«ã§ã¯ãoplogãŸãã¯ãããã¡ã€ã©ãŒã®ãµã€ãºãå€æŽã§ããŸããããŸããMongoDB 3.4ã§ã¯ãçŸåšã®ãã¥ãŒãèªã¿åããŸããã
ã¯ã€ã«ãã«ãŒãããŒã¿ããŒã¹ãšã³ã¬ã¯ã·ã§ã³
ã¯ã€ã«ãã«ãŒããšã¯ããµãŒããŒäžã®ããŒã¿ããŒã¹ãŸãã¯ã³ã¬ã¯ã·ã§ã³ïŒãŸãã¯ãã®äž¡æ¹ïŒã®å€§ããªã°ã«ãŒããžã®ã¢ã¯ã»ã¹ãæäŸããããšãæå³ããŸãã nullã«èšå®ãããšããã¹ãŠã®ããŒã¿ããŒã¹ãŸãã¯ã³ã¬ã¯ã·ã§ã³ãäžåºŠã«æå®ã§ãã dbAdminAnyDatabaseããŒã«ãåé¿ã§ããŸãã ããã«ãããéžæãããŠãŒã¶ãŒã¯ã管çè æ©èœãå«ããã¹ãŠã®æš©éãæã€ããšãã§ããŸãã
ããã¯å±éºã§ãã
ã¯ã€ã«ãã«ãŒãã䜿çšããŠãå€ãã®ç¹å¥ãªæš©éãä»äžãã次ã®æ»æå¯èœãªãã¹ãéãããšãç¥ã£ãŠããå¿ èŠããããŸãã
- readWriteAnyDatabaseæš©éã¯éåžžã«åºç¯å²ã§ãããã¢ããªã±ãŒã·ã§ã³ãŠãŒã¶ãŒãä»ããæœåšçãªæ»æã«å¯ŸããŠãŠãŒã¶ãŒåãšãã®åœ¹å²ãå ¬éããŸãã
- ãã³ãã¬ãŒãã®äœ¿çšã¯ãç¹å®ã®ã¢ããªã±ãŒã·ã§ã³ãç¹å®ã®ããŒã¿ããŒã¹ã«éå®ããªãããšãæå³ããŸãã
- ã¯ã€ã«ãã«ãŒãã§ã¯ãå€ãã®ããŒã¿ããŒã¹ã§ãã«ãããã³ã·ãŒã䜿çšã§ããŸããã
- æ°ããããŒã¿ããŒã¹ãžã®ã¢ã¯ã»ã¹ã¯èªåçã«èš±å¯ãããŸããã
ã«ã¹ã¿ã ããŒã«ãäœæãã
MongoDBã®åœ¹å²ã®åã¯ãç¬èªã®åœ¹å²ãäœæã§ããããšã«ãããŸãã ã«ã¹ã¿ã ããŒã«ã§ã¯ãç¹å®ã®ãŠãŒã¶ãŒã«å¯ŸããŠãªãœãŒã¹äžã®ã¢ã¯ã·ã§ã³ãèšå®ã§ããããã«æå®ã§ããŸãã ãã®ã¬ãã«ã®è©³çŽ°ã䜿çšãããšãMongoDBç°å¢ã§èª°ãäœãå®è¡ã§ãããã詳现ã«å¶åŸ¡ã§ããŸãã
ã«ã¹ã¿ã ããŒã«ã®å®çŸ©ã«é¢ããŠã¯ã4çš®é¡ã®ãªãœãŒã¹ããããŸãã
- db ããŒã¿ããŒã¹ã瀺ããŸãã ååã«æååã䜿çšãããããanyãïŒãã¿ãŒã³ãªãïŒã«ããã䜿çšã§ããŸãã
- ã³ã¬ã¯ã·ã§ã³ ã äžé£ã®ããã¥ã¡ã³ããæå®ããŸãã ååã«æååã䜿çšãããããanyãïŒãã¿ãŒã³ãªãïŒã«ããã䜿çšã§ããŸãã
- ã¯ã©ã¹ã¿ãŒ 圱ä»ãã¯ã©ã¹ã¿ãŒãŸãã¯ãã®ä»ã®ã¡ã¿ããŒã¿ãœãŒã¹ã瀺ããŸãã true / falseã®ããŒã«å€ã§ãã
- anyResource ã ããããå Žæãžã®ã¢ã¯ã»ã¹ãæå³ããŸãã true / falseã®ããŒã«å€ã§ãã
ã©ã®ããŒã«ãå¥ã®ããŒã«ã®ããããã£ãç¶æ¿ã§ããŸãã ãããŒã«ããšåŒã°ããé åããããæ°ããããŒã«ãè¿œå ã§ããŸãã æå®ãããããŒã«ã®ããããã£ãç¶æ¿ããŸãã
createRoleã䜿çšããŠã圹å²ãã¢ã¬ã€ã«è¿œå ããŸãã
ãŠãŒã¶ãŒãŸãã¯ããŒã«ã«æ°èŠãŸãã¯æ¢åã®ããŒã¿ããŒã¹ãè¿œå ã§ããŸãã ããšãã°ãããŒã¿ããŒã¹ãããŒã«ã«ã¢ã¿ããããããšã«ãããããŒã¿ããŒã¹ãžã®èªã¿åãããã³æžã蟌ã¿ã¢ã¯ã»ã¹ãè¿œå ã§ããŸãã
grantPrivilegesToRoleã³ãã³ãã䜿çšããŠãæ¢åã®ããŒã«ã«æ°ãããªãœãŒã¹ãè¿œå ããŸãã
以äžã¯ãæ°ããã¹ãŒããŒãŠãŒã¶ãŒããŒã«ãäœæããäŸã§ãã ç¹°ãè¿ããŸããããã®åœ¹å²ã¯ãMongoDBç°å¢ãå¶éãªãã§1人ã®ãŠãŒã¶ãŒãæã€ããã«å¿ èŠã§ãïŒäºæããªãç¶æ³ã®å ŽåïŒã
db = db.geSiblingDB(âadminâ); db.createRole({ role: âsuperRootâ, privileges:[{ resource: {anyResource:true}, actions: ['anyAction'] }] roles:[] }); db.createUser({ user: âcomanyDBAâ, pwd: âEWqeeFpUt9*8zqâ, roles: [âsuperRootâ] })
ãããã®ã³ãã³ãã¯ã geSiblingDBããŒã¿ããŒã¹ã«superRootãšããæ°ããããŒã«ãäœæãããã®ããŒã«ã«ãªãœãŒã¹ãšã¢ã¯ã·ã§ã³ãå²ãåœãŠãŸãã 次ã«ãåãããŒã¿ããŒã¹ã«æ°ããcompanyDBAãŠãŒã¶ãŒïŒãã¹ã¯ãŒãä»ãïŒãäœæããæ°ããsuperRootããŒã«ãå²ãåœãŠãŸãã
ãã¹ãŠã«SSLã䜿çšãã
SSLã¯ãå®å šã§ãªããããã¯ãŒã¯äžã®ããŒã¿ãä¿è·ããã®ã«åœ¹ç«ã¡ãŸãã ã€ã³ã¿ãŒããããšå¯Ÿè©±ããããŒã¿ããŒã¹ã䜿çšããå Žåã¯ãSSLã䜿çšããå¿ èŠããããŸãã
SSLã䜿çšããŠMongoDBãä¿è·ãã2ã€ã®éåžžã«è¯ãçç±ããããŸãïŒãã©ã€ãã·ãŒãšèªèšŒã SSLã䜿çšããªãå Žåãéæ³ãŸãã¯æªæã®ããç®çã§ããŒã¿ã«ã¢ã¯ã»ã¹ãã³ããŒã䜿çšã§ããŸãã èªèšŒã䜿çšãããšãã»ãã¥ãªãã£ã®å±€ãè¿œå ãããŸãã SSLç§å¯éµã€ã³ãã©ã¹ãã©ã¯ãã£ïŒPKIïŒã¯ãæ£ããCA蚌ææžãæã€ãŠãŒã¶ãŒã®ã¿ãMongoDBã«ã¢ã¯ã»ã¹ã§ããããã«ããŸãã
SSLãµããŒãã¯ããªãåããMongoDBã«ååšããŠããŸããããæè¿ã®ããŒãžã§ã³ã§ã¯å€§å¹ ã«æ¹åãããŠããŸãã 以åã¯ãSSLã䜿çšããå ŽåããããããŠã³ããŒãããMongoDBã³ãã¥ããã£ã®ããŒãžã§ã³ã§æåã§ã³ã³ãã€ã«ããå¿ èŠããããŸããã MongoDB 3.0以éãSSLã¯ããã©ã«ãã§ãœãããŠã§ã¢ã§ã³ã³ãã€ã«ãããŸãã
MongoDBã®å€ãããŒãžã§ã³ã«ããã¹ãæ€èšŒããããŸããã§ããã æ¥ç¶ããã®SSLèŠæ±ãæºããæ§æãã¡ã€ã«ããã§ãã¯ã€ã³ã§ãããã©ã°ã«ãããŸããã
MongoDBã®SSLã®æè¿ã®ããŒãžã§ã³ã«ã¯ã次ã®äž»èŠãªæ©èœãå«ãŸããŠããŸãã
- ãã¹ãæ€èšŒïŒãªãã·ã§ã³ïŒ;
- 䜿çšããç¹å®ã®ã»ããã¢ãã.keyãæå®ããæ©èœã
- èªå·±çœ²å蚌ææžããã³ä»£æ¿ãµãã¹ã¯ã©ã€ããŒçšã®ã«ã¹ã¿ã èªèšŒå±ïŒCAïŒã
- allowSSL ã preferSSL ã requireSSLã¢ãŒã ãSSLã®äœ¿çšã®ç²åºŠãéžæã§ããŸãïŒå®å šæ§ã®äœããã®ããé«ããã®ãžïŒã
SSLïŒã«ã¹ã¿ã CAã®äœ¿çš
MongoDBã®ææ°ã®SSLããŒãžã§ã³ã§ã¯ãç¬èªã®CAã䜿çšã§ããŸãã ããã«ãããSSLã®äœ¿çšæ¹æ³ãæè»ã«æ±ºå®ã§ããŸãããããã€ãã®æ³šæäºé ããããŸãã æ¥ç¶ãä¿è·ããããšããŠããã ããªãã sslAllowInvalidCertficatesãéžæããããªããããããŸããã ãã ããããã¯éåžžãããã€ãã®çç±ã§æªãèãã§ãã
- 蚌ææžã倱å¹ãŸãã¯æéåãã«ãªã£ãå Žåã§ãæ¥ç¶ãèš±å¯ããŸãã
- ç¹å®ã®ãã¹ãåã«å¶éãèšããŸããã
- æã£ãŠããã»ã©ä¿è·ãããŠããŸããã
ãã®åé¡ã解決ããã«ã¯ã net.ssl.CAFileãæ§æããŸããMongoDBã¯ããŒãšCAãã¡ã€ã«ã®äž¡æ¹ã䜿çšããŸãïŒããã¯ã¯ã©ã€ã¢ã³ãã§å®è¡ããå¿ èŠããããŸãïŒã
ãã ããSSLã®äœ¿çšã«ã¯ãããã©ãŒãã³ã¹ãšããæ¢ç¥ã®åé¡ããããŸãã SSLã䜿çšãããšãééããªãæžå°ããŸãã
ãã£ã¹ã¯æå·å
ããŒã¿ã¯éä¿¡äžãŸãã¯ä¿åäžã®ããããã§ãããMongoDBã§ãããã®äžæ¹ãŸãã¯äž¡æ¹ãæå·åã§ããŸãã 転éããŒã¿æå·åïŒSSLïŒã«ã€ããŠèª¬æããŸããã 次ã«ãä¿åãããŠããããŒã¿ãèŠãŠã¿ãŸãããã
ä¿åããŒã¿ã¯ããã£ã¹ã¯ã«ä¿åãããããŒã¿ã§ãã ãã®ãããªããŒã¿ãæå·åããã«ã¯ãéåžžãæå·åãããã¹ãã¬ãŒãžã«ä¿åããå¿ èŠããããŸãã ããã¯ãç©ççãªçé£ãé²æ¢ãããšãšãã«ããµãŒãããŒãã£ã«èªã¿ã«ããæ¹æ³ã§ä¿åãããããã¯ã¢ãããäœæããããã§ãã ããã«ã¯å®éçãªå¶éããããŸãã ãããã®æ倧ã®ãã®ã¯ãã·ã¹ãã 管çè ãžã®ä¿¡é Œãšãããã«ãŒãã·ã¹ãã ãžã®ç®¡çã¢ã¯ã»ã¹ãç²åŸããªãã£ããšããèªä¿¡ã§ãã
ãã®åé¡ã¯ãMongoDBã«åºæã®ãã®ã§ã¯ãããŸããã ä»ã®ã·ã¹ãã ã§äœ¿çšãããäºé²æªçœ®ãããã§æ©èœããŸãã ãããã«ã¯ãLUKSãcryptfsãªã©ã®æå·åããŒã«ããŸãã¯LDAPãã¹ããŒãã«ãŒããRSAããŒã¯ã³ã䜿çšããæå·åããŒã®çœ²åãªã©ââãããã«å®å šãªæ¹æ³ãå«ãŸããŸãã
ãã®ã¬ãã«ã®æå·åãå®è¡ãããšãã¯ããã£ã¹ã¯ã®èªåããŒãã£ã·ã§ã³åãšåŸ©å·åãªã©ã®èŠå ãèæ ®ããå¿ èŠããããŸãã ããããããã¯ã·ã¹ãã 管çè ã«ãšã£ãŠæ°ããããšã§ã¯ãããŸããã ãããã¯ãŒã¯ã®ä»ã®éšåãšåæ§ã«ããã®èŠä»¶ã管çã§ããŸãã è¿œå ã®å©ç¹ã¯ãåäžã®ã¹ãã¬ãŒãžæå·åæé ã§ãããç¹å®ã®æ©èœã§äœ¿çšãããåãã¯ãããžãŒããšã§ã¯ãããŸããã
ä¿åããŒã¿æå·åã¯ã次ã®ããããã®æ¹æ³ã§å®è£ ããããšããäžåºŠã«ãã¹ãŠå®è£ ããããšãã§ããŸãã
- ãã£ã¹ã¯å šäœãæå·åããŸãã
- ããŒã¿ããŒã¹ãã¡ã€ã«ã®ã¿ãæå·åããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã§æå·åããŸãã
æåã®ãªãã·ã§ã³ã¯ããã¡ã€ã«ã·ã¹ãã ã§ãã£ã¹ã¯æå·åã䜿çšããŠå®è£ ã§ããŸãã LUKSãšdm-cryptã䜿çšããŠç°¡åã«èšå®ã§ããŸãã PCI DSSããã³ãã®ä»ã®èªèšŒèŠä»¶ã«æºæ ããã«ã¯ãæåãš2çªç®ã®ãªãã·ã§ã³ã®ã¿ãå¿ èŠã§ãã
ç£æ»
åªããã»ãã¥ãªãã£ã·ã¹ãã ã¢ãŒããã¯ãã£ã®äžå¿ãšãªãã®ã¯ãããŒã¿ããŒã¹ã§ã©ã®ãŠãŒã¶ãŒãã©ã®ã¢ã¯ã·ã§ã³ãå®è¡ãããã远跡ããæ©èœã§ãïŒå®éã®ãµãŒããŒã®ç®¡çæ¹æ³ãšåæ§ïŒã ç£æ»ã䜿çšãããšãç¹å®ã®ãŠãŒã¶ãŒãããŒã¿ããŒã¹ãã³ã¬ã¯ã·ã§ã³ããŸãã¯ãœãŒã¹ã®å Žæã®åºåããã£ã«ã¿ãªã³ã°ã§ããŸãã ããã«ãããã»ãã¥ãªãã£ã€ã³ã·ãã³ãããã§ãã¯ãããã°ãäœæãããŸãã ããã«éèŠãªããšã¯ãäŸµå ¥ããããŒã¿ããŒã¹ãä¿è·ãããããçºçããå Žåã®äŸµå ¥ã®æ·±ããç解ããããã«é©åãªæªçœ®ãè¬ããã»ãã¥ãªãã£ç£æ»å¡ã瀺ããŠããŸãã
ç£æ»ã䜿çšãããšãç°å¢å ã®æ»æè ã®ã¢ã¯ã·ã§ã³ãå®å šã«ç£èŠã§ããŸãã
泚 ïŒç£æ»ã¯MongoDB Enterpriseã§ã®ã¿å©çšå¯èœã§ãã ã³ãã¥ããã£çã§ã¯ãããŸããã ãã ããMongoDBçšã®Percona Serverãªã©ãMongoDBã®ä»ã®ãªãŒãã³ãœãŒã¹ããŒãžã§ã³ã§äœ¿çšã§ããŸãã
ããã«ãããŒã¿ããŒã¹ã«ä¿åãã圢åŒã誰ããå€æŽãããšéçºè ã³ãŒããæ©èœããªãå¯èœæ§ããããããDBAã®åŸæ¥å¡ãã¹ããŒããé©åã«ãã§ãã¯ããå Žåã«ã®ã¿ã¹ããŒãã®å€æŽãè¡ãããããã«ããããšãã§ããŸãã ããã«ãããMongoDBã®åçãªçç£ã¹ããŒã ã«è¿œå ã®å¶åŸ¡å±€ãããããããŸãïŒå¿ èŠãªããŠããäœã§ãä¿åã§ããŸãïŒã
éå¶ç®¡ç
管çã«ã¯ãããŒã¿ã®æ¿å ¥ãšæŽæ°ãå«ãŸããŸãã ãŸãããbdayãããbirthdayãããssnãããsocialããªã©ã®ãã£ãŒã«ãåãå®çŸ©ãããŠãããã©ããã確èªããã®ã«ã圹ç«ã¡ãŸãã ç°¡åã«èšãã°ã管çãšã¯ãããã¥ã¡ã³ãæ€èšŒãéããŠMongoDBã·ã¹ãã ã«è€éãªæšæºãå®è£ ããæ©èœã§ãã
ããã¥ã¡ã³ãã®æ€èšŒã«ãããããã¥ã¡ã³ãã®ã©ã®é åãç¹å®ã®ã³ã¬ã¯ã·ã§ã³ã«æå¹ã§ããããå€æã§ããŸãã ãã©ã¡ãŒã¿ãŒãèšå®ããŠããŒãšå€ãæ€çŽ¢ããããããäºåå®çŸ©ãããæšæºãæºãããŠããããšã確èªã§ããŸãã ããšãã°ãããŒãååšãããã©ãããããã³ããŒã®ã¿ã€ããæ£ãããã©ããã確èªã§ããŸãã
äž»ãªããã¥ã¡ã³ãæ€èšŒããŒã ã¯æ¬¡ã®ãšããã§ãã
- collMod ã æ€èšŒããããŒãå®çŸ©ããŸãã
- ããªããŒã¿ãŒ ã ãã§ãã¯ãããã©ã¡ãŒã¿ãŒãå®çŸ©ããŸãã
- validationLevel ã ããªããŒã¿ãŒã®é倧床ãèšå®ããŸãïŒvalidationActionã«å¿ããŠãããããªã³ã«ãªãé »åºŠãšã¢ã¯ã·ã§ã³ãå®è¡ãããé倧床ïŒã
- validationAction ã äœãããã¹ãã«åæ Œããªãå Žåã«æé ã確ç«ããŸãã
ç¹å®ã®ããŒãšããŒå€ã«éå®ãããŸããã æ£èŠè¡šçŸæååã䜿çšããããšãã§ããŸãã æ£èŠè¡šçŸã䜿çšããŠãã¯ã¬ãžããã«ãŒãçªå·ãªã©ã®æååã®ãã§ãã¯ãå®è¡ã§ããŸãïŒ ^ d {4} -d {4} -d {4} -d {4} $ ã æ£èŠè¡šçŸã䜿çšãããšããŠãŒã¶ãŒIDãç幎ææ¥ã瀟äŒä¿éçªå·ãªã©ã確èªã§ããŸãã
ãããã¯ãããŒã¿ããŒã¹ç®¡çè ãšã»ãã¥ãªãã£ã¢ãŒããã¯ããéçºè ãäŒç€Ÿã«è¿œå ã®ãªã¹ã¯ãäžããªãããã«ããæ¹æ³ã®äŸã§ãã
ãããã¯ãŒã¯ã®æ»æãšãªã¢ãåæžãã
ãããã¯ãŒã¯ã®æ»æé åãæžããããšã¯ãèªèšŒãããŠããªããŠãŒã¶ãŒãã¢ã¯ã»ã¹ã§ãããããã¯ãŒã¯ã®ããŒããŠã§ã¢ãšãœãããŠã§ã¢ã®ãã¹ãŠã®è匱æ§ãå¶åŸ¡ããããšãæå³ããŸãã
MongoDBã®ããã¥ã¡ã³ãã§ã¯ãåã¢ããªã±ãŒã·ã§ã³ãã¹ãã«Mongoã€ã³ã¹ã¿ã³ã¹ãé 眮ããããšãæšå¥šãããŠããŸãã ãã®ææ¡ã¯ãïŒãããã¯ãŒã¯ããããå¶éããããšã«ããïŒããŒã¿ããŒã¹ç°å¢ã®é 延ãæžããããã«ç¢ºãã«åœãŠã¯ãŸããŸãã ããããããã©ãŒãã³ã¹ã«ã¯è¯ãäžæ¹ã§ãã»ãã¥ãªãã£ã«ã¯éåžžã«æªãã§ãã
åMongoã€ã³ã¹ã¿ã³ã¹ã¯ä»¥äžã«ã¢ã¯ã»ã¹ã§ããå¿ èŠããããŸãã
- åãã©ã€ããªããŒãã
- åã»ã«ã³ããªããŒãã
- åæ§æãµãŒããŒã«ã
ã»ãã¥ãªãã£ã«ãšã£ãŠæªå€¢ã§ããããšãæ³åã§ããŸãã mongoã®åã€ã³ã¹ã¿ã³ã¹ã«ã¯ããããã¯ãŒã¯ã«ãŸãããxåã®æ¥ç¶ããããŸãã ããã¯ãæ»æè ã䜿çšã§ããxå以äžã®æ¥ç¶ã§ãã
代ããã«ãä»ã®ã·ã¹ãã ãžã®ã¢ã¯ã»ã¹ãèš±å¯ããã¢ããªã±ãŒã·ã§ã³ã®é£ã«MongoDBãµãŒããŒã®ã°ã«ãŒãã眮ãã®ãæåã§ãã ã¢ããªã±ãŒã·ã§ã³ã«ããŒããã©ã³ãµãŒïŒãŸãã¯åæ§ã®ãã®ïŒãã»ããã¢ããããã¢ããªã±ãŒã·ã§ã³ãMongoDBãµãŒããŒã®ã¿ã«ã¢ã¯ã»ã¹ã§ããããã«ããŸãã ããã«ããããããã¯ãŒã¯äžã§éãããæ¥ç¶ãå€ãããããšãé²ãã¹ããŒãDMZã¿ã€ãã®èšå®ãæäŸãããŸãã

å³ 2.ããŒããã©ã³ãµãŒãšãšãã«å±éãããMongoDBã
ããã©ã«ãèšå®ã®ã¹ããŒã¯ããŒã¿ããŒã¹
äžè¬ã«ãªãŒãã³ãœãŒã¹ããŒã¿ããŒã¹ãç¹ã«MongoDBã«ã¯ãããŒã¿ã®ä¿è·ãä¿èšŒããããã«å¿ èŠãªãã¹ãŠã®ã»ãã¥ãªãã£èšå®ããããŸãïŒäŒæ¥ããŒãžã§ã³ãè³Œå ¥ããå¿ èŠã¯ãããŸããïŒã
ãªãŒãã³ãœãŒã¹ããŒã¿ããŒã¹ã§ã®ã»ãã¥ãªãã£ã®ä»çµã¿ãç解ããŸãã ããã©ã«ãèšå®ãä¿åããããšã¯ãçœå®³ãžã®æ£ããéã§ãã äžèšã®åé¡ãç解ããŠè§£æ±ºããããšã«ããããã¹ãŠã®ã»ãã¥ãªãã£ããŒãºïŒå®å šèŠå¶èŠä»¶ã®éµå®ãå«ãïŒãæºãããåççã§ããç¥ãããæ¹æ³ã䜿çšããŠäŒç€Ÿãä¿è·ã§ããŸãã

MongoDBã®éçšãšãããžã§ã¯ãã®ã»ãã¥ãªãã£ã®åé¡ã«é¢é£ãããã¹ãŠã®äººã¯ãæ¥ãã¹ãPG Day'17ããããã€ãã®ã¬ããŒããæåºã§ããŸããMongoDBã® Henrik Ingo ãžã®ã¬ããªã±ãŒã·ã§ã³ Novikovãšãéçºè ãããŒã¿ããŒã¹ã»ãã¥ãªãã£ã«ã€ããŠç¥ããããšæã£ãŠãããã Ilya Verbitsky ã«å°ããããšãæããŠãããã¹ãŠã®ãã®ã ä»ããåå ãããïŒ