Kubernetes Tools/Istio

[Istio ๊ฐ€์ด๋“œ ep.17] 3๋ถ€ ๋ณด์•ˆ ๋ฐ ์ธ์ฆ #1 | mTLS๋ž€? Istio์—์„œ ์„œ๋น„์Šค ๊ฐ„ ์•”ํ˜ธํ™” ํ†ต์‹  ์„ค์ •ํ•˜๊ธฐ

ygtoken 2025. 3. 18. 11:41
728x90

๐Ÿ”น ๊ฐœ์š”

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Istio์˜ mTLS(Mutual TLS)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ๊ฐ„ ์•”ํ˜ธํ™” ํ†ต์‹ ์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
mTLS๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹ ์„ ์•”ํ˜ธํ™”ํ•˜๊ณ , ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ์„ ์ œ๊ณตํ•˜๋Š” ๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.
Istio๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ mTLS๋ฅผ ์ง€์›ํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ ๋ฐ ์„œ๋น„์Šค ์ธ์ฆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” mTLS ๊ฐœ๋…, Istio์—์„œ mTLS ์ ์šฉ ๋ฐฉ๋ฒ•, ์‹ค์ „ ์˜ˆ์ œ๋ฅผ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ”น 1. mTLS(Mutual TLS)๋ž€?

โœ… 1.1 mTLS ๊ฐœ๋…

**mTLS(Mutual TLS, ์ƒํ˜ธ TLS)**๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ๋ฅผ ์ธ์ฆํ•˜๋Š” TLS ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.
๊ธฐ๋ณธ์ ์ธ TLS(HTTPS)๋Š” ์„œ๋ฒ„๋งŒ ์ธ์ฆํ•˜์ง€๋งŒ, mTLS๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋กœ๋ฅผ ์ธ์ฆํ•˜์—ฌ ๋ณด์•ˆ์„ฑ์„ ๋†’์ž…๋‹ˆ๋‹ค.

mTLS์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ์„œ๋น„์Šค ๊ฐ„ ํŠธ๋ž˜ํ”ฝ ์•”ํ˜ธํ™” → ๋ฐ์ดํ„ฐ๊ฐ€ ๋„คํŠธ์›Œํฌ์—์„œ ์œ ์ถœ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€
  • ์„œ๋กœ ์ธ์ฆํ•˜์—ฌ ์‹ ๋ขฐ์„ฑ ํ™•๋ณด → ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์ด ์•ˆ์ „ํ•œ์ง€ ๊ฒ€์ฆ ๊ฐ€๋Šฅ
  • Zero Trust ๋ณด์•ˆ ๋ชจ๋ธ ์ง€์› → ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์—์„œ๋„ ํŠธ๋ž˜ํ”ฝ์„ ๋ณดํ˜ธ

โœ… 1.2 Istio์—์„œ mTLS๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์ด ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์œผ๋ฉด ๋ณด์•ˆ ์œ„ํ˜‘์— ๋…ธ์ถœ๋จ
  • mTLS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋น„์Šค ๊ฐ„ ์ธ์ฆ ๋ฐ ํŠธ๋ž˜ํ”ฝ ๋ณดํ˜ธ๊ฐ€ ์ž๋™์œผ๋กœ ์ด๋ฃจ์–ด์ง
  • Zero Trust ๋ณด์•ˆ ๋ชจ๋ธ์„ ์ ์šฉํ•  ๋•Œ ํ•„์ˆ˜์ ์ธ ์š”์†Œ

๐Ÿ”น 2. Istio์—์„œ mTLS ํ™œ์„ฑํ™” ๋ฐฉ๋ฒ•

โœ… 2.1 Istio์—์„œ mTLS ๊ธฐ๋ณธ ์ •์ฑ… ํ™•์ธ

Istio๊ฐ€ ์„ค์น˜๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ํ˜„์žฌ mTLS ์„ค์ •์„ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

kubectl get peerauthentication -n istio-system

๊ธฐ๋ณธ์ ์œผ๋กœ STRICT, PERMISSIVE, DISABLE ์„ธ ๊ฐ€์ง€ ๋ชจ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“œ ์„ค๋ช…

STRICT ๋ชจ๋“  ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์„ mTLS๋กœ ์•”ํ˜ธํ™”
PERMISSIVE mTLS๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ, ๋น„์•”ํ˜ธํ™” ํŠธ๋ž˜ํ”ฝ๋„ ํ—ˆ์šฉ
DISABLE mTLS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

๐Ÿ’ก PERMISSIVE ๋ชจ๋“œ์—์„œ STRICT๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์ด ์•”ํ˜ธํ™”๋ฉ๋‹ˆ๋‹ค.


โœ… 2.2 ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด์— mTLS ์ ์šฉํ•˜๊ธฐ

Istio์—์„œ ๋ชจ๋“  ์„œ๋น„์Šค ๊ฐ„ mTLS๋ฅผ ๊ฐ•์ œํ•˜๋ ค๋ฉด PeerAuthentication ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
  namespace: istio-system
spec:
  mtls:
    mode: STRICT  # ๋ชจ๋“  ์„œ๋น„์Šค ๊ฐ„ mTLS ๊ฐ•์ œ ์ ์šฉ

์„ค๋ช…:

  • mtls.mode: STRICT → ๋ชจ๋“  ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์„ ์•”ํ˜ธํ™”
  • namespace: istio-system → Istio๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ์ ์šฉ

๐Ÿ’ก ์ ์šฉ ํ›„ ๋ชจ๋“  ์„œ๋น„์Šค ๊ฐ„ ํŠธ๋ž˜ํ”ฝ์ด ์•”ํ˜ธํ™”๋˜๋ฏ€๋กœ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ mTLS๋ฅผ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


โœ… 2.3 ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— mTLS ์ ์šฉํ•˜๊ธฐ

๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ ์•„๋‹Œ ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ๋งŒ mTLS๋ฅผ ์ ์šฉํ•˜๋ ค๋ฉด, ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‹จ์œ„๋กœ PeerAuthentication์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: ns-mtls
  namespace: my-namespace  # ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ๋งŒ ์ ์šฉ
spec:
  mtls:
    mode: STRICT

๐Ÿ’ก namespace: my-namespace๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ๋งŒ mTLS๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ”น 3. ์„œ๋น„์Šค ๊ฐ„ mTLS ์ ์šฉ ์˜ˆ์ œ

โœ… 3.1 DestinationRule์„ ํ™œ์šฉํ•œ mTLS ์„ค์ •

mTLS๋ฅผ ๊ฐ•์ œํ•˜๋ฉด, ๊ธฐ์กด ์„œ๋น„์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก DestinationRule์—์„œ mTLS๋ฅผ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: my-service-mtls
spec:
  host: my-service
  trafficPolicy:
    tls:
      mode: ISTIO_MUTUAL  # Istio์˜ ๊ธฐ๋ณธ mTLS ์„ค์ • ์ ์šฉ

์„ค๋ช…:

  • tls.mode: ISTIO_MUTUAL → Istio์˜ mTLS ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ ์•”ํ˜ธํ™”

๐Ÿ’ก mTLS๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ, DestinationRule์—์„œ ISTIO_MUTUAL์„ ์„ค์ •ํ•ด์•ผ ์ •์ƒ์ ์œผ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


โœ… 3.2 ํŠน์ • ์„œ๋น„์Šค ๊ฐ„ mTLS ๋น„ํ™œ์„ฑํ™” (์˜ˆ์™ธ ์ ์šฉ)

๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ mTLS๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ–ˆ์ง€๋งŒ,
ํŠน์ • ์„œ๋น„์Šค๋งŒ ๋น„์•”ํ˜ธํ™” ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜๋ ค๋ฉด PeerAuthentication์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: disable-mtls
  namespace: my-namespace
spec:
  selector:
    matchLabels:
      app: my-legacy-service  # ํŠน์ • ์„œ๋น„์Šค์—๋งŒ ์ ์šฉ
  mtls:
    mode: DISABLE  # ํ•ด๋‹น ์„œ๋น„์Šค์— ๋Œ€ํ•ด mTLS ๋น„ํ™œ์„ฑํ™”

์„ค๋ช…:

  • selector.matchLabels.app: my-legacy-service → ์ด๋ฆ„์ด my-legacy-service์ธ ์„œ๋น„์Šค์—๋งŒ ์ ์šฉ
  • mtls.mode: DISABLE → mTLS ์•”ํ˜ธํ™” ํ•ด์ œ (์˜ˆ์™ธ ์ฒ˜๋ฆฌ)

๐Ÿ’ก ๊ธฐ์กด์— TLS๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์„œ๋น„์Šค(์˜ˆ: ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ)์—๋Š” mTLS๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”น 4. mTLS ์ ์šฉ ํ›„ ํ™•์ธ ๋ฐฉ๋ฒ•

โœ… 4.1 ์„œ๋น„์Šค ๊ฐ„ ํŠธ๋ž˜ํ”ฝ์ด ์•”ํ˜ธํ™”๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ

mTLS๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

istioctl authn tls-check <์„œ๋น„์Šค-์ด๋ฆ„>.<๋„ค์ž„์ŠคํŽ˜์ด์Šค>.svc.cluster.local

 

์ถœ๋ ฅ ์˜ˆ์ œ:

HOST                                     STATUS       SERVER     CLIENT     AUTHN POLICY     DESTINATION RULE
my-service.default.svc.cluster.local     OK          mTLS       mTLS       default/strict   default/istio-mutual

๐Ÿ’ก STATUS: OK๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด, ์„œ๋น„์Šค ๊ฐ„ ํŠธ๋ž˜ํ”ฝ์ด ์•”ํ˜ธํ™”๋˜๊ณ  ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ ๊ฒฐ๋ก 

  • mTLS(Mutual TLS)๋Š” ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹ ์„ ์•”ํ˜ธํ™”ํ•˜๊ณ  ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค.
  • Istio์˜ PeerAuthentication์„ ํ™œ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด ๋˜๋Š” ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ mTLS๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • mTLS๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด, DestinationRule์—์„œ ISTIO_MUTUAL์„ ์„ค์ •ํ•ด์•ผ ์ •์ƒ์ ์ธ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋ ˆ๊ฑฐ์‹œ ์„œ๋น„์Šค ๋“ฑ ์ผ๋ถ€ ์„œ๋น„์Šค์— ๋Œ€ํ•ด mTLS๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • mTLS๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ ์šฉ๋˜์—ˆ๋Š”์ง€ istioctl authn tls-check ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
728x90