Azure PostgreSQL Flexible Server TLS ์—ฐ๊ฒฐ

greenTeaยท2025๋…„ 8์›” 3์ผ

Azure PostgreSQL Flexible Server TLS ์—ฐ๊ฒฐ

Azure PostgreSQL Flexible Server๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ์ค‘ TLS๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ enforced๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ ๋ณ„๋‹ค๋ฅธ SSL ์„ค์ • ์—†์ด๋„ ์ž˜ ๋™์ž‘ํ–ˆ์ง€๋งŒ, ๋ฌธ๋“ ์ด ์›๋ฆฌ๊ฐ€ ๊ถ๊ธˆํ•ด์ ธ์„œ ๊นŠ์ด ํŒŒ๋ณด๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” PostgreSQL TLS ์—ฐ๊ฒฐ์˜ ๋™์ž‘ ์›๋ฆฌ์™€ ๊ฐ SSL ๋ชจ๋“œ์˜ ์ฐจ์ด์ , ๊ทธ๋ฆฌ๊ณ  Azure์—์„œ์˜ ์‹ค์ œ ๊ตฌํ˜„ ๋ฐฉ์‹์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ“‹ ๋ชฉ์ฐจ

  1. PostgreSQL SSL ๋ชจ๋“œ ์ดํ•ดํ•˜๊ธฐ
  2. Azure PostgreSQL TLS Enforcement
  3. ์ธ์ฆ์„œ ์ฒด์ธ๊ณผ ์‹ ๋ขฐ ๊ตฌ์กฐ
  4. ๊ฐ SSL ๋ชจ๋“œ๋ณ„ ์‹ค์ œ ๋™์ž‘
  5. ๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ๊ณผ ๊ถŒ์žฅ์‚ฌํ•ญ
  6. mTLS์™€ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ

PostgreSQL SSL ๋ชจ๋“œ ์ดํ•ดํ•˜๊ธฐ

PostgreSQL ํด๋ผ์ด์–ธํŠธ๋Š” ๊ณต์‹ ๋ฌธ์„œ์˜ Table 32.1์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ SSL ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ชจ๋“œ๋ณ„ ๋ณด์•ˆ ์ˆ˜์ค€์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

SSL ๋ชจ๋“œ๋ณ„ ๋ณด์•ˆ ์ˆ˜์ค€ ๋น„๊ต

SSL Mode์•”ํ˜ธํ™”์„œ๋ฒ„ ์ธ์ฆMITM ๋ณดํ˜ธ์šฉ๋„
disableโŒโŒโŒ๋กœ์ปฌ ๊ฐœ๋ฐœ ์ „์šฉ
allowMaybeโŒโŒ๋น„๊ถŒ์žฅ
preferMaybeโŒโŒ๋น„๊ถŒ์žฅ
requireโœ…โŒโŒ๊ธฐ๋ณธ ์•”ํ˜ธํ™”
verify-caโœ…โœ… (CA๋งŒ)Partial์ค‘๊ฐ„ ๋ณด์•ˆ
verify-fullโœ…โœ… (์™„์ „)โœ…์ตœ๊ณ  ๋ณด์•ˆ

์ผ๋ฐ˜์ ์œผ๋กœ require ์„ค์ •์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•˜์‹ค ํ…๋ฐ

Azure PostgreSQL TLS Enforcement

Azure PostgreSQL Flexible Server๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ TLS ์—ฐ๊ฒฐ์„ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” require_secure_transport ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ON์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด๊ฑฐ๋‚˜ ์ž์ฒด์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด OFF๋กœ ์ง€์ •ํ•ด๋„ ๋ฌด๋ฐฉํ•˜๊ฒ ์ง€๋งŒ ์ƒ์šฉํ™˜๊ฒฝ์ด๊ฑฐ๋‚˜ ๋ณด์•ˆ์ ์ธ ์ด์Šˆ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด TLS ์„ค์ •๋„ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.


Azure์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ SSL์ด ํ™œ์„ฑํ™” ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค...

TLS Enforcement ํ…Œ์ŠคํŠธ

ํด๋ผ์ด์–ธํŠธ ์ชฝ์—์„œ SSL์„ ๋น„ํ™œ์„ฑํ™”(Disalbed)ํ•˜๊ณ  ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค:

DBMS: PostgreSQL(๋ฒ„์ „ 16.8)
๋“œ๋ผ์ด๋ฒ„: PostgreSQL JDBC Driver(๋ฒ„์ „ 42.7.3, JDBC4.2)
[28000] FATAL: no pg_hba.conf entry for host "", user "john", database "postgres", no encryption.

์ด ์˜ค๋ฅ˜๋Š” Azure๊ฐ€ ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์—ฐ๊ฒฐ์„ ๊ฑฐ๋ถ€ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ช…ํ™•ํžˆ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๋ฐ˜๋Œ€๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด verify-full๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ ์„ฑ๊ณต์ ์œผ๋กœ ์—ฐ๊ฒฐ์ด ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.(jetbrains data grip ์‚ฌ์šฉ์˜ˆ์‹œ)

Azure์˜ ์ธ์ฆ์„œ ์ •์ฑ…

Azure PostgreSQL์€ ํ˜„์žฌ ๋‹ค์Œ CA๋“ค๋กœ๋ถ€ํ„ฐ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์Šต๋‹ˆ๋‹ค:

  • DigiCert Global Root G2 (ํ˜„์žฌ ์ฃผ๋ ฅ)
  • Microsoft RSA Root CA 2017 (๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ค‘)
  • DigiCert Global Root CA (๋ ˆ๊ฑฐ์‹œ ํ˜ธํ™˜์„ฑ)

Microsoft ๊ณต์‹ ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด, ํด๋ผ์ด์–ธํŠธ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด 3๊ฐœ์˜ ๋ฃจํŠธ CA ์ธ์ฆ์„œ๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ์ €์˜ ์ปดํ“จํ„ฐ์˜ ํ‚ค์ฒด์ธ์—์„œ ๊ฒ€์ƒ‰์„ ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด Root CA๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.(Macos ๊ธฐ์ค€)


Macos ๊ธฐ์ค€์œผ๋กœ ์ŠคํฌํŠธ๋ผ์ดํŠธ์— ์ผ€์ฒด์ธ ์ ‘๊ทผ์„ ์น˜์‹œ๊ณ  ๋“ค์–ด๊ฐ€์„œ ๊ฒ€์ƒ‰์„ ํ•˜์‹œ๋ฉด ์ธ์ฆ์„œ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ์ฆ์„œ ์ฒด์ธ๊ณผ ์‹ ๋ขฐ ๊ตฌ์กฐ

TLS์˜ ๊ฒฝ์šฐ์—๋Š” ํ•˜๋‚˜์˜ ์ธ์ฆ์„œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค๊ธฐ๋ณด๋‹ค๋Š” ์ฒด์ธ์˜ ํ˜•ํƒœ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ์ฆ์„œ ์ฒด์ธ ๊ตฌ์กฐ

Azure PostgreSQL์˜ ์ผ๋ฐ˜์ ์ธ ์ธ์ฆ์„œ ์ฒด์ธ:

๐Ÿ“œ ์„œ๋ฒ„ ์ธ์ฆ์„œ: yourserver.postgres.database.azure.com
โ”œโ”€ ๐Ÿข ๋ฐœ๊ธ‰์ž: Microsoft Azure TLS Issuing CA 01
โ”œโ”€ ๐Ÿ“œ ์ค‘๊ฐ„ CA: Microsoft Azure TLS Issuing CA 01
โ”‚   โ”œโ”€ ๐Ÿข ๋ฐœ๊ธ‰์ž: Microsoft RSA Root CA 2017
โ”‚   โ””โ”€ โœ๏ธ ์„œ๋ช…: Microsoft RSA Root CA 2017์˜ ๊ฐœ์ธํ‚ค
โ””โ”€ ๐Ÿ”‘ ๋ฃจํŠธ CA: Microsoft RSA Root CA 2017 (ํด๋ผ์ด์–ธํŠธ ๋ณด์œ  ํ•„์š”)

๊ฐ SSL ๋ชจ๋“œ๋ณ„ ์‹ค์ œ ๋™์ž‘

require ๋ชจ๋“œ

๋™์ž‘ ๊ณผ์ •:
1. ํด๋ผ์ด์–ธํŠธ: "SSL ์—ฐ๊ฒฐ ํ•„์ˆ˜"
2. ์„œ๋ฒ„: "์ธ์ฆ์„œ ์ „์†ก"
3. ํด๋ผ์ด์–ธํŠธ: "์ธ์ฆ์„œ ๊ฒ€์ฆ ์—†์ด ์•”ํ˜ธํ™”๋งŒ ์ ์šฉ"

์žฅ์ : ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” ๋ณด์žฅ
๋‹จ์ : ์ค‘๊ฐ„์ž ๊ณต๊ฒฉ(MITM)์— ์ทจ์•ฝ

verify-ca ๋ชจ๋“œ

๋™์ž‘ ๊ณผ์ •:
1. ํด๋ผ์ด์–ธํŠธ: "SSL + CA ๊ฒ€์ฆ"
2. ์„œ๋ฒ„: "DigiCert ์„œ๋ช… ์ธ์ฆ์„œ ์ „์†ก"
3. ํด๋ผ์ด์–ธํŠธ: "๋ฃจํŠธ CA๋กœ ์„œ๋ช… ๊ฒ€์ฆ โ†’ ์‹ ๋ขฐ"

์žฅ์ : CA ๊ฒ€์ฆ์œผ๋กœ ์‹ ๋ขฐ์„ฑ ํ™•๋ณด
๋‹จ์ : ํ˜ธ์ŠคํŠธ๋ช… ๊ฒ€์ฆ ์—†์Œ

์‰ฝ๊ฒŒ ๋งํ•ด ๋ˆ„๊ตฐ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ CA์ธ์ฆ์„œ๋ฅผ ํ† ๋Œ€๋กœ ์—ฐ๊ฒฐ์„ ํ•˜๊ฒ ๋‹ค...

verify-full ๋ชจ๋“œ

๋™์ž‘ ๊ณผ์ •:
1. ํด๋ผ์ด์–ธํŠธ: "SSL + CA + ํ˜ธ์ŠคํŠธ๋ช… ๊ฒ€์ฆ"
2. ์„œ๋ฒ„: "์ธ์ฆ์„œ ์ „์†ก"
3. ํด๋ผ์ด์–ธํŠธ: "CA ๊ฒ€์ฆ โ†’ ํ˜ธ์ŠคํŠธ๋ช… ํ™•์ธ โ†’ ์™„์ „ ์‹ ๋ขฐ"

์žฅ์ : ์ตœ๊ณ  ์ˆ˜์ค€์˜ ๋ณด์•ˆ
๋‹จ์ : ์„ค์ • ๋ณต์žก๋„ ์ฆ๊ฐ€

mTLS์™€ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ

SSL ์‚ฌ์šฉ์˜ˆ์‹œ์—์„œ ํด๋ผ์ด์–ธํŠธ ์ธก ์ธ์ฆ์„œ ํŒŒ์ผ์„ ์„ค์ •ํ•˜๋Š” ์นธ์ด ์žˆ๋Š”๋ฐ ์ด ์˜ต์…˜๋“ค์€ mTLS๋ฅผ ์œ„ํ•œ ์˜ต์…˜์œผ๋กœ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

mTLS (Mutual TLS) ๊ฐœ๋…

์ผ๋ฐ˜ TLS๋Š” ์„œ๋ฒ„๋งŒ ์ธ์ฆํ•˜์ง€๋งŒ, mTLS๋Š” ํด๋ผ์ด์–ธํŠธ๋„ ์ธ์ฆ์„œ๋กœ ์‹ ์›์„ ์ฆ๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜ TLS:    ํด๋ผ์ด์–ธํŠธ โ†’ ์„œ๋ฒ„ (์„œ๋ฒ„๋งŒ ์ธ์ฆ)
mTLS:        ํด๋ผ์ด์–ธํŠธ โ†” ์„œ๋ฒ„ (์ƒํ˜ธ ์ธ์ฆ)

ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ ์„ค์ •

๊ณ ๋ณด์•ˆ ํ™˜๊ฒฝ์—์„œ์˜ mTLS:

# DataGrip ์„ค์ •
SSL Mode: verify-full
CA file: /path/to/server-ca.pem      # ์„œ๋ฒ„ ๊ฒ€์ฆ์šฉ
Client Certificate: /path/to/client.crt  # ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์šฉ
Client Key: /path/to/client.key      # ํด๋ผ์ด์–ธํŠธ ๊ฐœ์ธํ‚ค

์ฐธ๊ณ 

์ธ์ฆ์„œ ์ฒด์ธ ํ™•์ธํ•˜๊ธฐ

์‹ค์ œ Azure PostgreSQL์˜ ์ธ์ฆ์„œ ์ฒด์ธ์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

# ์ธ์ฆ์„œ ์ฒด์ธ ์ „์ฒด ํ™•์ธ
openssl s_client -starttls postgres -showcerts -connect yourserver.postgres.database.azure.com:5432

# SSL ์—ฐ๊ฒฐ ์ƒํƒœ ํ™•์ธ (์—ฐ๊ฒฐ ํ›„ SQL ์‹คํ–‰, Azure ๊ธฐ์ค€)
SELECT * from pg_stat_ssl;

๐Ÿ“š ๋งˆ๋ฌด๋ฆฌ

Azure PostgreSQL์˜ TLS ์—ฐ๊ฒฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณ„์ธต์  ๋ณด์•ˆ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค:

  1. ์„œ๋ฒ„ ๊ฐ•์ œ: require_secure_transport = ON
  2. ์ธ์ฆ์„œ ์ฒด์ธ: ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” CA ๊ฒ€์ฆ
  3. ํด๋ผ์ด์–ธํŠธ ์„ ํƒ: SSL ๋ชจ๋“œ๋ณ„ ๋ณด์•ˆ ์ˆ˜์ค€ ์กฐ์ ˆ
  4. ์„ ํƒ์  mTLS: ์–‘๋ฐฉํ–ฅ ์ธ์ฆ ์ง€์›

ํ•ต์‹ฌ ํฌ์ธํŠธ:

  • ์ตœ์†Œ require ์ด์ƒ ์‚ฌ์šฉ
  • ํ”„๋กœ๋•์…˜์—์„œ๋Š” verify-full ๊ถŒ์žฅ
  • ์‹œ์Šคํ…œ์˜ ๋ฃจํŠธ CA๊ฐ€ ์‹ ๋ขฐ ๊ธฐ๋ฐ˜
  • mTLS๋Š” ๋†’์€ ๋ณด์•ˆ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ

๐Ÿ”— ์ฐธ๊ณ  ์ž๋ฃŒ

profile
greenTea์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€