Docs Menu

๋ช…์‹œ์  ์•”ํ˜ธํ™”

๋ช…์‹œ์  ์•”ํ˜ธํ™”๋Š” MongoDB ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•œ ์ปฌ๋ ‰์…˜์„ ๊ตฌ์„ฑํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋ณต์žก์„ฑ์ด ์ฆ๊ฐ€ํ•˜๋Š” ๋Œ€์‹  ๋ณด์•ˆ์— ๋Œ€ํ•œ ์„ธ๋ถ„ํ™”๋œ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ช…์‹œ์  ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ ์ž‘์—…์— ๋Œ€ํ•ด ๋ฌธ์„œ์˜ ํ•„๋“œ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•˜๊ณ  ์ด ๋กœ์ง์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์— ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ช…์‹œ์  ์•”ํ˜ธํ™”๋Š” ๋‹ค์Œ MongoDB ์ œํ’ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • MongoDB Community ์„œ๋ฒ„

  • MongoDB Enterprise Advanced

  • MongoDB Atlas

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 ์ œ๊ณต์ž๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.