Kubernetes SecurityContext(s)

Support HackTricks

PodSecurityContext

From the docs:

Pod์˜ ๋ณด์•ˆ ์ปจํ…์ŠคํŠธ๋ฅผ ์ง€์ •ํ•  ๋•Œ ์—ฌ๋Ÿฌ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฉ์–ด์  ๋ณด์•ˆ ๊ด€์ ์—์„œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • runASNonRoot๋ฅผ True๋กœ ์„ค์ •

  • runAsUser๋ฅผ ๊ตฌ์„ฑ

  • ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด seLinuxOptions ๋ฐ seccompProfile์„ ์ง€์ •ํ•˜์—ฌ ๊ถŒํ•œ์„ ์ œํ•œํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ ค

  • runAsGroup ๋ฐ supplementaryGroups๋ฅผ ํ†ตํ•ด privilege group ์ ‘๊ทผ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Œ

fsGroup integer

๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์— ์ ์šฉ๋˜๋Š” ํŠน๋ณ„ ๋ณด์กฐ ๊ทธ๋ฃน. ์ผ๋ถ€ ๋ณผ๋ฅจ ์œ ํ˜•์€ Kubelet์ด ํ•ด๋‹น ๋ณผ๋ฅจ์˜ ์†Œ์œ ๊ถŒ์„ ํฌ๋“œ๊ฐ€ ์†Œ์œ ํ•˜๋„๋ก ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค: 1. ์†Œ์œ  GID๋Š” FSGroup์ด ๋ฉ๋‹ˆ๋‹ค. 2. setgid ๋น„ํŠธ๊ฐ€ ์„ค์ •๋ฉ๋‹ˆ๋‹ค (๋ณผ๋ฅจ์—์„œ ์ƒ์„ฑ๋œ ์ƒˆ ํŒŒ์ผ์€ FSGroup์ด ์†Œ์œ ํ•ฉ๋‹ˆ๋‹ค). 3. ๊ถŒํ•œ ๋น„ํŠธ๋Š” rw-rw----์™€ OR๋ฉ๋‹ˆ๋‹ค. ์„ค์ •๋˜์ง€ ์•Š์œผ๋ฉด Kubelet์€ ๋ณผ๋ฅจ์˜ ์†Œ์œ ๊ถŒ ๋ฐ ๊ถŒํ•œ์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋Š” Pod ๋‚ด๋ถ€์—์„œ ๋…ธ์ถœ๋˜๊ธฐ ์ „์— ๋ณผ๋ฅจ์˜ ์†Œ์œ ๊ถŒ ๋ฐ ๊ถŒํ•œ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋™์ž‘์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

runAsGroup integer

์ปจํ…Œ์ด๋„ˆ ํ”„๋กœ์„ธ์Šค์˜ ์ง„์ž…์  ์‹คํ–‰์„ ์œ„ํ•œ GID. ์„ค์ •๋˜์ง€ ์•Š์œผ๋ฉด ๋Ÿฐํƒ€์ž„ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

runAsNonRoot boolean

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋น„๋ฃจํŠธ ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰๋˜์–ด์•ผ ํ•จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. true์ธ ๊ฒฝ์šฐ Kubelet์€ ๋Ÿฐํƒ€์ž„์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฒ€์ฆํ•˜์—ฌ UID 0(๋ฃจํŠธ)๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ํ•˜๋ฉฐ, ๊ทธ๋ ‡๋‹ค๋ฉด ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘์— ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

runAsUser integer

์ปจํ…Œ์ด๋„ˆ ํ”„๋กœ์„ธ์Šค์˜ ์ง„์ž…์  ์‹คํ–‰์„ ์œ„ํ•œ UID. ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉด ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์ง€์ •๋œ ์‚ฌ์šฉ์ž๋กœ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

seLinuxOptions SELinuxOptions More info about seLinux

๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์— ์ ์šฉ๋  SELinux ์ปจํ…์ŠคํŠธ. ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉด ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์ด ๊ฐ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ๋ฌด์ž‘์œ„ SELinux ์ปจํ…์ŠคํŠธ๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

seccompProfile SeccompProfile More info about Seccomp

์ด ํฌ๋“œ์˜ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉํ•  seccomp ์˜ต์…˜.

supplementalGroups integer array

๊ฐ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ํ”„๋กœ์„ธ์Šค์— ์ ์šฉ๋˜๋Š” ๊ทธ๋ฃน ๋ชฉ๋ก, ์ปจํ…Œ์ด๋„ˆ์˜ ๊ธฐ๋ณธ GID ์™ธ์— ์ถ”๊ฐ€๋กœ.

sysctls Sysctl array More info about sysctls

Sysctls๋Š” ํฌ๋“œ์— ์‚ฌ์šฉ๋˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” sysctls ๋ชฉ๋ก์„ ๋ณด์œ ํ•ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜์ง€ ์•Š๋Š” sysctls๊ฐ€ ์žˆ๋Š” ํฌ๋“œ๋Š” ์‹œ์ž‘์— ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์— ์ ์šฉ๋˜๋Š” Windows ํŠน์ • ์„ค์ •. ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉด ์ปจํ…Œ์ด๋„ˆ์˜ SecurityContext ๋‚ด์˜ ์˜ต์…˜์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

SecurityContext

From the docs:

์ด ์ปจํ…์ŠคํŠธ๋Š” ์ปจํ…Œ์ด๋„ˆ ์ •์˜ ๋‚ด๋ถ€์— ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๋ฐฉ์–ด์  ๋ณด์•ˆ ๊ด€์ ์—์„œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  • allowPrivilegeEscalation์„ False๋กœ ์„ค์ •

  • ๋ฏผ๊ฐํ•œ capabilities๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Œ (ํ•„์š” ์—†๋Š” ๊ฒƒ๋“ค์€ ์ œ๊ฑฐ)

  • privileged๋ฅผ False๋กœ ์„ค์ •

  • ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด readOnlyFilesystem์„ True๋กœ ์„ค์ •

  • runAsNonRoot๋ฅผ True๋กœ ์„ค์ •ํ•˜๊ณ  runAsUser๋ฅผ ์„ค์ •

  • ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด seLinuxOptions ๋ฐ seccompProfile์„ ์ง€์ •ํ•˜์—ฌ ๊ถŒํ•œ์„ ์ œํ•œํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ ค

  • runAsGroup๋ฅผ ํ†ตํ•ด privilege group ์ ‘๊ทผ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Œ.

SecurityContext์™€ PodSecurityContext ๋ชจ๋‘์— ์„ค์ •๋œ ์†์„ฑ์€ SecurityContext์— ์ง€์ •๋œ ๊ฐ’์ด ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

AllowPrivilegeEscalation์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๋” ๋งŽ์€ ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š”์ง€ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ์ด bool์€ ์ปจํ…Œ์ด๋„ˆ ํ”„๋กœ์„ธ์Šค์— no_new_privs ํ”Œ๋ž˜๊ทธ๊ฐ€ ์„ค์ •๋ ์ง€ ์—ฌ๋ถ€๋ฅผ ์ง์ ‘ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. AllowPrivilegeEscalation์€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ Privileged๋กœ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ CAP_SYS_ADMIN์„ ๊ฐ€์งˆ ๋•Œ ํ•ญ์ƒ true์ž…๋‹ˆ๋‹ค.

capabilities Capabilities More info about Capabilities

์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์ถ”๊ฐ€/์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ. ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ธฐ๋ณธ ๊ถŒํ•œ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

privileged boolean

ํŠน๊ถŒ ๋ชจ๋“œ์—์„œ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํŠน๊ถŒ ์ปจํ…Œ์ด๋„ˆ์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ํ˜ธ์ŠคํŠธ์—์„œ ๋ฃจํŠธ์™€ ๋™๋“ฑํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ false์ž…๋‹ˆ๋‹ค.

procMount string

procMount๋Š” ์ปจํ…Œ์ด๋„ˆ์— ์‚ฌ์šฉํ•  proc ๋งˆ์šดํŠธ์˜ ์œ ํ˜•์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ DefaultProcMount๋กœ, ์ฝ๊ธฐ ์ „์šฉ ๊ฒฝ๋กœ ๋ฐ ๋งˆ์Šคํ‚น๋œ ๊ฒฝ๋กœ์— ๋Œ€ํ•ด ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ฝ๊ธฐ ์ „์šฉ ๋ฃจํŠธ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์—ฌ๋ถ€. ๊ธฐ๋ณธ๊ฐ’์€ false์ž…๋‹ˆ๋‹ค.

runAsGroup integer

์ปจํ…Œ์ด๋„ˆ ํ”„๋กœ์„ธ์Šค์˜ ์ง„์ž…์ ์„ ์‹คํ–‰ํ•  GID. ์„ค์ •๋˜์ง€ ์•Š์œผ๋ฉด ๋Ÿฐํƒ€์ž„ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

runAsNonRoot boolean

์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋น„๋ฃจํŠธ ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰๋˜์–ด์•ผ ํ•จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. true์ธ ๊ฒฝ์šฐ Kubelet์€ ๋Ÿฐํƒ€์ž„์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฒ€์ฆํ•˜์—ฌ UID 0(๋ฃจํŠธ)๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ํ•˜๋ฉฐ, ๊ทธ๋ ‡๋‹ค๋ฉด ์ปจํ…Œ์ด๋„ˆ ์‹œ์ž‘์— ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

runAsUser integer

์ปจํ…Œ์ด๋„ˆ ํ”„๋กœ์„ธ์Šค์˜ ์ง„์ž…์ ์„ ์‹คํ–‰ํ•  UID. ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉด ์ด๋ฏธ์ง€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์ง€์ •๋œ ์‚ฌ์šฉ์ž๋กœ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

seLinuxOptions SELinuxOptions More info about seLinux

์ปจํ…Œ์ด๋„ˆ์— ์ ์šฉ๋  SELinux ์ปจํ…์ŠคํŠธ. ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉด ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์ด ๊ฐ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•ด ๋ฌด์ž‘์œ„ SELinux ์ปจํ…์ŠคํŠธ๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

์ด ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‚ฌ์šฉํ•  seccomp ์˜ต์…˜.

๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์— ์ ์šฉ๋˜๋Š” Windows ํŠน์ • ์„ค์ •.

References

Support HackTricks

Last updated