ํค ํ์ผ ์ธ์ฆ์ผ๋ก ์์ฒด ๊ด๋ฆฌํ ๋ณต์ ๋ณธ ์ธํธ ์ ๋ฐ์ดํธ
์ด ํ์ด์ง์ ๋ด์ฉ
๊ฐ์
๊ธฐ์กด ๋ณต์ ๋ณธ ์ธํธ์ ๋ํ ์ก์ธ์ค ์ ์ด๋ฅผ ์ ์ฉํ๋ ค๋ฉด ๋ค์์ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
๋ด๋ถ ์ธ์ฆ์ ์ฌ์ฉํ๋ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ ๊ฐ์ ๋ณด์
์ฌ์ฉ์ ์ก์ธ์ค ์ ์ด๋ฅผ ์ฌ์ฉํ๋ ์ฐ๊ฒฐ ํด๋ผ์ด์ธํธ์ ๋ณต์ ๋ณธ ์ธํธ ๊ฐ์ ๋ณด์
์ด ํํ ๋ฆฌ์ผ์์๋ ๋ณต์ ๋ณธ ์ธํธ์ ๊ฐ ๋ฉค๋ฒ๊ฐ ๋์ผํ ๋ด๋ถ ์ธ์ฆ ๋ฉ์ปค๋์ฆ๊ณผ ์ค์ ์ ์ฌ์ฉํฉ๋๋ค.
๋ด๋ถ ์ธ์ฆ์ ์ค์ ํ๋ฉด ์ฌ์ฉ์ ์ก์ธ์ค ์ ์ด๋ ๊ฐํํ ์ ์์ต๋๋ค. ๋ณต์ ๋ณธ ์ธํธ์ ์ฐ๊ฒฐํ๋ ค๋ฉด mongosh
๊ฐ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉ์ ๊ณ์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฌ์ฉ์๋ฅผ ์ฐธ์กฐํ์ธ์.
ํด๋ผ์ฐ๋ ๊ด๋ฆฌ์ ๋ฐ ์ด์ ๊ด๋ฆฌ์
Cloud Manager ๋๋ Ops Manager๊ฐ ๋ฐฐํฌ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ, ์ก์ธ์ค ์ ์ด๋ฅผ ์ ์ฉํ๋ ค๋ฉด Cloud Manager ๋งค๋ด์ผ ๋๋ Ops Manager ๋งค๋ด์ผ์ ์ฐธ์กฐํ์ธ์.
๊ณ ๋ ค ์ฌํญ
์ค์
๋ณ๊ฒฝ๋ IP ์ฃผ์๋ก ์ธํด ๊ตฌ์ฑ์ด ์ ๋ฐ์ดํธ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ค๋ฉด IP ์ฃผ์ ๋์ DNS ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ์ธ์. ํนํ ๋ณต์ ๋ณธ ์ธํธ ๊ตฌ์ฑ์ ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ๊ตฌ์ฑ์์ ๊ตฌ์ฑํ ๋ IP ์ฃผ์ ๋์ DNS ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
IP ์ฃผ์ ๋์ ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์คํ๋ฆฟ ๋คํธ์ํฌ ํธ๋ผ์ด์ฆ ์ ๋ฐ์ ๊ฑธ์ณ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ์ธ์. MongoDB 5.0๋ถํฐ IP ์ฃผ์๋ก๋ง ๊ตฌ์ฑ๋ ๋ ธ๋๋ ์คํํธ์ ์ ํจ์ฑ ๊ฒ์ฌ์ ์คํจํ๋ฉฐ ์์๋์ง ์์ต๋๋ค.
IP ๋ฐ์ธ๋ฉ
2} ๋ฐmongod
mongos
MongoDB localhost
๋ฐ์ด๋๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ฐ์ธ๋ฉ๋ฉ๋๋ค.
์ด์ ์ฒด์
์ด ํํ ๋ฆฌ์ผ์ mongod
ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํฉ๋๋ค. Windows ์ฌ์ฉ์๋ mongod.exe
ํ๋ก๊ทธ๋จ์ ๋์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ํค ํ์ผ ๋ณด์
ํคํ์ผ์ ์ต์ํ์ ๋ณด์ ํํ๋ก ํ ์คํธ ๋๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค. ํ๋ก๋์ ํ๊ฒฝ์์๋ X.509 ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฌ์ฉ์
์ด ์์ต์๋ admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ต์ํ์ ๊ด๋ฆฌ ์ฌ์ฉ์๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ๋ง ๋ค๋ฃน๋๋ค. ์ฌ์ฉ์ ์ธ์ฆ์๋ ๊ธฐ๋ณธ SCRAM ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํฉ๋๋ค. ์๋-์๋ต ๋ณด์ ๋ฉ์ปค๋์ฆ์ ํ
์คํธ ๋๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ฐ์ฅ ์ ํฉํฉ๋๋ค. ํ๋ก๋์
ํ๊ฒฝ์ ๊ฒฝ์ฐ x.509 ์ธ์ฆ์ ๋๋ ์์ฒด ๊ด๋ฆฌํ LDAP ํ๋ก์ ์ธ์ฆ(MongoDB Enterprise์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ) ๋๋ ์์ฒด ๊ด๋ฆฌํ ๋ฐฐํฌ์์ Kerberos ์ธ์ฆ(MongoDB Enterprise์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ)์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํน์ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ๋ํ ์ฌ์ฉ์ ์์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํน์ ์ธ์ฆ ๋ฉ์ปค๋์ฆ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฌ์ฉ์ ์์ฑ ๋ฐ ๊ด๋ฆฌ์ ๋ํ ๊ถ์ฅ์ฌํญ์ โค ์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
์ค๋จ ์๊ฐ
์ก์ธ์ค ์ ์ด๋ฅผ ์ ์ฉํ๊ธฐ ์ํ ๋ค์ ์ ์ฐจ์๋ ๋ค์ดํ์์ด ํ์ํฉ๋๋ค. ๊ฐ๋ ์ค๋จ ์๊ฐ์ด ํ์ํ์ง ์์ ์ ์ฐจ๋ ๋์ ์์ฒด ๊ด๋ฆฌ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ํค ํ์ผ ์ธ์ฆ์ผ๋ก ์ ๋ฐ์ดํธ(๊ฐ๋ ์ค๋จ ์๊ฐ ์์) ๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ธฐ์กด ๋ณต์ ๋ณธ ์ธํธ์ ํค ํ์ผ ์ก์ธ์ค ์ ์ด ์ ์ฉ
ํค ํ์ผ์ ์์ฑํฉ๋๋ค.
ํค ํ์ผ ์ธ์ฆ์ ์ฌ์ฉํ๋ฉด ๋ณต์ ๋ณธ ์ธํธ์ ๊ฐ mongod
์ธ์คํด์ค๋ ๋ฐฐํฌ์๋ฒ์์ ๋ค๋ฅธ ๋ฉค๋ฒ๋ฅผ ์ธ์ฆํ๊ธฐ ์ํ ๊ณต์ ์ํธ๋ก ํค ํ์ผ์ ๋ด์ฉ์ ์ฌ์ฉํฉ๋๋ค. ์ฌ๋ฐ๋ฅธ ํค ํ์ผ์ ๊ฐ์ง mongod
์ธ์คํด์ค๋ง ๋ณต์ ๋ณธ ์ธํธ์ ์ฐธ์ฌํ ์ ์์ต๋๋ค.
์ฐธ๊ณ
๋ด๋ถ ๋ฉค๋ฒ์ญ ์ธ์ฆ์ ์ํ ํคํ์ผ์ YAML ํ์์ ์ฌ์ฉํด ํคํ์ผ์ ์ฌ๋ฌ ํค๋ฅผ ํ์ฉํฉ๋๋ค. YAML ํ์์ ๋ค์ ์ค ํ๋๋ฅผ ํ์ฉํฉ๋๋ค.
๋จ์ผ ํค ๋ฌธ์์ด(์ด์ ๋ฒ์ ๊ณผ ๋์ผ)
ํค ๋ฌธ์์ด์ ์์
YAML ํ์์ ํ ์คํธ ํ์ผ ํ์์ ์ฌ์ฉํ๋ ๊ธฐ์กด์ ๋จ์ผ ํค ํคํ์ผ๊ณผ ํธํ๋ฉ๋๋ค.
ํค ๊ธธ์ด๋ 6~1024์ ์ฌ์ด์ฌ์ผ ํ๋ฉฐ, base64 ์ธํธ์ ๋ฌธ์๋ง ํฌํจํ ์ ์์ต๋๋ค. ๋ณต์ ๋ณธ ์ธํธ์ ๋ชจ๋ ๋ฉค๋ฒ๋ ํ๋ ์ด์์ ๊ณตํต ํค๋ฅผ ๊ณต์ ํด์ผ ํฉ๋๋ค.
์ฐธ๊ณ
UNIX ์์คํ ์์๋ ํค ํ์ผ์ ๊ทธ๋ฃน ๋๋ ์๋ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. Windows ์์คํ ์์๋ ํค ํ์ผ ๊ถํ์ด ํ์ธ๋์ง ์์ต๋๋ค.
์ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ํค ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ ์์
์์๋ openssl
์ฌ์ฉํ์ฌ ๊ณต์ ์ํธ๋ก ์ฌ์ฉํ ๋ณต์กํ ์์ฌ ๋์ 1024์ ๋ฌธ์์ด์ ์์ฑํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ chmod
์ฌ์ฉํ์ฌ ํ์ผ ์์ ์์๊ฒ๋ง ์ฝ๊ธฐ ๊ถํ์ ์ ๊ณตํ๋๋ก ํ์ผ ๊ถํ์ ๋ณ๊ฒฝํฉ๋๋ค.
openssl rand -base64 756 > <path-to-keyfile> chmod 400 <path-to-keyfile>
ํคํ์ผ ์ฌ์ฉ์ ๋ํ ์ถ๊ฐ ์ธ๋ถ ์ ๋ณด ๋ฐ ์๊ตฌ ์ฌํญ์ ํคํ์ผ์ ์ฐธ์กฐํ์ธ์.
๊ฐ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ์ ํค ํ์ผ์ ๋ณต์ฌํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ๋ฅผ ํธ์คํ
ํ๋ ๊ฐ ์๋ฒ์ ํค ํ์ผ์ ๋ณต์ฌํฉ๋๋ค. mongod
์ธ์คํด์ค๋ฅผ ์คํํ๋ ์ฌ์ฉ์๊ฐ ํ์ผ์ ์์ ์์ด๋ฉฐ ํค ํ์ผ์ ์ก์ธ์คํ ์ ์๋๋ก ํฉ๋๋ค.
USB ๋๋ผ์ด๋ธ ๋๋ ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ ์ฅ ์ฅ์น์ ๊ฐ์ด mongod
์ธ์คํด์ค๋ฅผ ํธ์คํ
ํ๋ ํ๋์จ์ด์์ ์ฝ๊ฒ ๋ถ๋ฆฌ๋ ์ ์๋ ์ ์ฅ ๋งค์ฒด์ ํค ํ์ผ์ ์ ์ฅํ์ง ๋ง์ธ์.
๋ณต์ ๋ณธ ์ธํธ์ ๋ชจ๋ ๋ฉค๋ฒ๋ฅผ ์ข ๋ฃํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ์ ๊ฐ mongod
๋ฅผ ์ธ์ปจ๋๋ฆฌ ์๋ฒ๋ถํฐ ์์ํ์ฌ ์ข
๋ฃํฉ๋๋ค. ์ค์ฌ์๋ฅผ ํฌํจํ์ฌ ๋ณต์ ๋ณธ ์ธํธ์ ๋ชจ๋ ๋ฉค๋ฒ๊ฐ ์คํ๋ผ์ธ ์ํ๊ฐ ๋ ๋๊น์ง ๊ณ์ ์งํํฉ๋๋ค. ์ ์ฌ์ ์ธ ๋กค๋ฐฑ์ ๋ฐฉ์งํ๋ ค๋ฉด ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ๋ง์ง๋ง์ผ๋ก ์ข
๋ฃ๋ ๋ฉค๋ฒ์ฌ์ผ ํฉ๋๋ค.
mongod
๋ฅผ ์ข
๋ฃํ๋ ค๋ฉด mongosh
๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ
mongod
๋ฅผ ์ฐ๊ฒฐํ๊ณ
admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์์
db.shutdownServer()
๋ฅผ ์คํํฉ๋๋ค.
use admin db.shutdownServer()
์ด ๋จ๊ณ๊ฐ ๋๋๋ฉด ๋ณต์ ๋ณธ ์ธํธ์ ๋ชจ๋ ๋ฉค๋ฒ๊ฐ ์คํ๋ผ์ธ ์ํ์ฌ์ผ ํฉ๋๋ค.
์ก์ธ์ค ์ ์ด๊ฐ ์ ์ฉ๋ ์ํ์์ ๋ณต์ ๋ณธ ์ธํธ์ ๊ฐ ๋ฉค๋ฒ๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
mongod
security.keyFile
๊ตฌ์ฑ ํ์ผ ์ค์ ๋๋ ๋ช
๋ น์ค --keyFile
์ต์
์ ์ฌ์ฉํ์ฌ ๋ณต์ ๋ณธ ์ธํธ ์ ๊ฐ ๋ฅผ ๋ค์ ์์ํฉ๋๋ค. mongod
--keyFile
๋ช
๋ น์ค ์ต์
๋๋ ๊ตฌ์ฑ security.keyFile
ํ์ผ ์ค์ ๊ณผ ํจ๊ป ๋ฅผ ์คํํ๋ฉด ์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์๋ฒ์์ ์์ฒด ๊ด๋ฆฌ ๋ด๋ถ/๋ฉค๋ฒ์ญ ์ธ์ฆ ๋ฐ ์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด๊ฐ ๋ชจ๋ ์ ์ฉ๋ฉ๋๋ค.
๊ตฌ์ฑ ํ์ผ
๊ตฌ์ฑ ํ์ผ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์์ ์ค์ ํฉ๋๋ค.
security.keyFile
์(๋ฅผ) ํคํ์ผ ๊ฒฝ๋ก๋ก,replication.replSetName
์ ๋ณต์ ๋ณธ ์ธํธ ์ด๋ฆ์ผ๋ก ์ค์ ํฉ๋๋ค.
๊ตฌ์ฑ์ ํ์ํ ์ถ๊ฐ ์ต์
์ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๊ฒฉ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐฐํฌ์ ์ฐ๊ฒฐํ๊ฑฐ๋ ๋ฐฐํฌ ๋ฉค๋ฒ๊ฐ ๋ค๋ฅธ ํธ์คํธ์์ ์คํ๋๋๋ก ํ๋ ค๋ฉด net.bindIp
์ค์ ์ ์ง์ ํ์ธ์.
security: keyFile: <path-to-keyfile> replication: replSetName: <replicaSetName> net: bindIp: localhost,<hostname(s)|ip address(es)>
๊ตฌ์ฑ ํ์ผ์ ์ฌ์ฉํ์ฌ mongod
๋ฅผ ์์ํฉ๋๋ค.
mongod --config <path-to-config-file>
๊ตฌ์ฑ ํ์ผ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ตฌ์ฑ ์ต์ ์ ์ฐธ์กฐํ์ธ์.
๋ช ๋ น์ค
๋ช
๋ น์ค ์ต์
์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์ ์ต์
์ ์ฌ์ฉํ์ฌ mongod
๋ฅผ ์์ํฉ๋๋ค.
--keyFile
๋ฅผ ํค ํ์ผ ๊ฒฝ๋ก๋ก ์ค์ --replSet
์(๋ฅผ) ๋ณต์ ๋ณธ ์ธํธ ์ด๋ฆ์ผ๋ก ์ค์ ํฉ๋๋ค.
๊ตฌ์ฑ์ ํ์ํ ์ถ๊ฐ ์ต์
์ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๊ฒฉ ํด๋ผ์ด์ธํธ๋ฅผ ๋ฐฐํฌ์ ์ฐ๊ฒฐํ๊ฑฐ๋ ๋ฐฐํฌ ๊ตฌ์ฑ์์ด ๋ค๋ฅธ ํธ์คํธ์์ ์คํ๋๋๋ก ํ๋ ค๋ฉด --bind_ip
๋ฅผ ์ง์ ํฉ๋๋ค.
mongod --keyFile <path-to-keyfile> --replSet <replicaSetName> --bind_ip localhost,<hostname(s)|ip address(es)>
์ค์
๋ณ๊ฒฝ๋ IP ์ฃผ์๋ก ์ธํด ๊ตฌ์ฑ์ด ์ ๋ฐ์ดํธ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ค๋ฉด IP ์ฃผ์ ๋์ DNS ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ์ธ์. ํนํ ๋ณต์ ๋ณธ ์ธํธ ๊ตฌ์ฑ์ ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ๊ตฌ์ฑ์์ ๊ตฌ์ฑํ ๋ IP ์ฃผ์ ๋์ DNS ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
IP ์ฃผ์ ๋์ ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์คํ๋ฆฟ ๋คํธ์ํฌ ํธ๋ผ์ด์ฆ ์ ๋ฐ์ ๊ฑธ์ณ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ์ธ์. MongoDB 5.0๋ถํฐ IP ์ฃผ์๋ก๋ง ๊ตฌ์ฑ๋ ๋ ธ๋๋ ์คํํธ์ ์ ํจ์ฑ ๊ฒ์ฌ์ ์คํจํ๋ฉฐ ์์๋์ง ์์ต๋๋ค.
๋ช
๋ น์ค ์ต์
์ ๋ํ ์์ธํ ๋ด์ฉ์ mongod
์ฐธ๊ณ ํ์ด์ง์์ ํ์ธํ์ธ์.
๋ก์ปฌ ํธ์คํธ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐํฉ๋๋ค.
localhost ์ธํฐํ์ด์ค๋ฅผ ํตํด
mongosh
๋ฅผ
mongod
์ธ์คํด์ค ์ค ํ๋์ ์ฐ๊ฒฐํฉ๋๋ค. mongod
์ธ์คํด์ค์ ๋์ผํ ๋ฌผ๋ฆฌ์ ์ปดํจํฐ์์
mongosh
๋ฅผ ์คํํด์ผ ํฉ๋๋ค.
rs.status()
๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ผ์ด๋จธ๋ฆฌ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ๋ฅผ ์๋ณํฉ๋๋ค. ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐ๋์ด ์๋ ๊ฒฝ์ฐ ๋ค์ ๋จ๊ณ๋ฅผ ๊ณ์ ์งํํฉ๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ, ๋ก์ปฌ ํธ์คํธ ์ธํฐํ์ด์ค๋ฅผ ํตํด
mongosh
๋ฅผ ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐํฉ๋๋ค.
์ค์
๊ณ์ ์งํํ๊ธฐ ์ ์ ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค.
์ฌ์ฉ์ ๊ด๋ฆฌ์๋ฅผ ๋ง๋ญ๋๋ค.
์ค์
์ฒซ ๋ฒ์งธ ์ฌ์ฉ์๋ฅผ ๋ง๋ ํ์๋ ๋ก์ปฌ ํธ์คํธ ์์ธ๋ฅผ ๋ ์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ ์ฌ์ฉ์๋ userAdminAnyDatabase
์ ๊ฐ์ ๋ค๋ฅธ ์ฌ์ฉ์๋ฅผ ๋ง๋ค ์ ์๋ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์์ฒด ๊ด๋ฆฌํ ๋ฐฐํฌ์ Localhost ์์ธ๊ฐ ์ข
๋ฃ๋ ํ ์ถ๊ฐ ์ฌ์ฉ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ ์ด๋ ํ ๋ช ์ ์ฌ์ฉ์์๊ฒ ์ฌ์ฉ์๋ฅผ ๋ง๋ค ์ ์๋ ๊ถํ์ด ์๋ ๊ฒฝ์ฐ ๋ก์ปฌ ํธ์คํธ ์์ธ๊ฐ ์ข ๋ฃ๋๋ฉด ์ ๊ถํ์ผ๋ก ์ฌ์ฉ์๋ฅผ ๋ง๋ค๊ฑฐ๋ ์์ ํ ์ ์์ผ๋ฏ๋ก ํ์ํ ์์ ์ ์ก์ธ์คํ์ง ๋ชปํ ์ ์์ต๋๋ค.
db.createUser()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ฌ์ฉ์๋ admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ต์ํ
userAdminAnyDatabase
์ญํ ์ ๊ฐ๊ณ ์์ด์ผ ํฉ๋๋ค.
์ฌ์ฉ์๋ฅผ ์์ฑํ๋ ค๋ฉด ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐ๋์ด ์์ด์ผ ํฉ๋๋ค.
๋ค์ ์์์๋ admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์ userAdminAnyDatabase
์ญํ ์ ๊ฐ์ง fred
์ฌ์ฉ์๋ฅผ ๋ง๋ญ๋๋ค.
์ค์
์์คํ ๋ณด์์ ๋ณด์ฅํ๊ณ ์ ์์ ์ธ ์ก์ธ์ค๋ฅผ ๋ฐฉ์งํ๊ฑฐ๋ ์ง์ฐํ๋ ค๋ฉด ์ํธ๋ ์์์ ์ด๊ณ ๊ธธ๋ฉฐ ๋ณต์กํด์ผ ํฉ๋๋ค.
ํ
๋ฉ์๋/๋ช
๋ น ํธ์ถ์์ ์ํธ๋ฅผ ์ง์ ์ง์ ํ๋ ๋์ passwordPrompt()
๋ฉ์๋๋ฅผ ๋ค์ํ ์ฌ์ฉ์ ์ธ์ฆ/๊ด๋ฆฌ ๋ฉ์๋/๋ช
๋ น๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ์ํธ๋ฅผ ๋ฌป๋ ๋ฉ์์ง๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ฒ์ ์ mongo
์
ธ์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์ง์ ํ ์๋ ์์ต๋๋ค.
admin = db.getSiblingDB("admin") admin.createUser( { user: "fred", pwd: passwordPrompt(), // or cleartext password roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
๋ฉ์์ง๊ฐ ํ์๋๋ฉด ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์ ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ณธ ์ ๊ณต ์ญํ ์ ์ ์ฒด ๋ชฉ๋ก์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ์ญํ ์์ ํ์ธํ์ธ์.
์ฌ์ฉ์ ๊ด๋ฆฌ์๋ก ์ธ์ฆํฉ๋๋ค.
admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ์ฆํฉ๋๋ค.
mongosh
์์๋ db.auth()
๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์์ ์ฌ์ฉ์ ๊ด๋ฆฌ์ fred
๋ฅผ ์ธ์ฆํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
ํ
๋ฉ์๋/๋ช
๋ น ํธ์ถ์์ ์ํธ๋ฅผ ์ง์ ์ง์ ํ๋ ๋์ passwordPrompt()
๋ฉ์๋๋ฅผ ๋ค์ํ ์ฌ์ฉ์ ์ธ์ฆ/๊ด๋ฆฌ ๋ฉ์๋/๋ช
๋ น๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ์ํธ๋ฅผ ๋ฌป๋ ๋ฉ์์ง๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ฒ์ ์ mongo
์
ธ์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์ง์ ํ ์๋ ์์ต๋๋ค.
db.getSiblingDB("admin").auth("fred", passwordPrompt()) // or cleartext password
๋๋ -u <username>
,
-p <password>
๋ฐ --authenticationDatabase
๋งค๊ฐ ๋ณ์๋ฅผ ์ฌ์ฉํด ์๋ก์ด mongosh
์ธ์คํด์ค๋ฅผ ํ๋ผ์ด๋จธ๋ฆฌ ๋ณต์ ๋ณธ ์ธํธ ๊ตฌ์ฑ์์ ์ฐ๊ฒฐํฉ๋๋ค.
mongosh -u "fred" -p --authenticationDatabase "admin"
-p
๋ช
๋ น์ค ์ต์
์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด mongosh
(์ด)๊ฐ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฌป๋ ๋ฉ์์ง๋ฅผ ํ์ํฉ๋๋ค.
ํด๋ฌ์คํฐ ๊ด๋ฆฌ์๋ฅผ ์์ฑํฉ๋๋ค(์ ํ ์ฌํญ).
ํด๋ฌ์คํฐ ๊ด๋ฆฌ์ ์ฌ์ฉ์์๊ฒ๋ ๋ณต์ ์์
์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ๋ clusterAdmin
์ญํ ์ด ์์ต๋๋ค.
ํด๋ฌ์คํฐ ๊ด๋ฆฌ์ ์ฌ์ฉ์๋ฅผ ๋ง๋ค๊ณ admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์์
clusterAdmin
์ญํ ์ ํ ๋นํฉ๋๋ค.
ํ
๋ฉ์๋/๋ช
๋ น ํธ์ถ์์ ์ํธ๋ฅผ ์ง์ ์ง์ ํ๋ ๋์ passwordPrompt()
๋ฉ์๋๋ฅผ ๋ค์ํ ์ฌ์ฉ์ ์ธ์ฆ/๊ด๋ฆฌ ๋ฉ์๋/๋ช
๋ น๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ์ํธ๋ฅผ ๋ฌป๋ ๋ฉ์์ง๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ฒ์ ์ mongo
์
ธ์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์ง์ ํ ์๋ ์์ต๋๋ค.
db.getSiblingDB("admin").createUser( { "user" : "ravi", "pwd" : passwordPrompt(), // or cleartext password roles: [ { "role" : "clusterAdmin", "db" : "admin" } ] } )
๋ฉ์์ง๊ฐ ํ์๋๋ฉด ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ ์์ ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ณธ ์ ๊ณต ์ญํ ์ ์ ์ฒด ๋ชฉ๋ก์ ํด๋ฌ์คํฐ ๊ด๋ฆฌ ์ญํ ์์ ํ์ธํ์ธ์.
์ถ๊ฐ ์ฌ์ฉ์ ๋ง๋ค๊ธฐ(์ ํ ์ฌํญ).
ํด๋ผ์ด์ธํธ๊ฐ ๋ณต์ ๋ณธ ์ธํธ์ ์ฐ๊ฒฐํ๊ณ ์ํธ ์์ฉํ ์ ์๋๋ก ์ฌ์ฉ์๋ฅผ ์์ฑํฉ๋๋ค. ์ฝ๊ธฐ ์ ์ฉ ๋ฐ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ฌ์ฉ์๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ณธ ์ ๊ณต ์ญํ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ์ญํ ์์ ํ์ธํ์ธ์.
์ถ๊ฐ ๊ด๋ฆฌ ์ฌ์ฉ์๊ฐ ํ์ํ ์๋ ์์ต๋๋ค. ์ฌ์ฉ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์ ์ฌ์ฉ์๋ฅผ ์ฐธ์กฐํ์ธ์.
X.509 ๋ด๋ถ ์ธ์ฆ
๋ด๋ถ ์ธ์ฆ์ x.509๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์์ฒด ๊ด๋ฆฌํ MongoDB์ ๋ฉค๋ฒ์ญ ์ธ์ฆ์ x.509 ์ธ์ฆ์ ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
ํค ํ์ผ ๋ด๋ถ ์ธ์ฆ์์ X.509 ๋ด๋ถ ์ธ์ฆ์ผ๋ก ์ ๊ทธ๋ ์ด๋ ํ๋ ค๋ฉด ์์ฒด ๊ด๋ฆฌํ MongoDB ํค ํ์ผ ์ธ์ฆ์์ X.509 ์ธ์ฆ์ผ๋ก ์ ๊ทธ๋ ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.