ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°. ΠΏΡΠ΅Π²ΠΎΠ΄: ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΠΌΠ΅ Π½Π° Π²Π°ΡΠ΅ΡΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡΠ΅Π²ΠΎΠ΄Π° Π½Π° ΡΡΠ°ΡΠΈΡ ΠΎΡ ΡΡΠ°ΡΡΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ ΠΏΠΎ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° Π² Π±ΡΠΈΡΠ°Π½ΡΠΊΠ°ΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ASOS.com. Π‘ Π½Π΅Π³ΠΎ ΡΠΎΠΉ Π·Π°ΠΏΠΎΡΠ²Π° ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ° ΠΎΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ, ΠΏΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° Π² Kubernetes ΡΡΠ΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° seccomp. ΠΠΊΠΎ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈΡΠ΅ Ρ Π°ΡΠ΅ΡΠ°Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ, ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΠΌΠ΅ Π°Π²ΡΠΎΡΠ° ΠΈ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ Ρ Π±ΡΠ΄Π΅ΡΠΈΡΠ΅ ΠΌΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ ΠΏΠΎ ΡΠ°Π·ΠΈ ΡΠ΅ΠΌΠ°.
Π’Π°Π·ΠΈ ΡΡΠ°ΡΠΈΡ Π΅ ΠΏΡΡΠ²Π°ΡΠ° ΠΎΡ ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ° ΠΎΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ seccomp ΠΏΡΠΎΡΠΈΠ»ΠΈ Π² Π΄ΡΡ
Π° Π½Π° SecDevOps, Π±Π΅Π· Π΄Π° ΠΏΡΠΈΠ±ΡΠ³Π²Π°ΡΠ΅ Π΄ΠΎ ΠΌΠ°Π³ΠΈΡ ΠΈ ΠΌΠ°Π³ΡΠΎΡΠ½ΠΈΡΠ΅ΡΡΠ²ΠΎ. Π ΡΠ°ΡΡ XNUMX ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌ ΠΎΡΠ½ΠΎΠ²ΠΈΡΠ΅ ΠΈ Π²ΡΡΡΠ΅ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° seccomp Π² Kubernetes.
ΠΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Kubernetes ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π³ΠΎΠ»ΡΠΌΠΎ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΠΎΡ Π½Π°ΡΠΈΠ½ΠΈ Π·Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. Π‘ΡΠ°ΡΠΈΡΡΠ° Π΅ Π·Π° Secure Computing Mode, ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΎΡΠ΅ ΠΊΠ°ΡΠΎ seccomp. Π‘ΡΡΠ½ΠΎΡΡΡΠ° ΠΌΡ Π΅ Π΄Π° ΡΠΈΠ»ΡΡΠΈΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ.
ΠΠ°ΡΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ? ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΡΠ΅Ρ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΌΠ°ΡΠΈΠ½Π°. Π ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΄ΡΠΎΡΠΎ ΡΠΎΡΠ½ΠΎ ΠΊΠ°ΡΠΎ Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ, ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΊΠΎΡΠΎ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡΡ ΡΠΎΡΡΡΠ΅Ρ ΡΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ ΡΠΎΠ²Π°, Π·Π° Π΄Π° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ Π΄Π° ΠΏΠΎΠ²Π»ΠΈΡΠ΅ Π½Π° Π΄ΡΡΠ³ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: Π΄Π° ΠΏΡΠΈΡ Π²Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ Ρ.Π½.
ΠΡΠΎΡΠΈΠ»ΠΈΡΠ΅ Π½Π° seccomp ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΊΠΎΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ ΠΈΠ»ΠΈ Π·Π°Π±ΡΠ°Π½Π΅Π½ΠΈ. Π‘ΡΠ΅Π΄Π°ΡΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π³ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ΄ΡΠΎΡΠΎ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ»Π΅Π΄ΠΈ ΡΡΡ Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°ΠΊΠΈΠ²Π° ΠΏΡΠΎΡΠΈΠ»ΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π²Π΅ΠΊΡΠΎΡΠ° Π½Π° Π°ΡΠ°ΠΊΠ°ΡΠ° ΠΈ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΡΠ΅ ΡΠ΅ΡΠΈΡΠ΅, Π°ΠΊΠΎ Π½ΡΠΊΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π²ΡΡΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° (Ρ.Π΅. Π²Π°ΡΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ»ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ) Π·Π°ΠΏΠΎΡΠ½Π΅ Π΄Π° ΠΏΡΠ°Π²ΠΈ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ ΠΉ Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ.
Π‘ΡΠΈΠ³Π°Π½Π΅ Π΄ΠΎ ΠΎΡΠ½ΠΎΠ²ΠΈΡΠ΅
ΠΡΠ½ΠΎΠ²Π½ΠΈΡΡ ΠΏΡΠΎΡΠΈΠ» Π½Π° seccomp Π²ΠΊΠ»ΡΡΠ²Π° ΡΡΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ°: defaultAction
, architectures
(Or 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
ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΈ ΡΠ° ΡΠ΅Π»Π΅Π²ΠΈΡΠ΅ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠΈ. Π’ΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ°ΠΌΠΈΡΡ ΡΠΈΠ»ΡΡΡ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ Π½Π° Π½ΠΈΠ²ΠΎ ΡΠ΄ΡΠΎ, Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ, Π° Π½Π΅ ΠΎΡ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ ΠΈΠΌΠ΅Π½Π°, ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Π² ΠΏΡΠΎΡΠΈΠ»Π°. ΠΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΠ΅ Π³ΠΈ ΡΡΠΏΠΎΡΡΠ°Π²ΠΈ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ ΠΏΡΠ΅Π΄ΠΈ ΡΠΏΠΎΡΡΠ΅Π±Π°. ΠΠ΄Π΅ΡΡΠ° Π΅, ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠΌΠ°Ρ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ½Π°ΡΠ° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ recvfrom
(ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΡΠΎΠΊΠ΅ΡΠ°) ΠΈΠΌΠ° ID = 64 Π½Π° x64 ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ ID = 517 Π½Π° x86.
Π ΡΠ°Π·Π΄Π΅Π»Π° syscalls
ΠΈΠ·Π±ΡΠΎΡΠ²Π° Π²ΡΠΈΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΈ ΡΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡΠ°Π²ΠΈ Ρ ΡΡΡ
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π±ΡΠ» ΡΠΏΠΈΡΡΠΊ ΡΡΠ΅Π· Π½Π°ΡΡΡΠΎΠΉΠΊΠ° defaultAction
Π½Π° SCMP_ACT_ERRNO
, ΠΈ ΠΎΠ±Π°ΠΆΠ΄Π°Π½ΠΈΡ Π² ΡΠ°Π·Π΄Π΅Π»Π° syscalls
Π²ΡΠ·Π»Π°Π³Π°ΠΌ SCMP_ACT_ALLOW
. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΎΠ±Π°ΠΆΠ΄Π°Π½ΠΈΡ, ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Π² ΡΠ°Π·Π΄Π΅Π»Π° syscalls
, ΠΈ Π·Π°Π±ΡΠ°Π½Π΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΎΡΡΠ°Π½Π°Π»ΠΈ. ΠΠ° ΡΠ΅ΡΠ½ΠΈΡ ΡΠΏΠΈΡΡΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ defaultAction
ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΡΠ° ΠΊΡΠΌ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΠΎ.
Π‘Π΅Π³Π° ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄ΡΠΌΠΈ Π·Π° Π½ΡΠ°Π½ΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΈ. ΠΠΎΠ»Ρ, ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠΈΡΠ΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΠ΅ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°ΡΠ΅ Π»ΠΈΠ½ΠΈΡ ΠΎΡ Π±ΠΈΠ·Π½Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Kubernetes ΠΈ ΠΈΡΠΊΠ°ΡΠ΅ ΡΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΡΡ Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ.
1. AllowPrivilegeEscalation=false
Π securityContext
ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ ΠΈΠΌΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ AllowPrivilegeEscalation
. ΠΠΊΠΎ Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ Π² false
, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ²Π°Ρ Ρ (on
) ΠΌΠ°Π»ΠΊΠΎ no_new_priv
Π‘ΡΡΠ°Π½ΠΈΡΠ΅Π½ Π΅ΡΠ΅ΠΊΡ ΠΎΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΠΎΠΏΡΠΈΡ true
(ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅) Π΅, ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΏΡΠΈΠ»Π°Π³Π° ΠΏΡΠΎΡΠΈΠ»Π° seccomp Π² ΡΠ°ΠΌΠΎΡΠΎ Π½Π°ΡΠ°Π»ΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π²ΡΠΈΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π²ΡΡΡΠ΅ΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡ. Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ/Π³ΡΡΠΏΠΈ, ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ), ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΈ Π² ΠΏΡΠΎΡΠΈΠ»Π°.
ΠΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ°Π²ΠΈ ΡΡΠΈΠ²ΠΈΠ°Π»Π½ΠΈ Π½Π΅ΡΠ° 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
. Π’ΠΎΠ²Π° ΡΠ΅ Π½Π°ΠΌΠ°Π»ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ΅ Π½Π° seccomp ΠΈ ΡΠ΅ Π³ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΡΠΌ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΡΡΠ΅Π΄Π°ΡΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
2. ΠΠ°Π΄Π°Π²Π°Π½Π΅ Π½Π° seccomp ΠΏΡΠΎΡΠΈΠ»ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ
ΠΡΠΎΡΠΈΠ»ΡΡ seccomp ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° Π½ΠΈΠ²ΠΎ pod:
annotations:
seccomp.security.alpha.kubernetes.io/pod: "localhost/profile.json"
...ΠΈΠ»ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ:
annotations:
container.security.alpha.kubernetes.io/<container-name>: "localhost/profile.json"
ΠΠΎΠ»Ρ, ΠΈΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ Π³ΠΎΡΠ½ΠΈΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Kubernetes seccomp
ΠΠ°Π»ΠΊΠΎ Ρ
ΠΎΡΠ° Π·Π½Π°ΡΡ, ΡΠ΅ Kubernetes Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΈΠΌΠ°Π»
ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅, ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π²ΠΈΠ½Π°Π³ΠΈ Π·Π°ΠΏΠΎΡΠ²Π° Ρ AllowPrivilegeEscalation=true
, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅, ΠΈΠ·ΡΠ°Π·Π΅Π½ΠΈ Π² ΠΏΠ°ΡΠ°Π³ΡΠ°Ρ 1, ΠΈ ΡΠΎΠ²Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΎ.
ΠΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈ seccomp Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π²ΠΈΠ΅ ΠΈΠ·Π±ΡΠ³Π²Π°ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΊΠ°ΠΏΠ°Π½ ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΡΠΎΡΠΈΠ», ΠΊΠΎΠΉΡΠΎ Π΅ ΠΏΡΠΈΠ³ΠΎΠ΄Π΅Π½ Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. Π’ΠΎΠ²Π° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ, Π΄ΠΎΠΊΠ°ΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΏΠΎΠΏΡΠ°Π²ΡΡ Π³ΡΠ΅ΡΠΊΠ°ΡΠ° ΠΈ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ (ΠΌΠΎΠΆΠ΅ Π±ΠΈ 1.18?) ΡΡΠ°Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ½Π° Π·Π° Π²ΡΠΈΡΠΊΠΈ.
Π‘ΡΠ²Π΅Ρ β2: ΠΠ°Π΄Π°ΠΉΡΠ΅ seccomp ΠΏΡΠΎΡΠΈΠ»ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ.
Π ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΌΠΈΡΡΠ» ΡΠΎΠ²Π° ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ»ΡΠΆΠΈ ΠΊΠ°ΡΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½ ΠΎΡΠ³ΠΎΠ²ΠΎΡ Π½Π° Π²ΡΠΏΡΠΎΡΠ°: βΠΠ°ΡΠΎ ΠΌΠΎΡΡ seccomp ΠΏΡΠΎΡΠΈΠ» ΡΠ°Π±ΠΎΡΠΈ Ρ docker run
Π½ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ ΡΠ»Π΅Π΄ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π² ΠΊΠ»ΡΡΡΠ΅Ρ Π½Π° Kubernetes?
3. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ runtime/default ΡΠ°ΠΌΠΎ Π² ΠΊΡΠ°Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ
Kubernetes ΠΈΠΌΠ° Π΄Π²Π΅ ΠΎΠΏΡΠΈΠΈ Π·Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΏΡΠΎΡΠΈΠ»ΠΈ: runtime/default
ΠΈ docker/default
. Π Π΄Π²Π΅ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΎΡ ΡΡΠ΅Π΄Π°ΡΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, Π° Π½Π΅ ΠΎΡ Kubernetes. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π°Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π°ΡΠ° ΡΡΠ΅Π΄Π° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ Π½Π΅ΠΉΠ½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ.
Π‘ Π΄ΡΡΠ³ΠΈ Π΄ΡΠΌΠΈ, Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ ΠΈΠ»ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°. ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ
ΠΡΠΎΡΠΈΠ» docker/default
Π΅ ΠΎΡΡ
Π²ΡΡΠ»Π΅Π½ ΠΎΡ Kubernetes 1.11, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΈΠ·Π±ΡΠ³Π²Π°ΠΉΡΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅.
Π‘ΠΏΠΎΡΠ΅Π΄ ΠΌΠ΅Π½ ΠΏΡΠΎΡΠΈΠ» runtime/default
Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡ Π·Π° ΡΠ΅Π»ΡΠ°, Π·Π° ΠΊΠΎΡΡΠΎ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½: Π·Π°ΡΠΈΡΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΎΡ ΡΠΈΡΠΊΠΎΠ²Π΅ΡΠ΅, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° docker run
Π½Π° ΡΠ΅Ρ
Π½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΈ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ°Π²Π° Π²ΡΠΏΡΠΎΡ Π·Π° Π±ΠΈΠ·Π½Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π½Π° Kubernetes ΠΊΠ»ΡΡΡΠ΅ΡΠΈ, Π±ΠΈΡ
ΡΠ΅ ΠΎΡΠΌΠ΅Π»ΠΈΠ» Π΄Π° ΡΠ²ΡΡΠ΄Ρ, ΡΠ΅ ΡΠ°ΠΊΡΠ² ΠΏΡΠΎΡΠΈΠ» Π΅ ΡΠ²ΡΡΠ΄Π΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΡΡΡΠ΅Π΄ΠΎΡΠΎΡΠ°Ρ Π²ΡΡΡ
Ρ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈ Π·Π° ΡΠ²ΠΎΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΈΠ»ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ).
Π‘ΡΠ²Π΅Ρ β3: Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ seccomp ΠΏΡΠΎΡΠΈΠ»ΠΈ Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΊΠΎ ΡΠΎΠ²Π° Π½Π΅ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈ Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½ ΠΏΡΠΎΡΠΈΠ», ΠΊΠΎΠΉΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π± API Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Golang. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅/ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ°ΠΌΠΎ Π² ΠΊΡΠ°Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ.
Π Π±ΡΠ΄Π΅ΡΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌ ΠΊΠ°ΠΊ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΠΌ Π²Π΄ΡΡ Π½ΠΎΠ²Π΅Π½ΠΈ ΠΎΡ SecDevOps seccomp ΠΏΡΠΎΡΠΈΠ»ΠΈ, Π΄Π° Π³ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΠΌ ΠΈ Π΄Π° Π³ΠΈ ΡΠ΅ΡΡΠ²Π°ΠΌ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΈ. Π‘ Π΄ΡΡΠ³ΠΈ Π΄ΡΠΌΠΈ, Π½ΡΠΌΠ° Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΈΠ·Π²ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π° Π½Π΅ Π½Π°Π΄ΡΡΡΠΎΠΈΡΠ΅ Π΄ΠΎ ΠΏΡΠΎΡΠΈΠ»ΠΈ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
4. ΠΠ΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΠ Π΅ ΠΎΠΏΡΠΈΡ.
ΠΠ° PodSecurityPolicy
, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π³ΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°, Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅, Π·Π° ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΡΠΈΠ»ΡΡ seccomp Π½Π΅ Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½, ΡΠ΅ ΡΠ°Π±ΠΎΡΡΡ Π² seccomp=unconfined
.
Π Π°Π±ΠΎΡΠ°ΡΠ° Π² ΡΠΎΠ·ΠΈ ΡΠ΅ΠΆΠΈΠΌ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΠ΅ Π³ΡΠ±ΠΈ ΡΡΠ» ΡΠ»ΠΎΠΉ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ Π·Π°ΡΠΈΡΠ°Π²Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π΅ ΡΠ΅ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π° ΠΎΡ Π΅ΠΊΡΠΏΠ΅ΡΡΠΈ ΠΏΠΎ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ°.
Π‘ΡΠ²Π΅Ρ β4: ΠΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° seccomp=unconfined
, ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈ.
5. "Π Π΅ΠΆΠΈΠΌ Π½Π° ΠΎΠ΄ΠΈΡ"
Π’Π°Π·ΠΈ ΡΠΎΡΠΊΠ° Π½Π΅ Π΅ ΡΠ½ΠΈΠΊΠ°Π»Π½Π° Π·Π° Kubernetes, Π½ΠΎ Π²ΡΠ΅ ΠΏΠ°ΠΊ ΠΏΠΎΠΏΠ°Π΄Π° Π² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡΠ° βΠ½Π΅ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π½Π°Π΅ΡΠ΅, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅β.
ΠΠ°ΠΊΡΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π°, ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈ Π½Π° seccomp Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π±ΠΈΠ»ΠΎ ΠΏΡΠ΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅Π»ΡΡΠ²ΠΎ ΠΈ ΡΠ°Π·ΡΠΈΡΠ° Π΄ΠΎ Π³ΠΎΠ»ΡΠΌΠ° ΡΡΠ΅ΠΏΠ΅Π½ Π½Π° ΠΏΡΠΎΠ±Π° ΠΈ Π³ΡΠ΅ΡΠΊΠ°. Π€Π°ΠΊΡ Π΅, ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΌΠ°Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° Π³ΠΈ ΡΠ΅ΡΡΠ²Π°Ρ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈ, Π±Π΅Π· Π΄Π° ΡΠΈΡΠΊΡΠ²Π°Ρ Π΄Π° βΠΏΡΡΠ½Π°Ρβ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
Π‘Π»Π΅Π΄ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux 4.14 ΡΡΠ°Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΡΠ°ΡΡΠΈ ΠΎΡ ΠΏΡΠΎΡΠΈΠ» Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΎΠ΄ΠΈΡ, ΠΊΠ°ΡΠΎ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π² syslog, Π½ΠΎ Π±Π΅Π· Π΄Π° ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ°Ρ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ ΡΠΎΠ·ΠΈ ΡΠ΅ΠΆΠΈΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° 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
ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux ΠΎΡ ΠΊΡΠ°Ρ Π½Π° 2017 Π³., ΡΠΎΠΉ Π½Π°Π²Π»Π΅Π·Π΅ Π² Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Kubernetes ΡΡΠ²ΡΠ΅ΠΌ Π½Π°ΡΠΊΠΎΡΠΎ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄, ΡΠ΅ Π²ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄ΡΠΎ ββΠ½Π° Linux 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: ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π΅ΡΠ°ΠΉΠ»ΠΈΡΠ΅ ΠΈ ΡΠ΅ ΡΠ²Π΅ΡΠ΅ΡΠ΅, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΡΠ° Π² Π±Π΅Π»ΠΈΡ ΡΠΏΠΈΡΡΠΊ.
Π’ΠΎΠ²Π° Π·Π°Π²ΡΡΡΠ²Π° ΠΏΡΡΠ²Π°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ° ΠΎΡ ΡΡΠ°ΡΠΈΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° seccomp Π² Kubernetes Π² Π΄ΡΡ Π° Π½Π° SecDevOps. Π ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΡΠ°ΡΡΠΈ ΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π°ΡΠΎ ΡΠΎΠ²Π° Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΎΡΠ΅ΡΠ°.
PS ΠΎΡ ΠΏΡΠ΅Π²ΠΎΠ΄Π°ΡΠ°
ΠΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΡΡΠΎ Π² Π½Π°ΡΠΈΡ Π±Π»ΠΎΠ³:
- Β«
Π‘ΠΈΠ³ΡΡΠ½ΠΎΡΡ Π·Π° Docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Β»; - Β«
33+ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ Π½Π° Kubernetes Β»; - Β«
Docker ΠΈ Kubernetes Π² ΡΡΠ΅Π΄ΠΈ, ΠΈΠ·ΠΈΡΠΊΠ²Π°ΡΠΈ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ Β»; - Β«
9 Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ Π½Π° Kubernetes ".
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com