์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์ Kerberos ์ธ์ฆ
์ด ํ์ด์ง์ ๋ด์ฉ
๊ฐ์
MongoDB Enterprise ๋ Kerberos MongoDB ๋ฐ ์ธ์คํด์ค์ ๋ํmongod
mongos
ํด๋ผ์ด์ธํธ์ ์ธ์ฆ ์ ์ง์ ํฉ๋๋ค. Kerberos ๋ ๋๊ท๋ชจ ํด๋ผ์ด์ธํธ/ ์๋ฒ ์์คํ
์ ์ํ ์
๊ณ ํ์ค ์ธ์ฆ ํ๋กํ ์ฝ ์
๋๋ค. Kerberos ๋ฅผ ์ฌ์ฉํ๋ฉด MongoDB ์ ์ ํ๋ฆฌ์ผ์ด์
์ด ๊ธฐ์กด ์ธ์ฆ ์ธํ๋ผ ๋ฐ ํ๋ก์ธ์ค๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. MongoDB Enterprise ๋ MIT ๊ตฌํ ๋ง Kerberos ์ง์ํฉ๋๋ค. ์ .
Kerberos ๊ตฌ์ฑ ์์ ๋ฐ MongoDB
Principals
Kerberos ๊ธฐ๋ฐ ์์คํ ์์ ์ธ์ฆ๋ ํต์ ์ ๋ชจ๋ ์ฐธ๊ฐ์๋ฅผ "์ฃผ์ฒด"๋ผ๊ณ ํ๋ฉฐ, ๋ชจ๋ ์ฃผ์ฒด๋ ๊ณ ์ ํ ์ด๋ฆ์ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
์ฃผ์ฒด๋ ์์ญ์ด๋ผ๋ ๊ด๋ฆฌ ๋จ์์ ์ํฉ๋๋ค. Kerberos ํค ๋ฐฐํฌ ์ผํฐ(KDC)๋ ๊ฐ ์์ญ์ ๋ํด ์์ญ์ ์ฃผ์ฒด ๋ฐ ์ฃผ์ฒด์ ๊ด๋ จ๋ "๋น๋ฐ ํค" ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค.
ํด๋ผ์ด์ธํธ-์๋ฒ ์ธ์ฆ์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ๋ KDC์ ํน์ ์์ฐ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ํ "ํฐ์ผ"์ ์์ฒญํฉ๋๋ค. KDC๋ ํด๋ผ์ด์ธํธ์ ๋น๋ฐ๊ณผ ์๋ฒ์ ๋น๋ฐ์ ์ฌ์ฉํ์ฌ ๋น๋ฐ์ ์จ๊ธฐ๋ฉด์๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์๋ก๋ฅผ ์ํธ ์ธ์ฆํ ์ ์๋ ํฐ์ผ์ ๊ตฌ์ฑํฉ๋๋ค.
Kerberos ์ง์์ฉ MongoDB ๊ตฌ์ฑ์ ๊ฒฝ์ฐ, ์ดํด ๊ด๊ณ๊ฐ ์๋ ์ฌ์ฉ์ ์ฃผ์ฒด ๋ฐ ์๋น์ค ์ฃผ์ฒด๋ผ๋ ๋ ๊ฐ์ง์ ์ฃผ์ฒด ์ด๋ฆ์ด ์์ต๋๋ค.
์ฌ์ฉ์ ์ฃผ์ฒด
Kerberos๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆํ๋ ค๋ฉด MongoDB์ Kerberos ์ฌ์ฉ์ ์ฃผ์ฒด๋ฅผ $external
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ์ฌ์ฉ์ ์ฃผ์ฒด ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ ํ์์ ๊ฐ์ต๋๋ค.
<username>@<KERBEROS REALM>
Kerberos๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆํ๋ ค๋ ๋ชจ๋ ์ฌ์ฉ์์ ๋ํด MongoDB์ $external
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํด๋น ์ฌ์ฉ์๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
2} ์ธ์ฆ ์ฌ์ฉ์(Kerberos, LDAP ๋๋ x.509 ์ฌ์ฉ์)์ ํจ๊ป ํด๋ผ์ด์ธํธ ์ธ์
๋ฐ ์ธ๊ณผ์ ์ผ๊ด์ฑ ๋ณด์ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ์ฌ์ฉ์ ์ด๋ฆ์ด 10KB๋ณด๋ค ํด ์ ์์ต๋๋ค. $external
MongoDB ์ ์ฌ์ฉ์๋ฅผ ์ถ๊ฐํ๊ณ ํด๋น ์ฌ์ฉ์๋ก ์ธ์ฆํ๋ ์๋ Linux ์์ Kerberos ์ธ์ฆ์ ์ฌ์ฉ MongoDB ์์ฒด ๊ด๋ฆฌํ MongoDB ๊ตฌ์ฑ ๋ฐ Windows ์์ Kerberos ์ธ์ฆ์ ์ฌ์ฉํ์ฌ ์์ฒด ๊ด๋ฆฌํ MongoDB ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
ํ
๋ค์๋ ์ฐธ์กฐํ์ธ์.
์์ฒด ๊ด๋ฆฌ ๋ฐฐํฌ์๋ฒ์์ ์ฌ์ฉ์ ๋ฐ ์ญํ ๊ด๋ฆฌ ๋ฅผ ์ฐธ์กฐํ์ฌ MongoDB ์์ ์ฌ์ฉ์๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๊ดํ ์ผ๋ฐ ์ ๋ณด๋ฅผ ํ์ธํ์ธ์.
์๋น์ค ์ฃผ์ฒด
๋ชจ๋ MongoDB mongod
๋ฐ mongos
์ธ์คํด์ค(Windows์ ๊ฒฝ์ฐ mongod.exe
๋๋ mongos.exe
)์๋ ์ฐ๊ฒฐ๋ ์๋น์ค ์ฃผ์ฒด๊ฐ ์์ด์ผ ํฉ๋๋ค. ์๋น์ค ์ฃผ์ฒด ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ ํ์์ ๊ฐ์ต๋๋ค.
<service>/<fully qualified domain name>@<KERBEROS REALM>
MongoDB์ ๊ฒฝ์ฐ <service>
๊ธฐ๋ณธ๊ฐ์ mongodb
์
๋๋ค. ์๋ฅผ ๋ค์ด m1.example.com
์ด MongoDB ์๋ฒ์ด๊ณ example.com
์ด EXAMPLE.COM
Kerberos ์์ญ์ ์ ์ง ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ, m1
์ ์๋น์ค ์ฃผ์ฒด ์ด๋ฆ mongodb/m1.example.com@EXAMPLE.COM
์ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
<service>
์ ๋ค๋ฅธ ๊ฐ์ ์ง์ ํ๋ ค๋ฉด mongod
๋๋ mongos
(๋๋ mongod.exe
๋๋ mongos.exe
)๋ฅผ ์์ํ๋ ๋์ serviceName
์ ์ฌ์ฉํฉ๋๋ค. mongosh
๋๋ ๋ค๋ฅธ ํด๋ผ์ด์ธํธ๋ serviceName
์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์๋น์ค ์ฃผ์ฒด ์ด๋ฆ์ ์ง์ ํ ์๋ ์์ต๋๋ค.
์๋น์ค ์ฃผ์ฒด ์ด๋ฆ์ ์๋น์ค ์ฃผ์ฒด ์ด๋ฆ์ FQDN(์ ๊ทํ๋ ๋๋ฉ์ธ ์ด๋ฆ) ๋ถ๋ถ์ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ๋ฅผ ํตํด ์ฐ๊ฒฐํ ์ ์์ด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Kerberos๋ DNS๋ฅผ ์ฌ์ฉํ์ฌ ํธ์คํธ๋ฅผ ํ์ธํ๊ธฐ ์ ์ /etc/krb5.conf
ํ์ผ์ ์ฌ์ฉํ์ฌ ํธ์คํธ๋ฅผ ์๋ณํ๋ ค๊ณ ์๋ํฉ๋๋ค.
Windows์์ MongoDB๋ฅผ ์๋น์ค๋ก ์คํํ๋ ๊ฒฝ์ฐ, MongoDB Windows ์๋น์ค์ ์๋น์ค ์ฃผ์ฒด ์ด๋ฆ ํ ๋น์ ์ฐธ์กฐํ์ธ์.
Linux Keytab Files
Linux ์์คํ
์ ์๋น์ค ์ฃผ์ฒด์ ๋ํ Kerberos ์ธ์ฆ ํค๋ฅผ ํคํญ ํ์ผ์ ์ ์ฅํ ์ ์์ต๋๋ค. Linux์์ ์คํ๋๋ ๊ฐ Kerberized mongod
๋ฐ mongos
์ธ์คํด์ค๋ ํด๋น ์๋น์ค ์ฃผ์ฒด์ ๋ํ ํค๊ฐ ํฌํจ๋ ํคํญ ํ์ผ์ ์ก์ธ์คํ ์ ์์ด์ผ ํฉ๋๋ค.
ํคํญ ํ์ผ์ ์์ ํ๊ฒ ์ ์งํ๋ ค๋ฉด mongod
๋๋ mongos
ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ์ฌ์ฉ์๋ก๋ง ์ก์ธ์ค๋ฅผ ์ ํํ๋ ํ์ผ ๊ถํ์ ์ฌ์ฉํฉ๋๋ค.
ํฐ์ผ
Linux์์ MongoDB ํด๋ผ์ด์ธํธ๋ Kerberos์ kinit
ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ฃผ์ฒด๋ฅผ ์๋ฒ์ ์ธ์ฆํ๊ธฐ ์ํด ์๊ฒฉ ์ฆ๋ช
์บ์๋ฅผ ์ด๊ธฐํํ ์ ์์ต๋๋ค.
Windows Active ๋๋ ํ ๋ฆฌ
Linux ์์คํ
๊ณผ ๋ฌ๋ฆฌ Windows์์ ์คํ ์ค์ธ mongod
๋ฐ mongos
์ธ์คํด์ค๋ ํคํญ ํ์ผ์ ์ก์ธ์คํ ํ์๊ฐ ์์ต๋๋ค. ๋์ mongod
๋ฐ mongos
์ธ์คํด์ค๋ ์ด์ ์ฒด์ ๋ณ ์๊ฒฉ ์ฆ๋ช
์ ์ฅ์์์ ์๋ฒ ์๊ฒฉ ์ฆ๋ช
์ ์ฝ์ต๋๋ค.
๊ทธ๋ฌ๋ Windows Active Directory์์๋ Linux ์์คํ ์์ ์ฌ์ฉํ ์ ์๋๋ก ํคํญ ํ์ผ์ ๋ด๋ณด๋ผ ์ ์์ต๋๋ค. Ktpass ์ฐธ์กฐ ์(๋ฅผ) ์ฐธ์กฐํ์ธ์.
Kerberos๋ก ์ธ์ฆ
Kerberos ์ง์ ๋ฐ ์ธ์ฆ์ ์ํด MongoDB ๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด Linux ์์ Kerberos ์ธ์ฆ์ ์ฌ์ฉ MongoDB ์์ฒด ๊ด๋ฆฌํ MongoDB ๊ตฌ์ฑ ๋ฐ Windows ์์ Kerberos ์ธ์ฆ์ ์ฌ์ฉํ์ฌ ์์ฒด ๊ด๋ฆฌํ MongoDB ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
์ด์ ๊ณ ๋ ค ์ฌํญ
DNS
mongod
๋๋ mongos
์ธ์คํด์ค๋ฅผ ์คํํ๋ ๊ฐ ํธ์คํธ์๋ A
๋ฐ PTR
DNS ๋ ์ฝ๋๊ฐ ๋ชจ๋ ์์ด์ผ ์ ๋ฐฉํฅ ๋ฐ ์ญ๋ฐฉํฅ ์กฐํ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
A
๋ฐ PTR
DNS ๋ ์ฝ๋๊ฐ ์์ผ๋ฉด ํธ์คํธ๊ฐ Kerberos ๋๋ฉ์ธ ๋๋ KDC(ํค ๋ฐฐํฌ ์ผํฐ)์ ๊ตฌ์ฑ ์์๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์์คํ ์๊ฐ ๋๊ธฐํ
์ธ์ฆ์ ์ฑ๊ณตํ๋ ค๋ฉด ๊ฐ mongod
๋ฐ mongos
์ธ์คํด์ค์ ์์คํ
์๊ฐ์ด Kerberos ์ธํ๋ผ์ ์๋ ๋ค๋ฅธ ํธ์คํธ์ ์์คํ
์๊ฐ์์ 5๋ถ ์ด๋ด์ฌ์ผ ํฉ๋๋ค.
Kerberized MongoDB ํ๊ฒฝ
๋๋ผ์ด๋ฒ ์ง์
๋ค์ MongoDB ๋๋ผ์ด๋ฒ๋ Kerberos ์ธ์ฆ์ ์ง์ํฉ๋๋ค.
์ถ๊ฐ MongoDB ์ธ์ฆ ๋ฉ์ปค๋์ฆ๊ณผ ํจ๊ป ์ฌ์ฉ
MongoDB ๋ ๋ค๋ฅธ ์ธ์ฆ ๋ฉ์ปค๋์ฆ๊ณผ ํจ๊ป Kerberos ์ธ์ฆ ์ ์ฌ์ฉํ๋๋ก ์ง์ํ์ง๋ง, ๋ค๋ฅธ ๋ฉ์ปค๋์ฆ์ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ถ๊ฐํ์ธ์. ์์ธํ ๋ด์ฉ์ Linux ์์ Kerberos ์ธ์ฆ์ ์ฌ์ฉ MongoDB ์์ฒด ๊ด๋ฆฌํ MongoDB ๊ตฌ์ฑ ๋ฐ Windows ์์ Kerberos ์ธ์ฆ์ ์ฌ์ฉํ์ฌ ์์ฒด ๊ด๋ฆฌํ MongoDB ๊ตฌ์ฑ์ Incorporate Additional Authentication Mechanisms
์น์
์ ์ฐธ์กฐํ์ธ์.
ํ ์คํธ ๋ฐ ๊ฒ์ฆ
mongokerberos
ํ๋ก๊ทธ๋จ์ MongoDB์ ํจ๊ป ์ฌ์ฉํ ํ๋ซํผ์ Kerberos ๊ตฌ์ฑ์ ํ์ธํ๊ณ MongoDB ํด๋ผ์ด์ธํธ์ Kerberos ์ธ์ฆ์ด ์์๋๋ก ์๋ํ๋์ง ํ
์คํธํ ์ ์๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ mongokerberos
๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
mongokerberos
MongoDB Enterprise์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.