๋ช ์์ ์ํธํ
์ด ํ์ด์ง์ ๋ด์ฉ
๊ฐ์
๋ช ์์ ์ํธํ๋ MongoDB ๋๋ผ์ด๋ฒ์ ๋ํ ์ปฌ๋ ์ ์ ๊ตฌ์ฑํ๊ณ ์ฝ๋๋ฅผ ์์ฑํ ๋ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ๋ ๋์ ๋ณด์์ ๋ํ ์ธ๋ถํ๋ ์ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ช ์์ ์ํธํ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํํ๋ ๊ฐ ์์ ์ ๋ํด ๋ฌธ์์ ํ๋๋ฅผ ์ํธํํ๋ ๋ฐฉ๋ฒ์ ์ง์ ํ๊ณ ์ด ๋ก์ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์ ํฌํจํ ์ ์์ต๋๋ค.
๋ช ์์ ์ํธํ๋ ๋ค์ MongoDB ์ ํ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
MongoDB Community ์๋ฒ
MongoDB Enterprise Advanced
MongoDB Atlas
๋ช ์์ ์ํธํ ์ฌ์ฉ
ClientEncryption ์ธ์คํด์ค ๋ง๋ค๊ธฐ
ClientEncryption
์(๋) ๋๋ผ์ด๋ฒ ์ ๋ฐ์์ ์ฌ์ฉ๋๋ ์ถ์ํ์ด๋ฉฐ mongosh
๋ ๋ช
์์ ์ํธํ ์ ๊ด๋ จ๋ ํค ๋ณผํธ ์ปฌ๋ ์
๋ฐ KMS ์์
์ ์บก์ํํฉ๋๋ค.
ClientEncryption
์ธ์คํด์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์์ ์ง์ ํฉ๋๋ค.
๊ณ ๊ฐ ๋ง์คํฐ ํค๋ฅผ ํธ์คํ ํ๋ KMS
์ ๊ณต์์ ๋ํ ์ก์ธ์ค ๊ถํ์ผ๋ก ๊ตฌ์ฑ๋
kmsProviders
๊ฐ์ฒดํค ๋ณผํธ ์ปฌ๋ ์ ์ ๋ค์์คํ์ด์ค
MongoDB Community ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
bypassQueryAnalysis
์ต์ ์True
๋ก ์ค์ ํฉ๋๋ค.ํค ๋ณผํธ ์ปฌ๋ ์ ์ ์ก์ธ์คํ ์ ์๋
MongoClient
์ธ์คํด์ค
๋ ๋ง์ ClientEncryption
์ต์
์ Queryable Encryption์ ์ํ MongoClient ์ต์
์ ์ฐธ์กฐํ์ธ์.
์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์์ ํ๋ ์ํธํ
์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์ ์ํํ๊ธฐ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ํ๋๋ฅผ ์ํธํํ๋๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
ํ๋๋ฅผ ์ํธํํ๋ ค๋ฉด ClientEncryption
์ธ์คํด์ค์ encrypt
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ค์์ ์ง์ ํฉ๋๋ค:
์ํธํํ ๊ฐ
์ฌ์ฉ๋ ์๊ณ ๋ฆฌ์ฆ :
Indexed
,Unindexed
๋๋Range
๋ฐ์ดํฐ ์ํธํ ํค์ ID
๊ฒฝํฉ ์์ธ (
Indexed
๋๋Range
์๊ณ ๋ฆฌ์ฆ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ)Indexed
๋๋Range
์๊ณ ๋ฆฌ์ฆ ์ ์ฌ์ฉํ์ฌ ์ฝ๊ธฐ ์์ ์ ์ํํ๋ ๊ฒฝ์ฐ ํ๋ ์ ์ ์๋ ์ฟผ๋ฆฌ ์ ํ์ ์ค์ ํ๋ค ํฉ๋๋ค.range
์ต์ ์ต์, ์ต๋ (Range
์๊ณ ๋ฆฌ์ฆ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ)
์ฐธ๊ณ
์ฟผ๋ฆฌ ์ ํ
์ฟผ๋ฆฌ ์ ํ์ ์ฝ๊ธฐ ์์ ์๋ง ์ ์ฉ๋ฉ๋๋ค.
์ฟผ๋ฆฌ ์ ํ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ์ง์๋๋ ์ฟผ๋ฆฌ ์ ํ ๋ฐ ๋์์ ์ฐธ์กฐํ์ธ์.
์๊ณ ๋ฆฌ์ฆ ์ ํ
ํ๋ ์ queryType
๋ฅผ ์ง์ ํ๋ ๊ฒฝ์ฐ Indexed
๋๋ Range
์๊ณ ๋ฆฌ์ฆ ์ ์ฌ์ฉํฉ๋๋ค.
Indexed
์(๋) ๋์ผ์ฑ ์ฟผ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค. Range
์ ๋ฒ์ ์ฟผ๋ฆฌ๋ฅผ ์ง์ํฉ๋๋ค. Indexed
๋ฐ Range
ํ๋์๋ ์๋ฒ ์ ์ธ๋ฑ์ค ๊ฐ ํ์ํฉ๋๋ค. ์ธ๋ฑ์ค ๋db.createCollection()
์ encryptedFields
์ต์
์ ์ง์ ํ์ฌ ์์ฑ๋ฉ๋๋ค
์ฐธ๊ณ
MongoDB 8.0๋ถํฐ rangePreview
Queryable Encryption ์๊ณ ๋ฆฌ์ฆ ์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ์ ๊ฑฐ๋์์ต๋๋ค. ๋์ Range
์๊ณ ๋ฆฌ์ฆ ์ ์ฌ์ฉํฉ๋๋ค.
Queryable Encryption ์ปฌ๋ ์
์์ rangePreview
์ฌ์ฉํ๋ ๊ฒฝ์ฐ MongoDB 8.0์ผ๋ก ์
๊ทธ๋ ์ด๋ ํ๊ธฐ ์ ์ ์ปฌ๋ ์
์ ์ญ์ ํด์ผ ํฉ๋๋ค.
์๋ ์ํธ ํด๋
ํ๋๋ฅผ ์๋์ผ๋ก ํด๋
ํ๋ ค๋ฉด MongoClient
์ธ์คํด์ค๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑํฉ๋๋ค.
kmsProviders
๊ฐ์ฒด ์ง์ ํค ๋ณผํธ ์ปฌ๋ ์ ์ง์
MongoDB Community ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
bypassQueryAnalysis
์ต์ ์True
๋ก ์ค์ ํฉ๋๋ค.
์ฐธ๊ณ
MongoDB Community ์๋ฒ์ ์๋ ์ํธ ํด๋
์๋ ์ํธ ํด๋ ์ MongoDB Community ์๋ฒ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ ์ํธํ์๋ MongoDB Enterprise ๋๋ MongoDB Atlas๊ฐ ํ์ํฉ๋๋ค.
์๋ฒ์ธก ํ๋ ๋ ๋ฒจ ์ํธํ ์ํ
์ปฌ๋ ์ ์ ํน์ ํ๋์ ๋ํ ์ํธํ ๋ฅผ ์ํํ๋ค ๋จ๊ณ ์ ๋๋ค.
Indexed
๋ฐ Range
ํ๋์๋ ์๋ฒ ์ ์ธ๋ฑ์ค ๊ฐ ํ์ํฉ๋๋ค. ์ธ๋ฑ์ค ๋db.createCollection()
์ encryptedFields
์ต์
์ ์ง์ ํ์ฌ ์์ฑ๋ฉ๋๋ค
MongoDB ์ธ์คํด์ค ๊ฐ ํน์ ํ๋์ ์ํธํ ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ, ๋ช ์์ ์ํธํ ๋ฅผ ์ฌ์ฉํ์ฌ Queryable Encryption ์ ์ํํ๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ ๋ ์ง์ ๋ ๋๋ก ํด๋น ํ๋๋ฅผ ์ํธํํด์ผ ํฉ๋๋ค. ์๋ฒ ์ธก Queryable Encryption ์ ์ฉ์ ์ค์ ํ๋ค ํ๋ ๋ฐฉ๋ฒ์ ํ์ต ๋ณด๋ ค๋ฉด ์ํธํ๋ ํ๋ ๋ฐ ํ์ฑํ๋ ์ฟผ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์์ธํ ์์๋ณด๊ธฐ
ํค ๋ณผํธ ์ปฌ๋ ์ , ๋ฐ์ดํฐ ์ํธํ ํค ๋ฐ ๊ณ ๊ฐ ๋ง์คํฐ ํค์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ์ํธํ ํค ๋ฐ ํค ๋ณผํธ๋ฅผ ์ฐธ์กฐํ์ธ์.
KMS ์ ๊ณต์ ๋ฐ kmsProviders
๊ฐ์ฒด์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด KMS ์ ๊ณต์๋ฅผ ์ฐธ์กฐํ์ธ์.