Information in this document may be out of date

This document has an older update date than the original, so the information it contains may be out of date. If you're able to read English, see the English version for the most up-to-date information: Pod Security Standards

ํŒŒ๋“œ ์‹œํ๋ฆฌํ‹ฐ ์Šคํƒ ๋‹ค๋“œ

ํŒŒ๋“œ ์‹œํ๋ฆฌํ‹ฐ ์Šคํƒ ๋‹ค๋“œ์— ์ •์˜๋œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ •์ฑ… ๋ ˆ๋ฒจ์— ๋Œ€ํ•œ ์„ธ๋ถ€์‚ฌํ•ญ

ํŒŒ๋“œ ์‹œํ๋ฆฌํ‹ฐ ์Šคํƒ ๋‹ค๋“œ์—์„œ๋Š” ๋ณด์•ˆ ๋ฒ”์œ„๋ฅผ ๋„“๊ฒŒ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์„ธ ๊ฐ€์ง€ ์ •์ฑ…์„ ์ •์˜ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ •์ฑ…์€ ์ ์ฆ์ ์ด๋ฉฐ ๋งค์šฐ ํ—ˆ์šฉ์ ์ธ ๊ฒƒ๋ถ€ํ„ฐ ๋งค์šฐ ์ œํ•œ์ ์ธ ๊ฒƒ๊นŒ์ง€ ์žˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋Š” ๊ฐ ์ •์ฑ…์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ฐ„๋žตํžˆ ์„ค๋ช…ํ•œ๋‹ค.

ํ”„๋กœํ•„์„ค๋ช…
ํŠน๊ถŒ(Privileged)๋ฌด์ œํ•œ ์ •์ฑ…์œผ๋กœ, ๊ฐ€์žฅ ๋„“์€ ๋ฒ”์œ„์˜ ๊ถŒํ•œ ์ˆ˜์ค€์„ ์ œ๊ณตํ•œ๋‹ค. ์ด ์ •์ฑ…์€ ์•Œ๋ ค์ง„ ๊ถŒํ•œ ์ƒ์Šน(privilege escalations)์„ ํ—ˆ์šฉํ•œ๋‹ค.
๊ธฐ๋ณธ(Baseline)์•Œ๋ ค์ง„ ๊ถŒํ•œ ์ƒ์Šน์„ ๋ฐฉ์ง€ํ•˜๋Š” ์ตœ์†Œํ•œ์˜ ์ œํ•œ ์ •์ฑ…์ด๋‹ค. ๊ธฐ๋ณธ(์ตœ์†Œ๋กœ ๋ช…์‹œ๋œ) ํŒŒ๋“œ ๊ตฌ์„ฑ์„ ํ—ˆ์šฉํ•œ๋‹ค.
์ œํ•œ(Restricted)์—„๊ฒฉํžˆ ์ œํ•œ๋œ ์ •์ฑ…์œผ๋กœ ํ˜„์žฌ ํŒŒ๋“œ ํ•˜๋“œ๋‹ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

ํ”„๋กœํ•„ ์„ธ๋ถ€์‚ฌํ•ญ

ํŠน๊ถŒ(Privileged)

ํŠน๊ถŒ ์ •์ฑ…์€ ์˜๋„์ ์œผ๋กœ ์—ด๋ ค์žˆ์œผ๋ฉฐ ์ „์ ์œผ๋กœ ์ œํ•œ์ด ์—†๋‹ค. ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์ •์ฑ…์€ ๊ถŒํ•œ์ด ์žˆ๊ณ  ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ ๋ฐ ์ธํ”„๋ผ ์ˆ˜์ค€์˜ ์›Œํฌ๋กœ๋“œ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•œ๋‹ค.

ํŠน๊ถŒ ์ •์ฑ…์€ ์ œํ•œ ์‚ฌํ•ญ์ด ์—†๋Š” ๊ฒƒ์œผ๋กœ ์ •์˜ํ•œ๋‹ค. ๊ธฐ๋ณธ์œผ๋กœ ํ—ˆ์šฉํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜(์˜ˆ๋ฅผ ๋“ค๋ฉด, gatekeeper)์€ ๋‹น์—ฐํžˆ ํŠน๊ถŒ ์ •์ฑ…์ผ ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฑฐ๋ถ€ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜(์˜ˆ๋ฅผ ๋“ค๋ฉด, ํŒŒ๋“œ ์‹œํ๋ฆฌํ‹ฐ ํด๋ฆฌ์‹œ)์˜ ๊ฒฝ์šฐ ํŠน๊ถŒ ์ •์ฑ…์€ ๋ชจ๋“  ์ œํ•œ ์‚ฌํ•ญ์„ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•œ๋‹ค.

๊ธฐ๋ณธ(Baseline)

๊ธฐ๋ณธ ์ •์ฑ…์€ ์•Œ๋ ค์ง„ ๊ถŒํ•œ ์ƒ์Šน์„ ๋ฐฉ์ง€ํ•˜๋ฉด์„œ ์ผ๋ฐ˜์ ์ธ ์ปจํ…Œ์ด๋„ˆ ์›Œํฌ๋กœ๋“œ์— ๋Œ€ํ•ด ์ •์ฑ… ์ฑ„ํƒ์„ ์‰ฝ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค. ์ด ์ •์ฑ…์€ ์ผ๋ฐ˜์ ์ธ(non-critical) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์šด์˜์ž ๋ฐ ๊ฐœ๋ฐœ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•œ๋‹ค. ์•„๋ž˜ ๋ช…์‹œํ•œ ์ œ์–ด ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ•ํ–‰๋˜๊ฑฐ๋‚˜ ๊ธˆ์ง€๋˜์–ด์•ผ ํ•œ๋‹ค.

๊ธฐ๋ณธ(Baseline) ์ •์ฑ… ๋ช…์„ธ์„œ
์ œ์–ด์ •์ฑ…
ํ˜ธ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค

์œˆ๋„์šฐ ํŒŒ๋“œ๋Š” ํ˜ธ์ŠคํŠธ ํ”„๋กœ์„ธ์Šค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๊ถŒํ•œ์„ ์ œ๊ณตํ•˜๋ฉฐ, ์ด๋Š” ์œˆ๋„์šฐ ๋…ธ๋“œ์— ๋Œ€ํ•œ ํŠน๊ถŒ ์ ‘๊ทผ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ๊ธฐ๋ณธ ์ •์ฑ…์—์„œ์˜ ํ˜ธ์ŠคํŠธ์— ๋Œ€ํ•œ ํŠน๊ถŒ ์ ‘๊ทผ์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

๊ธฐ๋Šฅ ์ƒํƒœ: Kubernetes v1.23 [beta]

์ œํ•œ๋œ ํ•„๋“œ

  • spec.securityContext.windowsOptions.hostProcess
  • spec.containers[*].securityContext.windowsOptions.hostProcess
  • spec.initContainers[*].securityContext.windowsOptions.hostProcess
  • spec.ephemeralContainers[*].securityContext.windowsOptions.hostProcess

ํ—ˆ์šฉ๋œ ๊ฐ’

  • Undefined/nil
  • false
ํ˜ธ์ŠคํŠธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค

ํ˜ธ์ŠคํŠธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ณต์œ ๋Š” ๊ธˆ์ง€๋œ๋‹ค.

์ œํ•œ๋œ ํ•„๋“œ

  • spec.hostNetwork
  • spec.hostPID
  • spec.hostIPC

ํ—ˆ์šฉ๋œ ๊ฐ’

  • Undefined/nil
  • false
ํŠน๊ถŒ ์ปจํ…Œ์ด๋„ˆ

ํŠน๊ถŒ ํŒŒ๋“œ(Privileged Pods)๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฏ€๋กœ ๊ธˆ์ง€๋œ๋‹ค.

์ œํ•œ๋œ ํ•„๋“œ

  • spec.containers[*].securityContext.privileged
  • spec.initContainers[*].securityContext.privileged
  • spec.ephemeralContainers[*].securityContext.privileged

ํ—ˆ์šฉ๋œ ๊ฐ’

  • Undefined/nil
  • false
๊ธฐ๋Šฅ(Capabilities)

์•„๋ž˜ ๋ช…์‹œ๋˜์ง€ ์•Š์€ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ž‘์—…์€ ๊ธˆ์ง€๋œ๋‹ค.

์ œํ•œ๋œ ํ•„๋“œ

  • spec.containers[*].securityContext.capabilities.add
  • spec.initContainers[*].securityContext.capabilities.add
  • spec.ephemeralContainers[*].securityContext.capabilities.add

ํ—ˆ์šฉ๋œ ๊ฐ’

  • Undefined/nil
  • AUDIT_WRITE
  • CHOWN
  • DAC_OVERRIDE
  • FOWNER
  • FSETID
  • KILL
  • MKNOD
  • NET_BIND_SERVICE
  • SETFCAP
  • SETGID
  • SETPCAP
  • SETUID
  • SYS_CHROOT
ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ(hostPath) ๋ณผ๋ฅจ

ํ˜ธ์ŠคํŠธ ๊ฒฝ๋กœ ๋ณผ๋ฅจ์€ ๊ธˆ์ง€๋œ๋‹ค.

์ œํ•œ๋œ ํ•„๋“œ

  • spec.volumes[*].hostPath

ํ—ˆ์šฉ๋œ ๊ฐ’

  • Undefined/nil
ํ˜ธ์ŠคํŠธ ํฌํŠธ

ํ˜ธ์ŠคํŠธ ํฌํŠธ๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์•„์•ผ ํ•˜๋ฉฐ, ๋˜๋Š” ์ ์–ด๋„ ์•Œ๋ ค์ง„ ๋ชฉ๋ก ๋ฒ”์œ„๋‚ด๋กœ ์ œํ•œ๋˜์–ด์•ผ ํ•œ๋‹ค.

์ œํ•œ๋œ ํ•„๋“œ

  • spec.containers[*].ports[*].hostPort
  • spec.initContainers[*].ports[*].hostPort
  • spec.ephemeralContainers[*].ports[*].hostPort

ํ—ˆ์šฉ๋œ ๊ฐ’

  • Undefined/nil
  • Known list
  • 0
AppArmor

์ง€์›๋˜๋Š” ํ˜ธ์ŠคํŠธ์—์„œ๋Š”, runtime/default AppArmor ํ”„๋กœํ•„์ด ๊ธฐ๋ณธ์œผ๋กœ ์ ์šฉ๋œ๋‹ค. ๊ธฐ๋ณธ ์ •์ฑ…์€ ๊ธฐ๋ณธ AppArmor ํ”„๋กœํ•„์ด ์˜ค๋ฒ„๋ผ์ด๋“œ ๋ฐ ๋น„ํ™œ์„ฑํ™”๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•˜๋ฉฐ, ๋˜๋Š” ํ—ˆ์šฉ๋œ ํ”„๋กœํ•„์— ํ•œํ•ด์„œ๋งŒ ์˜ค๋ฒ„๋ผ์ด๋“œ ๋˜๋„๋ก ์ œํ•œํ•ด์•ผ ํ•œ๋‹ค.

์ œํ•œ๋œ ํ•„๋“œ

  • metadata.annotations["container.apparmor.security.beta.kubernetes.io/*"]

ํ—ˆ์šฉ๋œ ๊ฐ’

  • Undefined/nil
  • runtime/default
  • localhost/*
SELinux

SELinux ํƒ€์ž…์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ์ œํ•œ๋˜๋ฉฐ, ๋งž์ถค SELinux ์‚ฌ์šฉ์ž ๋ฐ ์—ญํ•  ์˜ต์…˜์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ๊ธˆ์ง€๋˜์–ด ์žˆ๋‹ค.

์ œํ•œ๋œ ํ•„๋“œ

  • spec.securityContext.seLinuxOptions.type
  • spec.containers[*].securityContext.seLinuxOptions.type
  • spec.initContainers[*].securityContext.seLinuxOptions.type
  • spec.ephemeralContainers[*].securityContext.seLinuxOptions.type

ํ—ˆ์šฉ๋œ ๊ฐ’

  • Undefined/""
  • container_t
  • container_init_t
  • container_kvm_t

์ œํ•œ๋œ ํ•„๋“œ

  • spec.securityContext.seLinuxOptions.user
  • spec.containers[*].securityContext.seLinuxOptions.user
  • spec.initContainers[*].securityContext.seLinuxOptions.user
  • spec.ephemeralContainers[*].securityContext.seLinuxOptions.user
  • spec.securityContext.seLinuxOptions.role
  • spec.containers[*].securityContext.seLinuxOptions.role
  • spec.initContainers[*].securityContext.seLinuxOptions.role
  • spec.ephemeralContainers[*].securityContext.seLinuxOptions.role

ํ—ˆ์šฉ๋œ ๊ฐ’

  • Undefined/""
/proc ๋งˆ์šดํŠธ ํƒ€์ž…

๊ธฐ๋ณธ /proc ๋งˆ์Šคํฌ๋Š” ๊ณต๊ฒฉ ๊ฐ€๋Šฅ ์˜์—ญ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ •๋˜๊ณ  ํ•„์ˆ˜์ด๋‹ค.

์ œํ•œ๋œ ํ•„๋“œ

  • spec.containers[*].securityContext.procMount
  • spec.initContainers[*].securityContext.procMount
  • spec.ephemeralContainers[*].securityContext.procMount

ํ—ˆ์šฉ๋œ ๊ฐ’

  • Undefined/nil
  • Default
Seccomp

Seccomp ํ”„๋กœํ•„์€ Unconfined์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ์•ˆ๋œ๋‹ค.

์ œํ•œ๋œ ํ•„๋“œ

  • spec.securityContext.seccompProfile.type
  • spec.containers[*].securityContext.seccompProfile.type
  • spec.initContainers[*].securityContext.seccompProfile.type
  • spec.ephemeralContainers[*].securityContext.seccompProfile.type

ํ—ˆ์šฉ๋œ ๊ฐ’

  • Undefined/nil
  • RuntimeDefault
  • Localhost
Sysctls

Sysctls๋Š” ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋น„ํ™œ์„ฑํ™” ์‹œํ‚ค๊ฑฐ๋‚˜ ํ˜ธ์ŠคํŠธ์— ์œ„์น˜ํ•œ ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ—ˆ์šฉ๋œ "์•ˆ์ „ํ•œ" ์„œ๋ธŒ๋„ท์„ ์ œ์™ธํ•œ ๊ณณ์—์„œ๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ ๋˜๋Š” ํŒŒ๋“œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์†ํ•ด ์žˆ๊ฑฐ๋‚˜, ๊ฐ™์€ ๋…ธ๋“œ ๋‚ด์˜ ๋‹ค๋ฅธ ํŒŒ๋“œ ๋ฐ ํ”„๋กœ์„ธ์Šค์™€ ๊ฒฉ๋ฆฌ๋œ ์ƒํ™ฉ์—์„œ๋งŒ sysctl ์‚ฌ์šฉ์ด ์•ˆ์ „ํ•˜๋‹ค๊ณ  ๊ฐ„์ฃผํ•œ๋‹ค.

์ œํ•œ๋œ ํ•„๋“œ

  • spec.securityContext.sysctls[*].name

ํ—ˆ์šฉ๋œ ๊ฐ’

  • Undefined/nil
  • kernel.shm_rmid_forced
  • net.ipv4.ip_local_port_range
  • net.ipv4.ip_unprivileged_port_start
  • net.ipv4.tcp_syncookies
  • net.ipv4.ping_group_range

์ œํ•œ(Restricted)

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

์ œํ•œ ์ •์ฑ… ๋ช…์„ธ์„œ
์ œ์–ด์ •์ฑ…
๊ธฐ๋ณธ ํ”„๋กœํ•„์— ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋“  ์š”์†Œ
๋ณผ๋ฅจ ํƒ€์ž…

์ œํ•œ ์ •์ฑ…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณผ๋ฅจ ํƒ€์ž…๋งŒ ํ—ˆ์šฉํ•œ๋‹ค.

์ œํ•œ๋œ ํ•„๋“œ

  • spec.volumes[*]

ํ—ˆ์šฉ๋œ ๊ฐ’

spec.volumes[*] ๋ชฉ๋ก์— ์†ํ•œ ๋ชจ๋“  ์•„์ดํ…œ์€ ๋‹ค์Œ ํ•„๋“œ ์ค‘ ํ•˜๋‚˜๋ฅผ null์ด ์•„๋‹Œ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.
  • spec.volumes[*].configMap
  • spec.volumes[*].csi
  • spec.volumes[*].downwardAPI
  • spec.volumes[*].emptyDir
  • spec.volumes[*].ephemeral
  • spec.volumes[*].persistentVolumeClaim
  • spec.volumes[*].projected
  • spec.volumes[*].secret
๊ถŒํ•œ ์ƒ์Šน(v1.8+)

๊ถŒํ•œ ์ƒ์Šน(์˜ˆ๋ฅผ ๋“ค์–ด, set-user-ID ๋˜๋Š” set-group-ID ํŒŒ์ผ ๋ชจ๋“œ๋ฅผ ํ†ตํ•œ)์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. v1.25+์—์„œ๋Š” ๋ฆฌ๋ˆ…์Šค ์ „์šฉ ์ •์ฑ…์ด๋‹ค.(spec.os.name != windows)

์ œํ•œ๋œ ํ•„๋“œ

  • spec.containers[*].securityContext.allowPrivilegeEscalation
  • spec.initContainers[*].securityContext.allowPrivilegeEscalation
  • spec.ephemeralContainers[*].securityContext.allowPrivilegeEscalation

ํ—ˆ์šฉ๋œ ๊ฐ’

  • false
๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰

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

์ œํ•œ๋œ ํ•„๋“œ

  • spec.securityContext.runAsNonRoot
  • spec.containers[*].securityContext.runAsNonRoot
  • spec.initContainers[*].securityContext.runAsNonRoot
  • spec.ephemeralContainers[*].securityContext.runAsNonRoot

ํ—ˆ์šฉ๋œ ๊ฐ’

  • true
pod-level์—์„œ spec.securityContext.runAsNonRoot๊ฐ€ true๋กœ ์„ค์ •๋˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ํ•„๋“œ๋Š” undefined/nil๋กœ ์„ค์ •๋  ์ˆ˜ ์žˆ๋‹ค.
๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ ์‚ฌ์šฉ์ž๋กœ ์‹คํ–‰(v1.23+)

์ปจํ…Œ์ด๋„ˆ์—์„œ๋Š” runAsUser ๊ฐ’์„ 0์œผ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.

์ œํ•œ๋œ ํ•„๋“œ

  • spec.securityContext.runAsUser
  • spec.containers[*].securityContext.runAsUser
  • spec.initContainers[*].securityContext.runAsUser
  • spec.ephemeralContainers[*].securityContext.runAsUser

ํ—ˆ์šฉ๋œ ๊ฐ’

  • any non-zero value
  • undefined/null
Seccomp(v1.19+)

Seccomp ํ”„๋กœํ•„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ’์œผ๋กœ ์„ค์ •๋˜์–ด์•ผ ํ•œ๋‹ค.Unconfined ํ”„๋กœํ•„ ๋ฐ ํ”„๋กœํ•„์˜ absence๋Š” ๊ธˆ์ง€๋˜์–ด ์žˆ๋‹ค. v1.25+์—์„œ๋Š” ๋ฆฌ๋ˆ…์Šค ์ „์šฉ ์ •์ฑ…์ด๋‹ค.(spec.os.name != windows)

์ œํ•œ๋œ ํ•„๋“œ

  • spec.securityContext.seccompProfile.type
  • spec.containers[*].securityContext.seccompProfile.type
  • spec.initContainers[*].securityContext.seccompProfile.type
  • spec.ephemeralContainers[*].securityContext.seccompProfile.type

ํ—ˆ์šฉ๋œ ๊ฐ’

  • RuntimeDefault
  • Localhost
pod-level์˜ spec.securityContext.seccompProfile.type ํ•„๋“œ๊ฐ€ ์ ์ ˆํ•˜๊ฒŒ ์„ค์ •๋˜๋ฉด, ์ปจํ…Œ์ด๋„ˆ ํ•„๋“œ๋Š” undefined/nil๋กœ ์„ค์ •๋  ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋“  ์ปจํ…Œ์ด๋„ˆ ๋ ˆ๋ฒจ ํ•„๋“œ๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋‹ค๋ฉด, pod-level ํ•„๋“œ๋Š” undefined/nil๋กœ ์„ค์ •๋  ์ˆ˜ ์žˆ๋‹ค.
๋Šฅ๋ ฅ(Capabilities) (v1.22+)

์ปจํ…Œ์ด๋„ˆ๋Š” ALL ๋Šฅ๋ ฅ์„ ๋‚ด๋ ค๋†“์•„์•ผ ํ•˜๋ฉฐ, NET_BIND_SERVICE ๋Šฅ๋ ฅ์„ ๋‹ค์‹œ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์ผ ๋•Œ๋งŒ ํ—ˆ์šฉ๋˜์–ด์•ผ ํ•œ๋‹ค. v1.25+์—์„œ๋Š” ๋ฆฌ๋ˆ…์Šค ์ „์šฉ ์ •์ฑ…์ด๋‹ค.(spec.os.name != windows)

์ œํ•œ๋œ ํ•„๋“œ

  • spec.containers[*].securityContext.capabilities.drop
  • spec.initContainers[*].securityContext.capabilities.drop
  • spec.ephemeralContainers[*].securityContext.capabilities.drop

ํ—ˆ์šฉ๋œ ๊ฐ’

  • ALL์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๋Šฅ๋ ฅ ๋ฆฌ์ŠคํŠธ

์ œํ•œ๋œ ํ•„๋“œ

  • spec.containers[*].securityContext.capabilities.add
  • spec.initContainers[*].securityContext.capabilities.add
  • spec.ephemeralContainers[*].securityContext.capabilities.add

ํ—ˆ์šฉ๋œ ๊ฐ’

  • Undefined/nil
  • NET_BIND_SERVICE

์ •์ฑ… ์ดˆ๊ธฐํ™”

์ •์ฑ… ์ดˆ๊ธฐํ™”์—์„œ์˜ ๋””์ปคํ”Œ๋ง(Decoupling) ์ •์ฑ… ์ •์˜๋Š”, ๋‚ด์žฌ๋˜์–ด ์žˆ๋Š” ์‹œํ–‰ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ๋ณ„๊ฐœ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ์‚ฌ์ด์˜ ๊ณตํ†ต๋œ ์ดํ•ด์™€ ์ผ๊ด€๋œ ์ •์ฑ… ์–ธ์–ด ์‚ฌ์šฉ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ๋” ํ•œ๋‹ค.

๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๋ฐœ๋‹ฌํ•จ์— ๋”ฐ๋ผ, ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์ฑ…๋ณ„๋กœ ์ •์˜๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. ๊ฐœ๋ณ„ ์ •์ฑ…์— ๋Œ€ํ•œ ์‹œํ–‰ ๋ฐฉ์‹์€ ์—ฌ๊ธฐ์„œ ์ •์˜ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋Š”๋‹ค.

ํŒŒ๋“œ ์‹œํ๋ฆฌํ‹ฐ ์–ด๋“œ๋ฏธ์…˜ ์ปจํŠธ๋กค๋Ÿฌ

๋Œ€์•ˆ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ™˜๊ฒฝ์—์„œ ์ •์ฑ…์„ ์‹œํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋Œ€์•ˆ์ด ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์œผ๋ฉฐ ๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ์ด๋‹ค.

ํŒŒ๋“œ OS ํ•„๋“œ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ๋Š” ๋ฆฌ๋ˆ…์Šค ๋˜๋Š” ์œˆ๋„์šฐ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ์— ๋‘ ์ข…๋ฅ˜์˜ ๋…ธ๋“œ๋ฅผ ํ˜ผํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์œˆ๋„์šฐ ํ™˜๊ฒฝ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜ ์›Œํฌ๋กœ๋“œ์™€ ๋น„๊ตํ•˜์˜€์„ ๋•Œ ๋ช‡ ๊ฐ€์ง€ ์ œํ•œ์‚ฌํ•ญ ๋ฐ ์ฐจ๋ณ„์ ์ด ์žˆ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ ๋งํ•˜์ž๋ฉด, ๋Œ€๋ถ€๋ถ„์˜ ํŒŒ๋“œ securityContext ํ•„๋“œ๋Š” ์œˆ๋„์šฐ ํ™˜๊ฒฝ์—์„œ ํšจ๊ณผ๊ฐ€ ์—†๋‹ค.

์ œํ•œ ํŒŒ๋“œ์˜ ์‹œํ๋ฆฌํ‹ฐ ์Šคํƒ ๋‹ค๋“œ ๋ณ€ํ™”

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค v1.25์—์„œ ๋‚˜ํƒ€๋‚œ ๋˜ ๋‹ค๋ฅธ ์ค‘์š” ๋ณ€ํ™”๋Š”, ์ œํ•œ ํŒŒ๋“œ ์‹œํ๋ฆฌํ‹ฐ๊ฐ€ pod.spec.os.name ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์—…๋ฐ์ดํŠธ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํŠน์ • OS์— ํŠนํ™”๋œ ์ผ๋ถ€ ์ •์ฑ…์€ OS ์ด๋ฆ„์— ๊ทผ๊ฑฐํ•˜์—ฌ ๋‹ค๋ฅธ OS์— ๋Œ€ํ•ด์„œ๋Š” ์™„ํ™”๋  ์ˆ˜ ์žˆ๋‹ค

ํŠน์ • OS ์ •์ฑ… ์ œ์–ด

spec.os.name์˜ ๊ฐ’์ด windows๊ฐ€ ์•„๋‹ ์‹œ์—๋งŒ ๋‹ค์Œ ์ œ์–ด ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ œํ•œ ์‚ฌํ•ญ์ด ์š”๊ตฌ๋œ๋‹ค.

  • ๊ถŒํ•œ ์ƒ์Šน
  • Seccomp
  • Linux ๊ธฐ๋Šฅ

FAQ

์™œ ํŠน๊ถŒ ํ”„๋กœํ•„๊ณผ ๊ธฐ๋ณธ ํ”„๋กœํ•„ ์‚ฌ์ด์˜ ํ”„๋กœํ•„์€ ์—†๋Š” ๊ฒƒ์ธ๊ฐ€?

์—ฌ๊ธฐ์„œ ์ •์˜๋œ ์„ธ ๊ฐ€์ง€ ํ”„๋กœํ•„์€ ๊ฐ€์žฅ ๋†’์€ ๋ณด์•ˆ์—์„œ(์ œํ•œ ํ”„๋กœํ•„) ๊ฐ€์žฅ ๋‚ฎ์€ ๋ณด์•ˆ๊นŒ์ง€(ํŠน๊ถŒ ํ”„๋กœํ•„) ๋ช…๋ฐฑํ•œ ์„ ํ˜• ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋ฉฐ ๋„“์€ ๋ฒ”์œ„์˜ ์›Œํฌ๋กœ๋“œ๋ฅผ ๋‹ค๋ฃฌ๋‹ค. ๊ธฐ๋ณธ ์ •์ฑ…์„ ๋„˜๋Š” ์š”์ฒญ ๊ถŒํ•œ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์šฉ์— ์†ํ•˜๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ํ‹ˆ์ƒˆ์‹œ์žฅ์— ๋Œ€ํ•ด์„œ๋Š” ํ‘œ์ค€ ํ”„๋กœํ•„์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ํ•ญ์ƒ ํŠน๊ถŒ ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ฃผ์žฅ์€ ์•„๋‹ˆ์ง€๋งŒ, ํ•ด๋‹น ์˜์—ญ์˜ ์ •์ฑ…์€ ์ผ€์ด์Šค ๋ณ„๋กœ ์ •์˜๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ด์™ธ ํ”„๋กœํ•„์ด ๋ถ„๋ช…ํžˆ ํ•„์š”ํ•˜๋‹ค๋ฉด SIG Auth๋Š” ํ–ฅํ›„์— ์ด๋Ÿฌํ•œ ์ž…์žฅ์„ ์žฌ๊ณ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์‹œํ๋ฆฌํ‹ฐ ์ปจํ…์ŠคํŠธ์™€ ์‹œํ๋ฆฌํ‹ฐ ํ”„๋กœํ•„์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€?

์‹œํ๋ฆฌํ‹ฐ ์ปจํ…์ŠคํŠธ๋Š” ํŒŒ๋“œ ๋ฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋Ÿฐํƒ€์ž„์— ์„ค์ •ํ•œ๋‹ค. ์‹œํ๋ฆฌํ‹ฐ ์ปจํ…์ŠคํŠธ๋Š” ํŒŒ๋“œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ๋‚ด ํŒŒ๋“œ ๋ฐ ์ปจํ…Œ์ด๋„ˆ ๋ช…์„ธ์˜ ์ผ๋ถ€๋กœ ์ •์˜๋˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„์— ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ œ๊ณตํ•œ๋‹ค.

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

์ƒŒ๋“œ๋ฐ•์Šค ํŒŒ๋“œ๋Š” ์–ด๋– ํ•œ๊ฐ€?

ํ˜„์žฌ๋กœ์„œ๋Š”, ํŒŒ๋“œ๊ฐ€ ์ƒŒ๋“œ๋ฐ•์Šค ํŠน์„ฑ์„ ๊ฐ€์ง€๋Š”์ง€ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” API ํ‘œ์ค€์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ƒŒ๋“œ๋ฐ•์Šค ํŒŒ๋“œ๋Š” ์ƒŒ๋“œ๋ฐ•์Šค ๋Ÿฐํƒ€์ž„(์˜ˆ๋ฅผ ๋“ค๋ฉด, gVisor ํ˜น์€ Kata ์ปจํ…Œ์ด๋„ˆ)์„ ํ†ตํ•ด ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ƒŒ๋“œ๋ฐ•์Šค ๋Ÿฐํƒ€์ž„์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ํ‘œ์ค€ ์ •์˜๋Š” ์—†๋Š” ์ƒํƒœ์ด๋‹ค.

์ƒŒ๋“œ๋ฐ•์Šค ์›Œํฌ๋กœ๋“œ๊ฐ€ ํ•„์š”๋กœํ•˜๋Š” ๋ณดํ˜ธ๋ฌผ์€ ๋‹ค๋ฅธ ์›Œํฌ๋กœ๋“œ์™€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‚ด์žฌ๋œ ์ปค๋„๊ณผ ๋ถ„๋ฆฌ๋œ ์›Œํฌ๋กœ๋“œ์—์„œ๋Š” ์ œํ•œ๋œ ํŠน์ˆ˜ ๊ถŒํ•œ์˜ ํ•„์š”์„ฑ์ด ์ ์–ด์ง„๋‹ค. ์ด๋Š” ๋†’์•„์ง„ ๊ถŒํ•œ์„ ์š”๊ตฌํ•˜๋Š” ์›Œํฌ๋กœ๋“œ๊ฐ€ ๋ถ„๋ฆฌ๋  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•œ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ, ์ƒŒ๋“œ๋ฐ•์Šค ๋ฐฉ์‹์— ๋”ฐ๋ผ ์ƒŒ๋“œ๋ฐ•์Šค ์›Œํฌ๋กœ๋“œ์— ๋Œ€ํ•œ ๋ณดํ˜ธ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š”, ํ•˜๋‚˜์˜ ํ”„๋กœํ•„๋งŒ์„ ๋ชจ๋“  ์ƒŒ๋“œ๋ฐ•์Šค ์›Œํฌ๋กœ๋“œ์— ๋Œ€ํ•ด ๊ถŒ์žฅํ•  ์ˆ˜ ์—†๋‹ค.

์ด ํŽ˜์ด์ง€๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์จ๋“œํŒŒํ‹ฐ ํ”„๋กœ์ ํŠธ ๋˜๋Š” ์ œํ’ˆ์— ๋Œ€ํ•ด ์–ธ๊ธ‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ”„๋กœ์ ํŠธ ์ €์ž๋“ค์€ ์ด๋Ÿฌํ•œ ์จ๋“œํŒŒํ‹ฐ ํ”„๋กœ์ ํŠธ ๋˜๋Š” ์ œํ’ˆ์— ๋Œ€ํ•ด ์ฑ…์ž„์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. CNCF ์›น์‚ฌ์ดํŠธ ๊ฐ€์ด๋“œ๋ผ์ธ์—์„œ ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์จ๋“œํŒŒํ‹ฐ ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ณ€๊ฒฝ์„ ์ œ์•ˆํ•˜๊ธฐ ์ „์—, ์ปจํ…์ธ  ๊ฐ€์ด๋“œ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ตœ์ข… ์ˆ˜์ • June 07, 2023 at 5:58 PM PST: [ko] Update links in dev-1.26-ko.1 (00461e0912)