Seccomp in KubernetesαŸ– ៧ αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŠαžΉαž„αžαžΆαŸ†αž„αž–αžΈαžŠαŸ†αž”αžΌαž„

αž…αŸ†αžŽαžΆαŸ†αŸ” αž”αž€αž”αŸ’αžšαŸ‚αŸ– αž™αžΎαž„αž’αŸ’αžœαžΎαž”αž‘αž”αž„αŸ’αž αžΆαž‰αž‡αžΌαž“αž›αŸ„αž€αž’αŸ’αž“αž€αž“αžΌαžœαž€αžΆαžšαž”αž€αž”αŸ’αžšαŸ‚αž’αžαŸ’αžαž”αž‘αžŠαŸ„αž™αžœαž·αžŸαŸ’αžœαž€αžšαžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαž“αŸ‹αžαŸ’αž–αžŸαŸ‹αž“αŸ…αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž’αž„αŸ‹αž‚αŸ’αž›αŸαžŸ ASOS.com αŸ” αž‡αžΆαž˜αž½αž™αžœαžΆ αž‚αžΆαžαŸ‹αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αžΆαžšαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αžŠαŸ‚αž›αž§αž‘αŸ’αž‘αž·αžŸαžŠαž›αŸ‹αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ seccomp αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž’αžΆαž“αž…αžΌαž›αž…αž·αžαŸ’αžαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αž’αŸ’αžœαžΎαžαžΆαž˜αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’ αž αžΎαž™αž”αž“αŸ’αžαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαž˜αŸ’αž—αžΆαžšαŸˆαž“αžΆαž–αŸαž›αž’αž“αžΆαž‚αžαžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹αž›αžΎαž”αŸ’αžšαž’αžΆαž“αž”αž‘αž“αŸαŸ‡αŸ”

Seccomp in KubernetesαŸ– ៧ αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŠαžΉαž„αžαžΆαŸ†αž„αž–αžΈαžŠαŸ†αž”αžΌαž„

αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž›αžΎαž€αžŠαŸ†αž”αžΌαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαž€αžΆαžŸαž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž”αž„αŸ’αž€αžΎαžαž‘αž˜αŸ’αžšαž„αŸ‹ seccomp αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αž˜αžΆαžšαžαžΈαž“αŸƒ SecDevOps αžŠαŸ„αž™αž˜αž·αž“αž”αŸ’αžšαžΎαžœαŸαž‘αž˜αž“αŸ’αž αž“αž·αž„αž’αžΆαž”αž’αŸ’αž˜αž”αŸ‹αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 1 αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αžšαŸ€αž”αžšαžΆαž”αŸ‹αž’αŸ†αž–αžΈαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“ αž“αž·αž„αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž•αŸ’αž‘αŸƒαž€αŸ’αž“αž»αž„αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž seccomp αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αŸ”

αž”αŸ’αžšαž–αŸαž“αŸ’αž’β€‹αž’αŸαž€αžΌαž‘αžΌαžŸαŸŠαžΈ Kubernetes αž•αŸ’αžαž›αŸ‹β€‹αž“αžΌαžœβ€‹αžœαž·αž’αžΈβ€‹αž‡αžΆαž…αŸ’αžšαžΎαž“β€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž’αžΆαž“αžΆβ€‹αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– αž“αž·αž„β€‹αžŠαžΆαž€αŸ‹β€‹αž’αž»αž„β€‹αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αŸ” αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž‚αžΊαž’αŸ†αž–αžΈ Secure Computing Mode αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαŸ’αž‚αžΆαž›αŸ‹αžαžΆαž‡αžΆ ស៊ីមខម. αžαŸ’αž›αžΉαž˜αžŸαžΆαžšαžšαž”αžŸαŸ‹αžœαžΆαž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαžαŸ’αžšαž„αž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž˜αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αžŠαŸ„αž™αž€αž»αž„αžαžΊαž“αŸαžšαŸ”

αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαžœαžΆαžŸαŸ†αžαžΆαž“αŸ‹? αž€αž»αž„αžαžΊαž“αŸαžšαž‚αžΊαž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αŸ” αž αžΎαž™αžœαžΆαž”αŸ’αžšαžΎαžαžΊαžŽαŸ‚αž›αžŠαžΌαž…αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αžšαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αž»αž„αžαžΊαž“αŸαžšαž’αžΆαž…αž’αŸ’αžœαžΎαž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŽαžΆαž˜αž½αž™αž“αŸ„αŸ‡ αž†αžΆαž”αŸ‹αŸ—αž“αŸαŸ‡ αž˜αŸαžšαŸ„αž‚αž“αžΉαž„αž‘αžΆαž‰αž™αž€αž’αžαŸ’αžαž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž–αžΈαžœαžΆ αžŠαžΎαž˜αŸ’αž”αžΈαž†αŸ’αž›αž„αž€αžΆαžαŸ‹αž—αžΆαž–αž―αž€αŸ„αž“αŸƒαž€αž»αž„αžαžΊαž“αŸαžš αž αžΎαž™αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ– αžŸαŸ’αž‘αžΆαž€αŸ‹αž…αžΆαž”αŸ‹αž–αŸαžαŸŒαž˜αžΆαž“ αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ”αž›αŸ”

αž€αž˜αŸ’αžšαž„αž–αŸαžαŸŒαž˜αžΆαž“ 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"
        }
    ]
}

(αž˜αž’αŸ’αž™αž˜-αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“-seccomp.json)

defaultAction αž€αŸ†αžŽαžαŸ‹αž‡αŸ„αž‚αžœαžΆαžŸαž“αžΆαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž“αŸƒαž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž˜αž·αž“αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€ syscalls. αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž±αŸ’αž™αž’αŸ’αžœαžΈαŸ—αž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž› αž…αžΌαžšαž™αžΎαž„αž•αŸ’αžαŸ„αžαž›αžΎαžαž˜αŸ’αž›αŸƒαžŸαŸ†αžαžΆαž“αŸ‹αž–αžΈαžšαžŠαŸ‚αž›αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαŸ–

  • SCMP_ACT_ERRNO - αžšαžΆαžšαžΆαŸ†αž„αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž“αŸƒαž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’,
  • SCMP_ACT_ALLOW - αž’αž“αž»αž‰αŸ’αž‰αžΆαžαŸ”

αž•αŸ’αž“αŸ‚αž€ architectures αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž‚αŸ„αž›αžŠαŸ…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαž™αž”αž‰αŸ’αž‡αžΈαŸ” αž“αŸαŸ‡αž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αž–αŸ’αžšαŸ„αŸ‡αžαž˜αŸ’αžšαž„αžαŸ’αž›αž½αž“αžœαžΆαž•αŸ’αž‘αžΆαž›αŸ‹ αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž“αŸ…αž€αž˜αŸ’αžšαž·αžαžαžΊαžŽαŸ‚αž› αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž€αžΆαžšαž αŸ…αžšαž”αžŸαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž“αž·αž„αž˜αž·αž“αž˜αŸ‚αž“αž›αžΎαžˆαŸ’αž˜αŸ„αŸ‡αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ” αžšαž™αŸˆαž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž»αž„αžαžΊαž“αŸαžšαž“αžΉαž„αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž–αž½αž€αžœαžΆαž‘αŸ…αž“αžΉαž„αž§αž”αž€αžšαžŽαŸαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž˜αž»αž“αž–αŸαž›αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αž‚αŸ†αž“αž·αžαž‚αžΊαžαžΆαž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αžΆαž…αž˜αžΆαž“αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαž»αžŸαž‚αŸ’αž“αžΆαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ” αž§αž‘αžΆαž αžšαžŽαŸαž€αžΆαžšαž αŸ…αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’ recvfrom (αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž–αŸαžαŸŒαž˜αžΆαž“αž–αžΈαžšαž“αŸ’αž’) αž˜αžΆαž“ ID = 64 αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’ x64 αž“αž·αž„ ID = 517 αž“αŸ…αž›αžΎ x86 αŸ” αžœαžΆαž‚αžΊαž‡αžΆαž€αžΆαžš αž’αŸ’αž“αž€αž’αžΆαž…αžŸαŸ’αžœαŸ‚αž„αžšαž€αž”αž‰αŸ’αž‡αžΈαž“αŸƒαž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜ x86-x64 αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€ syscalls αžšαžΆαž™αž€αžΆαžšαž αŸ…αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž αžΎαž™αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαž‡αžΆαž˜αž½αž™αž–αž½αž€αž‚αŸαŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž”αž‰αŸ’αž‡αžΈαžŸαžŠαŸ„αž™αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹ defaultAction αž“αŸ…αž›αžΎ SCMP_ACT_ERRNOαž“αž·αž„αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαŸαž–αŸ’αž‘αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€ syscalls αž…αžΆαžαŸ‹αžαžΆαŸ†αž„ SCMP_ACT_ALLOW. αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž’αŸ’αž“αž€β€‹αž’αž“αž»αž‰αŸ’αž‰αžΆαžβ€‹αž±αŸ’αž™β€‹αž αŸ…β€‹αž‘αžΌαžšαžŸαŸαž–αŸ’αž‘β€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αž”αž‰αŸ’αž‡αžΆαž€αŸ‹β€‹αž€αŸ’αž“αž»αž„β€‹αž•αŸ’αž“αŸ‚αž€β€‹αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” syscallsαž“αž·αž„αž αžΆαž˜αžƒαžΆαžαŸ‹αž’αŸ’αž“αž€αžŠαž‘αŸƒαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž‰αŸ’αž‡αžΈαžαŸ’αž˜αŸ… αž’αŸ’αž“αž€αž‚αž½αžšαžαŸ‚αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαž˜αŸ’αž›αŸƒ defaultAction αž“αž·αž„αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž•αŸ’αž‘αž»αž™αŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž™αžΎαž„αž‚αž½αžšαžαŸ‚αž“αž·αž™αžΆαž™αž–αžΆαž€αŸ’αž™αž–αžΈαžšαž”αžΈαž’αŸ†αž–αžΈ nuances αžŠαŸ‚αž›αž˜αž·αž“αžŸαžΌαžœαž…αŸ’αž”αžΆαžŸαŸ‹αŸ” αžŸαžΌαž˜αž…αŸ†αžŽαžΆαŸ†αžαžΆαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αž“αŸ…αž›αžΎ 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"
        }
    ]
}

(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. αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž”αž‰αŸ’αž αžΆαž”αŸ’αžšαžˆαž˜αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαž‚αžΊαžαžΆαžŠαŸ„αž™αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ‚αž›αž’αŸ’αž“αž€αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„ αž’αŸ’αž“αž€αž€αŸ†αž–αž»αž„αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αž˜αŸ’αžšαž„αŸ‹αž‘αŸ…αž“αžΉαž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αž»αž„αžαžΊαž“αŸαžšαž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αž˜αŸ’αž™αŸ‰αžΆαž„αžœαž·αž‰αž‘αŸ€αž αžαŸ’αž„αŸƒαžŽαžΆαž˜αž½αž™ αž’αŸ’αž“αž€αž’αžΆαž…αž“αžΉαž„αžŠαžΉαž„αžαžΆ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž”αžšαž·αž™αžΆαž€αžΆαžŸαž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž»αž„αžαžΊαž“αŸαžš (αžŠαŸ„αž™αž’αŸ’αž“αž€ αž¬αž‘αŸ†αž“αž„αž‡αžΆαžŠαŸ„αž™αž’αŸ’αž“αž€αž•αŸ’αžαž›αŸ‹αžŸαŸαžœαžΆαž–αž–αž€) αž’αž»αž„αž•αŸ’αž‘αž»αž€αž—αŸ’αž›αžΆαž˜αŸ—αžˆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αž‚αž“αŸ’αž›αžΉαŸ‡αž›αŸαž αŸ€αŸ– αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž’αž»αž„αž‡αžΆαž˜αž½αž™ 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 αž“αžΉαž„αž€αŸ’αž›αžΆαž™αž‡αžΆ GA (αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ†αž–αžΉαž„αž‘αž»αž€αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž“αŸƒ Kubernetes - 1.18 - αž”αŸ’αžšαž αžΆαž€αŸ‹αž”αŸ’αžšαž αŸ‚αž›αŸ” transl αŸ” )

αž˜αžΆαž“αž˜αž“αž»αžŸαŸ’αžŸαžαž·αž…αžŽαžΆαžŸαŸ‹αžŠαŸ‚αž›αžŠαžΉαž„αžαžΆ Kubernetes αžαŸ‚αž„αžαŸ‚αž˜αžΆαž“ αž€αŸ†αž αž»αžŸαžŠαŸ‚αž›αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž‘αž˜αŸ’αžšαž„αŸ‹ seccomp αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž‘αŸ… αž•αŸ’αž’αžΆαž€αž€αž»αž„αžαžΊαž“αŸαžš. αž”αžšαž·αž™αžΆαž€αžΆαžŸαž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž•αŸ’αžαž›αŸ‹αžŸαŸ†αžŽαž„αžŠαŸ„αž™αž•αŸ’αž“αŸ‚αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžαŸ’αžœαŸ‡αžαžΆαžαž“αŸαŸ‡ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αž»αž„αžαžΊαž“αŸαžšαž“αŸαŸ‡αž˜αž·αž“αž”αžΆαžαŸ‹αž–αžΈαž•αžαž‘αŸ αžŠαŸ„αž™αžŸαžΆαžšαžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ”

αž”αž‰αŸ’αž αžΆαž‚αžΊαžαžΆαž’αž»αž„αž“αŸαŸ‡αžαŸ‚αž„αžαŸ‚αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‡αžΆαž˜αž½αž™ AllowPrivilegeEscalation=trueαžŠαŸ‚αž›αž“αžΆαŸ†αž‘αŸ…αžŠαž›αŸ‹αž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž”αžΆαž“αž”αž‰αŸ’αž…αŸαž‰αž€αŸ’αž“αž»αž„αž€αžαžΆαžαžŽαŸ’αžŒαž‘αžΈ 1 αž αžΎαž™αž“αŸαŸ‡αž˜αž·αž“αž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αžΆαž“αž‘αŸαŸ”

αžŠαŸ„αž™αž”αŸ’αžšαžΎαž‘αž˜αŸ’αžšαž„αŸ‹ seccomp αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž€αž»αž„αžαžΊαž“αŸαžš αž’αŸ’αž“αž€αž‡αŸ€αžŸαžœαžΆαž„αž€αžΆαžšαž’αŸ’αž›αžΆαž€αŸ‹αž“αŸαŸ‡ αž αžΎαž™αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž‘αž˜αŸ’αžšαž„αŸ‹αžŠαŸ‚αž›αžαž˜αŸ’αžšαžΌαžœαžαžΆαž˜αž€αž»αž„αžαžΊαž“αŸαžšαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™αŸ” αžœαžΆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαžšαž αžΌαžαžŠαž›αŸ‹αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž‡αž½αžŸαž‡αž»αž›αž€αŸ†αž αž»αžŸ αž αžΎαž™αž€αŸ†αžŽαŸ‚αžαŸ’αž˜αžΈ (αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆ 1.18?) αž˜αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžšαžΆαž›αŸ‹αž‚αŸ’αž“αžΆαŸ”

αž‚αž“αŸ’αž›αžΉαŸ‡αž›αŸαž αŸ€αŸ– αž€αŸ†αžŽαžαŸ‹αž‘αž˜αŸ’αžšαž„αŸ‹ seccomp αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž€αž»αž„αžαžΊαž“αŸαžšαŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž“αŸαž™αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„ αž…αŸ’αž”αžΆαž”αŸ‹αž“αŸαŸ‡αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž”αž˜αŸ’αžšαžΎαž‡αžΆαž…αž˜αŸ’αž›αžΎαž™αž‡αžΆαžŸαž€αž›αž…αŸ†αž–αŸ„αŸ‡αžŸαŸ†αžŽαž½αžšαŸ– β€œαž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž‘αž˜αŸ’αžšαž„αŸ‹ seccomp αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™ docker runαž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŠαžΆαž€αŸ‹αž–αž„αŸ’αžšαžΆαž™αž‘αŸ…αž€αŸ’αžšαž»αž˜ Kubernetes?

3. αž”αŸ’αžšαžΎαž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš/αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

Kubernetes αž˜αžΆαž“αž‡αž˜αŸ’αžšαžΎαžŸαž–αžΈαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αž˜αŸ’αžšαž„αŸ‹αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αŸ– runtime/default ΠΈ docker/default. αž‘αžΆαŸ†αž„αž–αžΈαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αž€αž»αž„αžαžΊαž“αŸαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž˜αž·αž“αž˜αŸ‚αž“ Kubernetes αž‘αŸαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž–αž½αž€αžœαžΆαž’αžΆαž…αžαž»αžŸαž‚αŸ’αž“αžΆαž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž”αžšαž·αž™αžΆαž€αžΆαžŸαž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαžΎ αž“αž·αž„αž€αŸ†αžŽαŸ‚αžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž˜αŸ’αž™αŸ‰αžΆαž„αžœαž·αž‰αž‘αŸ€αž αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž€αž»αž„αžαžΊαž“αŸαžšαž’αžΆαž…αž…αžΌαž›αž”αŸ’αžšαžΎαžŸαŸ†αžŽαž»αŸ†αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαž“αŸƒαž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αžŠαŸ‚αž›αžœαžΆαž’αžΆαž…αž”αŸ’αžšαžΎ αž¬αž˜αž·αž“αž”αŸ’αžšαžΎαŸ” αž–αŸαž›αžœαŸαž›αžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž”αŸ’αžšαžΎ αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž Docker. αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αž„αŸ‹αž”αŸ’αžšαžΎαž‘αž˜αŸ’αžšαž„αŸ‹αž“αŸαŸ‡ αžŸαžΌαž˜αž”αŸ’αžšαžΆαž€αžŠαžαžΆαžœαžΆαžŸαžΆαž€αžŸαž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αŸ”

αž’αžΆαž“ docker/default αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžŠαž·αžŸαŸαž’αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈ Kubernetes 1.11 αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŸαžΌαž˜αž‡αŸ€αžŸαžœαžΆαž„αž€αžΆαžšαž”αŸ’αžšαžΎαžœαžΆαŸ”

αžαžΆαž˜αž‚αŸ†αž“αž·αžαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αž”αŸ’αžšαžœαžαŸ’αžαž·αžšαžΌαž” runtime/default សមαž₯αžαžαŸ’αž…αŸ„αŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ„αž›αž”αŸ†αžŽαž„αžŠαŸ‚αž›αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αŸ– αž€αžΆαžšαž–αžΆαžšαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž–αžΈαž αžΆαž“αž·αž—αŸαž™αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ docker run αž“αŸ…αž›αžΎαžšαžαž™αž“αŸ’αžαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž“αŸ…αž–αŸαž›αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαž…αž„αŸ’αž€αŸ„αž˜ Kubernetes αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž αŸŠαžΆαž“αž”αŸ’αžšαž€αŸ‚αž€αžαžΆαž‘αž˜αŸ’αžšαž„αŸ‹αž”αŸ‚αž”αž“αŸαŸ‡αž‚αžΊαž”αžΎαž€αž…αŸ†αž αž–αŸαž€ αž αžΎαž™αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž‚αž½αžšαžαŸ‚αž•αŸ’αžαŸ„αžαž›αžΎαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž‘αž˜αŸ’αžšαž„αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ (αž¬αž”αŸ’αžšαž—αŸαž‘αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ)αŸ”

αž‚αž“αŸ’αž›αžΉαŸ‡αž›αŸαž αŸ€αŸ– αž”αž„αŸ’αž€αžΎαžαž‘αž˜αŸ’αžšαž„αŸ‹ seccomp αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž˜αž·αž“αž’αžΆαž…αž‘αŸ…αžšαž½αž… αž”αž„αŸ’αž€αžΎαžαž‘αž˜αŸ’αžšαž„αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž§αž‘αžΆαž αžšαžŽαŸ αž”αž„αŸ’αž€αžΎαžαž‘αž˜αŸ’αžšαž„αŸ‹αž€αž˜αŸ’αžšαž·αžαžαŸ’αž–αžŸαŸ‹αžŠαŸ‚αž›αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž› API αž”αžŽαŸ’αžŠαžΆαž‰αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Golang αŸ” αž”αŸ’αžšαžΎαžαŸ‚αž–αŸαž›αžšαžαŸ‹/αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αž‡αžΆαž‡αž˜αŸ’αžšαžΎαžŸαž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž αŸ„αŸ‡αž“αžΆαž–αŸαž›αž’αž“αžΆαž‚αž αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αžšαŸ€αž”αžšαžΆαž”αŸ‹αž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž”αž„αŸ’αž€αžΎαžαž‘αž˜αŸ’αžšαž„αŸ‹ seccomp αžŠαŸ‚αž›αž”αŸ†αž•αž»αžŸαž‚αŸ†αž“αž·αžαžŠαŸ„αž™ SecDevOps αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž€αž˜αŸ’αž˜αž–αž½αž€αžœαžΆ αž“αž·αž„αžŸαžΆαž€αž›αŸ’αž”αž„αž–αž½αž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ†αž–αž„αŸ‹αŸ” αž˜αŸ’αž™αŸ‰αžΆαž„αžœαž·αž‰αž‘αŸ€αž αž’αŸ’αž“αž€αž“αžΉαž„αž‚αŸ’αž˜αžΆαž“αž›αŸαžŸαž˜αž·αž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž‘αŸ…αž‘αž˜αŸ’αžšαž„αŸ‹αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸ„αŸ‡αž‘αŸαŸ”

4. Unconfined αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž‡αž˜αŸ’αžšαžΎαžŸαž‘αŸαŸ”

αž–αžΈ αžŸαžœαž“αž€αž˜αŸ’αž˜αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž– Kubernetes αžŠαŸ†αž”αžΌαž„ αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ seccomp αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘. αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž˜αž·αž“αž€αŸ†αžŽαžαŸ‹ PodSecurityPolicyαžŠαŸ‚αž›αž“αžΉαž„αž”αžΎαž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜ αž•αžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž‘αž˜αŸ’αžšαž„αŸ‹ seccomp αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ seccomp=unconfined.

αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž”αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαžŸαŸ’αžšαž‘αžΆαž”αŸ‹αž’αŸŠαžΈαžŸαžΌαž‘αž„αŸ‹αž‘αžΆαŸ†αž„αž˜αžΌαž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΆαžαŸ‹αž”αž„αŸ‹αžŠαŸ‚αž›αž€αžΆαžšαž–αžΆαžšαž…αž„αŸ’αž€αŸ„αž˜αŸ” αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αžŠαŸ„αž™αž’αŸ’αž“αž€αž‡αŸ†αž“αžΆαž‰αžŸαž“αŸ’αžαž·αžŸαž»αžαž‘αŸαŸ”

αž‚αž“αŸ’αž›αžΉαŸ‡αž›αŸαž αŸ€αŸ– αž‚αŸ’αž˜αžΆαž“αž€αž»αž„αžαžΊαž“αŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αž‚αž½αžšαžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ seccomp=unconfinedαž‡αžΆαž–αž·αžŸαŸαžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαž•αž›αž·αžαž€αž˜αŸ’αž˜αŸ”

5. "αžšαž”αŸ€αž”αžŸαžœαž“αž€αž˜αŸ’αž˜"

αž…αŸ†αžŽαž»αž…αž“αŸαŸ‡αž˜αž·αž“αž˜αžΆαž“αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Kubernetes αž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αžαŸ‚αžŸαŸ’αžαž·αžαž€αŸ’αž“αž»αž„αž”αŸ’αžšαž—αŸαž‘ "αžšαžΏαž„αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαžŠαžΉαž„αž˜αž»αž“αž–αŸαž›αž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜"αŸ”

αžŠαžΌαž…αžŠαŸ‚αž›αžœαžΆαž€αžΎαžαž‘αžΎαž„ αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž‘αž˜αŸ’αžšαž„αŸ‹ seccomp αžαŸ‚αž„αžαŸ‚αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž”αŸ’αžšαžˆαž˜ αž“αž·αž„αž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αžαŸ’αž›αžΆαŸ†αž„αž›αžΎαž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ αž“αž·αž„αž€αŸ†αž αž»αžŸαŸ” αž€αžΆαžšαž–αž·αžαž‚αžΊαžαžΆαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αž·αž“αž˜αžΆαž“αž±αž€αžΆαžŸαžŸαžΆαž€αž›αŸ’αž”αž„αž–αž½αž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸαž•αž›αž·αžαž€αž˜αŸ’αž˜αžŠαŸ„αž™αž˜αž·αž“αž”αŸ’αžšαžαž»αž™αž“αžΉαž„ "αž‘αž˜αŸ’αž›αžΆαž€αŸ‹" αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸ„αŸ‡αž‘αŸαŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αŸƒαžαžΊαžŽαŸ‚αž›αž›αžΈαž“αž»αž… 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"
        }
    ]
}

(αž˜αž’αŸ’αž™αž˜-mixed-seccomp.json)

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αžšαžΌαžœαž…αžΆαŸ†αžαžΆ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αž·αž‘αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž’αŸ’αž“αž€αžŠαžΉαž„αžαžΆαž“αžΉαž„αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎ αž αžΎαž™αžœαžΆαž’αžΆαž…αž”αž„αŸ’αž€αž‚αŸ’αžšαŸ„αŸ‡αžαŸ’αž“αžΆαž€αŸ‹αžŠαž›αŸ‹αž…αž„αŸ’αž€αŸ„αž˜αŸ” αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŠαŸαž›αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αž„αž€αŸ’αžšαž„αž”αž‰αŸ’αž‡αžΈαž‚αžΊαž‡αžΆαž•αŸ’αž›αžΌαžœαž€αžΆαžš αž―αž€αžŸαžΆαžš Docker. αžœαžΆαž–αž“αŸ’αž™αž›αŸ‹αž™αŸ‰αžΆαž„αž›αž˜αŸ’αž’αž·αžαžαžΆαžαžΎαž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŽαžΆαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαžšαžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αž“αž·αž„αž˜αžΌαž›αž αŸαžαž»αŸ”

αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™αž˜αžΆαž“αž€αžΆαžšαž…αžΆαž”αŸ‹αž˜αž½αž™αŸ” αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆ SCMT_ACT_LOG αž‚αžΆαŸ†αž‘αŸ’αžšαžŠαŸ„αž™αžαžΊαžŽαŸ‚αž›αž›αžΈαž“αž»αž…αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž…αž»αž„αž†αŸ’αž“αžΆαŸ† 2017 αžœαžΆαž”αžΆαž“αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αŸαž€αžΌ Kubernetes αžαŸ’αž˜αžΈαŸ—αž“αŸαŸ‡αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαžœαž·αž’αžΈαž“αŸαŸ‡ αž’αŸ’αž“αž€αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžαžΊαžŽαŸ‚αž›αž›αžΈαž“αž»αž… 4.14 αž“αž·αž„αž€αŸ†αžŽαŸ‚ runC αž˜αž·αž“αž‘αžΆαž”αž‡αžΆαž„ v1.0.0-rc9.

αž‚αž“αŸ’αž›αžΉαŸ‡αž›αŸαž αŸ€αŸ– αž‘αž˜αŸ’αžšαž„αŸ‹αž”αŸ‚αž”αž”αž‘αžŸαžœαž“αž€αž˜αŸ’αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž•αž›αž·αžαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžŠαŸ„αž™αž€αžΆαžšαžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αž”αž‰αŸ’αž‡αžΈαžαŸ’αž˜αŸ… αž“αž·αž„αžŸ αž αžΎαž™αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž’αžΆαž…αž…αžΌαž›αž”αžΆαž“αŸ”

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",

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡ αž“αŸαŸ‡αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αžαž”αž“αŸ’αžαŸ‚αž˜αž’αŸ†αž–αžΈαž§αž”αž€αžšαžŽαŸαž“αžΉαž„αž’αŸ’αžœαžΎαžαžΆαž˜αŸ”

αž‚αž“αŸ’αž›αžΉαŸ‡αž›αŸαž αŸ€αŸ– αž’αž“αž»αž‰αŸ’αž‰αžΆαžβ€‹αž±αŸ’αž™β€‹αžαŸ‚β€‹αž€αžΆαžšβ€‹αž αŸ…β€‹αž‘αžΌαžšαžŸαž–αŸ’αž‘β€‹αžŠαŸ‚αž›β€‹αž’αŸ’αž“αž€β€‹αž–αž·αžβ€‹αž‡αžΆβ€‹αžαŸ’αžšαžΌαžœβ€‹αž€αžΆαžš αž αžΎαž™β€‹αžšαžΆαžšαžΆαŸ†αž„β€‹αž’αŸ’αž“αž€β€‹αž•αŸ’αžŸαŸαž„β€‹αž‘αžΆαŸ†αž„β€‹αž’αžŸαŸ‹αŸ”

7. αžŠαžΆαž€αŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‚αŸ’αžšαžΉαŸ‡αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ (αž¬αžšαŸ€αž”αž…αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžΆαž€αž”αŸ’αž”αž€αž·αžšαž·αž™αžΆαžŠαŸ‚αž›αž˜αž·αž“αž“αžΉαž€αžŸαŸ’αž˜αžΆαž“αžŠαž›αŸ‹)

αžαžΊαžŽαŸ‚αž›αž“αžΉαž„αž–αž„αŸ’αžšαžΉαž„αž‘αž˜αŸ’αžšαž„αŸ‹αžŠαŸ„αž™αž˜αž·αž“αž‚αž·αžαž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„αžœαžΆαŸ” αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαžœαžΆαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αŸ’αž“αž€αž…αž„αŸ‹αž”αžΆαž“αž€αŸαžŠαŸ„αž™αŸ” αž§αž‘αžΆαž αžšαžŽαŸαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžšαžΆαžšαžΆαŸ†αž„αž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαŸαž–αŸ’αž‘αžŠαžΌαž…αž‡αžΆ exit ឬ exit_groupαž€αž»αž„αžαžΊαž“αŸαžšαž“αžΉαž„αž˜αž·αž“αž’αžΆαž…αž”αž·αž‘αž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž“αž·αž„αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŸαžΆαž˜αž‰αŸ’αž‰αžŠαžΌαž…αž‡αžΆ echo hi αž–αŸ’αž™αž½αžšαž‚αžΆαžαŸ‹o αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž™αŸˆαž–αŸαž›αž˜αž·αž“αž€αŸ†αžŽαžαŸ‹αŸ” αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž’αŸ’αž“αž€αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ CPU αžαŸ’αž–αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αŸ–

Seccomp in KubernetesαŸ– ៧ αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŠαžΉαž„αžαžΆαŸ†αž„αž–αžΈαžŠαŸ†αž”αžΌαž„

αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž”αŸ‚αž”αž“αŸαŸ‡ αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αžΆαž…αž˜αž€αž‡αž½αž™αžŸαž„αŸ’αž‚αŸ’αžšαŸ„αŸ‡αž”αžΆαž“αŸ” strace - αžœαžΆαž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž’αžΆαž…αž€αžΎαžαž˜αžΆαž“αŸ–

Seccomp in KubernetesαŸ– ៧ αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžŠαžΉαž„αžαžΆαŸ†αž„αž–αžΈαžŠαŸ†αž”αžΌαž„
sudo strace -c -p 9331

αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΆαž€αžŠαžαžΆαž‘αž˜αŸ’αžšαž„αŸ‹αž˜αžΆαž“αž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΌαžœαž€αžΆαžšαž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αž‚αž“αŸ’αž›αžΉαŸ‡αž›αŸαž αŸ€αŸ– αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž…αŸ†αž–αŸ„αŸ‡αž–αŸαžαŸŒαž˜αžΆαž“αž›αž˜αŸ’αž’αž·αž αž“αž·αž„αžαŸ’αžšαžΌαžœαž”αŸ’αžšαžΆαž€αžŠαžαžΆαž€αžΆαžšαž αŸ…αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαžΆαž€αŸ‹αž€αŸ’αž“αž»αž„αž”αž‰αŸ’αž‡αžΈαžŸαŸ”

αž“αŸαŸ‡αž”αž‰αŸ’αž…αž”αŸ‹αž•αŸ’αž“αŸ‚αž€αžŠαŸ†αž”αžΌαž„αž“αŸƒαž’αžαŸ’αžαž”αž‘αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž’αŸ†αž–αžΈαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ seccomp αž“αŸ…αž€αŸ’αž“αž»αž„ Kubernetes αž€αŸ’αž“αž»αž„αžŸαŸ’αž˜αžΆαžšαžαžΈαž“αŸƒ SecDevOps αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž€αŸ’αžšαŸ„αž˜ αž™αžΎαž„αž“αžΉαž„αž“αž·αž™αžΆαž™αž’αŸ†αž–αžΈαž˜αžΌαž›αž αŸαžαž»αžŠαŸ‚αž›αžœαžΆαžŸαŸ†αžαžΆαž“αŸ‹ αž“αž·αž„αžšαž”αŸ€αž”αž’αŸ’αžœαžΎαž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ”

PS αž–αžΈαž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚

αžŸαžΌαž˜αž’αžΆαž“αž•αž„αžŠαŸ‚αžšαž“αŸ…αž›αžΎαž”αŸ’αž›αž€αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ–

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹