เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชธเซ‡เช•เช•เซ‹เชฎเซเชช: 7 เชตเชธเซเชคเซเช“ เชœเซ‡ เชคเชฎเชพเชฐเซ‡ เชถเชฐเซ‚เช†เชคเชฅเซ€ เชœ เชœเชพเชฃเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡

เชจเซ‰เซ…เชง. เช…เชจเซเชตเชพเชฆ: เช…เชฎเซ‡ เชคเชฎเชพเชฐเชพ เชงเซเชฏเชพเชจ เชชเชฐ เชฌเซเชฐเชฟเชŸเชฟเชถ เช•เช‚เชชเชจเซ€ ASOS.com เชชเชฐ เชธเชฟเชจเชฟเชฏเชฐ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ เชธเชฟเช•เซเชฏเซเชฐเชฟเชŸเซ€ เชเชจเซเชœเชฟเชจเชฟเชฏเชฐเชจเชพ เชฒเซ‡เช–เชจเซ‹ เช…เชจเซเชตเชพเชฆ เชฐเชœเซ‚ เช•เชฐเซ€เช เช›เซ€เช. เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡, เชคเซ‡ seccomp เชจเชพ เช‰เชชเชฏเซ‹เช— เชฆเซเชตเชพเชฐเชพ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชธเซเชฐเช•เซเชทเชพ เชธเซเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชชเชฟเชค เชชเซเชฐเช•เชพเชถเชจเซ‹เชจเซ€ เชถเซเชฐเซ‡เชฃเซ€ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เชตเชพเชšเช•เซ‹เชจเซ‡ เชชเชฐเชฟเชšเชฏ เช—เชฎเชถเซ‡, เชคเซ‹ เช…เชฎเซ‡ เชฒเซ‡เช–เช•เชจเซ‡ เช…เชจเซเชธเชฐเซ€เชถเซเช‚ เช…เชจเซ‡ เช† เชตเชฟเชทเชฏ เชชเชฐ เชคเซ‡เชฎเชจเซ€ เชญเชพเชตเชฟ เชธเชพเชฎเช—เซเชฐเซ€เช“ เชธเชพเชฅเซ‡ เชšเชพเชฒเซ เชฐเชพเช–เซ€เชถเซเช‚.

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชธเซ‡เช•เช•เซ‹เชฎเซเชช: 7 เชตเชธเซเชคเซเช“ เชœเซ‡ เชคเชฎเชพเชฐเซ‡ เชถเชฐเซ‚เช†เชคเชฅเซ€ เชœ เชœเชพเชฃเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡

เชœเชพเชฆเซ เช…เชจเซ‡ เชฎเซ‡เชฒเซ€เชตเชฟเชฆเซเชฏเชพเชจเซ‹ เช†เชถเชฐเซ‹ เชฒเซ€เชงเชพ เชตเชฟเชจเชพ, SecDevOps เชจเซ€ เชญเชพเชตเชจเชพเชฎเชพเช‚ seccomp เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซ€ เชคเซ‡ เช…เช‚เช—เซ‡เชจเซ€ เชถเซเชฐเซ‡เชฃเซ€เชฌเชฆเซเชง เชชเซ‹เชธเซเชŸเซเชธเชฎเชพเช‚ เช† เชฒเซ‡เช– เชชเชนเซ‡เชฒเซ‹ เช›เซ‡. เชญเชพเช— XNUMX เชฎเชพเช‚, เชนเซเช‚ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ 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"
        }
    ]
}

(medium-basic-seccomp.json)

defaultAction เชตเชฟเชญเชพเช—เชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชจ เชนเซ‹เชฏ เชคเซ‡เชตเชพ เช•เซ‹เชˆเชชเชฃ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเชจเซเช‚ เชกเชฟเชซเซ‹เชฒเซเชŸ เชญเชพเชตเชฟ เชจเช•เซเช•เซ€ เช•เชฐเซ‡ เช›เซ‡ syscalls. เชตเชธเซเชคเซเช“เชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชšเชพเชฒเซ‹ เชฌเซ‡ เชฎเซเช–เซเชฏ เชฎเซ‚เชฒเซเชฏเซ‹ เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเซ€เช เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡:

  • SCMP_ACT_ERRNO - เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเชจเชพ เช…เชฎเชฒเชจเซ‡ เช…เชตเชฐเซ‹เชงเซ‡ เช›เซ‡,
  • SCMP_ACT_ALLOW - เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡.

เช•เชฒเชฎ architectures เชฒเช•เซเชทเซเชฏ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชธเซ‚เชšเชฟเชฌเชฆเซเชง เช›เซ‡. เช† เช…เช—เชคเซเชฏเชจเซเช‚ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชซเชฟเชฒเซเชŸเชฐ เชชเซ‹เชคเซ‡, เช•เชฐเซเชจเชฒ เชธเซเชคเชฐเซ‡ เชฒเชพเช—เซ เชฅเชพเชฏ เช›เซ‡, เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒ เช“เชณเช–เช•เชฐเซเชคเชพเช“ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡, เช…เชจเซ‡ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชคเซ‡เชฎเชจเชพ เชจเชพเชฎเซ‹ เชชเชฐ เชจเชนเซ€เช‚. เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเชจเชŸเชพเชˆเชฎ เชคเซ‡เชฎเชจเซ‡ เช“เชณเช–เช•เชฐเซเชคเชพเช“ เชธเชพเชฅเซ‡ เชฎเซ‡เชš เช•เชฐเชถเซ‡. เชตเชฟเชšเชพเชฐ เช เช›เซ‡ เช•เซ‡ เชธเชฟเชธเซเชŸเชฎ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเชพ เช†เชงเชพเชฐเซ‡ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธเชฎเชพเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช…เชฒเช— ID เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒ recvfrom (เชธเซ‹เช•เซ‡เชŸเชฎเชพเช‚เชฅเซ€ เชฎเชพเชนเชฟเชคเซ€ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชฏ เช›เซ‡) เชชเชพเชธเซ‡ x64 เชธเชฟเชธเซเชŸเชฎ เชชเชฐ ID = 64 เช…เชจเซ‡ x517 เชชเชฐ ID = 86 เช›เซ‡. เชคเซ‡ เชคเชฎเซ‡ x86-x64 เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฎ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธเชจเซ€ เชธเซ‚เชšเชฟ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹.

เชตเชฟเชญเชพเช—เชฎเชพเช‚ syscalls เชฌเชงเชพ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธเชจเซ€ เชฏเชพเชฆเซ€ เช†เชชเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ€ เชธเชพเชฅเซ‡ เชถเซเช‚ เช•เชฐเชตเซเช‚ เชคเซ‡ เชธเซเชชเชทเซเชŸ เช•เชฐเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเซ‡ เชธเซ‡เชŸเชฟเช‚เช— เช•เชฐเซ€เชจเซ‡ เชตเซเชนเชพเช‡เชŸเชฒเชฟเชธเซเชŸ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹ defaultAction เชชเชฐ SCMP_ACT_ERRNO, เช…เชจเซ‡ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เช•เซ‰เชฒ เช•เชฐเซ‹ syscalls เชธเซ‹เช‚เชชเชตเซเช‚ SCMP_ACT_ALLOW. เช†เชฎ, เชคเชฎเซ‡ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เช•เซ‰เชฒเซเชธเชจเซ‡ เชœ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‹ เช›เซ‹ syscalls, เช…เชจเซ‡ เชฌเซ€เชœเชพ เชฌเชงเชพเชจเซ‡ เชชเซเชฐเชคเชฟเชฌเช‚เชงเชฟเชค เช•เชฐเซ‹. เชฌเซเชฒเซ‡เช•เชฒเชฟเชธเซเชŸ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เชฎเซ‚เชฒเซเชฏเซ‹ เชฌเชฆเชฒเชตเซ€ เชœเซ‹เชˆเช defaultAction เช…เชจเซ‡ เชตเชฟเชฐเซเชฆเซเชง เช•เซเชฐเชฟเชฏเชพเช“.

เชนเชตเซ‡ เช†เชชเชฃเซ‡ เช˜เซ‹เช‚เช˜เชพเชŸ เชตเชฟเชถเซ‡ เชฅเซ‹เชกเชพเช• เชถเชฌเซเชฆเซ‹ เช•เชนเซ‡เชตเชพ เชœเซ‹เชˆเช เชœเซ‡ เชเชŸเชฒเชพ เชธเซเชชเชทเซเชŸ เชจเชฅเซ€. เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เชจเซ€เชšเซ‡ เช†เชชเซ‡เชฒเซ€ เชญเชฒเชพเชฎเชฃเซ‹ เชงเชพเชฐเซ‡ เช›เซ‡ เช•เซ‡ เชคเชฎเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชชเชฐ เชตเซเชฏเชตเชธเชพเชฏเชฟเช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเซ€ เชฒเชพเช‡เชจ เชœเชฎเชพเชตเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ‹ เช…เชจเซ‡ เชคเชฎเซ‡ เช‡เชšเซเช›เซ‹ เช›เซ‹ เช•เซ‡ เชคเซ‡ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเชพ เช“เช›เชพ เชตเชฟเชถเซ‡เชทเชพเชงเชฟเช•เชพเชฐเซ‹ เชธเชพเชฅเซ‡ เชšเชพเชฒเซ‡.

1. AllowPrivilegeEscalation=false

ะ’ securityContext เช•เชจเซเชŸเซ‡เชจเชฐ เชเช• เชชเชฐเชฟเชฎเชพเชฃ เชงเชฐเชพเชตเซ‡ เช›เซ‡ AllowPrivilegeEscalation. เชœเซ‹ เชคเซ‡ เชฎเชพเช‚ เชธเซเชฅเชพเชชเชฟเชค เชฅเชฏเซ‡เชฒ เช›เซ‡ false, เช•เชจเซเชŸเซ‡เชจเชฐ เชธเชพเชฅเซ‡ เชถเชฐเซ‚ เชฅเชถเซ‡ (on) เชฌเซ€เชŸ no_new_priv. เช† เชชเชฐเชฟเชฎเชพเชฃเชจเซ‹ เช…เชฐเซเชฅ เชจเชพเชฎ เชชเชฐเชฅเซ€ เชธเซเชชเชทเซเชŸ เช›เซ‡: เชคเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‡ เชคเซ‡เชจเชพ เช•เชฐเชคเชพ เชตเชงเซ เชตเชฟเชถเซ‡เชทเชพเชงเชฟเช•เชพเชฐเซ‹ เชธเชพเชฅเซ‡ เชจเชตเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชถเชฐเซ‚ เช•เชฐเชตเชพเชฅเซ€ เช…เชŸเช•เชพเชตเซ‡ เช›เซ‡.

เช† เชตเชฟเช•เชฒเซเชชเชจเซ€ เช†เชกเช…เชธเชฐ เชธเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซ€ เช›เซ‡ true (เชกเชฟเชซเซ‰เชฒเซเชŸ) เช เช›เซ‡ เช•เซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเชจเชŸเชพเช‡เชฎ เชธเซเชŸเชพเชฐเซเชŸเช…เชช เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชœ seccomp เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชจเซ‡ เชฒเชพเช—เซ เช•เชฐเซ‡ เช›เซ‡. เช†เชฎ, เช†เช‚เชคเชฐเชฟเช• เชฐเชจเชŸเชพเช‡เชฎ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชคเชฎเชพเชฎ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธ (เชฆเชพ.เชค. เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ/เชœเซ‚เชฅ ID เชธเซ‡เชŸ เช•เชฐเชตเชพ, เช…เชฎเซเช• เช•เซเชทเชฎเชคเชพเช“ เช›เซ‹เชกเชตเซ€) เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฎเชพเช‚ เชธเช•เซเชทเชฎ เชนเซ‹เชตเชพ เชœเซ‹เชˆเช.

เชเช• เช•เชจเซเชŸเซ‡เชจเชฐ เช•เซ‡ เชœเซ‡ เชคเซเชšเซเช› เชตเชธเซเชคเซเช“ เช•เชฐเซ‡ เช›เซ‡ 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"
        }
    ]
}

(hi-pod-seccomp.json)

...เช†เชจเชพ เชฌเชฆเชฒเซ‡:

{
    "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"
        }
    ]
}

(hi-container-seccomp.json)

เชชเชฐเช‚เชคเซ เชซเชฐเซ€เชฅเซ€, เชถเชพ เชฎเชพเชŸเซ‡ เช† เชธเชฎเชธเซเชฏเชพ เช›เซ‡? เชตเซเชฏเช•เซเชคเชฟเช—เชค เชฐเซ€เชคเซ‡, เชนเซเช‚ เชจเซ€เชšเซ‡เชจเชพ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธเชจเซ‡ เชตเซเชนเชพเช‡เชŸเชฒเชฟเชธเซเชŸ เช•เชฐเชตเชพเชจเซเช‚ เชŸเชพเชณเซ€เชถ (เชธเชฟเชตเชพเชฏ เช•เซ‡ เชคเซ‡เชฎเชจเซ€ เชตเชพเชธเซเชคเชตเชฟเช• เชœเชฐเซ‚เชฐเชฟเชฏเชพเชค เชนเซ‹เชฏ): capset, set_tid_address, setgid, setgroups ะธ setuid. เชœเซ‹ เช•เซ‡, เชตเชพเชธเซเชคเชตเชฟเช• เชชเชกเช•เชพเชฐ เช เช›เซ‡ เช•เซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเช“เชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ€เชจเซ‡ เช•เซ‡ เชœเซ‡เชจเชพ เชชเชฐ เชคเชฎเชพเชฐเซเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชจเชฅเซ€, เชคเชฎเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเชจเชŸเชพเช‡เชฎ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชธเชพเชฅเซ‡ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธเชจเซ‡ เชœเซ‹เชกเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ‹. เชฌเซ€เชœเชพ เชถเชฌเซเชฆเซ‹เชฎเชพเช‚ เช•เชนเซ€เช เชคเซ‹, เชเช• เชฆเชฟเชตเชธ เชคเชฎเซ‡ เชœเซ‹เชถเซ‹ เช•เซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเชจเชŸเชพเช‡เชฎ เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซ‡เชจเซเชŸ เช…เชชเชกเซ‡เชŸ เช•เชฐเซเชฏเชพ เชชเช›เซ€ (เช•เซเชฏเชพเช‚ เชคเซ‹ เชคเชฎเชพเชฐเชพ เชฆเซเชตเชพเชฐเชพ เช…เชฅเชตเชพ, เชตเชงเซ เชธเช‚เชญเชต เช›เซ‡, เช•เซเชฒเชพเช‰เชก เชธเซ‡เชตเชพ เชชเซเชฐเชฆเชพเชคเชพ เชฆเซเชตเชพเชฐเชพ), เช•เชจเซเชŸเซ‡เชจเชฐ เช…เชšเชพเชจเช• เชšเชพเชฒเชตเชพเชจเซเช‚ เชฌเช‚เชง เช•เชฐเซ€ เชฆเซ‡ เช›เซ‡.

เชŸเซ€เชช # 1: เชธเชพเชฅเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชšเชฒเชพเชตเซ‹ AllowPrivilegeEscaltion=false. เช† seccomp เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธเชจเซเช‚ เช•เชฆ เช˜เชŸเชพเชกเชถเซ‡ เช…เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเชจเชŸเชพเช‡เชฎ เชชเชฐเซเชฏเชพเชตเชฐเชฃเชฎเชพเช‚ เชฅเชคเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชฎเชพเชŸเซ‡ เชคเซ‡เชฎเชจเซ‡ เช“เช›เชพ เชธเช‚เชตเซ‡เชฆเชจเชถเซ€เชฒ เชฌเชจเชพเชตเชถเซ‡.

2. เช•เชจเซเชŸเซ‡เชจเชฐ เชฒเซ‡เชตเชฒ เชชเชฐ เชธเซ‡เช•เช•เซ‹เชฎเซเชช เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชธเซ‡เชŸ เช•เชฐเชตเซ€

seccomp เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชชเซ‹เชก เชธเซเชคเชฐ เชชเชฐ เชธเซ‡เชŸ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡:

annotations:
  seccomp.security.alpha.kubernetes.io/pod: "localhost/profile.json"

...เช…เชฅเชตเชพ เช•เชจเซเชŸเซ‡เชจเชฐ เชธเซเชคเชฐ เชชเชฐ:

annotations:
  container.security.alpha.kubernetes.io/<container-name>: "localhost/profile.json"

เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เชœเซเชฏเชพเชฐเซ‡ Kubernetes seccomp เชคเซเชฏเชพเชฐเซ‡ เช‰เชชเชฐเซ‹เช•เซเชค เชตเชพเช•เซเชฏเชฐเชšเชจเชพ เชฌเชฆเชฒเชพเชถเซ‡ GA เชฌเชจเชถเซ‡ (เช† เช˜เชŸเชจเชพ Kubernetes - 1.18 - เช†เชถเชฐเซ‡ เช…เชจเซเชตเชพเชฆเชจเซ€ เช†เช—เชพเชฎเซ€ เชชเซเชฐเช•เชพเชถเชจเชฎเชพเช‚ เช…เชชเซ‡เช•เซเชทเชฟเชค เช›เซ‡).

เชฌเชนเซ เช“เช›เชพ เชฒเซ‹เช•เซ‹ เชœเชพเชฃเซ‡ เช›เซ‡ เช•เซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชนเช‚เชฎเซ‡เชถเชพ เชงเชฐเชพเชตเซ‡ เช›เซ‡ เชญเซ‚เชฒเชœเซ‡เชจเชพ เช•เชพเชฐเชฃเซ‡ seccomp เชฐเซ‚เชชเชฐเซ‡เช–เชพเช“ เชฒเชพเช—เซ เชฅเชˆ เชฅเซ‹เชญเซ‹ เช•เชจเซเชŸเซ‡เชจเชฐ. เชฐเชจเชŸเชพเชˆเชฎ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เช†เช‚เชถเชฟเช• เชฐเซ€เชคเซ‡ เช† เช–เชพเชฎเซ€เชจเซ‡ เชตเชณเชคเชฐ เช†เชชเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช† เช•เชจเซเชŸเซ‡เชจเชฐ เชถเซ€เช‚เช—เซ‹เชฎเชพเช‚เชฅเซ€ เช…เชฆเซƒเชถเซเชฏ เชฅเชคเซเช‚ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชคเซ‡เชฎเชจเชพ เชˆเชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐเชจเซ‡ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡.

เชธเชฎเชธเซเชฏเชพ เช เช›เซ‡ เช•เซ‡ เช† เช•เชจเซเชŸเซ‡เชจเชฐ เชนเช‚เชฎเซ‡เชถเชพ เชธเชพเชฅเซ‡ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡ AllowPrivilegeEscalation=true, เชซเช•เชฐเชพ 1 เชฎเชพเช‚ เชฐเชœเซ‚ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเซ€ เชธเชฎเชธเซเชฏเชพเช“ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡, เช…เชจเซ‡ เช† เชฌเชฆเชฒเซ€ เชถเช•เชพเชคเซ€ เชจเชฅเซ€.

เช•เชจเซเชŸเซ‡เชจเชฐ เชธเซเชคเชฐเซ‡ seccomp เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชคเชฎเซ‡ เช† เชฎเซเชถเซเช•เซ‡เชฒเซ€เชจเซ‡ เชŸเชพเชณเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชšเซ‹เช•เซเช•เชธ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‡ เช…เชจเซเชฐเซ‚เชช เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹. เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชฌเช—เชจเซ‡ เช เซ€เช• เช•เชฐเซ‡ เช…เชจเซ‡ เชจเชตเซเช‚ เชธเช‚เชธเซเช•เชฐเชฃ (เช•เชฆเชพเชš 1.18?) เชฆเชฐเซ‡เช• เชฎเชพเชŸเซ‡ เช‰เชชเชฒเชฌเซเชง เชจ เชฅเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เช† เช•เชฐเชตเชพเชจเซเช‚ เชฐเชนเซ‡เชถเซ‡.

เชŸเซ€เชช # 2: เช•เชจเซเชŸเซ‡เชจเชฐ เชธเซเชคเชฐ เชชเชฐ seccomp เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธ เชธเซ‡เชŸ เช•เชฐเซ‹.

เชตเซเชฏเชตเชนเชพเชฐเชฟเช• เช…เชฐเซเชฅเชฎเชพเช‚, เช† เชจเชฟเชฏเชฎ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชชเซเชฐเชถเซเชจเชจเชพ เชธเชพเชฐเซเชตเชคเซเชฐเชฟเช• เชœเชตเชพเชฌ เชคเชฐเซ€เช•เซ‡ เชธเซ‡เชตเชพ เช†เชชเซ‡ เช›เซ‡: โ€œเชฎเชพเชฐเซ€ เชธเซ‡เช•เช•เซ‹เชฎเซเชช เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชถเชพ เชฎเชพเชŸเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ docker runเชชเชฐเช‚เชคเซ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชœเชฎเชพเชตเซเชฏเชพ เชชเช›เซ€ เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชจเชฅเซ€?

3. เชฎเชพเชคเซเชฐ เช›เซ‡เชฒเซเชฒเชพ เช‰เชชเชพเชฏ เชคเชฐเซ€เช•เซ‡ เชฐเชจเชŸเชพเช‡เชฎ/เชกเชฟเชซเซ‹เชฒเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹

เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธ เชฎเชพเชŸเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชชเชพเชธเซ‡ เชฌเซ‡ เชตเชฟเช•เชฒเซเชชเซ‹ เช›เซ‡: runtime/default ะธ docker/default. เชฌเช‚เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฐเชจเชŸเชพเช‡เชฎ เชฆเซเชตเชพเชฐเชพ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชฆเซเชตเชพเชฐเชพ เชจเชนเซ€เช‚. เชคเซ‡เชฅเซ€, เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เชฐเชจเชŸเชพเช‡เชฎ เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซ‡เชจเซเชŸ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชตเชฐเซเชเชจเชจเชพ เช†เชงเชพเชฐเซ‡ เชคเซ‡เช“ เช…เชฒเช— เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.

เชฌเซ€เชœเชพ เชถเชฌเซเชฆเซ‹เชฎเชพเช‚ เช•เชนเซ€เช เชคเซ‹, เชฐเชจเชŸเชพเช‡เชฎ เชฌเชฆเชฒเชตเชพเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช•เชจเซเชŸเซ‡เชจเชฐ เชชเชพเชธเซ‡ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธเชจเชพ เช…เชฒเช— เชธเซ‡เชŸเชจเซ€ เชเช•เซเชธเซ‡เชธ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เชœเซ‡เชจเซ‹ เชคเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชฅเชตเชพ เชจ เชชเชฃ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เชฐเชจเชŸเชพเช‡เชฎเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡ เชกเซ‹เช•เชฐ เช…เชฎเชฒเซ€เช•เชฐเชฃ. เชœเซ‹ เชคเชฎเซ‡ เช† เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ เช•เซ‡ เชคเซ‡ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ เช›เซ‡.

เชชเซเชฐเซ‹เชซเชพเช‡เชฒ docker/default Kubernetes 1.11 เชฅเซ€ เชจเชพเชชเชธเช‚เชฆ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เชคเซ‡เชฅเซ€ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชŸเชพเชณเซ‹.

เชฎเชพเชฐเชพ เชฎเชคเซ‡, เชชเซเชฐเซ‹เชซเชพเช‡เชฒ runtime/default เชœเซ‡ เชนเซ‡เชคเซ เชฎเชพเชŸเซ‡ เชคเซ‡ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ€เชคเซ‡ เช…เชจเซเช•เซ‚เชณ เช›เซ‡: เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเชตเชพ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒเชพ เชœเซ‹เช–เชฎเซ‹เชฅเซ€ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเซเช‚ เชฐเช•เซเชทเชฃ เช•เชฐเชตเซเช‚ docker run เชคเซ‡เชฎเชจเซ€ เช•เชพเชฐ เชชเชฐ. เชœเซ‹ เช•เซ‡, เชœเซเชฏเชพเชฐเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเซ‹ เชชเชฐ เชšเชพเชฒเชคเซ€ เชตเซเชฏเชตเชธเชพเชฏเชฟเช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเซ€ เชตเชพเชค เช†เชตเซ‡ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชนเซเช‚ เชเชตเซ€ เชฆเชฒเซ€เชฒ เช•เชฐเชตเชพเชจเซ€ เชนเชฟเช‚เชฎเชค เช•เชฐเซ€เชถ เช•เซ‡ เช†เชตเซ€ เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เช–เซ‚เชฌ เช–เซเชฒเซเชฒเซ€ เช›เซ‡ เช…เชจเซ‡ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เช เชคเซ‡เชฎเชจเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ (เช…เชฅเชตเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เชชเซเชฐเช•เชพเชฐเซ‹) เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธ เชฌเชจเชพเชตเชตเชพ เชชเชฐ เชงเซเชฏเชพเชจ เช•เซ‡เชจเซเชฆเซเชฐเชฟเชค เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช.

เชŸเซ€เชช # 3: เชšเซ‹เช•เซเช•เชธ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ เชฎเชพเชŸเซ‡ seccomp เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธ เชฌเชจเชพเชตเซ‹. เชœเซ‹ เช† เชถเช•เซเชฏ เชจ เชนเซ‹เชฏ เชคเซ‹, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเซเชฐเช•เชพเชฐเซ‹ เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธ เชฌเชจเชพเชตเซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชเช• เช…เชฆเซเชฏเชคเชจ เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฌเชจเชพเชตเซ‹ เชœเซ‡เชฎเชพเช‚ เช—เซ‹เชฒเชพเช‚เช— เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เชคเชฎเชพเชฎ เชตเซ‡เชฌ API เชถเชพเชฎเซ‡เชฒ เชนเซ‹เชฏ. เชฎเชพเชคเซเชฐ เช›เซ‡เชฒเซเชฒเชพ เช‰เชชเชพเชฏ เชคเชฐเซ€เช•เซ‡ เชฐเชจเชŸเชพเช‡เชฎ/เชกเชฟเชซเซ‹เชฒเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹.

เชญเชตเชฟเชทเซเชฏเชจเซ€ เชชเซ‹เชธเซเชŸเซเชธเชฎเชพเช‚, เชนเซเช‚ SecDevOps-เชชเซเชฐเซ‡เชฐเชฟเชค seccomp เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซ€, เชคเซ‡เชฎเชจเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชชเชพเช‡เชชเชฒเชพเช‡เชจเซเชธเชฎเชพเช‚ เชคเซ‡เชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซเช‚ เชคเซ‡ เช†เชตเชฐเซ€ เชฒเชˆเชถ. เชฌเซ€เชœเชพ เชถเชฌเซเชฆเซ‹เชฎเชพเช‚ เช•เชนเซ€เช เชคเซ‹, เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ-เชตเชฟเชถเชฟเชทเซเชŸ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธเชฎเชพเช‚ เช…เชชเช—เซเชฐเซ‡เชก เชจ เชฅเชตเชพเชจเซเช‚ เช•เซ‹เชˆ เชฌเชนเชพเชจเซเช‚ เชจเชฅเซ€.

4. เช…เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช เชตเชฟเช•เชฒเซเชช เชจเชฅเซ€.

เชจเชพ เชชเซเชฐเชฅเชฎ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชธเซเชฐเช•เซเชทเชพ เช“เชกเชฟเชŸ เชคเซ‡ เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ seccomp เช…เช•เซเชทเชฎ. เชฎเชคเชฒเชฌ เช•เซ‡ เชœเซ‹ เชคเชฎเซ‡ เชธเซ‡เชŸ เชจ เช•เชฐเซ‹ PodSecurityPolicy, เชœเซ‡ เชคเซ‡เชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชธเช•เซเชทเชฎ เช•เชฐเชถเซ‡, เชฌเชงเชพ เชชเซ‹เชกเซเชธ เช•เซ‡ เชœเซ‡เชจเชพ เชฎเชพเชŸเซ‡ seccomp เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชจเชฅเซ€ เชคเซ‡เชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเชถเซ‡. seccomp=unconfined.

เช† เชฎเซ‹เชกเชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เช‡เชจเซเชธเซเชฏเซเชฒเซ‡เชถเชจเชจเซ‹ เชเช• เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซเชคเชฐ เช–เซ‹เชตเชพเชˆ เช—เชฏเซ‹ เช›เซ‡ เชœเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชจเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เชธเซเชฐเช•เซเชทเชพ เชจเชฟเชทเซเชฃเชพเชคเซ‹ เชฆเซเชตเชพเชฐเชพ เช† เช…เชญเชฟเช—เชฎเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เชจเชฅเซ€.

เชŸเซ€เชช # 4: เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เช•เซ‹เชˆ เช•เชจเซเชŸเซ‡เชจเชฐ เช…เช‚เชฆเชฐ เชšเชพเชฒเชคเซเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช เชจเชนเซ€เช‚ seccomp=unconfined, เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เช‰เชคเซเชชเชพเชฆเชจ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚.

5. "เช“เชกเชฟเชŸ เชฎเซ‹เชก"

เช† เชฌเชฟเช‚เชฆเซ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชฎเชพเชŸเซ‡ เช…เชจเชจเซเชฏ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎ เช›เชคเชพเช‚ เชคเซ‡ "เชถเชฐเซ‚ เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เชœเชพเชฃเชตเชพ เชœเซ‡เชตเซ€ เชฌเชพเชฌเชคเซ‹" เชถเซเชฐเซ‡เชฃเซ€เชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชœเซ‡เชฎ เชคเซ‡เชฎ เชฅเชพเชฏ เช›เซ‡ เชคเซ‡เชฎ, seccomp เชชเซเชฐเซ‹เชซเชพเช‡เชฒเซเชธ เชฌเชจเชพเชตเชตเซ€ เชนเช‚เชฎเซ‡เชถเชพ เชชเชกเช•เชพเชฐเชœเชจเช• เชฐเชนเซ€ เช›เซ‡ เช…เชจเซ‡ เชŸเซเชฐเชพเชฏเชฒ เช…เชจเซ‡ เชเชฐเชฐ เชชเชฐ เช–เซ‚เชฌ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡. เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชชเชพเชธเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ "เชกเซเชฐเซ‹เชช" เช•เชฐเชตเชพเชจเซเช‚ เชœเซ‹เช–เชฎ เชฒเซ€เชงเชพ เชตเชฟเชจเชพ เช‰เชคเซเชชเชพเชฆเชจ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เชคเซ‡เชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชจเซ€ เชคเช• เชจเชฅเซ€.

Linux เช•เชฐเซเชจเชฒ 4.14 เชจเชพ เชชเซเชฐเช•เชพเชถเชจ เชชเช›เซ€, เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชจเชพ เชญเชพเช—เซ‹เชจเซ‡ เช“เชกเชฟเชŸ เชฎเซ‹เชกเชฎเชพเช‚ เชšเชฒเชพเชตเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชฌเชจเซเชฏเซเช‚, syslog เชฎเชพเช‚ เชคเชฎเชพเชฎ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเชตเซ€, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎเชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ. เชคเชฎเซ‡ เชชเชฐเชฟเชฎเชพเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช† เชฎเซ‹เชกเชจเซ‡ เชธเช•เซเชฐเชฟเชฏ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ SCMT_ACT_LOG:

SCMP_ACT_LOG: seccomp เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชฅเซเชฐเซ‡เชกเชจเซ‡ เช…เชธเชฐ เช•เชฐเชถเซ‡ เชจเชนเซ€เช‚ เชœเซ‹ เชคเซ‡ เชซเชฟเชฒเซเชŸเชฐเชฎเชพเช‚ เช•เซ‹เชˆเชชเชฃ เชจเชฟเชฏเชฎ เชธเชพเชฅเซ‡ เชฎเซ‡เชณ เช–เชพเชคเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชฒเซ‰เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เช† เชธเซเชตเชฟเชงเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชนเซ€เช‚ เชเช• เชฒเชพเช•เซเชทเชฃเชฟเช• เชตเซเชฏเซ‚เชนเชฐเชšเชจเชพ เช›เซ‡:

  1. เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธเชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‹ เชœเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.
  2. เชคเชฎเซ‡ เชœเชพเชฃเซ‹ เช›เซ‹ เชคเซ‡ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚เชฅเซ€ เช•เซ‰เชฒเซเชธเชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเซ‹ เช‰เชชเชฏเซ‹เช—เซ€ เชฅเชถเซ‡ เชจเชนเซ€เช‚.
  3. เชฒเซ‹เช—เชฎเชพเช‚ เช…เชจเซเชฏ เชคเชฎเชพเชฎ เช•เซ‹เชฒเซเชธ เชตเชฟเชถเซ‡เชจเซ€ เชฎเชพเชนเชฟเชคเซ€ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเซ‹.

เชเช• เชธเชฐเชณ เช‰เชฆเชพเชนเชฐเชฃ เช†เชจเชพ เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡:

{
    "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"
        }
    ]
}

(เชฎเชงเซเชฏเชฎ-เชฎเชฟเชถเซเชฐเชฟเชค-seccomp.json)

เชชเชฐเช‚เชคเซ เชฏเชพเชฆ เชฐเชพเช–เซ‹ เช•เซ‡ เชคเชฎเชพเชฐเซ‡ เชเชตเชพ เชฌเชงเชพ เช•เซ‰เชฒเซเชธเชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡เชจเซ‹ เชคเชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเชถเซ‹ เชจเชนเซ€เช‚ เช…เชจเซ‡ เชคเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชจเซ‡ เชธเช‚เชญเชตเชฟเชค เชฐเซ€เชคเซ‡ เชจเซเช•เชธเชพเชจ เชชเชนเซ‹เช‚เชšเชพเชกเซ€ เชถเช•เซ‡ เช›เซ‡. เชฏเชพเชฆเซ€ เชคเซˆเชฏเชพเชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เชเช• เชธเชพเชฐเซ‹ เช†เชงเชพเชฐ เชธเชคเซเชคเชพเชตเชพเชฐ เช›เซ‡ เชกเซ‹เช•เชฐ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ€เช•เชฐเชฃ. เชคเซ‡ เชตเชฟเช—เชคเชตเชพเชฐ เชธเชฎเชœเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชกเชฟเชซเซ‹เชฒเซเชŸ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฎเชพเช‚ เช•เชฏเชพ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒเซเชธ เช…เชตเชฐเซ‹เชงเชฟเชค เช›เซ‡ เช…เชจเซ‡ เชถเชพ เชฎเชพเชŸเซ‡.

เชœเซ‹ เช•เซ‡, เชคเซเชฏเชพเช‚ เชเช• เช•เซ‡เชš เช›เซ‡. เชœเซ‹เช•เซ‡ SCMT_ACT_LOG 2017 เชจเชพ เช…เช‚เชคเชฅเซ€ เชฒเชฟเชจเช•เซเชธ เช•เชฐเซเชจเชฒ เชฆเซเชตเชพเชฐเชพ เชธเชฎเชฐเซเชฅเชฟเชค, เชคเซ‡ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชคเชพเชœเซ‡เชคเชฐเชฎเชพเช‚ เชœ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช‡เช•เซ‹เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชชเซเชฐเชตเซ‡เชถเซเชฏเซเช‚. เชคเซ‡เชฅเซ€, เช† เชชเชฆเซเชงเชคเชฟเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ Linux เช•เชฐเซเชจเชฒ 4.14 เช…เชจเซ‡ runC เชตเชฐเซเชเชจเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡ v1.0.0-rc9.

เชŸเซ€เชช # 5: เช‰เชคเซเชชเชพเชฆเชจเชฎเชพเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เชฎเชพเชŸเซ‡ เช“เชกเชฟเชŸ เชฎเซ‹เชก เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฌเซเชฒเซ‡เช• เชเชจเซเชก เชตเซเชนเชพเช‡เชŸ เชฒเชฟเชธเซเชŸเชจเซ‡ เชœเซ‹เชกเซ€เชจเซ‡ เชฌเชจเชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเชพเชฎ เช…เชชเชตเชพเชฆเซ‹เชจเซ‡ เชฒเซ‰เช— เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

6. เชตเซเชนเชพเช‡เชŸเชฒเชฟเชธเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹

เชตเซเชนเชพเช‡เชŸเชฒเชฟเชธเซเชŸเชฟเช‚เช— เชฎเชพเชŸเซ‡ เชตเชงเชพเชฐเชพเชจเชพ เชชเซเชฐเชฏเชคเซเชจเซ‹เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชคเชฎเชพเชฐเซ‡ เชฆเชฐเซ‡เช• เช•เซ‰เชฒเชจเซ‡ เช“เชณเช–เชตเซ‹ เชชเชกเชถเซ‡ เชœเซ‡เชจเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชœเชฐเซ‚เชฐ เชชเชกเซ€ เชถเช•เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช† เช…เชญเชฟเช—เชฎ เชธเซเชฐเช•เซเชทเชพเชจเซ‡ เชฎเซ‹เชŸเชพ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชธเซเชงเชพเชฐเซ‡ เช›เซ‡:

เชตเซเชนเชพเช‡เชŸเชฒเชฟเชธเซเชŸ เช…เชญเชฟเช—เชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เช–เซ‚เชฌ เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชธเชฐเชณ เช…เชจเซ‡ เชตเชงเซ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ เชชเชฃ เชธเช‚เชญเชตเชฟเชค เชœเซ‹เช–เชฎเซ€ เชธเชฟเชธเซเชŸเชฎ เช•เซ‰เชฒ (เช…เชฅเชตเชพ เชœเซ‹ เชคเซ‡ เชฌเซเชฒเซ‡เช•เชฒเชฟเชธเซเชŸเชฎเชพเช‚ เชนเซ‹เชฏ เชคเซ‹ เช–เชคเชฐเชจเชพเช• เชซเซเชฒเซ‡เช—/เชตเชฟเช•เชฒเซเชช) เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชฌเซเชฒเซ‡เช•เชฒเชฟเชธเซเชŸเชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡. เชตเชงเซเชฎเชพเช‚, เชชเชฐเชฟเชฎเชพเชฃเชจเซ€ เชฐเชœเซ‚เช†เชคเชจเซ‡ เชคเซ‡เชจเชพ เชธเชพเชฐเชจเซ‡ เชฌเชฆเชฒเซเชฏเชพ เชตเชฟเชจเชพ เชฌเชฆเชฒเชตเชพเชจเซเช‚ เช…เชจเซ‡ เชคเซเชฏเชพเช‚เชฅเซ€ เชฌเซเชฒเซ‡เช•เชฒเชฟเชธเซเชŸเชจเชพ เชชเซเชฐเชคเชฟเชฌเช‚เชงเซ‹เชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเชตเซเช‚ เช˜เชฃเซ€เชตเชพเชฐ เชถเช•เซเชฏ เช›เซ‡.

เช—เซ‹ เชเชชเซเชฒเซ€เช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡, เชฎเซ‡เช‚ เชเช• เช–เชพเชธ เชธเชพเชงเชจ เชตเชฟเช•เชธเชพเชตเซเชฏเซเช‚ เช›เซ‡ เชœเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชพเชฅเซ‡ เช›เซ‡ เช…เชจเซ‡ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เชคเชฎเชพเชฎ เช•เซ‹เชฒเซเชธ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชจเซ€เชšเซ‡เชจเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡:

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 เชคเซ‡เชจเซ‡ เช…เชŸเช•เซ€ เชฆเซ‹o เช…เชจเชฟเชถเซเชšเชฟเชค เชธเชฎเชฏ เชฎเชพเชŸเซ‡. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชคเชฎเชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เช‰เชšเซเชš CPU เชตเชชเชฐเชพเชถ เชฎเชณเชถเซ‡:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชธเซ‡เช•เช•เซ‹เชฎเซเชช: 7 เชตเชธเซเชคเซเช“ เชœเซ‡ เชคเชฎเชพเชฐเซ‡ เชถเชฐเซ‚เช†เชคเชฅเซ€ เชœ เชœเชพเชฃเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡

เช†เชตเชพ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚, เช‰เชชเชฏเซ‹เช—เชฟเชคเชพ เชฌเชšเชพเชตเชฎเชพเช‚ เช†เชตเซ€ เชถเช•เซ‡ เช›เซ‡ strace - เชคเซ‡ เชฌเชคเชพเชตเชถเซ‡ เช•เซ‡ เชธเชฎเชธเซเชฏเชพ เชถเซเช‚ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡:

เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธเชฎเชพเช‚ เชธเซ‡เช•เช•เซ‹เชฎเซเชช: 7 เชตเชธเซเชคเซเช“ เชœเซ‡ เชคเชฎเชพเชฐเซ‡ เชถเชฐเซ‚เช†เชคเชฅเซ€ เชœ เชœเชพเชฃเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡
sudo strace -c -p 9331

เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ เช•เซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช“ เช เชคเชฎเชพเชฎ เชธเชฟเชธเซเชŸเชฎ เช•เซ‹เชฒเซเชธ เชงเชฐเชพเชตเซ‡ เช›เซ‡ เชœเซ‡เชจเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชฐเชจเชŸเชพเชˆเชฎ เชชเชฐ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เช›เซ‡.

เชŸเซ€เชช # 7: เชตเชฟเช—เชค เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเซ‹ เช…เชจเซ‡ เช–เชพเชคเชฐเซ€ เช•เชฐเซ‹ เช•เซ‡ เชคเชฎเชพเชฎ เชœเชฐเซ‚เชฐเซ€ เชธเชฟเชธเซเชŸเชฎ เช•เซ‹เชฒเซเชธ เชตเซเชนเชพเช‡เชŸเชฒเชฟเชธเซเชŸเซ‡เชก เช›เซ‡.

เช† SecDevOps เชจเซ€ เชญเชพเชตเชจเชพเชฎเชพเช‚ Kubernetes เชฎเชพเช‚ seccomp เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชชเชฐเชจเชพ เชฒเซ‡เช–เซ‹เชจเซ€ เชถเซเชฐเซ‡เชฃเซ€เชจเชพ เชชเซเชฐเชฅเชฎ เชญเชพเช—เชจเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเซ‡ เช›เซ‡. เชจเซ€เชšเซ‡เชจเชพ เชญเชพเช—เซ‹เชฎเชพเช‚ เช†เชชเชฃเซ‡ เช† เชถเชพ เชฎเชพเชŸเซ‡ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡ เช…เชจเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซเชตเชšเชพเชฒเชฟเชค เช•เชฐเชตเซ€ เชคเซ‡ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถเซเช‚.

เช…เชจเซเชตเชพเชฆเช• เชคเชฐเชซเชฅเซ€ เชชเซ€เชเชธ

เช…เชฎเชพเชฐเชพ เชฌเซเชฒเซ‹เช— เชชเชฐ เชชเชฃ เชตเชพเช‚เชšเซ‹:

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹