๐น ๊ฐ์
์ด๋ฒ ๊ธ์์๋ Istio๋ฅผ ํ์ฉํ์ฌ Zero Trust ๋ณด์ ๋ชจ๋ธ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Zero Trust ๋ณด์ ๋ชจ๋ธ์ ๋คํธ์ํฌ ๋ด๋ถ์ ๋ชจ๋ ํธ๋ํฝ๋ ์ ๋ขฐํ์ง ์๊ณ , ์ง์์ ์ธ ์ธ์ฆ๊ณผ ๋ณด์ ๊ฒ์ฌ๋ฅผ ์ํํ๋ ๋ฐฉ์์
๋๋ค.
Istio๋ mTLS, RBAC, AuthorizationPolicy, JWT ์ธ์ฆ ๋ฑ์ ํ์ฉํ์ฌ Zero Trust ํ๊ฒฝ์ ๊ตฌํํ ์ ์์ต๋๋ค.
์ด ๊ธ์์๋ Zero Trust ๋ณด์ ๊ฐ๋ , Istio์์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ, ์ค์ ์์ ๋ฅผ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
๐น 1. Zero Trust ๋ณด์ ๋ชจ๋ธ์ด๋?
โ 1.1 Zero Trust ๊ฐ๋
Zero Trust(์ ๋ก ํธ๋ฌ์คํธ) ๋ณด์ ๋ชจ๋ธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ํธ๋ํฝ์ ์ ๋ขฐํ์ง ์๊ณ , ์ง์์ ์ธ ์ธ์ฆ์ ์๊ตฌํ๋ ๋ณด์ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค.
Zero Trust์ ์ฃผ์ ์์น
1๏ธโฃ Implicit Trust ์์ → ๋ด๋ถ ๋คํธ์ํฌ์์๋ ๋ชจ๋ ์์ฒญ์ ์ ๋ขฐ๋์ง ์์
2๏ธโฃ ์ต์ ๊ถํ ์์น(Least Privilege Access) → ์ต์ํ์ ๊ถํ๋ง ๋ถ์ฌ
3๏ธโฃ ์๋น์ค ๊ฐ ๋ณด์ ์ธ์ฆ ํ์ → mTLS, JWT ๋ฑ ์ธ์ฆ ๊ธฐ๋ฐ ๋ณด์ ์ ์ฉ
4๏ธโฃ ๋คํธ์ํฌ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
๊ณ์ธต์์ ๋ณด์ ๊ฒ์ฆ
5๏ธโฃ ๋ณด์ ์ํ ๊ฐ์ง ๋ฐ ์ง์์ ์ธ ๋ชจ๋ํฐ๋ง
๐ก ๊ธฐ์กด ๋ณด์ ๋ชจ๋ธ์ด "๋คํธ์ํฌ ๋ด๋ถ๋ ์์ ํ๋ค"๋ ๊ฐ์ ์์ ์ถ๋ฐํ๋ค๋ฉด, Zero Trust๋ ๋ด๋ถ ๋คํธ์ํฌ๋ ๊ณต๊ฒฉ ๊ฐ๋ฅํ๋ค๊ณ ์ ์ ํ๊ณ ๋ณด์์ ๊ฐํํฉ๋๋ค.
๐น 2. Istio์์ Zero Trust ๋ณด์ ์ ์ฉ
โ 2.1 Istio์์ Zero Trust๋ฅผ ๊ตฌํํ๋ ํต์ฌ ์์
Istio๋ฅผ ํ์ฉํ์ฌ Zero Trust๋ฅผ ์ ์ฉํ๋ ํต์ฌ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ธฐ๋ฅ | ์ค๋ช |
mTLS(Mutual TLS) | ์๋น์ค ๊ฐ ํต์ ์ ์ํธํํ์ฌ ๋ณด์ ๊ฐํ |
AuthorizationPolicy | RBAC ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด |
JWT ์ธ์ฆ | API ์์ฒญ์ ๋ํ ์ฌ์ฉ์ ์ธ์ฆ |
๋คํธ์ํฌ ์ ์ฑ | L3, L4, L7 ๊ณ์ธต์ ํธ๋ํฝ ๋ณด์ ๊ฐํ |
๊ฐ์ฌ ๋ก๊ทธ ๋ฐ ๋ชจ๋ํฐ๋ง | ๋ณด์ ์ด๋ฒคํธ ๊ฐ์ง ๋ฐ ๋ถ์ |
๐น 3. Istio์ mTLS๋ฅผ ํ์ฉํ Zero Trust ์ ์ฉ
โ 3.1 ํด๋ฌ์คํฐ ์ ์ฒด์ mTLS ๊ฐ์ ์ ์ฉ
Zero Trust ํ๊ฒฝ์์๋ ๋ชจ๋ ์๋น์ค ๊ฐ ํต์ ์ด ์ํธํ๋์ด์ผ ํ๋ฏ๋ก, PeerAuthentication์ ํ์ฉํ์ฌ mTLS๋ฅผ ๊ฐ์ ์ ์ฉํฉ๋๋ค.
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: enable-mtls
namespace: istio-system
spec:
mtls:
mode: STRICT # ๋ชจ๋ ์๋น์ค ๊ฐ mTLS ๊ฐ์ ์ ์ฉ
์ค๋ช :
- mtls.mode: STRICT → ๋ชจ๋ ์๋น์ค ๊ฐ ํธ๋ํฝ์ ์ํธํ (mTLS ๊ฐ์ ์ ์ฉ)
๐ก mTLS๋ฅผ ์ ์ฉํ๋ฉด, ์๋น์ค ๊ฐ ํต์ ์ด TLS๋ก ๋ณดํธ๋๋ฉฐ, ๋ฌด๋จ ํธ๋ํฝ์ ์ฐจ๋จํ ์ ์์ต๋๋ค.
๐น 4. RBAC ๊ธฐ๋ฐ ์๋น์ค ์ ๊ทผ ์ ์ด (AuthorizationPolicy ํ์ฉ)
โ 4.1 ํน์ ์๋น์ค ๊ฐ ํธ๋ํฝ ์ฐจ๋จ
์๋ ์์ ๋ frontend ์๋น์ค๋ง backend์ ์ ๊ทผํ ์ ์๋๋ก ํ์ฉํ๋ ์ ์ฑ ์ ๋๋ค.
apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
name: allow-frontend-only
namespace: default
spec:
action: ALLOW
rules:
- from:
- source:
principals: ["cluster.local/ns/default/sa/frontend"] # frontend ์๋น์ค๋ง ํ์ฉ
to:
- operation:
methods: ["GET"] # GET ์์ฒญ๋ง ํ์ฉ
paths: ["/api/data"] # ํน์ ๊ฒฝ๋ก๋ง ํ์ฉ
์ค๋ช :
- source.principals → frontend ์๋น์ค์์ ์ค๋ ์์ฒญ๋ง ํ์ฉ
- operation.methods: ["GET"] → GET ์์ฒญ๋ง ํ์ฉ
- operation.paths: ["/api/data"] → ํน์ API ์๋ํฌ์ธํธ๋ง ํ์ฉ
๐ก Zero Trust ํ๊ฒฝ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ํธ๋ํฝ์ ์ฐจ๋จํ๊ณ , ํ์ํ ์๋น์ค๋ง ๋ช ์์ ์ผ๋ก ํ์ฉํด์ผ ํฉ๋๋ค.
๐น 5. JWT(JSON Web Token)๋ฅผ ํ์ฉํ API ์ธ์ฆ ๊ฐํ
โ 5.1 JWT ์ธ์ฆ ์ ์ฉ (RequestAuthentication ์ฌ์ฉ)
Zero Trust ํ๊ฒฝ์์๋ API ์์ฒญ์ด ์ธ์ฆ๋ ์ฌ์ฉ์๋ก๋ถํฐ ์๋์ง ๊ฒ์ฆํด์ผ ํฉ๋๋ค.
์๋ ์์ ๋ JWT๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆ๋ ์ฌ์ฉ์๋ง API์ ์ ๊ทผํ ์ ์๋๋ก ์ค์ ํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
apiVersion: security.istio.io/v1beta1
kind: RequestAuthentication
metadata:
name: jwt-auth
namespace: default
spec:
selector:
matchLabels:
app: my-service # ํน์ ์๋น์ค์ JWT ์ธ์ฆ ์ ์ฉ
jwtRules:
- issuer: "https://auth.example.com" # JWT ๋ฐ๊ธ์
jwksUri: "https://auth.example.com/.well-known/jwks.json" # JWT ๊ฒ์ฆ ํค
์ค๋ช :
- issuer: "https://auth.example.com" → JWT ๋ฐ๊ธ์(OAuth 2.0 ์ธ์ฆ ์๋ฒ)
- jwksUri → JWT ์๋ช ์ ๊ฒ์ฆํ ๊ณต๊ฐ ํค URL
๐ก JWT ์ธ์ฆ์ ์ ์ฉํ๋ฉด, API ์์ฒญ ์ ์ ํจํ ํ ํฐ์ด ํฌํจ๋์ง ์์ผ๋ฉด ์ ๊ทผ์ด ์ฐจ๋จ๋ฉ๋๋ค.
๐น 6. Zero Trust ํ๊ฒฝ์์ ๋ณด์ ๋ชจ๋ํฐ๋ง
โ 6.1 Istio์ ๋ณด์ ๋ชจ๋ํฐ๋ง ๊ธฐ๋ฅ ํ์ฉ
Zero Trust ํ๊ฒฝ์์๋ ๋ณด์ ์ด๋ฒคํธ๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ฐ์ํ๊ณ , ์ด์ ์งํ๋ฅผ ํ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- Kiali → Istio์ ๋คํธ์ํฌ ํธ๋ํฝ์ ์๊ฐํํ์ฌ ๋ณด์ ๋ชจ๋ํฐ๋ง ๊ฐ๋ฅ
- Prometheus & Grafana → ์๋น์ค ๊ฐ TLS ํธ๋ํฝ ๋ฐ ์ธ์ฆ ์คํจ์จ ๋ถ์
- Jaeger & Zipkin → ์๋น์ค ๊ฐ ํธ๋์ญ์ ์ถ์ ๋ฐ ์ฅ์ ์์ธ ๋ถ์
๋ณด์ ๋ก๊ทธ ํ์ธ ๋ฐฉ๋ฒ
kubectl logs -l app=istio-ingressgateway -n istio-system
๐ก ๋ก๊ทธ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ถ์ํ์ฌ, ๋น์ ์์ ์ธ ์์ฒญ์ ํ์งํ ์ ์์ต๋๋ค.
๐ ๊ฒฐ๋ก
- Zero Trust ๋ณด์ ๋ชจ๋ธ์ ๋ด๋ถ ๋คํธ์ํฌ๋ ์ ๋ขฐํ์ง ์๊ณ , ์ง์์ ์ธ ์ธ์ฆ์ ์ํํ๋ ๋ฐฉ์์ ๋๋ค.
- Istio์ mTLS๋ฅผ ํ์ฑํํ๋ฉด ์๋น์ค ๊ฐ ํธ๋ํฝ์ ์ํธํํ๊ณ ๋ณด์์ ๊ฐํํ ์ ์์ต๋๋ค.
- AuthorizationPolicy๋ฅผ ํ์ฉํ๋ฉด RBAC ๊ธฐ๋ฐ์ผ๋ก ์๋น์ค ๊ฐ ์ ๊ทผ์ ์ ์ดํ ์ ์์ต๋๋ค.
- JWT ๊ธฐ๋ฐ ์ธ์ฆ์ ์ ์ฉํ๋ฉด API ์์ฒญ์ด ์ธ์ฆ๋ ์ฌ์ฉ์๋ก๋ถํฐ ์๋์ง ๊ฒ์ฆํ ์ ์์ต๋๋ค.
- ๋ณด์ ๋ชจ๋ํฐ๋ง ์์คํ (Kiali, Prometheus, Grafana, Jaeger ๋ฑ)์ ํ์ฉํ์ฌ ๋คํธ์ํฌ ๋ณด์์ ๊ฐํํด์ผ ํฉ๋๋ค.