ΠΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².: ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ° ΠΏΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±ΡΠΈΡΠ°Π½ΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ASOS.com. Π‘ Π½Π΅ΠΉ ΠΎΠ½ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΠΈΠΊΠ» ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΉ, ΠΏΠΎΡΠ²ΡΡΡΠ½Π½ΡΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π² Kubernetes Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ seccomp. ΠΡΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΡΡΡ ΡΠΈΡΠ°ΡΠ΅Π»ΡΠΌ, ΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΠ΅ΠΌ Π·Π° Π°Π²ΡΠΎΡΠΎΠΌ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Ρ Π΅Π³ΠΎ Π±ΡΠ΄ΡΡΠΈΠΌΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°ΠΌΠΈ ΠΏΠΎ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅.
ΠΡΠ° ΡΡΠ°ΡΡΡ β ΠΏΠ΅ΡΠ²Π°Ρ ΠΈΠ· ΡΠ΅ΡΠΈΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΉ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈ seccomp Π² Π΄ΡΡ
Π΅ SecDevOps, Π½Π΅ ΠΏΡΠΈΠ±Π΅Π³Π°Ρ ΠΊ ΠΌΠ°Π³ΠΈΠΈ ΠΈ ΠΊΠΎΠ»Π΄ΠΎΠ²ΡΡΠ²Ρ. Π ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎΠ± ΠΎΡΠ½ΠΎΠ²Π°Ρ
ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
Π΄Π΅ΡΠ°Π»ΡΡ
ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ seccomp Π² Kubernetes.
ΠΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° Kubernetes ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠ΅ ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². Π‘ΡΠ°ΡΡΡ ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° Secure Computing Mode, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΌΡ ΠΊΠ°ΠΊ seccomp. ΠΠ³ΠΎ ΡΡΡΡ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ², Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ? ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ β ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π½Π΅ΠΊΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΉ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅. Π ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ΄ΡΠΎ Π½Π°ΡΠ°Π²Π½Π΅ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ. ΠΡΠ»ΠΈ Π±Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΌΠΎΠ³Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π»ΡΠ±ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ, Π²Π΅ΡΡΠΌΠ° ΡΠΊΠΎΡΠΎ ΡΡΠΈΠΌ Π±Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΈΠ·ΠΎΠ»ΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΌΠ΅Π½ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Ρ.ΠΏ.
ΠΡΠΎΡΠΈΠ»ΠΈ seccomp ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Ρ. Π‘ΡΠ΅Π΄Π° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅Ρ ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π΅Π³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°, ΡΡΠΎΠ±Ρ ΡΠ΄ΡΠΎ ΠΌΠΎΠ³Π»ΠΎ Π²Π΅ΡΡΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π·Π° ΠΈΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ Π²Π΅ΠΊΡΠΎΡ Π°ΡΠ°ΠΊΠΈ ΠΈ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ ΡΡΠΎΠ½ Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° (ΡΠΎ Π΅ΡΡΡ Π²Π°ΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΈΠ»ΠΈ ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ) Π½Π°ΡΠ½Π΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΠΎ, ΡΡΠΎ Π΅ΠΉ Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ.
Π Π°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π°ΠΌΠΈ
ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠΈΠ»Ρ 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
ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡΡΡ ΡΠ΅Π»Π΅Π²ΡΠ΅ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ. ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΠΌ ΡΠΈΠ»ΡΡΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ΄ΡΠ°, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ², Π° Π½Π΅ ΠΎΡ ΠΈΡ
Π½Π°Π·Π²Π°Π½ΠΈΠΉ, ΠΏΡΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ
Π² ΠΏΡΠΎΡΠΈΠ»Π΅. ΠΠ΅ΡΠ΅Π΄ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ΅Π΄Π° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡ ΠΈΡ
Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ. Π‘ΠΌΡΡΠ» Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ°Π·Π½ΡΠ΅ ID Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² 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
(Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ), ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ runtime ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΡΠΎΡΠΈΠ»Ρ seccomp Π² ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π·Π°ΠΏΡΡΠΊΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΡΡΠ΅Π΄Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ/Π³ΡΡΠΏΠΏΡ, ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
capabilities), Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ Π² ΠΏΡΠΎΡΠΈΠ»Π΅.
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π±Π°Π½Π°Π»ΡΠ½ΠΎΠ΅ 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
. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π°ΡΡΠΎΡΡΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ, ΡΠ°Π·ΡΠ΅ΡΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΠ΅ΡΠ΅, Π²Ρ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ΅Π΄Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ runtime-ΡΡΠ΅Π΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° (Π²Π°ΠΌΠΈ ΠΈΠ»ΠΈ, ΡΡΠΎ Π²Π΅ΡΠΎΡΡΠ½Π΅Π΅, ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠΌ ΠΎΠ±Π»Π°ΡΠ½ΡΡ
ΡΡΠ»ΡΠ³) ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ.
Π‘ΠΎΠ²Π΅Ρ β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. ΠΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ΅Π΄Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ Π΅Ρ Π²Π΅ΡΡΠΈΠΈ.
ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΌΠ΅Π½Ρ runtime ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ Π½Π°Π±ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΠ΅Π΄ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ
ΠΡΠΎΡΠΈΠ»Ρ docker/default
ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ Ρ Kubernetes 1.11, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΠΎ ΠΌΠΎΠ΅ΠΌΡ ΠΌΠ½Π΅Π½ΠΈΡ, ΠΏΡΠΎΡΠΈΠ»Ρ runtime/default
ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ΅Ρ
ΡΠ΅Π»Π΅ΠΉ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
ΠΎΠ½ ΡΠΎΠ·Π΄Π°Π²Π°Π»ΡΡ: Π·Π°ΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΎΡ ΡΠΈΡΠΊΠΎΠ², ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ docker run
Π½Π° ΠΈΡ
ΠΌΠ°ΡΠΈΠ½Π°Ρ
. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ
Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ°Ρ
Kubernetes, Ρ Π±Ρ Π²Π·ΡΠ» Π½Π° ΡΠ΅Π±Ρ ΡΠΌΠ΅Π»ΠΎΡΡΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΡΠΈΠ»Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΎΡΠΊΡΡΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠΎΠ½ΡΠ΅Π½ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΈΠ»ΠΈ ΡΠΈΠΏΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ).
Π‘ΠΎΠ²Π΅Ρ β3: Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈ seccomp ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°ΠΉΠΌΠΈΡΠ΅ΡΡ ΠΏΡΠΎΡΠΈΠ»ΡΠΌΠΈ ΠΏΠΎΠ΄ Π²ΠΈΠ΄Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΎΡΠΈΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠΈΡ Π² ΡΠ΅Π±Ρ Π²ΡΠ΅ Π²Π΅Π±-API ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Golang. Π’ΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΡΠ°ΠΉΠ½Π΅Π³ΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ runtime/default.
Π Π±ΡΠ΄ΡΡΠΈΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΡ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈ seccomp Π² Π΄ΡΡ Π΅ SecDevOps, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ Π² ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°Ρ . ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Ρ Π²Π°Ρ Π½Π΅ ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ Π½Π° ΠΏΡΠΎΡΠΈΠ»ΠΈ ΠΏΠΎΠ΄ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
4. Unconfined β ΡΡΠΎ ΠΠ Π²Π°ΡΠΈΠ°Π½Ρ
ΠΠ· PodSecurityPolicy
, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΊΠ»ΡΡΠΈΡ Π΅Π³ΠΎ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅, Π²ΡΠ΅ pod’Ρ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ ΠΏΡΠΎΡΠΈΠ»Ρ seccomp, Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ seccomp=unconfined
.
Π Π°Π±ΠΎΡΠ° Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠ΅ΡΡΠ΅ΡΡΡ ΡΠ΅Π»ΡΠΉ ΡΠ»ΠΎΠΉ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ Π·Π°ΡΠΈΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ°ΠΌΠΈ ΠΏΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
Π‘ΠΎΠ²Π΅Ρ β4: ΠΠΈ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ seccomp=unconfined
, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² production-ΡΡΠ΅Π΄Π°Ρ
.
5. Β«Π Π΅ΠΆΠΈΠΌ Π°ΡΠ΄ΠΈΡΠ°Β»
ΠΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π΅ ΡΠ½ΠΈΠΊΠ°Π»Π΅Π½ Π΄Π»Ρ Kubernetes, Π½ΠΎ Π²ΡΡ ΠΆΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ Β«ΠΎ ΡΡΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π½Π°ΡΡ Π΅ΡΡ Π΄ΠΎ Π½Π°ΡΠ°Π»Π°Β».
Π’Π°ΠΊ ΠΏΠΎΠ²Π΅Π»ΠΎΡΡ, ΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ»Π΅ΠΉ seccomp Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ»ΠΎ Π½Π΅ΠΏΡΠΎΡΡΡΠΌ Π·Π°Π½ΡΡΠΈΠ΅ΠΌ ΠΈ Π² Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π»ΠΎΡΡ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΏΡΠΎΠ± ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠΎΡΡΠΎ Π½Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΡ Π² production-ΡΡΠ΅Π΄Π°Ρ , Π½Π΅ ΡΠΈΡΠΊΡΡ Β«ΡΡΠΎΠ½ΠΈΡΡΒ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠΎΡΠ»Π΅ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ΄ΡΠ° 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: ΠΡΠΎΡΠΈΠ»Ρ ΡΠ΅ΠΆΠΈΠΌΠ° Π°ΡΠ΄ΠΈΡΠ° Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² production ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ, ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΡ ΡΠ΅ΡΠ½ΡΠΉ ΠΈ Π±Π΅Π»ΡΠΉ ΡΠΏΠΈΡΠΊΠΈ, Π° Π²ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π² ΠΆΡΡΠ½Π°Π».
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 ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΠΊ ΠΊΠΎΠ½ΡΡ. Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°ΡΡΡΡ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΎΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΈ ΠΊΠ°ΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ.
P.S. ΠΎΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠ°
Π§ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅:
- Β«
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ Docker-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Β»; - Β«
33+ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Kubernetes Β»; - Β«
Docker ΠΈ Kubernetes Π² ΡΡΠ΅Π±ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡΡ Β»; - Β«
9 Π»ΡΡΡΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ ΠΏΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π² Kubernetes Β».
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com