์์ฒด ๊ด๋ฆฌํ ๋ด๋ถ/๋ฉค๋ฒ์ญ ์ธ์ฆ
์ด ํ์ด์ง์ ๋ด์ฉ
๋ณต์ ๋ณธ ์ธํธ ์ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ์ ๋ฉค๋ฒ๊ฐ ์๋ก ์ธ์ฆํ๋๋ก ์๊ตฌํ ์ ์์ต๋๋ค. ๋ฉค๋ฒ์ ๋ด๋ถ ์ธ์ฆ ์ ์ํด MongoDB ๋ ํคํ์ผ ๋๋ x๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.509 ์ธ์ฆ์.
์ ํํ ๋ฉ์๋๋ ๋ชจ๋ ๋ด๋ถ ์ปค๋ฎค๋์ผ์ด์
์ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ํด๋ผ์ด์ธํธ๊ฐ ์ง์๋๋ ์ธ์ฆ ๋ฉ์ปค๋์ฆ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ mongos
์ ์ธ์ฆํ๋ฉด mongos
๋ ๊ตฌ์ฑ๋ ๋ด๋ถ ์ธ์ฆ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํ์ํ mongod
ํ๋ก์ธ์ค์ ์ฐ๊ฒฐํฉ๋๋ค.
์ฐธ๊ณ
๋ด๋ถ ์ธ์ฆ์ ํ์ฑํํ๋ฉด ํด๋ผ์ด์ธํธ ๊ถํ ๋ถ์ฌ๋ ํ์ฑํ๋ฉ๋๋ค.
ํคํ์ผ
ํคํ์ผ์ ๋ฉค๋ฒ์ ๊ณต์ ๋น๋ฐ๋ฒํธ๊ฐ ํฌํจ๋ SCRAM ๊ณผ์ ๋ฐ ์๋ต ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํฉ๋๋ค.
์ฃผ์ ์๊ตฌ ์ฌํญ
ํค ๊ธธ์ด๋ 6~1024์ ์ฌ์ด์ฌ์ผ ํ๋ฉฐ base64 ์ธํธ์ ๋ฌธ์๋ง ํฌํจํ ์ ์์ต๋๋ค. MongoDB๋ ํฌ๋ก์ค ํ๋ซํผ ํธ์๋ฅผ ์ํด ๊ณต๋ฐฑ ๋ฌธ์๋ฅผ ์ ๊ฑฐํฉ๋๋ค(์: x0d
, x09
๋ฐ x20
). ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ค์ ์์
์ ๋์ผํ ํค๋ฅผ ์์ฑํฉ๋๋ค.
echo -e "mysecretkey" > key1 echo -e "my secret key" > key1 echo -e "my secret key\n" > key2 echo -e "my secret key" > key3 echo -e "my\r\nsecret\r\nkey\r\n" > key4
ํคํ์ผ ํ์
๋ด๋ถ ๋ฉค๋ฒ์ญ ์ธ์ฆ์ ์ํ ํคํ์ผ์ YAML ํ์์ ์ฌ์ฉํ์ฌ ํคํ์ผ์ ์ฌ๋ฌ ํค๋ฅผ ํ์ฉํฉ๋๋ค. YAML ํ์์ ๋ ๊ฐ์ง ๋ชจ๋ ํ์ฉ๋ฉ๋๋ค.
๋จ์ผ ํค ๋ฌธ์์ด(์ด์ ๋ฒ์ ๊ณผ ๋์ผ)
ํค ๋ฌธ์์ด์ ์์
YAML ํ์์ ํ ์คํธ ํ์ผ ํ์์ ์ฌ์ฉํ๋ ๊ธฐ์กด์ ๋จ์ผ ํค ํคํ์ผ๊ณผ ํธํ๋ฉ๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํค ํ์ผ์ ๋จ์ผ ํค๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ ๋ฐ์ดํ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ์ฉํ์ง ์๊ณ ํค ๋ฌธ์์ด์ ์ง์ ํ ์ ์์ต๋๋ค.
my old secret key1
์ฌ๋ฌ ํค ๋ฌธ์์ด [1]์ ์ผ๋ จ์ ํค ๋ฌธ์์ด๋ก ์ง์ ํ ์ ์์ต๋๋ค(์ ํ์ ์ผ๋ก ๋ฐ์ดํ๋ก ๋ฌถ์).
- my old secret key1 - my new secret key2
ํ์ผ ์ ์ฌ๋ฌ ํค๋ฅผ ์ง์ ํ ๊ธฐ๋ฅ ์ ์ฌ์ฉํ๋ฉด ๋ค์ดํ์ ์์ด ํค๋ฅผ ๋กค๋ง ์ ๊ทธ๋ ์ด๋ ํ ์ ์์ต๋๋ค. ์์ฒด ๊ด๋ฆฌํ ๋ณต์ ๋ณธ ์ธํธ ์ ํค ์ํ ๋ฐ ์์ฒด ๊ด๋ฆฌํ ์ค๋ ํด๋ฌ์คํฐ์ ํค ์ํ์ ์ฐธ์กฐํ์ธ์.
๋ฐฐํฌ์ ๋ชจ๋ mongod
๋ฐ mongos
์ธ์คํด์ค๋ ํ๋ ์ด์์ ๊ณตํต ํค๋ฅผ ๊ณต์ ํด์ผ ํฉ๋๋ค.
UNIX ์์คํ ์์๋ ํค ํ์ผ์ ๊ทธ๋ฃน ๋๋ ์๋ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. Windows ์์คํ ์์๋ ํค ํ์ผ ๊ถํ์ด ํ์ธ๋์ง ์์ต๋๋ค.
๋ณต์ ๋ณธ ์ธํธ ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ์ ๋ฉค๋ฒ๋ฅผ ํธ์คํ ํ๋ ๊ฐ ์๋ฒ์ ํคํ์ผ์ ์ ์ฅํด์ผ ํฉ๋๋ค.
[1] | MongoDB์ ์ํธํ๋ ์คํ ๋ฆฌ์ง ์์ง์ ๊ฒฝ์ฐ ๋ก์ปฌ ํค ๊ด๋ฆฌ์ ์ฌ์ฉ๋๋ ํคํ์ผ์๋ ํ๋์ ํค๋ง ํฌํจํ ์ ์์ต๋๋ค. |
ํคํ์ผ์ ๋ํ MongoDB ๊ตฌ์ฑ
ํคํ์ผ์ ์ง์ ํ๋ ค๋ฉด security.keyFile
์ค์ ๋๋ --keyFile
๋ช
๋ น์ค ์ต์
์ ์ฌ์ฉํฉ๋๋ค.
ํค ํ์ผ ๋ด๋ถ ์ธ์ฆ ์ ์์ ๋ ์์ฒด ๊ด๋ฆฌ ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ํค ํ์ผ ์ธ์ฆ์ผ๋ก ์ ๋ฐ์ดํธํ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
x.509
๋ณต์ ๋ณธ ์ธํธ ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ์ ๋ฉค๋ฒ๋ x๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํค ํ์ผ์ ์ฌ์ฉํ๋ ๋์ ๋ด๋ถ ์ธ์ฆ ์ ์ํด 509 ์ธ์ฆ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ ์ํธ TLS ๋๋ mTLS๋ผ๊ณ ๋ ํฉ๋๋ค. MongoDB ๋ x๋ฅผ ์ง์ํฉ๋๋ค. ๋ณด์ TLS/SSL ์ฐ๊ฒฐ์ ์ฌ์ฉํ 509 ์ธ์ฆ์ ์ธ์ฆ .
์ฐธ๊ณ
MongoDB๋ TLS 1.1 ์ด์์ด ์ฌ์ฉ ๊ฐ๋ฅํ ์์คํ ์์ TLS 1.0 ์ํธํ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
๋ฉค๋ฒ ์ธ์ฆ์ ์๊ตฌ ์ฌํญ
๋ฉค๋ฒ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ cluster ๋๋ ๋ณต์ ๋ณธ ์ธํธ์ ๋ํ ๋ฉค๋ฒ ์๊ฒฉ์ ํ์ธํฉ๋๋ค. ๋ฉค๋ฒ ์ธ์ฆ์๋ net.tls.clusterFile
๋ฐ net.tls.certificateKeyFile
์ ์ ์ฅ๋ฉ๋๋ค. ํ์ ์ธ์ฆ์ ์๊ตฌ ์ฌํญ:
๋จ์ผ ์ธ์ฆ ๊ธฐ๊ด (CA)์ ์ค๋ฉ๋ ํด๋ฌ์คํฐ ๋๋ ๋ณต์ ๋ณธ ์ธํธ์ ๋ฉค๋ฒ์ ๋ํด ๋ชจ๋ x.509 ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํด์ผ ํฉ๋๋ค.
x.509 ์ธ์ฆ์๋ ๋ง๋ฃ๋์ง ์์์ผ ํฉ๋๋ค.
ํ์ ์ธ์ฆ์์
subject
์ ์๋ ๊ณ ์ ์ด๋ฆ(DN
)์ ๋ค์ ์์ฑ ์ค ํ๋ ์ด์ ์ ๋ํด ๋น์ด ์์ง ์์ ๊ฐ์ ์ง์ ํด์ผ ํฉ๋๋ค.์กฐ์ง (
O
)์กฐ์ง ๋จ์ (
OU
)๋๋ฉ์ธ ๊ตฌ์ฑ ์์ (
DC
)
๋ฉํฐ ํด๋ฌ์คํฐ ๋ฐฐํฌ์์๋ ๊ฐ ํด๋ฌ์คํฐ๊ฐ ์๋ก ๋ค๋ฅธ X.509 ๋ฉค๋ฒ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๊ฐ ์ธ์ฆ์๋
O
,OU
๋ฐDC
DN(๊ณ ์ ์ด๋ฆ) ํ๋์ ๊ณ ์ ํ ๊ฐ์ ๊ฐ์ ธ์ผ ํฉ๋๋ค.๋ ํด๋ฌ์คํฐ์ DN ๊ฐ์ด ๋์ผํ ์ธ์ฆ์๊ฐ ์๋ ๊ฒฝ์ฐ ํ ํด๋ฌ์คํฐ์ ์์๋ ์๋ฒ๊ฐ ๋ค๋ฅธ ํด๋ฌ์คํฐ์ ๊ตฌ์ฑ์์ผ๋ก ์ธ์ฆํ ์ ์์ต๋๋ค.
๊ฐ cluster ๋ฉค๋ฒ ์ธ์ฆ์์
net.tls.clusterFile
๋ฐnet.tls.certificateKeyFile
์ธ์ฆ์์๋ ๋์ผํO
,OU
๋ฐDC
๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์ด๋ ์ค์ ๋ ๊ฒฝ์ฐtlsX509ClusterAuthDNOverride
๊ฐ์๋ ์ ์ฉ๋ฉ๋๋ค. ์์ฑ ์์๋ ์ค์ํ์ง ์์ต๋๋ค.์๋ฅผ ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ์๋์ ๋
DN
๋O
๋ฐOU
์ ๋ํ ์ฌ์์ด ์ผ์นํ๋ฉฐ,DC
๋ ์ง์ ๋์ง ์์์ต๋๋ค.CN=host1,OU=Dept1,O=MongoDB,ST=NY,C=US C=US, ST=CA, O=MongoDB, OU=Dept1, CN=host2 ๋ค์ ์์ ๋
DN
๊ฐ ์ผ์นํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค. ํ๋์DN
์๋ ๋ ๊ฐ์OU
์ฌ์์ด ์๊ณ ๋ค๋ฅธ ํ๋๋ ํ๋์OU
์ฌ์๋ง ์์ต๋๋ค.CN=host1,OU=Dept1,OU=Sales,O=MongoDB CN=host2,OU=Dept1,O=MongoDB ์ผ๋ฐ ์ด๋ฆ(
CN
) ๋๋ ์ฃผ์ฒด ๋์ฒด ์ด๋ฆ(SAN
) ํญ๋ชฉ ์ค ํ๋๋ ๋ค๋ฅธ ํด๋ฌ์คํฐ ๋ฉค๋ฒ์ ์๋ฒ ํธ์คํธ ์ด๋ฆ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค. MongoDB 4.2๋ถํฐSAN
๋ฅผ ๋น๊ตํ ๋ MongoDB๋ DNS ์ด๋ฆ ๋๋ IP ์ฃผ์ ์ค ํ๋๋ฅผ ๋น๊ตํ ์ ์์ต๋๋ค. ์ด์ ๋ฒ์ ์์๋ MongoDB๊ฐ DNS ์ด๋ฆ๋ง ๋น๊ตํ์ต๋๋ค.์๋ฅผ ๋ค์ด, cluster์ ์ธ์ฆ์์๋ ๋ค์๊ณผ ๊ฐ์
subject
๊ฐ ์์ ์ ์์ต๋๋ค.subject= CN=<myhostname1>,OU=Dept1,O=MongoDB,ST=NY,C=US subject= CN=<myhostname2>,OU=Dept1,O=MongoDB,ST=NY,C=US subject= CN=<myhostname3>,OU=Dept1,O=MongoDB,ST=NY,C=US certificateKeyFile
๋ก ์ฌ์ฉ๋๋ ์ธ์ฆ์์extendedKeyUsage
์ด ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐclientAuth
("TLS ์น ํด๋ผ์ด์ธํธ ์ธ์ฆ")์serverAuth
("TLS ์น ์๋ฒ ์ธ์ฆ")์ ๋ชจ๋ ํฌํจํด์ผ ํฉ๋๋ค.extendedKeyUsage = clientAuth, serverAuth clusterFile
๋ก ์ฌ์ฉ๋ ์ธ์ฆ์์extendedKeyUsage
๊ฐ ํฌํจ๋์ด ์๋ค๋ฉด, ๊ทธ ๊ฐ์ ๋ฐ๋์clientAuth
๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค.extendedKeyUsage = clientAuth
MongoDB ๊ตฌ์ฑ
๋ณต์ ๋ณธ ์ธํธ (๊ฐ mongod
์ธ์คํด์ค) ๋๋ ์ค๋ฉ๋ ํด๋ฌ์คํฐ (๊ฐ mongod
๋ฐ mongos
์ธ์คํด์ค)์ ๊ฐ ๋ฉค๋ฒ๊ฐ์ ๋ด๋ถ ์ธ์ฆ์ ์ํด TLS๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ด๋ถ ์ธ์ฆ์ TLS๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์ ์ค์ ์ ์ฌ์ฉํฉ๋๋ค.
security.clusterAuthMode
๋๋--clusterAuthMode
x509
๋ก ์ค์
mongod
๋ฐ mongos
์ธ์คํด์ค๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์์ ์ฆ๋ช
ํ๊ธฐ ์ํด ์ธ์ฆ์ ํค ํ์ผ์ ์ฌ์ฉํ์ง๋ง, ์ธ์ฆ์ ํค ํ์ผ์ ๋ฉค๋ฒ์ญ ์ธ์ฆ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํด๋ฌ์คํฐ ํ์ผ์ ์ง์ ํ์ง ์์ผ๋ฉด ๋ฉค๋ฒ๋ ๋ฉค๋ฒ์ญ ์ธ์ฆ์ ์ํด ์ธ์ฆ์ ํค ํ์ผ์ ์ฌ์ฉํฉ๋๋ค. ์ธ์ฆ์ ํค ํ์ผ์ net.tls.certificateKeyFile
๋๋ --tlsCertificateKeyFile
๋ก ์ง์ ํฉ๋๋ค.
ํด๋ผ์ด์ธํธ ์ธ์ฆ๊ณผ ๋ฉค๋ฒ์ญ ์ธ์ฆ ๋ชจ๋์ ์ธ์ฆ์ ํค ํ์ผ์ ์ฌ์ฉํ๋ ค๋ฉด ์ธ์ฆ์๋ ๋ค์ ์ค ํ๋์ฌ์ผ ํฉ๋๋ค.
extendedKeyUsage
์๋ต ๋๋์ง์
extendedKeyUsage = serverAuth, clientAuth
๋ค์ ๋จ๊ณ
x์ ์๋ฅผ ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.509 ๋ด๋ถ ์ธ์ฆ, x ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.509 ์์ฒด ๊ด๋ฆฌํ MongoDB ๋ฅผ ์ฌ์ฉํ ๋ฉค๋ฒ์ญ ์ธ์ฆ์ฉ ์ธ์ฆ์ .
ํค ํ์ผ ๋ด๋ถ ์ธ์ฆ ์์ x๋ก ์ ๊ทธ๋ ์ด๋ ํฉ๋๋ค.509 ๋ด๋ถ ์ธ์ฆ, ํค ํ์ผ ์ธ์ฆ์์ ์์ฒด ๊ด๋ฆฌํ MongoDB ๋ฅผ x๋ก ์ ๊ทธ๋ ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.509 ์ธ์ฆ.