security

Devopsยท2026๋…„ 1์›” 16์ผ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค

๋ชฉ๋ก ๋ณด๊ธฐ
9/9

security

๐Ÿ” ์ „์ฒด ๊ฐœ๋… ํ•œ ์ค„ ์š”์•ฝ

Kubernetes๋Š” ๋ชจ๋“  ์ฃผ์š” ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ํ†ต์‹ ์„ mTLS(์ƒํ˜ธ TLS ์ธ์ฆ) ๋กœ ๋ณดํ˜ธํ•˜๋ฉฐ,
๊ฐ ์ปดํฌ๋„ŒํŠธ๋Š” ์ž๊ธฐ ์ „์šฉ Client ์ธ์ฆ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  kube-apiserver ๋˜๋Š” etcd์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.

1๏ธโƒฃ Admin / kubectl ์˜์—ญ

๐Ÿ“„ admin.crt / admin.key

kubectl ์‚ฌ์šฉ์ž์šฉ ์ธ์ฆ์„œ

kubectl get pods ๊ฐ™์€ ๋ช…๋ น ์‹คํ–‰ ์‹œ ์‚ฌ์šฉ

๐Ÿ“Œ ํ๋ฆ„

Admin(kubectl)
 โ””โ”€โ”€ admin.crt/key
      โ””โ”€โ”€ kube-apiserver (REST API)


โœ”๏ธ ํŠน์ง•

kubeconfig์— ์„ค์ •๋จ

๋ณดํ†ต system:masters ๊ทธ๋ฃน โ†’ cluster-admin ๊ถŒํ•œ

์‚ฌ๋žŒ(์šด์˜์ž) ์ธ์ฆ์šฉ

2๏ธโƒฃ Control Plane ๋‚ด๋ถ€ ์ปดํฌ๋„ŒํŠธ ์ธ์ฆ์„œ

๐Ÿง  kube-scheduler

scheduler.crt / scheduler.key

Pod๋ฅผ ์–ด๋А ๋…ธ๋“œ์— ๋ฐฐ์น˜ํ• ์ง€ ๊ฒฐ์ •

kube-apiserver์— Client๋กœ ์ ‘๊ทผ

๐Ÿง  kube-controller-manager

controller-manager.crt / key

ReplicaSet, Node, Endpoint ๋“ฑ ์ƒํƒœ ๊ด€๋ฆฌ

kube-apiserver์— Client๋กœ ์ ‘๊ทผ

๐ŸŒ kube-proxy

kube-proxy.crt / key

Service โ†’ Pod ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…

kube-apiserver์— Client๋กœ ์ ‘๊ทผ

๐Ÿ“Œ ๊ณตํ†ต ํ๋ฆ„

[ scheduler / controller / proxy ]
   โ””โ”€โ”€ ๊ฐ์ž client cert
        โ””โ”€โ”€ kube-apiserver


โœ”๏ธ ์ „๋ถ€ Client ์ธ์ฆ์„œ
โœ”๏ธ ์ „๋ถ€ kube-apiserver๋งŒ ๋ฐ”๋ผ๋ด„

3๏ธโƒฃ kube-apiserver

kube-apiserver๋Š” ๋‘ ์–ผ๊ตด์„ ๊ฐ€์ง

๐Ÿ” 3-1. Server ์ธ์ฆ์„œ
apiserver.crt / apiserver.key

kube-apiserver๊ฐ€ ์„œ๋ฒ„ ์—ญํ• ์ผ ๋•Œ ์‚ฌ์šฉ

์ ‘์† ๋Œ€์ƒ:

kubectl

controller

scheduler

kubelet

kube-proxy

Client โ”€โ”€TLSโ”€โ”€> kube-apiserver (server cert)

๐Ÿ” 3-2. Client ์ธ์ฆ์„œ (etcd / kubelet ์ ‘๊ทผ์šฉ)
apiserver-etcd-client.crt / key

kube-apiserver โ†’ etcd ์ ‘๊ทผ ์‹œ ์‚ฌ์šฉ

apiserver-kubelet-client.crt / key

kube-apiserver โ†’ kubelet ์ ‘๊ทผ ์‹œ ์‚ฌ์šฉ

kubectl logs, kubectl exec ๋•Œ ํ•„์š”

kube-apiserver
 โ”œโ”€โ”€ client cert โ†’ etcd
 โ””โ”€โ”€ client cert โ†’ kubelet


โœ”๏ธ kube-apiserver๋Š” ์„œ๋ฒ„์ด์ž ํด๋ผ์ด์–ธํŠธ

4๏ธโƒฃ etcd ์˜์—ญ
etcdserver.crt / etcdserver.key

etcd๊ฐ€ ์„œ๋ฒ„

kube-apiserver๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

kube-apiserver
 โ””โ”€โ”€ apiserver-etcd-client.crt
      โ””โ”€โ”€ etcd (server cert)


๐Ÿ“Œ ์ค‘์š”

etcd๋Š” ์™ธ๋ถ€ ์ ‘๊ทผ ์ ˆ๋Œ€ ๊ธˆ์ง€

apiserver ์ „์šฉ Client cert๋งŒ ํ—ˆ์šฉ

5๏ธโƒฃ kubelet ์˜์—ญ
๐Ÿ” kubelet server cert
kubelet.crt / kubelet.key

kubelet์ด ์„œ๋ฒ„

kube-apiserver๊ฐ€ ์ ‘๊ทผ

kube-apiserver
 โ””โ”€โ”€ apiserver-kubelet-client.crt
      โ””โ”€โ”€ kubelet (server)


๐Ÿ“Œ ์‚ฌ์šฉ ์˜ˆ

kubectl logs

kubectl exec

kubectl port-forward

6๏ธโƒฃ ์ด ๊ทธ๋ฆผ์ด ๋งํ•˜๋Š” ํ•ต์‹ฌ ํฌ์ธํŠธ ๐Ÿ”ฅ
โœ… 1. ๋ชจ๋“  ํ†ต์‹ ์€ TLS

HTTP โŒ

TLS + ์ธ์ฆ์„œ โœ”๏ธ

โœ… 2. ๊ฑฐ์˜ ์ „๋ถ€ kube-apiserver ์ค‘์‹ฌ
[ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ ] โ†’ kube-apiserver โ†’ etcd

KubeConfig

role (rbac)

ํŠน์ • Namespace ์•ˆ์—์„œ๋งŒ API ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ •์˜

์ œ์–ด ๋Œ€์ƒ

Kubernetes ๋ฆฌ์†Œ์Šค(API)

์˜ˆ: pods, services, configmaps ๋“ฑ

ํŠน์ง•

Namespace scoped

๋‹ค๋ฅธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—๋Š” ์˜ํ–ฅ ์—†์Œ

cluster-role (rbac)

ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด ๋ฒ”์œ„ ๋˜๋Š” ๊ณตํ†ต ๋ฆฌ์†Œ์Šค ๊ถŒํ•œ

์ œ์–ด ๋Œ€์ƒ

๋ชจ๋“  Namespace ๋ฆฌ์†Œ์Šค

๋˜๋Š” Namespace ์—†๋Š” ๋ฆฌ์†Œ์Šค

nodes

persistentvolumes

namespaces

ํŠน์ง•

Cluster scoped

Role๋ณด๋‹ค ์ƒ์œ„ ๊ฐœ๋…

network policy

Pod ๊ฐ„ ๋„คํŠธ์›Œํฌ ํ†ต์‹  ํ—ˆ์šฉ/์ฐจ๋‹จ ๊ทœ์น™

์ œ์–ด ๋Œ€์ƒ

๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ

Ingress / Egress

RBAC์ด๋ž‘ ์™„์ „ ๋‹ค๋ฆ„ โ—

RBAC: API ์ ‘๊ทผ

NetworkPolicy: ๋„คํŠธ์›Œํฌ ํ†ต์‹ 

ํŠน์ง•

Namespace scoped

CNI๊ฐ€ ์ง€์›ํ•ด์•ผ ๋™์ž‘ (Calico, Cilium ๋“ฑ)

custom resource definition (CRD)


Kubernetes์— โ€œ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค ํƒ€์ž…โ€์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ธฐ๋Šฅ

Kubernetes ๊ธฐ๋ณธ ๋ฆฌ์†Œ์Šค๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ•  ๋•Œ
โ†’ ๋„๋ฉ”์ธ๋ณ„ ๊ฐœ๋…์„ ๋ฆฌ์†Œ์Šค๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด

์˜ˆ:

Ingress โ†’ ์›๋ž˜ CRD

Certificate (cert-manager)

VirtualService (Istio)

Prometheus (Prometheus Operator)
profile
Cloud Engineer , backend developer

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