๋ฌธ์„œ ๋ฉ”๋‰ด
๋ฌธ์„œ ํ™ˆ
/
MongoDB ๋งค๋‰ด์–ผ
/ / / / /

KMS ์ œ๊ณต์ž

์ด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ

  • ๊ฐœ์š”
  • ํ‚ค ๊ด€๋ฆฌ ์„œ๋น„์Šค ์ž‘์—…
  • ๊ณ ๊ฐ ๋งˆ์Šคํ„ฐ ํ‚ค ์ƒ์„ฑ ๋ฐ ์ €์žฅ
  • ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ํ‚ค ์ƒ์„ฑ ๋ฐ ์•”ํ˜ธํ™”
  • ์ง€์›๋˜๋Š” ํ‚ค ๊ด€๋ฆฌ ์„œ๋น„์Šค
  • Amazon Web Services KMS
  • Azure ํ‚ค ๋ณผํŠธ
  • Google Cloud Platform KMS
  • KMIP
  • ๋กœ์ปฌ ํ‚ค ์ œ๊ณต์ž

Queryable Encryption์ด ์ง€์›ํ•˜๋Š” ํ‚ค ๊ด€๋ฆฌ ์„œ๋น„์Šค ์ œ๊ณต์ž์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์„ธ์š”.

KMS ๋Š” ์„œ๋น„์Šค๋กœ ์ œ๊ณต๋˜๋Š” ํ‚ค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

Queryable Encryption์—์„œ ํ‚ค ๊ด€๋ฆฌ ์„œ๋น„์Šค๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ณ ๊ฐ ๋งˆ์Šคํ„ฐ ํ‚ค ์ƒ์„ฑ ๋ฐ ์•”ํ˜ธํ™”

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ƒ์„ฑํ•œ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ์•”ํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ํ‚ค ํ•ด๋…

๊ณ ๊ฐ ๋งˆ์Šคํ„ฐ ํ‚ค ๋ฐ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ํ‚ค์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ํ‚ค ๋ฐ ํ‚ค ๋ณผํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ณ ๊ฐ ๋งˆ์Šคํ„ฐ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ ๊ฐ ๋งˆ์Šคํ„ฐ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก KMS ์ œ๊ณต์ž๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์ด์–ด๊ทธ๋žจ

์„ ํ˜ธํ•˜๋Š” ํ‚ค ๊ด€๋ฆฌ ์„œ๋น„์Šค์—์„œ CMK ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ํŠœํ† ๋ฆฌ์–ผ์„ ๋ณด๋ ค๋ฉด ํŠœํ† ๋ฆฌ์–ผ์„ ์ฐธ์กฐํ•˜์„ธ์š” .

๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • Queryable Encryption ์ง€์› ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ClientEncryption ์ธ์Šคํ„ด์Šค๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ•ฉ๋‹ˆ๋‹ค.

    • Queryable Encryption ์ง€์› ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด KMS ๋กœ ์ธ์ฆํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์ž๊ฒฉ ์ฆ๋ช…์„ ์ง€์ •ํ•˜๋Š” kmsProviders ๊ฐ์ฒด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • Queryable Encryption์ด ํ™œ์„ฑํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ClientEncryption ๊ฐ์ฒด์˜ CreateDataKey ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • KMS๊ฐ€ ์ƒˆ ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ์•”ํ˜ธํ™”ํ•  ํ‚ค๋ฅผ ์ง€์ •ํ•˜๋Š” dataKeyOpts ์ฒด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์•”ํ˜ธํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ํŠœํ† ๋ฆฌ์–ผ์„ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ง€์›๋˜๋Š” ๋ชจ๋“  KMS ์ œ๊ณต์ž์— ๋Œ€ํ•œ kmsProviders ๋ฐ dataKeyOpts ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๋ฅผ ๋ณด๋ ค๋ฉด ์ง€์›๋˜๋Š” ํ‚ค ๊ด€๋ฆฌ ์„œ๋น„์Šค๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ํŽ˜์ด์ง€์˜ ๋‹ค์Œ ์„น์…˜์—์„œ๋Š” ๋ชจ๋“  KMS ์ œ๊ณต์ž์— ๋Œ€ํ•œ ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  • Queryable Encryption ์ง€์› ํด๋ผ์ด์–ธํŠธ์˜ ์•„ํ‚คํ…์ฒ˜

  • kmsProviders ๊ฐ์ฒด์˜ ๊ตฌ์กฐ

  • dataKeyOpts ๊ฐ์ฒด์˜ ๊ตฌ์กฐ

Queryable Encryption์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ KMS ์ œ๊ณต์ž๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ด ์„น์…˜์—์„œ๋Š” AWS ํ‚ค ๊ด€๋ฆฌ ์„œ๋น„์Šค ์‚ฌ์šฉ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Queryable Encryption์ด ํ™œ์„ฑํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ

Queryable Encryption์ด ํ™œ์„ฑํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ AWS KMS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ํŠœํ† ๋ฆฌ์–ผ์„ ๋ณด๋ ค๋ฉด AWS์—์„œ ์ž๋™ Queryable Encryption ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์€ Amazon Web Services KMS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Queryable Encryption ์ง€์› ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์ด์–ด๊ทธ๋žจ KMS

์ฐธ๊ณ 

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ณ ๊ฐ ๋งˆ์Šคํ„ฐ ํ‚ค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Œ

์•ž์˜ KMS๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ Queryable Encryption์ด ํ™œ์„ฑํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ณ ๊ฐ ๋งˆ์Šคํ„ฐ ํ‚ค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ์—๋Š” AWS KMS์šฉ kmsProviders ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๊ฐ€ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„๋“œ
IAM ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•„์ˆ˜
IAM ์—ญํ• ์— ํ•„์š”
์„ค๋ช…
์•ก์„ธ์Šค ํ‚ค ID
์˜ˆ
์˜ˆ
๊ณ„์ • ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
๋ณด์•ˆ ์•ก์„ธ์Šค ํ‚ค
์˜ˆ
์˜ˆ
๊ณ„์ • ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ์ž๊ฒฉ ์ฆ๋ช…์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
์„ธ์…˜ ํ† ํฐ
์•„๋‹ˆ
์˜ˆ
AWS Security Token Service(STS)์—์„œ ์–ป์€ ํ† ํฐ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ์—๋Š” AWS KMS์šฉ dataKeyOpts ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๊ฐ€ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„๋“œ
ํ•„์ˆ˜ ์‚ฌํ•ญ
์„ค๋ช…
ํ‚ค
์˜ˆ
Amazon ๋ฆฌ์†Œ์Šค ๋ฒˆํ˜ธ(ARN) ๋งˆ์Šคํ„ฐ ํ‚ค์˜.
region
์•„๋‹ˆ
๋งˆ์Šคํ„ฐ ํ‚ค์˜ AWS ์ง€์—ญ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 'US-WEST-2': ARN์— ์ง€์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
์—”๋“œํฌ์ธํŠธ
์•„๋‹ˆ
๊ณ„์ •์— ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ AWS ์—”๋“œํฌ์ธํŠธ์˜ ์‚ฌ์šฉ์ž ์ง€์ • ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

์ด ์„น์…˜์—์„œ๋Š” Azure Key Vault ์‚ฌ์šฉ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Queryable Encryption์ด ํ™œ์„ฑํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ

Queryable Encryption์ด ํ™œ์„ฑํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Azure Key Vault๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ํŠœํ† ๋ฆฌ์–ผ์„ ๋ณด๋ ค๋ฉด Azure์—์„œ ์ž๋™ Queryable Encryption ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์€ Azure Key Vault๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Queryable Encryption ์ง€์› ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์ด์–ด๊ทธ๋žจ KMS

์ฐธ๊ณ 

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ณ ๊ฐ ๋งˆ์Šคํ„ฐ ํ‚ค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Œ

์•ž์˜ KMS๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ Queryable Encryption์ด ํ™œ์„ฑํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ณ ๊ฐ ๋งˆ์Šคํ„ฐ ํ‚ค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ๋Š” Azure Key Vault์— ๋Œ€ํ•œ kmsProviders ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

ํ•„๋“œ
ํ•„์ˆ˜ ์‚ฌํ•ญ
์„ค๋ช…
azure.tenantId
์˜ˆ
๊ณ„์ •์˜ ์กฐ์ง์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
azure.clientId
์˜ˆ
๋“ฑ๋ก๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ธ์ฆํ•˜๊ธฐ ์œ„ํ•ด clientId๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
azure.clientSecret
์˜ˆ
๋“ฑ๋ก๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ธ์ฆํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
azure.identityPlatformEndpoint
์•„๋‹ˆ
์ธ์ฆ ์„œ๋ฒ„์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๋ฐ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ login.microsoftonline.com ์ด๋ฉฐ ์ •๋ถ€ ๋˜๋Š” ์ค‘๊ตญ ๊ณ„์ •๊ณผ ๊ฐ™์€ ๋น„์ƒ์—…์  Azure ์ธ์Šคํ„ด์Šค์—๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ๋Š” Azure Key Vault์— ๋Œ€ํ•œ dataKeyOpts ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

ํ•„๋“œ
ํ•„์ˆ˜ ์‚ฌํ•ญ
์„ค๋ช…
keyName
์˜ˆ
๋งˆ์Šคํ„ฐ ํ‚ค์˜ ์ด๋ฆ„
keyVersion
์•„๋‹ˆ
๋งˆ์Šคํ„ฐ ํ‚ค์˜ ๋ฒ„์ „
keyVaultEndpoint
์˜ˆ
ํ‚ค ์ €์žฅ์†Œ์˜ URL์ž…๋‹ˆ๋‹ค. ์˜ˆ: myVaultName.vault.azure.net

์ด ์„น์…˜์—์„œ๋Š” GCP ํ‚ค ๊ด€๋ฆฌ ์‚ฌ์šฉ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ Queryable Encryption ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ํ™œ์„ฑํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ

Queryable Encryption์ด ํ™œ์„ฑํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ GCP KMS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ํŠœํ† ๋ฆฌ์–ผ์„ ๋ณด๋ ค๋ฉด GCP์—์„œ ์ž๋™ Queryable Encryption ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์€ GCP KMS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Queryable Encryption ์ง€์› ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์ด์–ด๊ทธ๋žจ KMS

์ฐธ๊ณ 

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ณ ๊ฐ ๋งˆ์Šคํ„ฐ ํ‚ค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Œ

์•ž์˜ KMS๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ Queryable Encryption์ด ํ™œ์„ฑํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ณ ๊ฐ ๋งˆ์Šคํ„ฐ ํ‚ค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ์—๋Š” GCP KMS์šฉ kmsProviders ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๊ฐ€ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„๋“œ
ํ•„์ˆ˜ ์‚ฌํ•ญ
์„ค๋ช…
์ด๋ฉ”์ผ
์˜ˆ
์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
privateKey
์˜ˆ
๋‘ ๊ธฐ๋ณธ ์—์„œ ์„œ๋น„์Šค ๊ณ„์ • ๋น„๊ณต๊ฐœ ํ‚ค๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ์ ‘๋‘์‚ฌ64 string ๋ฐ ์ ‘๋ฏธ์‚ฌ ๋งˆ์ปค๊ฐ€ ์—†๋Š” ์ด์ง„ ํ•˜์œ„ ์œ ํ˜• ํ˜•์‹์ž…๋‹ˆ๋‹ค.0

์„œ๋น„์Šค ๊ณ„์ • ๋น„๊ณต๊ฐœ ํ‚ค ๊ฐ’์ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
-----BEGIN PRIVATE KEY-----\nyour-private-key\n-----END PRIVATE KEY-----\n
์ด ํ•„๋“œ์— ์ง€์ •ํ•  ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
your-private-key
user-key.json ์ž๊ฒฉ ์ฆ๋ช… ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ bash ๋˜๋Š” ์œ ์‚ฌํ•œ shell์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
cat user-key.json | jq -r .private_key | openssl pkcs8 -topk8 -nocrypt -inform PEM -outform DER | base64 -w 0
์—”๋“œํฌ์ธํŠธ
์•„๋‹ˆ
์ธ์ฆ ์„œ๋ฒ„์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๋ฐ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ oauth2.googleapis.com์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ์—๋Š” GCP KMS์šฉ dataKeyOpts ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๊ฐ€ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„๋“œ
ํ•„์ˆ˜ ์‚ฌํ•ญ
์„ค๋ช…
projectId
์˜ˆ
ํ‚ค๋ฅผ ์ƒ์„ฑํ•œ ํ”„๋กœ์ ํŠธ์˜ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.
์œ„์น˜
์˜ˆ
ํ‚ค์— ๋Œ€ํ•ด ์ง€์ •๋œ ์ง€์—ญ์ž…๋‹ˆ๋‹ค.
keyRing
์˜ˆ
ํ‚ค๊ฐ€ ์†ํ•œ ํ‚ค ๊ทธ๋ฃน์˜ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.
keyName
์˜ˆ
๋Œ€์นญ ๋งˆ์Šคํ„ฐ ํ‚ค์˜ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.
keyVersion
์•„๋‹ˆ
๋ช…๋ช…๋œ ํ‚ค์˜ ๋ฒ„์ „์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ๋ฒ„์ „์˜ ํ‚ค๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
์—”๋“œํฌ์ธํŠธ
์•„๋‹ˆ
ํด๋ผ์šฐ๋“œ KMS์˜ ํ˜ธ์ŠคํŠธ ๋ฐ ์„ ํƒ์  ํฌํŠธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ cloudkms.googleapis.com์ž…๋‹ˆ๋‹ค.

์ด ์„น์…˜์—์„œ๋Š” KMIP ์‚ฌ์šฉ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Queryable Encryption์ด ํ™œ์„ฑํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ˜ธํ™˜๋˜๋Š” ํ‚ค ๊ด€๋ฆฌ ์„œ๋น„์Šค ์ œ๊ณต์ž๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์€ KMIPํ˜ธํ™˜ ํ‚ค ์ œ๊ณต์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Queryable Encryption ์ง€์› ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์ด์–ด๊ทธ๋žจ

์ค‘์š”

ํด๋ผ์ด์–ธํŠธ ๊ณ ๊ฐ ๋งˆ์Šคํ„ฐ ํ‚ค ์•ก์„ธ์Šค

Queryable Encryption์ด ํ™œ์„ฑํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด KMIPํ˜ธํ™˜ ํ‚ค ์ œ๊ณต์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ณ ๊ฐ ๋งˆ์Šคํ„ฐ ํ‚ค์— ์ง์ ‘ ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ์—๋Š” KMIP ํ˜ธํ™˜ KMS์— ๋Œ€ํ•œ kmsProviders ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๊ฐ€ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

TLS/SSL์„ ํ†ตํ•œ ์ธ์ฆ

Queryable Encryption์ด ํ™œ์„ฑํ™”๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ KMIP๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ TLS/SSL ์„ ํ†ตํ•ด ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค.

ํ•„๋“œ
ํ•„์ˆ˜ ์‚ฌํ•ญ
์„ค๋ช…
์—”๋“œํฌ์ธํŠธ
์˜ˆ
์ธ์ฆ ์„œ๋ฒ„์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๋ฐ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ์—๋Š” KMIP ํ˜ธํ™˜ KMS์— ๋Œ€ํ•œ dataKeyOpts ๊ฐ์ฒด์˜ ๊ตฌ์กฐ๊ฐ€ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„๋“œ
ํ•„์ˆ˜ ์‚ฌํ•ญ
์„ค๋ช…
keyId
์•„๋‹ˆ

keyId 96 ๋ฐ”์ดํŠธ ์‹œํฌ๋ฆฟ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๊ฐ์ฒด ์˜ ํ•„๋“œ KMIP ํ˜ธํ™˜ ํ‚ค ์ œ๊ณต์ž์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

KMIP ํ˜ธํ™˜ ํ‚ค ์ œ๊ณต์ž์—๊ฒŒ ๋ณด๋‚ด๋Š” masterKey ๋ฌธ์„œ์— keyId ํ•„๋“œ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋“œ๋ผ์ด๋ฒ„๋Š” KMIPํ˜ธํ™˜ ํ‚ค ์ œ๊ณต์ž์— ๋งˆ์Šคํ„ฐ ํ‚ค ์—ญํ• ์„ ํ•  96๋ฐ”์ดํŠธ ๋น„๋ฐ€ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๊ฐœ์ฒด๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์—”๋“œํฌ์ธํŠธ
์˜ˆ
KMIPํ˜ธํ™˜ ํ‚ค ์ œ๊ณต์ž์˜ URI์ž…๋‹ˆ๋‹ค.

์ด ์„น์…˜์—์„œ๋Š” Queryable Encryption ์ง€์› ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋กœ์ปฌ ํ‚ค ์ œ๊ณต์ž(ํŒŒ์ผ ์‹œ์Šคํ…œ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ฒฝ๊ณ 

ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๋กœ์ปฌ ํ‚ค ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”.

ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋กœ์ปฌ ํ‚ค ํŒŒ์ผ์€ ์•ˆ์ „ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ”„๋กœ๋•์…˜์— ๊ถŒ์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . ๋Œ€์‹  ์›๊ฒฉ ํ‚ค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ์— ๊ณ ๊ฐ ๋งˆ์Šคํ„ฐ ํ‚ค๋ฅผ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (KMS).

Queryable Encryption ๊ตฌํ˜„์—์„œ ์›๊ฒฉ KMS๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ ค๋ฉด ํŠœํ† ๋ฆฌ์–ผ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋กœ์ปฌ ํ‚ค ์ œ๊ณต์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Queryable Encryption ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ๋Š” ํŠœํ† ๋ฆฌ์–ผ์„ ๋ณด๋ ค๋ฉด ๋น ๋ฅธ ์‹œ์ž‘์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋กœ์ปฌ ํ‚ค ์ œ๊ณต์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์‹คํ–‰๋˜๋Š” ์ปดํ“จํ„ฐ์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ๊ณ ๊ฐ ๋งˆ์Šคํ„ฐ ํ‚ค๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์€ ๋กœ์ปฌ ํ‚ค ์ œ๊ณต์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Queryable Encryption ์ง€์› ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋กœ์ปฌ ํ‚ค ์ œ๊ณต์ž ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ

๋‹ค์Œ ํ‘œ๋Š” ๋กœ์ปฌ ํ‚ค ์ œ๊ณต์ž์˜ kmsProviders ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

ํ•„๋“œ
ํ•„์ˆ˜ ์‚ฌํ•ญ
์„ค๋ช…
ํ‚ค
์˜ˆ
๋ฐ์ดํ„ฐ ํ‚ค๋ฅผ ์•”ํ˜ธํ™”/๋ณตํ˜ธํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋งˆ์Šคํ„ฐ ํ‚ค์ž…๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ ํ‚ค๋Š” base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

๋กœ์ปฌ ํ‚ค ์ œ๊ณต์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ kmsProviders ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ๊ณ ๊ฐ ๋งˆ์Šคํ„ฐ ํ‚ค๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

โ†ย ํ‚ค ๋ฐ ํ‚ค ์ž๊ฒฉ ์ฆ๋ช… ๋ชจ์ŒKeys and Key Vaults