0. ๊ฐ์
...๋ค ๊ตฐ๋์ ์์ต๋๋ค (์ ์ฅ)
๊ตฐ๋๋ฅผ ๊ฐ ์์ค์ ์๋๋ฐ๋งต ๋ฏธ๋์ด ์๋ฒ๊ฐ ์๋์น ์๊ฒ ์ญ์ ๋์๊ณ ๋ค์ ์ค์ ํด์ผํ๋ ์ํฉ์ด ๋์์ต๋๋ค(...ใ )
์ด ํฌ์คํ ๋ค์ ๊ธฐ์กด์ github์ ์๋ ์ฝ๋๋ฅผ ๋ค์ ๊ฐ์ ธ์ ์๋ฒ๋ฅผ ์ฌ์ค์ ํ๋ ๊ณผ์ ์ ๋ํ ๊ธฐ๋ก์ผ๋ก, ๊ทธ์ค centos ์ด๊ธฐ ์ค์ ์์ ssh๋ฅผ ์ค์ ํ๋ ๊ณผ์ ์ ๋ด๊ณ ์์ต๋๋ค.
mongoDB๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์์ ํ ๋ ๋ณ๋์ ๊ณ์ ์ค์ ์ด ํ์ํ์ง ์์ต๋๋ค.
ํ์ง๋ง ๋๊ตฌ๋ db์ ์ ์ํ ์ ์๋ค๋ฉด ๋ณด์์ฑ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฏ๋ก,
๊ณ์ ์ ๋ง๋ค์ด ํน์ ๊ณ์ ์ผ๋ก๋ง ์๋น์คdb์ ์ ๊ทผํ ์ ์๋๋ก ํฉ๋๋ค.
1. ๊ณ์ ๊ถํ ์์ฑ (์ ํ)
๊ณ์ ์ ์์ฑํ๊ธฐ ์์, ๊ณ์ ์ ๋ถ์ฌํ ๊ถํ์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
mongoDB๋ ์ฌ์ฉ์๊ฐ ์ํ๋ action์ ์ง์ ํ์ฌ ์ฌ์ฉ์ ์ ์ role์ ์์ฑํ ์ ์์ต๋๋ค.
๋ฌผ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ role ๋ํ ์กด์ฌํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ role์ ์ข ๋ฅ ๋ฐ ์ค๋ช ์ ์๋ Louis.Kim ๋์ ํฌ์คํ ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.
(ํ๊ธ ํ๋ก ์ ๋ฆฌ๋์ด์์ด ๊ฐ๋ ์ฑ์ด ๋์ต๋๋ค)
https://hyunki1019.tistory.com/166
๋ค์ ๋์์ ์ฌ์ฉ์ ์ ์ role ์์ฑ ๋ฐฉ๋ฒ์ ๋๋ค.
์ฌ์ฉ์ ์ ์ role์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
db.createRole({
role: "[[ROLE_NAME]]",
privileges: [ // ํด๋น role์ ๋ถ์ฌํ ๊ถํ์ ๋ํ ์ค์
{
resources: {
db: "[[DB_NAME]]",
collection: "[[COLLECTION_NAME]]", // optional
},
actions: [
"[[ACTION_NAMES]]", // find, update, insert, ...
...
]
}
],
roles: [ // ํด๋น role์ ํฌํจ์ํฌ ๊ธฐ์กด role์ ๋ํ ์ค์
{ role: "[[EXIST_ROLE_NAME]]", db: "[[AFFECT_DB_NAME]]" }
]
})
role์ ์ด๋ฆ๊ณผ ๊ถํ์ ์ค์ ํด์ฃผ๊ณ , ๊ธฐ์กด role์ ํ์ฉ action์ ํฌํจํ๋ค๋ฉด ํด๋น role๊น์ง roles์ ์ถ๊ฐํด์ฃผ๋ฉด ์ค์ ์ด ์๋ฃ๋ฉ๋๋ค.
2. ์ ์ ๊ณ์ ์์ฑ
admin db์์ db.createUser ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ ๊ท ๊ณ์ ์ ์์ฑํด์ค๋๋ค.
์์ฑํ๋ ๊ณ์ ์ด ์ฌ๋ฌ db๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก,
๋ณต์กํ๊ฒ ์ฐ๊ด๊ด๊ณ๊ฐ ์ฝํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด admin db์ ๊ณ์ ์ ์์ฑํฉ๋๋ค.
> use admin # admin db์ ๊ณ์ ์ ๋ฑ๋กํ๊ธฐ ์ํด admin db๋ก ์ด๋ํฉ๋๋ค
> db.createUser({ # ์๋ก์ด ๊ณ์ ์ ๋ง๋ญ๋๋ค
... user: "[[USERNAME]]",
... pwd: "[[PWD]]",
... roles: [[ROLE_RULE]]
... })
ROLE_RULE์ ๋ค์ด๊ฐ๋ ๊ฐ์ ๊ฒฝ์ฐ ํน์ DB์ ๋ํ์ฌ ํ์ฌ ์์ฑํ๋ ๊ณ์ ์ ํน์ ์ ์ด๊ถํ๋ง ํ ๋นํ ์ ์์ต๋๋ค.
ROLE_RULE์ ๋ค์ด๊ฐ๋ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
{ role: "[[ROLE_NAME]]", db: "[[ASSIGN_DB]]" } // ํน์ DB์ ๋ํ์ฌ ํด๋น ๊ถํ ์ค์
// OR
"[[ROLE_NAME]]" // ๋ชจ๋ DB์ ๋ํ์ฌ ํด๋น ๊ถํ ์ค์
ROLE_NAME์ ๋ค์ด๊ฐ๋ role ์ด๋ฆ์ ์์ ์์ฑํ role์ ์ด๋ฆ์ด๋ ๊ธฐ๋ณธ role์,
ASSIGN_DB๋ ํด๋น role์ ์ฌ์ฉํ์ฌ ์ ์ดํ db๋ช ์ ๊ธฐ์ ํ๋ฉด ๋ฉ๋๋ค.
3. DB ์ธ์ฆ๋ชจ๋ ํ์ฑํ
์์ ์์ฑํ ๊ณ์ ๋ค์ ์ฌ์ฉํ์ฌ DB์ ์ ์์ ์ ์ดํ๊ธฐ ์ํด์๋ db์ ์ธ์ฆ๋ชจ๋๋ฅผ ํ์ฑํํด์ผ ํฉ๋๋ค.
์์ ํฌ์คํ ์์ ์์ ํ๋ /etc/mongod.conf ํ์ผ์ ์ด์ด ์๋ ๊ฐ์ ์์ ํด์ค๋๋ค.
...[์ ๋ต]...
security:
authorization: disbaled # -> enabled๋ก ๋ณ๊ฒฝ
...[ํ๋ต]...
๋ณ๊ฒฝ๋ ์ค์ ์ ์ ์ฉํ๊ธฐ ์ํด db์๋ฒ๋ฅผ ์ฌ์์ํฉ๋๋ค.
# systemctl restart mongod
์ดํ๋ถํฐ ์ ์ํ ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์ํฉ๋๋ค:
์ ์ ์:
# mongosh --port [[PORT_NUM]] --host [[BIND_IP]] --u [[USER_NAME]] # ์ดํ "Enter password:"์์ pwd ์
๋ ฅ
# # --- OR ---
# mongosh --port [[PORT_NUM]] --host [[BIND_IP]]
test> use admin # switched to db admin
admin> db.auth("[[USER_NAME]]", "[[PWD]]") # PWD ์๋ต์ prompt์ ์
๋ ฅ
GUI(mongoDB Compass) ์ ์:
4. ๋ง์น๋ฉฐ
์ด๋ก์ mongoDB๊น์ง ์ค์ ์ด ์๋ฃ๋์์ต๋๋ค.
์๋น์ค ๋ฐฐํฌ๋ฅผ ์ํ ๋จ๊ณ๊ฐ ์ผ๋ง ๋จ์ง ์์๋๋ฐ, ์ค๊ฐ์ ๋จ๊ณ๋ค์ ํฌ์คํ ํ๋
์์ด๋ฒ๋ฆฌ์ง ์๊ณ ๋์ค์ ๋ณต์ตํ ์ ์์ด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
๋์ค์ ์๋น์ค๋ฅผ ๋ฐฐํฌํ ๋ค replica ๊ตฌ์ฑ ๋ํ ์๋ํด๋ณด๊ณ ์ถ์ต๋๋ค.