ื ืืืืฅ. ืืจืึทื ืกื.: ืืืจ ืคืึธืจืฉืืขืื ืฆื ืืืื ืืคืืขืจืงืืึทืืงืืื ืื ืืืืขืจืืขืฆืื ื ืคืื ืึทื ืึทืจืืืงื ืคืื ืึท ืขืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื ืืืืขืจืืืื ืื ืืฉืขื ืืจ ืืื ืื ืืจืืืืฉ ืคืืจืืข ASOS.com. ืืื ืืื, ืขืจ ืืืืื ืึท ืกืขืจืืข ืคืื โโืืืืกืืืืขืก ืืขืืึทืงืืืืึทื ืฆื ืคึฟืึทืจืืขืกืขืจื ืืืืขืจืืืื ืืื ืงืืืขืจื ืขืืขืก ืืืจื ืื ื ืืฆื ืคืื ืกืขืงืึธืืคึผ. ืืืื ืืืืขื ืขืจ ืืื ืื ืืงืืื, ืืืจ ืืืขืื ื ืึธืืคืึธืืื ืืขื ืืืืจ ืืื ืคืึธืจืืขืฆื ืืื ืืืื ืฆืืงืื ืคึฟื ืืึทืืขืจืืึทืืก ืืืืฃ ืืขื ืืขืืข.
ืืขืจ ืึทืจืืืงื ืืื ืืขืจ ืขืจืฉืืขืจ ืืื ืึท ืกืขืจืืข ืคืื โโโโืืืืขืืช ืืืขืื ืืื ืฆื ืฉืึทืคึฟื ืกืขืงืงืึธืืคึผ ืคึผืจืึธืืคืืืื ืืื ืื ืืืืกื ืคืื SecDevOps, ืึธื ืจืืืึธืจื ืฆื ืืึทืืืฉ ืืื ืืืืืฉืงืจืึทืคื. ืืื ืืืื XNUMX, ืืื ืืืขื ืืขืงื ืื ืืึทืกืืงืก ืืื ืื ืขืจืืขื ืืขืืึทืืืก ืคืื ืืืคึผืืึทืืขื ืื ื ืกืขืงืึธืืคึผ ืืื Kubernetes.
ืื Kubernetes ืืงืึธืืกืืกืืึทื ืึธืคืคืขืจืก ืึท ืืจืืื ืคืึทืจืฉืืืื ืงืืึทื ืคืื ืืืขืื ืฆื ืืึทืืืึธืจืขื ืขื ืืื ืืืึธืืืจื ืงืึทื ืืืื ืขืจื. ืืขืจ ืึทืจืืืงื ืืื ืืืขืื ืืืืขืจ ืงืึทืืคึผืืืืื ื ืืึธืืข, ืืืื ืืืงืื ื ืืื ืกืขืงืงืึธืืคึผ. ืืืึทื ืขืกืึทื ืก ืืื ืฆื ืคืืืืขืจ ืื ืกืืกืืขื ืจืืคื ืื ืืืฆื ืคึฟืึทืจ ืืืจืืคืืจืื ื ืืืจื ืงืึทื ืืืื ืขืจื.
ืคืืจืืืืก ืืื ืขืก ืืืืืืืง? ื ืงืึทื ืืืื ืขืจ ืืื ื ืึธืจ ืึท ืคึผืจืึธืฆืขืก ืคืืืกื ืืืง ืืืืฃ ืึท ืกืคึผืขืฆืืคืืฉ ืืึทืฉืื. ืืื ืขืก ื ืืฆื ืื ืงืขืจื ืคึผืื ืงื ืืื ืื ืืขืจืข ืึทืคึผืืึทืงืืืฉืึทื ื. ืืืื ืงืึทื ืืืื ืขืจื ืงืขื ืืืจืืคืืจื ืงืืื ืกืืกืืขื ืงืึทืืืก, ืืืืขืจ ืืึทืื ืืึทืืืืึทืจืข ืืืึธืื ื ืืฆื ืืขื ืฆื ืืืืคึผืึทืก ืงืึทื ืืืื ืขืจ ืืคืืขืืื ืืขืจืืงืืื ืืื ืืืืจืงื ืื ืืขืจืข ืึทืคึผืืึทืงืืืฉืึทื ื: ืื ืืขืจืกืขืคึผื ืืื ืคึฟืึธืจืืึทืฆืืข, ืืืืฉื ืกืืกืืขื ืกืขืืืื ืืก, ืขืืง.
seccomp ืคึผืจืึธืืคืืืื ืืขืคืื ืืจื ืืืึธืก ืกืืกืืขื ืจืืคื ืืึธื ืืืื ืขืจืืืืื ืึธืืขืจ ืคืึทืจืงืจืืคึผืื. ืืขืจ ืงืึทื ืืืื ืขืจ ืจืื ืืืืข ืึทืงืืึทืืืืืฅ ืืื ืืืขื ืขืก ืกืืึทืจืฅ ืึทืืื ืึทื ืืขืจ ืงืขืจื ืงืขื ืขื ืืึธื ืืืึธืจ ืืืืขืจ ืืืจืืคืืจืื ื. ื ืืฆื ืึทืืึท ืคึผืจืึธืืคืืืื ืึทืืึทืื ืืืจ ืฆื ืืึทืืจืขื ืขืฆื ืื ืืึทืคืึทืื ืืืขืงืืึธืจ ืืื ืจืขืืืฆืืจื ืฉืขืืืงื ืืืื ืงืืื ืคึผืจืึธืืจืึทื ืืื ืืขื ืงืึทื ืืืื ืขืจ (ื"ื, ืืืื ืืืคึผืขื ืืึทื ืกืื ืึธืืขืจ ืืืืขืจ ืืืคึผืขื ืืึทื ืกืื) ืกืืึทืจืฅ ืฆื ืืึธื ืขืคึผืขืก ืืืึธืก ืขืก ืืื ื ืืฉื ืขืจืืืืื ืฆื ืืึธื.
ืืึทืงืืืขื ืฆื ืื ืืึทืกืืงืก
ืื ืืจืื ื ืกืขืงืงืึธืืคึผ ืคึผืจืึธืคืื ืืืื ืืจืืึท ืืกืืืืช: defaultAction
, architectures
(ืึธืืขืจ archMap
) ืืื syscalls
:
{
"defaultAction": "SCMP_ACT_ERRNO",
"architectures": [
"SCMP_ARCH_X86_64",
"SCMP_ARCH_X86",
"SCMP_ARCH_X32"
],
"syscalls": [
{
"names": [
"arch_prctl",
"sched_yield",
"futex",
"write",
"mmap",
"exit_group",
"madvise",
"rt_sigprocmask",
"getpid",
"gettid",
"tgkill",
"rt_sigaction",
"read",
"getpgrp"
],
"action": "SCMP_ACT_ALLOW"
}
]
}
defaultAction
ืืืืขืจืืึทื ื ืื ืคืขืืืงืืึทื ืืืจื ืคืื ืงืืื ืกืืกืืขื ืจืืคื ื ืื ืกืคึผืขืกืืคืืขื ืืื ืื ืึธืคึผืืืืืื ื syscalls
. ืฆื ืืึทืื ืื ืืื ืื ืืจืื ืืขืจ, ืืึธืืืจ ืคืึธืงืืก ืืืืฃ ืื ืฆืืืื ืืืืคึผื ืืืึทืืืขืก ืืืึธืก ืืืขื ืืืื ืืขืืืืื ื:
-
SCMP_ACT_ERRNO
- ืืืึทืงืก ืื ืืืจืืคืืจืื ื ืคืื ืึท ืกืืกืืขื ืจืืคื, -
SCMP_ACT_ALLOW
- ืึทืืึทืื.
ืืื ืึธืคึผืืืืืื ื architectures
ืฆืื ืึทืจืงืึทืืขืงืืฉืขืจื ืืขื ืขื ืืืกืืขื. ืืึธืก ืืื ืืืืืืืง ืืืืึทื ืื ืคืืืืขืจ ืืื, ืืขืืืขื ืื ืืื ืื ืงืขืจื ืืืจืื, ืืขืคึผืขื ืืก ืืืืฃ ืกืืกืืขื ืจืืคื ืืืขื ืืืคืืขืจืก, ืืื ื ืืฉื ืืืืฃ ืืืืขืจ ื ืขืืขื ืกืคึผืขืกืืคืืขื ืืื ืืขื ืคึผืจืึธืคืื. ืืขืจ ืงืึทื ืืืื ืขืจ ืจืื ืืืืข ืืืขื ืืืืึทืื ืืื ืฆื ืืืขื ืืืคืืขืจืก ืืืืืขืจ ื ืืฆื. ืืขืจ ืืขืืึทื ืง ืืื ืึทื ืกืืกืืขื ืงืึทืืืก ืงืขื ืขื ืืึธืื ืืึธืจ ืคืึทืจืฉืืืขื ืข IDs ืืืคึผืขื ืืื ื ืืืืฃ ืื ืกืืกืืขื ืึทืจืงืึทืืขืงืืฉืขืจ. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืกืืกืืขื ืจืืคื recvfrom
(ืืขืืืืื ื ืฆื ืืึทืงืืืขื ืืื ืคึฟืึธืจืืึทืฆืืข ืคืื โโืื ืืึธืืขื) ืืื ID = 64 ืืืืฃ X64 ืกืืกืืขืืขื ืืื ID = 517 ืืืืฃ X86.
ืืื ืืขืจ ืึธืคึผืืืืืื ื syscalls
ืจืฉืืืืช ืึทืืข ืกืืกืืขื ืจืืคื ืืื ืกืคึผืขืฆืืคืืฆืืจื ืืืึธืก ืฆื ืืึธื ืืื ืืื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืจ ืงืขื ืขื ืืึทืื ืึท ืืืืืืืืกื ืืืจื ืืึทืฉืืขืืืงื defaultAction
ืืืืฃ SCMP_ACT_ERRNO
, ืืื ืจืืคื ืืื ืื ืึธืคึผืืืืืื ื syscalls
ืืึทืฉืืืืขื SCMP_ACT_ALLOW
. ืืืื, ืืืจ ื ืึธืจ ืืึธืื ืงืึทืืืก ืกืคึผืขืกืึทืคืืื ืืื ืื ืึธืคึผืืืืืื ื syscalls
, ืืื ืคืึทืจืืืขืจื ืึทืืข ืื ืืขืจืข. ืคึฟืึทืจ ืื ืืืึทืงืืืกื ืืืจ ืืึธื ืืืืฉื ืื ืืืึทืืืขืก defaultAction
ืืื ืึทืงืฉืึทื ื ืฆื ืื ืคืึทืจืงืขืจื.
ืืืฆื ืืืจ ืืึธื ืืึธืื ืึท ืืืกื ืืืขืจืืขืจ ืืืขืื ื ืืึทื ืกืื ืืืึธืก ืืขื ืขื ื ืืฉื ืึทืืื ืงืืึธืจ ืืื ืืขืจ ืืึธื. ืืืืข ืืึธื ืึทื ืื ืจืขืงืึทืืึทื ืืืืฉืึทื ื ืืื ืื ืืืขืจื ืขืืขื ืึทื ืืืจ ืืขื ืขื ืืืคึผืืืื ืึท ืฉืืจื ืคืื ืืขืฉืขืคื ืึทืคึผืืึทืงืืืฉืึทื ื ืืืืฃ Kubernetes ืืื ืืืจ ืืืืื ืืื ืฆื ืืืืคื ืืื ืื ืืื ืืกืืขืจ ืกืืืข ืคืื โโืคึผืจืืืืืืึทืืืฉืึทื ืืขืืืขื.
1. AllowPrivilegeEscalation=ืคืึทืืฉ
ะ securityContext
ืงืึทื ืืืื ืขืจ ืืื ืึท ืคึผืึทืจืึทืืขืืขืจ AllowPrivilegeEscalation
. ืืืื ืขืก ืืื ืืื ืกืืึทืืืจื ืืื false
, ืงืึทื ืืืื ืขืจื ืืืขื ืึธื ืืืืื ืืื (on
) ืืืกื no_new_priv
ื ืืืึทื ืืืืจืงืื ื ืคืื ืืขื ืึธืคึผืฆืืข ืืื ืืึทืฉืืืื ืฆื true
(ืคืขืืืงืืึทื) ืืื ืึทื ืืขืจ ืงืึทื ืืืื ืขืจ ืจืื ืืืืข ืึทืคึผืืืื ืื ืกืขืงืึธืืคึผ ืคึผืจืึธืคืื ืืื ืื ืึธื ืืืื ืคืื ืื ืกืืึทืจืืึทืคึผ ืคึผืจืึธืฆืขืก. ืืืื, ืึทืืข ืกืืกืืขื ืจืืคื ืคืืจืืื ืื ืฆื ืืืืคื ืื ืขืจืืขื ืจืื ืืืืข ืคึผืจืึทืกืขืกืึทื (ืืืฉื ืืึทืฉืืขืืืงื ืืึทื ืืฆืขืจ / ืืจืืคึผืข ืืืก, ืืจืึทืคึผืื ื ืืืืขืจ ืงืืืคึผืึทืืืืึทืืื) ืืืื ืืืื ืขื ืืืืึทืื ืืื ืืขื ืคึผืจืึธืคืื.
ืฆื ืึท ืงืึทื ืืืื ืขืจ ืืืึธืก ืืื ื ืืฉืืืง ืืืื echo hi
, ืื ืคืืืืขื ืืข ืคึผืขืจืืืฉืึทื ื ืืืขื ืืืื ืคืืจืืื ืื:
{
"defaultAction": "SCMP_ACT_ERRNO",
"architectures": [
"SCMP_ARCH_X86_64",
"SCMP_ARCH_X86",
"SCMP_ARCH_X32"
],
"syscalls": [
{
"names": [
"arch_prctl",
"brk",
"capget",
"capset",
"chdir",
"close",
"execve",
"exit_group",
"fstat",
"fstatfs",
"futex",
"getdents64",
"getppid",
"lstat",
"mprotect",
"nanosleep",
"newfstatat",
"openat",
"prctl",
"read",
"rt_sigaction",
"statfs",
"setgid",
"setgroups",
"setuid",
"stat",
"uname",
"write"
],
"action": "SCMP_ACT_ALLOW"
}
]
}
... ืึทื ืฉืืึธื ืคืื ืื:
{
"defaultAction": "SCMP_ACT_ERRNO",
"architectures": [
"SCMP_ARCH_X86_64",
"SCMP_ARCH_X86",
"SCMP_ARCH_X32"
],
"syscalls": [
{
"names": [
"arch_prctl",
"brk",
"close",
"execve",
"exit_group",
"futex",
"mprotect",
"nanosleep",
"stat",
"write"
],
"action": "SCMP_ACT_ALLOW"
}
]
}
ืืืขืจ ืืืืืขืจ, ืืืึธืก ืืื ืืึธืก ืึท ืคึผืจืึธืืืขื? ืคึผืขืจืกื ืึทืื, ืืื ืืืึธืื ืืืกืืืืื ืืืืืืืืกืืื ื ืื ืคืืืืขื ืืข ืกืืกืืขื ืจืืคื (ืกืืึทืื ืขืก ืืื ืึท ืคืึทืงืืืฉ ื ืืื ืคึฟืึทืจ ืืื): capset
, set_tid_address
, setgid
, setgroups
ะธ setuid
. ืึธืืขืจ, ืื ืคืึทืงืืืฉ ืึทืจืืืกืจืืคื ืืื ืึทื ืืืจื ืึทืืึทืืื ื ืคึผืจืึทืกืขืกืึทื ืืืึธืก ืืืจ ืืึธื ืืขืืึทืืจืข ืงืืื ืงืึธื ืืจืึธื ืืืืขืจ, ืืืจ ืืื ืื ืคึผืจืึธืืคืืืื ืฆื ืื ืืืคึผืืึทืืขื ืืืืฉืึทื ืคืื ืื ืงืึทื ืืืื ืขืจ ืจืื ืืืืข. ืืื ืื ืืขืจืข ืืืขืจืืขืจ, ืืืื ืืึธื ืืืจ ืงืขื ืืขืคึฟืื ืขื ืึทื ื ืึธื ืึทืคึผืืืืืื ื ืื ืงืึทื ืืืื ืขืจ ืจืื ืืืืข ืกืืืืืืข (ืึธืืขืจ ืืืจื ืืืจ ืึธืืขืจ, ืืขืจ ืืกืชึผืื, ืืืจื ืื ืืืึธืืงื ืกืขืจืืืืก ืฉืคึผืืึทืืขืจ), ืื ืงืึทื ืืืื ืขืจื ืคึผืืืฆืืื ื ืืึทืืื ืคืืืกื ืืืง.
ืืืคึผ 1: ืืืืคื ืงืึทื ืืืื ืขืจื ืืื AllowPrivilegeEscaltion=false
. ืืึธืก ืืืขื ืจืขืืืฆืืจื ืื ืืจืืืก ืคืื ืกืขืงืงืึธืืคึผ ืคึผืจืึธืืคืืืื ืืื ืืึทืื ืืื ืืืืื ืืงืขืจ ืฉืคึผืืจืขืืืืืง ืฆื ืขื ืืขืจืื ืืขื ืืื ืื ืงืึทื ืืืื ืขืจ ืจืื ืืืืข ืกืืืืืืข.
2. ืืึทืฉืืขืืืงื ืกืขืงืึธืืคึผ ืคึผืจืึธืืคืืืื ืืืึท ืื ืงืึทื ืืืื ืขืจ ืืืจืื
ืื ืกืขืงืงืึธืืคึผ ืคึผืจืึธืคืื ืงืขื ืขื ืืืื ืฉืืขืื ืืืืฃ ืื ืคึผืึธื ืืืจืื:
annotations:
seccomp.security.alpha.kubernetes.io/pod: "localhost/profile.json"
... ืึธืืขืจ ืืื ืื ืงืึทื ืืืื ืขืจ ืืืจืื:
annotations:
container.security.alpha.kubernetes.io/<container-name>: "localhost/profile.json"
ืืืืข ืืึธื ืึทื ืื ืืืืื ืกืื ืืึทืงืก ืืืขื ืืืืฉื ืืืขื Kubernetes secomp
ืืืืื ืืง ืืขื ืืฉื ืืืืกื ืึทื ืงืืืขืจื ืขืืขืก ืืื ืฉืืขื ืืืง ืืขืืื
ืื ืคึผืจืึธืืืขื ืืื ืึทื ืืขื ืงืึทื ืืืื ืขืจ ืฉืืขื ืืืง ืกืืึทืจืฅ ืืื AllowPrivilegeEscalation=true
, ืืืึธืก ืคืืจื ืฆื ืื ืคืจืืืืขืืขื ืืืึธืก ืืขื ืขื ืืขืืืขื ืืื ืคึผืึทืจืึทืืจืึทืฃ 1, ืืื ืืึธืก ืงืขื ื ืืฉื ืืืื ืืขืืืื.
ืืืจื ื ืืฆื ืกืขืงืึธืืคึผ ืคึผืจืึธืืคืืืื ืืืืฃ ืื ืงืึทื ืืืื ืขืจ ืืืจืื, ืืืจ ืืืกืืืืื ืืขื ืืจืื ืืื ืงืขื ืขื ืืึทืื ืึท ืคึผืจืึธืคืื ืืืึธืก ืืื ืืืืืขืจื ืฆื ืึท ืกืคึผืขืฆืืคืืฉ ืงืึทื ืืืื ืขืจ. ืืึธืก ืืืขื ืืืื ืืขืืื ืืื ืื ืืขืืืขืืึธืคึผืขืจืก ืคืึทืจืจืืืื ืืขื ืืฉืืง ืืื ืื ื ืืึทืข ืืืขืจืกืืข (ืืคึฟืฉืจ 1.18?) ืืืขื ืืืื ืืืจืขืืืืื ืคึฟืึทืจ ืึทืืขืืขื.
ืืืคึผ 2: ืฉืืขืื ืกืขืงืึธืืคึผ ืคึผืจืึธืืคืืืื ืืืืฃ ืื ืงืึทื ืืืื ืขืจ ืืืจืื.
ืืื ืึท ืคึผืจืึทืงืืืฉ ืืื ืขื, ืื ืืขืจืฉื ืืืืฉืึทืืืึทืื ืกืขืจืืืขืก ืืื ืึท ืื ืืืืขืจืกืึทื ืขื ืืคืขืจ ืฆื ืื ืงืฉืื: "ืคืืจืืืืก ืืื ืืืื ืกืขืงืึธืืคึผ ืคึผืจืึธืคืื ืึทืจืืขื ืืื docker run
ืึธืืขืจ ืืื ื ืืฉื ืึทืจืืขืื ื ืึธื ืืืคึผืืืืื ื ืฆื ืึท Kubernetes ืงื ืืื?
3. ื ืืฆื ืจืื ืืืืข / ืคืขืืืงืืึทื ืืืืื ืืื ืึท ืืขืฆืืข ืจืืืึธืจื
Kubernetes ืืื ืฆืืืื ืึธืคึผืฆืืขืก ืคึฟืึทืจ ืืขืืืื-ืืื ืคึผืจืึธืืคืืืื: runtime/default
ะธ docker/default
. ืืืืืข ืืขื ืขื ืืืคึผืืึทืืขื ืึทื ืืืจื ืื ืงืึทื ืืืื ืขืจ ืจืื ืืืืข, ื ืืฉื Kubernetes. ืืขืจืืืขืจ, ืืื ืงืขื ืืืื ืึทื ืืขืจืฉ ืืืคึผืขื ืืื ื ืืืืฃ ืื ืจืื ืืืืข ืกืืืืืืข ืืื ืืืึทื ืืืขืจืกืืข.
ืืื ืื ืืขืจืข ืืืขืจืืขืจ, ืืื ืึท ืจืขืืืืืึทื ืคืื ืืฉืึทื ืืื ื ืจืื ืืืืข, ืืขืจ ืงืึทื ืืืื ืขืจ ืงืขื ืืึธืื ืึทืงืกืขืก ืฆื ืึท ืึทื ืืขืจืฉ ืืึทื ื ืคืื ืกืืกืืขื ืจืืคื, ืืืึธืก ืขืก ืงืขื ืึธืืขืจ ืงืขื ื ืืฉื ื ืืฆื. ืจืืึฟ ืจืื ืืืืข ื ืืฆื
ืคึผืจืึธืคืื docker/default
ืืืคึผืจืืฉืืืืืื ืืื ืคืื Kubernetes 1.11, ืึทืืื ืืืกืืืืื ื ืืฆื ืขืก.
ืืื ืืืื ืืืื ืื ื, ืคึผืจืึธืคืื runtime/default
ืืืฉืืืืืขืก ืกืืืึทื ืคึฟืึทืจ ืื ืฆืื ืคึฟืึทืจ ืืืึธืก ืขืก ืืื ืืขืืืขื ืืืฉืืคื: ืคึผืจืึทืืขืงืืื ื ืืกืขืจืก ืคืื ืื ืจืืกืงืก ืคึฟืึทืจืืื ืื ืืื ืขืงืกืึทืงืืืืื ื ืึท ืืึทืคึฟืขื docker run
ืืืืฃ ืืืืขืจ ืงืึทืจืก. ืึธืืขืจ, ืืืขื ืขืก ืงืืื ืฆื ืืขืฉืขืคื ืึทืคึผืืึทืงืืืฉืึทื ื ืืืึธืก ืืืืคื ืืืืฃ Kubernetes ืงืืึทืกืืขืจื, ืืื ืืืึธืื ืึทืจืืืกืคืึธืืขืจื ืฆื ืืขื ืื ืึทื ืึทืืึท ืึท ืคึผืจืึธืคืื ืืื ืฆื ืึธืคื ืืื ืืขืืืขืืึธืคึผืขืจืก ืืึธื ืคืึธืงืืก ืืืืฃ ืงืจืืืืืื ื ืคึผืจืึธืืคืืืื ืคึฟืึทืจ ืืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื ื (ืึธืืขืจ ืืืืคึผืก ืคืื ืึทืคึผืืึทืงืืืฉืึทื ื).
ืืืคึผ 3: ืฉืึทืคึฟื ืกืขืงืึธืืคึผ ืคึผืจืึธืืคืืืื ืคึฟืึทืจ ืกืคึผืขืฆืืคืืฉ ืึทืคึผืืึทืงืืืฉืึทื ื. ืืืื ืืึธืก ืืื ื ืื ืืขืืืขื, ืฉืึทืคึฟื ืคึผืจืึธืืคืืืื ืคึฟืึทืจ ืึทืคึผืืึทืงืืืฉืึทื ืืืืคึผืก, ืืืฉื, ืฉืึทืคึฟื ืึท ืึทืืืึทื ืกืืจืืข ืคึผืจืึธืคืื ืืืึธืก ืืืื ืึทืืข ืื ืืืขื ืึทืคึผืืก ืคืื ืื Golang ืึทืคึผืืึทืงืืืฉืึทื. ื ืึธืจ ื ืืฆื ืจืื ืืืืข / ืคืขืืืงืืึทื ืืื ืึท ืืขืฆืืข ืจืืืึธืจื.
ืืื ืฆืืงืื ืคึฟื ืึทืจืืืงืืขื, ืืื ืืืขื ืืขืงื ืืื ืฆื ืฉืึทืคึฟื SecDevOps-ืื ืกืคึผืืืขืจื ืกืขืงืึธืืคึผ ืคึผืจืึธืืคืืืื, ืึธืืึทืืืื ืืื ืืื ืคึผืจืืืืจื ืืื ืืื ืคึผืืืคึผืืืื ื. ืืื ืื ืืขืจืข ืืืขืจืืขืจ, ืืืจ ืืืขื ืืึธืื ืงืืื ืึทื ืืฉืืืืืงื ื ืืฉื ืฆื ืึทืคึผืืจืืื ืฆื ืึทืคึผืืึทืงืืืฉืึทื-ืกืคึผืขืฆืืคืืฉ ืคึผืจืึธืืคืืืื.
4. ืื ืงืึธื ืคืื ืขื ืืื ื ืืฉื ืึทื ืึธืคึผืฆืืข.
ืคืื PodSecurityPolicy
, ืืืึธืก ืืืขื ืืขืื ืขืก ืืื ืืขื ืงื ืืื, ืึทืืข ืคึผืึธืืก ืคึฟืึทืจ ืืืึธืก ืื ืกืขืงืึธืืคึผ ืคึผืจืึธืคืื ืืื ื ืืฉื ืืืคืืื ื ืืืขื ืึทืจืืขืื ืืื seccomp=unconfined
.
ืึทืคึผืขืจืืืืื ื ืืื ืืขื ืืึธืืข ืืืื ืึทื ืึท ืืึทื ืฅ ืฉืืืืข ืคืื โโืื ืกืึทืืืืฉืึทื ืืื ืคืึทืจืคืึทืื ืืืึธืก ืคึผืจืึทืืขืงืฅ ืื ืงื ืืื. ืืขื ืฆืืืึทื ื ืืื ื ืืฉื ืจืขืงืึทืืขื ืืื ืืืจื ืืืืขืจืืืื ืขืงืกืคึผืขืจืฅ.
ืืืคึผ 4: ืงืืื ืงืึทื ืืืื ืขืจ ืืื ืืขื ืงื ืืื ืืึธื ืืืื ืคืืืกื ืืืง ืืื seccomp=unconfined
, ืกืคึผืขืฆืืขื ืืื ืคึผืจืึธืืืงืฆืืข ืื ืืืืืจืึทื ืืึทื ืฅ.
5. "ืืืืื ืืึธืืข"
ืืขืจ ืคืื ื ืืื ื ืืฉื ืืื ืฆืืง ืฆื Kubernetes, ืึธืืขืจ ื ืึธื ืคืืื ืืื ืื ืงืึทืืขืืึธืจืืข "ืืื ืื ืฆื ืืืืกื ืืืืืขืจ ืืืจ ืึธื ืืืืื".
ืืื ืขืก ืืึทืคึผืึทื ื, ืฉืืคื ืกืขืงืึธืืคึผ ืคึผืจืึธืืคืืืื ืืื ืฉืืขื ืืืง ืืขืืืขื ืืฉืึทืืึทื ืืืฉืื ื ืืื ืจืืืืื ืฉืืืขืจ ืืืืฃ ืคึผืจืึธืฆืขืก ืืื ืืขืืช. ืืขืจ ืคืึทืงื ืืื ืึทื ืืืืขืจื ืคืฉืื ืืึธืื ื ืืฉื ืื ืืขืืขืื ืืืื ืฆื ืคึผืจืืืืจื ืืื ืืื ืคึผืจืึธืืืงืฆืืข ืื ืืืืืจืึทื ืืึทื ืฅ ืึธื ืจืืืืงืืจื "ืืจืึทืคึผืื ื" ืื ืึทืคึผืืึทืงืืืฉืึทื.
ื ืึธื ืื ืืขืืืื ื ืคืื ืื ืืื ืืงืก ืงืขืจื 4.14, ืขืก ืืื ืืขืืืขื ืืขืืืขื ืฆื ืืืืคื ืคึผืึทืจืฅ ืคืื ืึท ืคึผืจืึธืคืื ืืื ืงืึธื ืืจืึธืืืจื ืืึธืืข, ืจืขืงืึธืจืืื ื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืึทืืข ืกืืกืืขื ืจืืคื ืืื ืกืืกืืึธื, ืึธืืขืจ ืึธื ืืืึทืงืื ื ืืื. ืืืจ ืงืขื ืขื ืึทืงืืึทืืืืื ืืขื ืืึธืืข ืืื ืืขื ืคึผืึทืจืึทืืขืืขืจ SCMT_ACT_LOG
:
SCMP_ACT_LOG: seccomp ืืืขื ื ืืฉื ืืืืจืงื ืื ืคืึธืืขื ืืืึธืก ืืึทืื ืื ืกืืกืืขื ืจืืคื ืืืื ืขืก ืฉืืืืขื ื ืืฉื ืฆื ืงืืื ืืขืจืฉื ืืื ืื ืคืืืืขืจ, ืึธืืขืจ ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืื ืกืืกืืขื ืจืืคื ืืืขื ืืืื ืืึธืื.
ืืึธ ืืื ืึท ืืืคึผืืฉ ืกืืจืึทืืขืืืข ืคึฟืึทืจ ื ืืฆื ืืขื ืฉืืจืื:
- ืืึธืื ืกืืกืืขื ืจืืคื ืืืึธืก ืืขื ืขื ืืืจืฃ.
- ืคืึทืจืฉืคึผืึทืจื ืงืึทืืืก ืคืื ืื ืกืืกืืขื ืืืึธืก ืืืจ ืืืืกื ืืืขื ื ืืฉื ืืืื ื ืืฆืืง.
- ืจืขืงืึธืจื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืึทืืข ืื ืืขืจืข ืงืึทืืืก ืืื ืื ืงืืึธืฅ.
ื ืกืืืคึผืืึทืคืืื ืืืึทืฉืคึผืื ืงืืงื ืืื ืืึธืก:
{
"defaultAction": "SCMP_ACT_LOG",
"architectures": [
"SCMP_ARCH_X86_64",
"SCMP_ARCH_X86",
"SCMP_ARCH_X32"
],
"syscalls": [
{
"names": [
"arch_prctl",
"sched_yield",
"futex",
"write",
"mmap",
"exit_group",
"madvise",
"rt_sigprocmask",
"getpid",
"gettid",
"tgkill",
"rt_sigaction",
"read",
"getpgrp"
],
"action": "SCMP_ACT_ALLOW"
},
{
"names": [
"add_key",
"keyctl",
"ptrace"
],
"action": "SCMP_ACT_ERRNO"
}
]
}
(
ืึธืืขืจ ืืขืืขื ืงื ืึทื ืืืจ ืืึทืจืคึฟื ืฆื ืคืึทืจืฉืคึผืึทืจื ืึทืืข ืงืึทืืืก ืืืึธืก ืืืจ ืืืืกื ืืืขื ื ืืฉื ืืืื ืืขืืืืื ื ืืื ืืืึธืก ืงืขื ืคึผืึทืืขื ืืฉืึทืื ืฉืึทืื ืืขื ืงื ืืื. ื ืืืืข ืืงืขืจ ืคึฟืึทืจ ืงืึทืืคึผืืืืื ื ืึท ืจืฉืืื ืืื ืืขืจ ืืึทืึทืืืขืจ
ืึธืืขืจ, ืขืก ืืื ืืืื ืืึทืคึผื. ืืึธืืฉ SCMT_ACT_LOG
ืืขืฉืืืฆื ืืืจื ืื ืืื ืืงืก ืงืขืจื ืืื ื ืืขื ืกืืฃ ืคืื 2017, ืขืก ืืื ืืืืื ืืขืคืืขืจืขื ืืขืฆืื ืก ืืจืืื ืืื ืื Kubernetes ืืงืึธืืกืืกืืึทื. ืืขืจืืืขืจ, ืฆื ื ืืฆื ืืขื ืืืคึฟื ืืืจ ืืืขื ืืึทืจืคึฟื ืึท ืืื ืืงืก ืงืขืจื 4.14 ืืื runC ืืืขืจืกืืข ื ืื ื ืืืขืจืืงืขืจ
ืืืคึผ 5: ืึท ืงืึธื ืืจืึธืืืจื ืืึธืืข ืคึผืจืึธืคืื ืคึฟืึทืจ ืืขืกืืื ื ืืื ืคึผืจืึธืืืงืฆืืข ืงืขื ืขื ืืืื ืืืฉืืคื ืืืจื ืงืึทืืืืื ืื ื ืฉืืืึทืจืฅ ืืื ืืืืึทืก ืจืฉืืืืช, ืืื ืึทืืข ืืืืกื ืขืืขื ืงืขื ืขื ืืืื ืืึธืื.
6. ื ืืฆื ืืืืืืขืืืกืฅ
ืืืืืืขืืืกืืื ื ืจืืงืืืืืขืจื ื ืึธื ืื ืืืืึทื ืืืจ ืืึธืื ืฆื ืืืขื ืืืคืืฆืืจื ืืขืืขืจ ืจืืคื ืืืึธืก ืื ืึทืคึผืืึทืงืืืฉืึทื ืงืขื ืืึทืจืคึฟื, ืึธืืขืจ ืืขืจ ืฆืืืึทื ื ืืืคึผืจืืืื ืืืืขืจืืืื:
ืขืก ืืื ืืขืืกื ืจืขืงืึทืืขื ืืื ืฆื ื ืืฆื ืื ืืืืืืืืกื ืฆืืืึทื ื ืืืืึทื ืขืก ืืื ืกืืืคึผืืขืจ ืืื ืืขืจ ืคืึทืจืืึธืืืขื. ืื ืืืึทืงืืืกื ืืืขื ืืืื ืืขืจืืืึทื ืืืงื ืืืขื ืึท ืคึผืึทืืขื ืืฉืึทืื ืืขืคืขืจืืขื ืกืืกืืขื ืจืืคื (ืึธืืขืจ ืึท ืืขืคืขืจืืขื ืคืึธื / ืึธืคึผืฆืืข ืืืื ืขืก ืืื ืืืืฃ ืื ืืืึทืงืืืกื) ืืื ืฆืืืขืืขืื. ืืื ืืขืจืฆื, ืขืก ืืื ืึธืคื ืืขืืืขื ืฆื ืืืืฉื ืื ืคืึทืจืืจืขืืื ื ืคืื ืึท ืคึผืึทืจืึทืืขืืขืจ ืึธื ืืฉืึทื ืืื ื ืืืึทื ืขืกืึทื ืก ืืื ืืขืจืืื ืืืืคึผืึทืก ืื ืจืืกืืจืืงืฉืึทื ื ืคืื ืื ืืืึทืงืืืกื.
ืคึฟืึทืจ Go ืึทืคึผืืึทืงืืืฉืึทื ื, ืืื ืืขืืืขืืึธืคึผืขื ืึท ืกืคึผืขืฆืืขื ืืขืฆืืึทื ืืืึธืก ืึทืงืึทืืคึผืึทื ืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืงืึทืืขืงืฅ ืึทืืข ืงืึทืืืก ืืขืฉืึทืก ืืืจืืคืืจืื ื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืคึฟืึทืจ ืื ืคืืืืขื ืืข ืึทืคึผืืึทืงืืืฉืึทื:
package main
import "fmt"
func main() {
fmt.Println("test")
}
... ืืึธืื ืก ืงืึทืืขืจ gosystract
ืึทืืื:
go install https://github.com/pjbgf/gosystract
gosystract --template='{{- range . }}{{printf ""%s",n" .Name}}{{- end}}' application-path
... ืืื ืืืจ ืืึทืงืืืขื ืื ืคืืืืขื ืืข ืจืขืืืืืึทื:
"sched_yield",
"futex",
"write",
"mmap",
"exit_group",
"madvise",
"rt_sigprocmask",
"getpid",
"gettid",
"tgkill",
"rt_sigaction",
"read",
"getpgrp",
"arch_prctl",
ืืืฆื, ืืึธืก ืืื ืืืืื ืึท ืืืืฉืคึผืื - ืืขืจ ืืขืืึทืืืก ืืืขืื ืื ืืืฉืืจืื ืืืขื ื ืึธืืคืึธืืื.
ืืืคึผ 6: ืืึธืื ืืืืื ืื ืจืืคื ืืืึธืก ืืืจ ืืึทืงืข ืืึทืจืคึฟื ืืื ืคืึทืจืฉืคึผืึทืจื ืึทืืข ืื ืืขืจืข.
7. ืืืืื ืื ืจืขืื ืืกืืืืช (ืึธืืขืจ ืฆืืืจืืืื ืคึฟืึทืจ ืืืืืขืจืืื ื ืึทืืืจ)
ืืขืจ ืงืขืจื ืืืขื ืืืจืืคืืจื ืืขื ืคึผืจืึธืคืื ืจืึทืืึทืจืืืึทืก ืคืื ืืืึธืก ืืืจ ืฉืจืืึทืื ืืื ืขืก. ืืคืืื ืืืื ืขืก ืืื ื ืืฉื ืคึผืื ืงื ืืืึธืก ืืืจ ืืืืื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืื ืืืจ ืคืึทืจืฉืคึผืึทืจื ืึทืงืกืขืก ืฆื ืงืึทืืืก ืืื exit
ืึธืืขืจ exit_group
, ืืขืจ ืงืึทื ืืืื ืขืจ ืืืขื ื ืืฉื ืงืขื ืขื ืฆื ืคืึทืจืืึทืื ืึทืจืึธืคึผ ืจืืืืืง ืืื ืืคืืื ืึท ืคึผืฉืื ืืึทืคึฟืขื ืืื echo hi
ืืื ืึทืืึท ืงืึทืกืขืก, ืึท ื ืืฆื ืงืขื ืขื ืงืืืขื ืฆื ืจืึทืืขืืืขื strace
- ืขืก ืืืขื ืืืืึทืื ืืืึธืก ืื ืคึผืจืึธืืืขื ืงืขื ืืืื:
sudo strace -c -p 9331
ืืึทืื ืืืืขืจ ืึทื ืื ืคึผืจืึธืืคืืืื ืึทื ืืืึทืืื ืึทืืข ืื ืกืืกืืขื ืงืึทืืืก ืืืึธืก ืื ืึทืคึผืืึทืงืืืฉืึทื ืืึทืจืฃ ืืื ืจืื ืืืืข.
ืืืคึผ 7: ืืึทืฆืึธืื ืืคืืขืจืงืืึทืืงืืื ืฆื ืืขืืึทื ืืื ืืึทืื ืืืืขืจ ืึทื ืึทืืข ื ืืืืืง ืกืืกืืขื ืงืึทืืืก ืืขื ืขื ืืืืืืืืกืืขื.
ืืึธืก ืขื ืืืงื ืืขืจ ืขืจืฉืืขืจ ืืืื ืคืื ืึท ืกืขืจืืข ืคืื โโโโืึทืจืืืงืืขื ืืืขืื ื ืืฆื ืกืขืงืึธืืคึผ ืืื Kubernetes ืืื ืื ืืืืกื ืคืื SecDevOps. ืืื ืื ืคืืืืขื ืืข ืคึผืึทืจืฅ ืืืจ ืืืขืื ืจืขืื ืืืขืื ืืืึธืก ืืึธืก ืืื ืืืืืืืง ืืื ืืื ืฆื ืึธืืึทืืืื ืืขื ืคึผืจืึธืฆืขืก.
ืคึผืก ืคืื ืืืืขืจืืขืฆืขืจ
ืืืืขื ืขื ืืืื ืืืืฃ ืืื ืืืขืจ ืืืึธื:
- ยซ
ืืืืขืจืืืื ืคึฟืึทืจ ืืึธืงืงืขืจ ืงืึทื ืืืื ืขืจื "; - ยซ
33+ Kubernetes ืืืืขืจืืืื ืืืฉืืจืื "; - ยซ
Docker ืืื Kubernetes ืืื ืืืืขืจืืืื-ืคืืืขืจื ืื ืืืืืจืึทื ืืึทื ืฅ "; - ยซ
9 ืืขืกืืขืจ ืคึผืจืึทืงืืืกืื ืคึฟืึทืจ Kubernetes ืืืืขืจืืืื '.
ืืงืืจ: www.habr.com