Search

[CKA] 46. Authorization

Date
2025/01/15
Category
Devops
Tag
Kubernetes
CKA
Security
๋ชฉ์ฐจ

ย Why Authorization?

๊ด€๋ฆฌ์ž, ๊ฐœ๋ฐœ์ž, ํ…Œ์Šคํ„ฐ, ๋ชจ๋‹ˆํ„ฐ๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ ํด๋Ÿฌ์Šคํ„ฐ์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ณ„์ •๋“ค์€ ๋‹ค์–‘ํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ณ„์ •๋“ค์ด ๊ฐ™์€ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ์šด์˜ ๋ฐ ๋ณด์•ˆ์ƒ์— ์žˆ์–ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์—์„œ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ํ•จ์œผ๋กœ์จ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค.

ย Mechanisms

ย Node

kube-apiserver์—๋Š” ์‚ฌ์šฉ์ž์™€ kublet์ด ์ ‘๊ทผํ•œ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๊ด€๋ฆฌ ๋ชฉ์ ์œผ๋กœ ์ ‘๊ทผ์„ ์‹œ๋„ํ•˜๊ณ , kubelet์€ ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์˜ ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์œ„ํ•ด ์ ‘๊ทผํ•œ๋‹ค.
kublet์€ API Server์— ์ ‘๊ทผํ•˜์—ฌ ์„œ๋น„์Šค, ์—”๋“œํฌ์ธํŠธ, ๋…ธ๋“œ, ํŒŒ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ฝ๋Š”๋‹ค. ๋˜ํ•œ ๋…ธ๋“œ์˜ ์ƒํƒœ์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๋ณด๊ณ ํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.
Read
Write
Services
Node status
Endpoints
Pod status
Nodes
Events
Pods
์ด๋Ÿฌํ•œ ์š”์ฒญ๋“ค์€ Node Authorizer๋ผ๋Š” ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋œ๋‹ค.
Node Authorizer๋Š” system:node ๊ทธ๋ฃน์—๊ฒŒ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์— ์ ‘๊ทผ๊ณผ ๊ด€๋ จ๋œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ๋‹ค. kubelet์€ system:node ๊ทธ๋ฃน์˜ ์ผ๋ถ€๋ถ„์œผ๋กœ, ์ธ์ฆ์„œ์—์„œ system:node: ๋ฅผ prefix๋กœ ๊ฐ€์ง„๋‹ค.
๋”ฐ๋ผ์„œ kubelet์€ Node Authorizer์—๊ฒŒ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ ‘๊ทผ๊ณผ ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌ๋ฐ›๋Š”๋‹ค. ์ด๋Š” API Server์— ๋Œ€ํ•œ ๋‚ด๋ถ€ ์ ‘๊ทผ์ด๋‹ค.
ย ์ฐธ๊ณ : XLI. Generate Certificates - Kublet

ย ABAC

API Server์— ๋Œ€ํ•œ ์™ธ๋ถ€ ์ ‘๊ทผ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋Š” ABAC์ด๋‹ค.
Attribute Based Access Control์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์†์„ฑ์ด๋‚˜ ๊ทธ๋ฃน์— ๋”ฐ๋ผ ํŠน์ •๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
{"kind": "Policy", "spec": {"user":"dev-user", "namespace": "*", "resource": "pods", "apiGroup": "*"}} {"kind": "Policy", "spec": {"user":"dev-user-2", "namespace": "*", "resource": "pods", "apiGroup": "*"}} {"kind": "Policy", "spec": {"group":"dev-user", "namespace": "*", "resource": "pods", "apiGroup": "*"}} {"kind": "Policy", "spec": {"user":"security-1", "namespace": "*", "resource": "csr", "apiGroup": "*"}}
JSON
๋ณต์‚ฌ
ABAC ๋ฐฉ์‹์€ ๊ฐ ์‚ฌ์šฉ์ž๋‚˜ ๊ทธ๋ฃน์— ๋Œ€ํ•˜์—ฌ ํŠน์ • ํ˜•์‹์œผ๋กœ ์ •์ฑ…์„ ์ •์˜ํ•œ ์ •์ฑ… ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ, ๊ทธ ํŒŒ์ผ์„ API ์„œ๋ฒ„์— ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค. ๋ณด์•ˆ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ๋•Œ๋งˆ๋‹ค ์ •์ฑ… ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ  kube-apiserver๋ฅผ ์žฌ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค๋Š” ์ ์ด ๋‹จ์ ์ด๋‹ค.

ย RBAC

์•ก์„ธ์Šค ๊ด€๋ฆฌ์— ๋” ํ‘œ์ค€์ ์ธ ์ ‘๊ทผ๋ฒ•์œผ๋กœ RBAC์„ ์‚ฌ์šฉํ•œ๋‹ค.
Role Based Access Control์€ ์‚ฌ์šฉ์ž๋‚˜ ๊ทธ๋ฃน์— ๋Œ€ํ•ด ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ด ๋Œ€์‹  ์—ญํ• ์„ ์ •์˜ํ•œ๋‹ค. ์ ์ ˆํ•œ ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์ง‘ํ•ฉ์œผ๋กœ ์—ญํ• ์„ ์ƒ์„ฑํ•˜์—ฌ ํ•ด๋‹น ์—ญํ• ์— ์‚ฌ์šฉ์ž๋‚˜ ๊ทธ๋ฃน์„ ์—ฐ๊ฒฐํ•œ๋‹ค. ์—ญํ• ์„ ์ˆ˜์ •ํ•˜๋ฉด ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

ย Webhook

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋‚ด์žฅ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์•„๋‹Œ Open Policy Agent(OPA)์™€ ๊ฐ™์ด ์„œ๋“œํŒŒํ‹ฐ๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€์—์„œ ๊ถŒํ•œ์„ ๊ด€๋ฆฌํ•œ๋‹ค๋ฉด Webhook์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์‚ฌ์šฉ์ž์™€ ๊ทธ์˜ ์ ‘๊ทผ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด API ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์™ธ๋ถ€ ์•ฑ์€ ์ œ๊ณต๋œ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ์ ‘๊ทผ์„ ํ—ˆ์šฉํ• ์ง€ ๋ง์ง€ ๊ฒฐ์ •ํ•˜๊ณ , ๊ทธ ์‘๋‹ต์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž๋Š” ์ ‘๊ทผ์„ ํ—ˆ๊ฐ€๋ฐ›๊ฒŒ ๋œ๋‹ค.

ย AlwaysAllow & AlwaysDeny

AlwaysAllow์™€ AlwaysDeny๋Š” ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ ์–ด๋–ค ์Šน์ธ ํ™•์ธ๋„ ์—†์ด ๋ชจ๋“  ์š”์ฒญ์„ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฑฐ์ ˆํ•˜๋Š” ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฐฉ์‹์ด๋‹ค.

Configure Modes

๊ถŒํ•œ ๋ถ€์—ฌ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ๋ชจ๋“œ๋“ค์€ kube-apiserver์˜ authorization-mode ์˜ต์…˜์„ ํ†ตํ•ด ์„ค์ •๋œ๋‹ค. ์˜ต์…˜์˜ ๊ธฐ๋ณธ๊ฐ’์€ AlwaysAllow์ด๋ฉฐ, ์—ฌ๋Ÿฌ ๋ชจ๋“œ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

Multi-mode

์—ฌ๋Ÿฌ ๋ชจ๋“œ๊ฐ€ ์ง€์ •๋œ ๊ฒฝ์šฐ์—๋Š” ์ง€์ •๋œ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ๊ฐ์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ Node, RBAC, Webhook์„ ์ง€์ •ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด, ๋จผ์ € Node Authorizer๊ฐ€ ์ฒ˜๋ฆฌํ•œ๋‹ค. Node Authorizer๋Š” ๋…ธ๋“œ ์š”์ฒญ๋งŒ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ•œ๋‹ค.
๋ชจ๋“ˆ์ด ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ•˜๋ฉด ๋‹ค์Œ ๋ชจ๋“ˆ๋กœ ์ „๋‹ฌ๋œ๋‹ค. ๋‹ค์Œ ๋ชจ๋“ˆ์ธ RBAC์ด ์‚ฌ์šฉ์ž๋ฅผ ํ™•์ธํ•˜๊ณ  ์Šน์ธํ•œ๋‹ค๋ฉด, ๋”์ด์ƒ ๋‹ค์Œ ๋ชจ๋“ˆ๋กœ ์š”์ฒญ์ด ์ „๋‹ฌ๋˜์ง€ ์•Š๋Š”๋‹ค.