๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”

๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„ ์˜์—ญ์— ์•”ํ˜ธํ™”๋ฉ๋‹ˆ๋‹ค.

  • ํ‚ค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(KMS) ๋ฐ์ดํ„ฐ
  • ํ‚ค-๊ฐ’ ๋งต(KVM) ๋ฐ์ดํ„ฐ
  • ๋ฐ์ดํ„ฐ ์บ์‹œ

๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”๋Š” ํŠน๋ณ„ํ•œ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ์ž์ฒด ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์ด ์ฃผ์ œ์— ์„ค๋ช…๋œ ๋Œ€๋กœ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์•”ํ˜ธํ™” ํ‚ค ๋ฒ”์œ„

KMS, VPN, ์บ์‹œ์˜ ์•”ํ˜ธํ™” ํ‚ค์—๋Š” ๋ฒ”์œ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด KMS ํ‚ค์—๋Š” ์กฐ์ง ๋ฒ”์œ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ‚ค๊ฐ€ ์ „์ฒด ์กฐ์ง์˜ KMS ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ํ‘œ์—๋Š” ๊ฐ ํ‚ค ์œ ํ˜•์˜ ๋ฒ”์œ„๊ฐ€ ๋‚˜์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์•”ํ˜ธํ™” ํ‚ค ๋ฒ”์œ„
KMS ์กฐ์ง๋งŒ
KVM ์กฐ์ง ๋˜๋Š” ํ™˜๊ฒฝ

KVM ์ •์ฑ…์ด apiproxy ๋˜๋Š” policy(API ํ”„๋ก์‹œ ๋ฒ„์ „) ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋ฉด, ์กฐ์ง ์ˆ˜์ค€ ํ‚ค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Apigee Edge์—์„œ KVM์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ๊ฐœ์š”๋Š” ํ‚ค-๊ฐ’ ๋งต ๋‹ค๋ฃจ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์บ์‹œ ํ™˜๊ฒฝ๋งŒ

๊ธฐ๋ณธ ์•”ํ˜ธํ™” ํ‚ค ์ •๋ณด

๊ธฐ๋ณธ์ ์œผ๋กœ Apigee Hybrid๋Š” KVM, KMS, ์บ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” Base64 ์ธ์ฝ”๋”ฉ ํ‚ค ๋ชจ์Œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Apigee Hybrid ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์€ ๋Ÿฐํƒ€์ž„ ์˜์—ญ์— ํ‚ค๋ฅผ Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€๋กœ ์ €์žฅํ•˜๊ณ  ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ AES-128 ํ‘œ์ค€ ์•”ํ˜ธํ™”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•ฉ๋‹ˆ๋‹ค. ํ‚ค๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ด€๋ฆฌ ์˜์—ญ์„ ํ•ญ์ƒ ์ธ์‹ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์•”ํ˜ธํ™” ํ‚ค ๋ณ€๊ฒฝ

ํ•„์ˆ˜๋Š” ์•„๋‹ˆ์ง€๋งŒ ๊ธฐ๋ณธ ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ์›ํ•˜๋Š” ๊ฒฝ์šฐ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ๋ฐ”๊พธ๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ๋‹ค์Œ ์Šคํƒ ์ž๋ฅผ ์žฌ์ •์˜ ํŒŒ์ผ์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์„ ํ†ตํ•ด ์กฐ์ง ์ˆ˜์ค€์˜ KMS ๋ฐ KVM ์•”ํ˜ธํ™” ํ‚ค์™€ ํ™˜๊ฒฝ ์ˆ˜์ค€์˜ KVM ๋ฐ ์บ์‹œ ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    defaults:
      org:
        kmsEncryptionKey: base64-encoded-key
        kvmEncryptionKey: base64-encoded-key
      env:
        kvmEncryptionKey: base64-encoded-key
        cacheEncryptionKey: base64-encoded-key
  2. ๊ต์ฒดํ•  ํ‚ค๋งˆ๋‹ค ์ƒˆ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜์„ธ์š”. ๊ฐ ํ‚ค๋Š” ์ •ํ™•ํžˆ 16, 24, 32๋ฐ”์ดํŠธ ๊ธธ์ด์ธ Base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฝ”๋”ฉ๋œ ํ‚ค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๋„ ์ฐธ์กฐํ•˜์„ธ์š”.
  3. ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ƒˆ ํ‚ค๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ด ์˜ˆ์‹œ์—์„œ ๋ชจ๋“  ๊ธฐ๋ณธ ํ‚ค๊ฐ€ ํ‚ค๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค.
    defaults:
      org:
        kmsEncryptionKey: "JVpTb1FwI0otUHo2RUdRN3pnVyQqVGlMSEFAJXYmb1c="
        kvmEncryptionKey: "T3VkRGM1U3cpOFgtNk9fMnNZU2NaSVA3I1BtZWxkaUU="
      env:
        kvmEncryptionKey: "Q3h6M3R6OWdBeipxTURfKjQwQVdtTng2dU5mODFHcyE="
        cacheEncryptionKey: "b2NTVXdKKjBzN0NORF9XSm9tWFlYKGJ6NUhpNystJVI="
  4. ํด๋Ÿฌ์Šคํ„ฐ์— ์žฌ์ •์˜ ํŒŒ์ผ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์— ๋Œ€ํ•œ ์ฐธ๊ณ ์‚ฌํ•ญ

Apigee Hybrid๋ฅผ ์ฒ˜์Œ ์„ค์น˜ํ•  ๋•Œ ์žฌ์ •์˜ ํŒŒ์ผ์—์„œ ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ์‚ญ์ œํ•œ ๊ฒฝ์šฐ ์•”ํ˜ธํ™”๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ’์€ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ํ‚ค๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ฉด ์ข…๋ฃŒ๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ดํ›„์— ์ถ”๊ฐ€๋˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‘ ์•”ํ˜ธํ™”๋ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์€ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ์™€ ์ƒˆ๋กœ์šด ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ ์ •์ƒ์ ์œผ๋กœ ๊ณ„์† ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ๊ฐ€ ์•”ํ˜ธํ™”๋˜๋ฉด ๋‚˜์ค‘์— ์•”ํ˜ธํ™” ํ‚ค๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ธ์ฝ”๋”ฉ๋œ ํ‚ค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

KVM, KMS, ์บ์‹œ ์•”ํ˜ธํ™”์—๋Š” ์˜ฌ๋ฐ”๋ฅธ ํ˜•์‹์˜ Base-64 ์ธ์ฝ”๋”ฉ ํ‚ค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ‚ค๋Š” ๋‹ค์Œ ๋‹จ๊ณ„์— ์„ค๋ช…๋œ ๋Œ€๋กœ 16, 24, 32๋ฐ”์ดํŠธ ๊ธธ์ด์˜ ๋ฌธ์ž์—ด์—์„œ Base64๋กœ ์ธ์ฝ”๋”ฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์‹œ ๋ช…๋ น์–ด๋Š” ์ถœ๋ ฅํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ž๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ์ ํ•ฉํ•œ ๋ฌด์ž‘์œ„ ์ƒ์„ฑ 32์ž Base64 ์ธ์ฝ”๋”ฉ ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

LC_ALL=C tr -dc A-Za-z0-9_\!\@\#\$\%\^\&\*\(\)\\-+= < /dev/urandom | head -c 32  | openssl base64
PSFvX0BPc1Z2NVklcXdxcF8xR0N4MV4temFveStITU4=

๋˜๋Š”

LC_ALL=C tr -dc "[:print:]" < /dev/urandom | head -c 32 | openssl base64