TLS/SSL(์ ์ก ์ํธํ)
์ด ํ์ด์ง์ ๋ด์ฉ
TLS/SSL
MongoDB๋ TLS/SSL(์ ์ก ๊ณ์ธต ๋ณด์/๋ณด์ ์์ผ ๊ณ์ธต) ์ ์ง์ํ์ฌ MongoDB์ ๋ชจ๋ ๋คํธ์ํฌ ํธ๋ํฝ์ ์ํธํํฉ๋๋ค. TLS/SSL์ ์๋ํ ํด๋ผ์ด์ธํธ๋ง MongoDB ๋คํธ์ํฌ ํธ๋ํฝ์ ์ฝ์ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
TLS ๋ฒ์
MongoDB๋ TLS 1.1 ์ด์์ด ์ฌ์ฉ ๊ฐ๋ฅํ ์์คํ ์์ TLS 1.0 ์ํธํ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
TLS ๋ผ์ด๋ธ๋ฌ๋ฆฌ
MongoDB๋ ๋ค์ดํฐ๋ธ TLS/SSL OS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํ๋ซํผ | TLS/SSL ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
---|---|
Windows | ๋ณด์ ์ฑ๋(Schannel) |
Linux/BSD | OpenSSL |
macOS | ๋ณด์ ์ ์ก |
TLS/SSL ์ํธ
MongoDB์ TLS/SSL ์ํธํ๋ ๋ชจ๋ ์ฐ๊ฒฐ์ ๋ํด ์ต์ 128๋นํธ ํค ๊ธธ์ด์ ๊ฐ๋ ฅํ TLS/SSL ์ํธ๋ง ์ฌ์ฉํ ์ ์๋๋ก ํ์ฉํฉ๋๋ค.
Forward Secrecy
์๋ฐฉํฅ ๋น๋ฐ์ฑ(Forward Secrecy) ์ํธ ์ ํ๊ตฐ์ ์๋ฒ์ ๊ฐ์ธ ํค๋ก ๋ณดํธ๋์ง๋ง ์ ์ก๋์ง ์๋ ์์ ์ธ์ ํค๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ ์๋ฒ์ ๊ฐ์ธ ํค๊ฐ ์์๋๋๋ผ๋, ์์๋ ํค๋ก ๊ณผ๊ฑฐ ์ธ์ ์ ํด๋ ํ ์ ์์์ ๋ณด์ฅํฉ๋๋ค.
MongoDB๋ ์ผ์์ ๋ํผ-ํฌ๋ง(DHE) ๋ฐ ์ผ์์ ํ์ ๊ณก์ ๋ํผ-ํฌ๋ง(ECDHE) ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ ์๋ฐฉํฅ ๋น๋ฐ ์ํธ ์ ํ๊ตฐ์ ์ง์ํฉ๋๋ค.
ECDHE(Ephemeral Elliptic Curve Diffie-Hellman)
ํ๋ซํผ | ์ง์ ์์ค |
---|---|
Linux | . Linux ํ๋ซํผ์ OpenSSL์ด ์๋ ์ปค๋ธ ์ ํ์ ์ง์ํ ๊ฒฝ์ฐ, MongoDB๋ ์์ ํ์ ๊ณก์ ๋ํผ-ํฌ๋ง(ECDHE)์ ์ง์ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Linux ํ๋ซํผ์ OpenSSL์ด ์๋ ์ปค๋ธ ์ ํ์ ์ง์ํ์ง ์๋ ๊ฒฝ์ฐ, MongoDB๋ |
Windows | Ephemeral Elliptic Curve Diffie-Hellman (ECDHE)๋ ๋ค์ดํฐ๋ธ Windows TLS/SSL ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ๋ณด์ ์ฑ๋(Schannel)์ ์ฌ์ฉํ์ฌ ์์์ ์ผ๋ก ์ง์๋ฉ๋๋ค. |
macOS | ๋ค์ดํฐ๋ธ macOS TLS/SSL ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ๋ณด์ ์ ์ก์ ์ด์ฉํ์ฌ ECDHE(Ephemeral Elliptic Curve Diffie-Hellman)๋ฅผ ์์์ ์ผ๋ก ์ง์ํฉ๋๋ค. |
ECDHE ์ํธ ์ ํ๊ตฐ์ ์ ์ RSA ์ํธ ์ ํ๊ตฐ๋ณด๋ค ์๋๊ฐ ๋๋ฆฝ๋๋ค. ECDHE์ ์ฑ๋ฅ ํฅ์์ ์ํด ECDSA
(Elliptic Curve Digital Signature Algorithm)๋ฅผ ์ฌ์ฉํ๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์๋ฐฉํฅ ๋น๋ฐ์ฑ ์ฑ๋ฅ์ ์ฐธ์กฐํ์ธ์.
DHE(Ephemeral Diffie-Hellman)
ํ๋ซํผ | ์ง์ ์์ค |
---|---|
Linux | MongoDB๋ DHE(Ephemeral Diffie-Hellman)๋ฅผ ์ง์ํฉ๋๋ค.
|
Windows | Ephemeral Diffie-Hellman(DHE)์ ๋ค์ดํฐ๋ธ Windows TLS/SSL ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ๋ณด์ ์ฑ๋(Schannel)์ ์ฌ์ฉํ์ฌ ์์์ ์ผ๋ก ์ง์๋ฉ๋๋ค. |
macOS | ๋ค์ดํฐ๋ธ macOS TLS/SSL ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ๋ณด์ ์ ์ก์ ์ด์ฉํ์ฌ DHE(Ephemeral Diffie-Hellman)๋ฅผ ์์์ ์ผ๋ก ์ง์ํฉ๋๋ค. |
์ฐธ๊ณ
ํด๋ผ์ด์ธํธ๊ฐ DHE์ ์ํธ ๊ทธ๋ฃน์ ํ์ํ์ง๋ง ์๋ฒ๊ฐ ์ ํํ ๋งค๊ฐ ๋ณ์๋ฅผ ์๋ฝํ ์ ์๋ ๊ฒฝ์ฐ TLS ์ฐ๊ฒฐ์ด ์คํจํฉ๋๋ค.
๊ฐ๋ ฅํ ๋งค๊ฐ ๋ณ์(์ ํฌ๊ธฐ๊ฐ 102.4๋ณด๋ค ํฌ๋ฉด (Oracle์์ ํ์ฅ ์ง์์ ๊ตฌ์ ํ์ง ์์ ๊ฒฝ์ฐ) Java 6 ๋ฐ 7์์๋ ์ง์๋์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ Java 7์ ECDHE๋ฅผ ์ง์ํ๊ณ ์ ํธํ๋ฏ๋ก ๊ฐ๋ฅํ ๊ฒฝ์ฐ ECDHE๋ฅผ ํ์ํ ๊ฒ์ ๋๋ค.
DHE (๋ฐ ECDHE) ์ํธ ์ ํ๊ตฐ์ ์ ์ RSA ์ํธ ์ ํ๊ตฐ๋ณด๋ค ์ฑ๋ฅ์ด ๋๋ฆฌ๊ณ DHE๋ ECDHE๋ณด๋ค ํจ์ฌ ๋๋ฆฝ๋๋ค. ์์ธํ ๋ด์ฉ์ ์๋ฐฉํฅ ๋น๋ฐ์ฑ ์ฑ๋ฅ์ ์ฐธ์กฐํ์ธ์.
์๋ฐฉํฅ ๋น๋ฐ ์ ์ง ์ฑ๋ฅ
DHE ๋ฐ ECDHE ์ํธ ์ ํ๊ตฐ์ ์ ์ RSA ์ํธ ์ ํ๊ตฐ๋ณด๋ค ๋๋ฆฌ๊ณ DHE๋ ECDHE๋ณด๋ค ํจ์ฌ ๋๋ฆฝ๋๋ค.
ECDHE์ ์ฑ๋ฅ ํฅ์์ ์ํด ํ์ ๊ณก์ ๋์งํธ ์๋ช
์๊ณ ๋ฆฌ์ฆ(ECDSA
)์ ์ฌ์ฉํ๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋๋ ๋ค์ ์์์์์ ๊ฐ์ด opensslCipherConfig
๋งค๊ฐ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ECDHE ์ํธ ์ ํ๊ตฐ์ ๋นํ์ฑํํ ์ ์์ต๋๋ค(DHE๋ ๋นํ์ฑํ).
mongod --setParameter opensslCipherConfig='HIGH:!EXPORT:!aNULL:!kECDHE:!ECDHE:!DHE:!kDHE@STRENGTH'
์ฑ๋ฅ ๋๋ฌธ์ DHE ์ํธ ๋ชจ์์ ๋ํ ์ง์์ ๋นํ์ฑํํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ค์ ์์์์์ ๊ฐ์ด opensslCipherConfig
๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
mongod --setParameter opensslCipherConfig='HIGH:!EXPORT:!aNULL:!DHE:!kDHE@STRENGTH'
์ธ์ฆ์
MongoDB๋ก TLS/SSL์ ์ฌ์ฉํ๋ ค๋ฉด ์ฐ๊ฒฐ๋ ์ธ์ฆ์ ์ปจํ
์ด๋์ธ PEM
ํ์ผ๋ก ๋ TLS/SSL ์ธ์ฆ์๊ฐ ์์ด์ผ ํฉ๋๋ค.
MongoDB๋ ์ธ์ฆ ๊ธฐ๊ด์์ ๋ฐ๊ธํ ์ ํจํ TLS/SSL ์ธ์ฆ์ ๋๋ ์์ฒด ์๋ช ๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ๋ก๋์ ์ฉ๋์ ๊ฒฝ์ฐ MongoDB deployment๋ ๋์ผํ ์ธ์ฆ ๊ธฐ๊ด์์ ์์ฑํ๊ณ ์๋ช ํ ์ ํจํ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ ๋ฆฝ์ ์ธ ์ธ์ฆ ๊ธฐ๊ด์ ์์ฑ ๋ฐ ์ ์ง ๊ด๋ฆฌํ๊ฑฐ๋ ํ์ฌ TLS/SSL ๋ฐด๋์์ ์์ฑํ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ๋ขฐํ ์ ์๋ ์ธ์ฆ ๊ธฐ๊ด์ด ์๋ช ํ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ฉด MongoDB ๋๋ผ์ด๋ฒ๊ฐ ์๋ฒ์ ID๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์์๋ ํด๋ผ์ด์ธํธ์ ๋ํ TLS/SSL ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
์ธ์ฆ์ ๋ง๋ฃ ๊ฒฝ๊ณ
mongod
/mongos
๋ ์ ์๋ x.509 ์ธ์ฆ์๊ฐ mongod/mongos
ํธ์คํธ ์์คํ
์๊ฐ์ผ๋ก๋ถํฐ 30
์ผ ์ด๋ด์ ๋ง๋ฃ๋๋ ๊ฒฝ์ฐ ์ฐ๊ฒฐ ์ ๊ฒฝ๊ณ ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
OCSP(์จ๋ผ์ธ ์ธ์ฆ์ ์ํ ํ๋กํ ์ฝ)
์ธ์ฆ์ ํ๊ธฐ๋ฅผ ํ์ธํ๊ธฐ ์ํด MongoDB๋ ๊ธฐ๋ณธ์ ์ผ๋ก OCSP(์จ๋ผ์ธ ์ธ์ฆ์ ์ํ ํ๋กํ ์ฝ)๋ฅผ enables
ํฉ๋๋ค. OCSP๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๊ธฐ์ ์ผ๋ก Certificate Revocation List (CRL)
๋ฅผ ๋ค์ด๋ก๋ํ๊ณ ์
๋ฐ์ดํธ๋ CRL๋ก mongod
/mongos
๋ฅผ ๋ค์ ์์ํ ํ์๊ฐ ์์ต๋๋ค.
OCSP ์ง์์ ์ผ๋ถ๋ก MongoDB๋ Linux์์ ๋ค์์ ์ง์ํฉ๋๋ค.
OCSP ์คํ ์ดํ๋ง. OCSP ์คํ ์ดํ๋ง์ ์ฌ์ฉํ๋ฉด
mongod
๋ฐmongos
์ธ์คํด์ค๊ฐ TLS/SSL ํธ๋์ ฐ์ดํฌ ์ค์ ํด๋ผ์ด์ธํธ์ ์ธ์ฆ์๋ฅผ ์ ๊ณตํ ๋ OCSP ์ํ ์๋ต์ ์ธ์ฆ์์ ์ฒจ๋ถํ๊ฑฐ๋ '์คํ ์ดํ'ํฉ๋๋ค. ์ธ์ฆ์์ OCSP ์ํ ์๋ต์ ํฌํจํจ์ผ๋ก์จ OCSP ์คํ ์ดํ๋ง์ ํด๋ผ์ด์ธํธ๊ฐ ์ ๊ณต๋ ์ธ์ฆ์์ OCSP ์ํ๋ฅผ ์กฐํํ๊ธฐ ์ํด ๋ณ๋์ ์์ฒญ์ ํ ํ์๊ฐ ์๋๋ก ํฉ๋๋ค.OCSP ํ์ ์คํ ์ดํ ํ์ฅ. OCSP ํ์ ์คํ ์ดํ์ ์๋ฒ ์ธ์ฆ์์ ์ถ๊ฐํ ์ ์๋ ํ์ฅ์ผ๋ก, ํด๋ผ์ด์ธํธ๊ฐ TLS/SSL ํธ๋์ ฐ์ดํฌ ์ค์ ์ธ์ฆ์๋ฅผ ๋ฐ์ ๋ OCSP ์คํ ์ดํ์ ๊ธฐ๋ํ๋๋ก ์ง์ํฉ๋๋ค.
MongoDB๋ ๋ค์๊ณผ ๊ฐ์ OCSP ๊ด๋ จ ๋งค๊ฐ๋ณ์๋ ์ ๊ณตํฉ๋๋ค.
Parameter | ์ค๋ช
|
---|---|
OCSP ์ง์์ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฉํ์ง ์๋๋ก ์ค์ ํฉ๋๋ค. | |
์คํ ์ดํ๋ง๋ OCSP ์ํ ์๋ต์ ์๋ก ๊ณ ์น๊ธฐ ์ ์ ๋๊ธฐํ ์๊ฐ(์ด)์ ์ง์ ํฉ๋๋ค. | |
setParameter
๊ตฌ์ฑ ํ์ผ ์ค์ ๋๋ --setParameter
๋ช
๋ น์ค ์ต์
์ ์ฌ์ฉํ์ฌ ์์ํ ๋ ์ด๋ฌํ ๋งค๊ฐ ๋ณ์๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
์ฐธ๊ณ
MongoDB 5.0๋ถํฐ rotateCertificates
๋ช
๋ น๊ณผ db.rotateCertificates()
๋ฉ์๋๋ ์คํ
์ดํ๋ง๋ OCSP ์๋ต๋ ์๋ก ๊ณ ์นฉ๋๋ค.
์ ์ ํ์ธ
์ฐ๊ฒฐ์ ์ํธํํ๋ ๊ฒ ์ธ์๋, TLS/SSL์ ํด๋ผ์ด์ธํธ ์ธ์ฆ๊ณผ ๋ณต์ ๋ณธ ์ธํธ ๋ฐ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ๋ ธ๋์ ๋ด๋ถ ์ธ์ฆ ๋ชจ๋์ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ ์ธ์ฆ์ ํ์ฉํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ๋ค์์ ์ฐธ์กฐํ์ธ์.
FIPS ๋ชจ๋
์ฐธ๊ณ
์ํฐํ๋ผ์ด์ฆ ๊ธฐ๋ฅ
MongoDB Enterprise์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
FIPS(์ฐ๋ฐฉ ์ ๋ณด ์ฒ๋ฆฌ ํ์ค)๋ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ํธํํ๊ณ ํด๋ ํ๋ ์ํํธ์จ์ด ๋ชจ๋ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ธ์ฆํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฏธ๊ตญ ์ ๋ถ์ ์ปดํจํฐ ๋ณด์ ํ์ค์ ๋๋ค. MongoDB๋ฅผ OpenSSL์ฉ FIPS 140-2 ์ธ์ฆ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ๊ป ์คํ๋๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ๋๊ฑฐ๋ ๋ช ๋ น์ค์์ ํ์์ ๋ฐ๋ผ ์คํ๋๋๋ก FIPS๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
์์๋ FIPS์ ๋ํ MongoDB ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.