EKSでランタイムデフォルトのseccompプロファイルが使用できるかを確認する。
Dockerのデフォルトで適用されるプロファイルは以下に記載がある。
1.19
1.19のEKSクラスターを起動する。
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: mycluster19 region: ap-northeast-1 version: "1.19" vpc: cidr: "10.0.0.0/16" availabilityZones: - ap-northeast-1a - ap-northeast-1c managedNodeGroups: - name: managed-ng-1 minSize: 2 maxSize: 2 desiredCapacity: 2 ssh: allow: true publicKeyName: default enableSsm: true cloudWatch: clusterLogging: enableTypes: ["*"] iam: withOIDC: true
eksctl create cluster -f cluster19.yaml
確認
NginxのPodを普通に起動する。
$ k run pod1 --image=nginx pod/pod1 created
コンテナにログインし、プロセスのステータスを見る。Seccomp: 0
となっている。
$ k exec -it pod1 -- bash root@pod1:/# cat /proc/1/status Name: nginx Umask: 0022 State: S (sleeping) Tgid: 1 Ngid: 0 Pid: 1 PPid: 0 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 64 Groups: NStgid: 1 NSpid: 1 NSpgid: 1 NSsid: 1 VmPeak: 10676 kB VmSize: 10648 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 5972 kB VmRSS: 5972 kB RssAnon: 804 kB RssFile: 5168 kB RssShmem: 0 kB VmData: 988 kB VmStk: 132 kB VmExe: 988 kB VmLib: 3792 kB VmPTE: 56 kB VmSwap: 0 kB HugetlbPages: 0 kB CoreDumping: 0 THP_enabled: 1 Threads: 1 SigQ: 0/30446 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 0000000040001000 SigCgt: 0000000198016a07 CapInh: 00000000a80425fb CapPrm: 00000000a80425fb CapEff: 00000000a80425fb CapBnd: 00000000a80425fb CapAmb: 0000000000000000 NoNewPrivs: 0 Seccomp: 0 Speculation_Store_Bypass: vulnerable Cpus_allowed: 3 Cpus_allowed_list: 0-1 Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 23 nonvoluntary_ctxt_switches: 62 root@pod1:/#
seccompプロファイルを指定してPodを起動する。
apiVersion: v1 kind: Pod metadata: labels: run: pod2 name: pod2 spec: containers: - image: nginx name: pod2 securityContext: seccompProfile: type: RuntimeDefault
$ k apply -f pod2.yaml pod/pod2 created
コンテナにログインし、プロセスのステータスを見る。Seccomp: 2
となったので、プロファイルが適用されている。
$ k exec -it pod2 -- bash root@pod2:/# cat /proc/1/status Name: nginx Umask: 0022 State: S (sleeping) Tgid: 1 Ngid: 0 Pid: 1 PPid: 0 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 64 Groups: NStgid: 1 NSpid: 1 NSpgid: 1 NSsid: 1 VmPeak: 10676 kB VmSize: 10648 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 6076 kB VmRSS: 6076 kB RssAnon: 812 kB RssFile: 5264 kB RssShmem: 0 kB VmData: 988 kB VmStk: 132 kB VmExe: 988 kB VmLib: 3792 kB VmPTE: 56 kB VmSwap: 0 kB HugetlbPages: 0 kB CoreDumping: 0 THP_enabled: 1 Threads: 1 SigQ: 0/30446 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 0000000040001000 SigCgt: 0000000198016a07 CapInh: 00000000a80425fb CapPrm: 00000000a80425fb CapEff: 00000000a80425fb CapBnd: 00000000a80425fb CapAmb: 0000000000000000 NoNewPrivs: 0 Seccomp: 2 Speculation_Store_Bypass: vulnerable Cpus_allowed: 3 Cpus_allowed_list: 0-1 Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 65 nonvoluntary_ctxt_switches: 16 root@pod2:/#
1.18
1.18以前はアノテーションで指定することになっているが、ランタイムデフォルトの使用であればkubeletの起動引数のカスタマイズなしでも大丈夫なのかを確認する。
1.18のEKSクラスターを起動する。
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: mycluster18 region: ap-northeast-1 version: "1.18" vpc: cidr: "10.0.0.0/16" availabilityZones: - ap-northeast-1a - ap-northeast-1c managedNodeGroups: - name: managed-ng-1 minSize: 2 maxSize: 2 desiredCapacity: 2 ssh: allow: true publicKeyName: default enableSsm: true cloudWatch: clusterLogging: enableTypes: ["*"] iam: withOIDC: true
eksctl create cluster -f cluster18.yaml
確認
NginxのPodを普通に起動する。
$ k run pod1 --image=nginx pod/pod1 created
コンテナにログインし、プロセスのステータスを見る。Seccomp: 0
となっている。
$ k exec -it pod1 -- bash root@pod1:/# cat /proc/1/status Name: nginx Umask: 0022 State: S (sleeping) Tgid: 1 Ngid: 0 Pid: 1 PPid: 0 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 64 Groups: NStgid: 1 NSpid: 1 NSpgid: 1 NSsid: 1 VmPeak: 10680 kB VmSize: 10652 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 6008 kB VmRSS: 6008 kB RssAnon: 812 kB RssFile: 5196 kB RssShmem: 0 kB VmData: 988 kB VmStk: 132 kB VmExe: 988 kB VmLib: 3796 kB VmPTE: 40 kB VmPMD: 12 kB VmSwap: 0 kB HugetlbPages: 0 kB Threads: 1 SigQ: 0/30446 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 0000000040001000 SigCgt: 0000000198016a07 CapInh: 00000000a80425fb CapPrm: 00000000a80425fb CapEff: 00000000a80425fb CapBnd: 00000000a80425fb CapAmb: 0000000000000000 NoNewPrivs: 0 Seccomp: 0 Speculation_Store_Bypass: vulnerable Cpus_allowed: 3 Cpus_allowed_list: 0-1 Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 55 nonvoluntary_ctxt_switches: 7 root@pod1:/#
seccompプロファイルを指定してPodを起動する。
apiVersion: v1 kind: Pod metadata: labels: run: pod3 name: pod3 annotations: seccomp.security.alpha.kubernetes.io/pod: "runtime/default" spec: containers: - image: nginx name: pod3
$ k apply -f pod3.yaml pod/pod3 created
コンテナにログインし、プロセスのステータスを見る。Seccomp: 2
となったので、プロファイルが適用されている。
$ k exec -it pod3 -- bash root@pod3:/# cat /proc/1/status Name: nginx Umask: 0022 State: S (sleeping) Tgid: 1 Ngid: 0 Pid: 1 PPid: 0 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 64 Groups: NStgid: 1 NSpid: 1 NSpgid: 1 NSsid: 1 VmPeak: 10680 kB VmSize: 10652 kB VmLck: 0 kB VmPin: 0 kB VmHWM: 5980 kB VmRSS: 5980 kB RssAnon: 808 kB RssFile: 5172 kB RssShmem: 0 kB VmData: 988 kB VmStk: 132 kB VmExe: 988 kB VmLib: 3796 kB VmPTE: 40 kB VmPMD: 12 kB VmSwap: 0 kB HugetlbPages: 0 kB Threads: 1 SigQ: 0/30446 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 0000000040001000 SigCgt: 0000000198016a07 CapInh: 00000000a80425fb CapPrm: 00000000a80425fb CapEff: 00000000a80425fb CapBnd: 00000000a80425fb CapAmb: 0000000000000000 NoNewPrivs: 0 Seccomp: 2 Speculation_Store_Bypass: vulnerable Cpus_allowed: 3 Cpus_allowed_list: 0-1 Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 72 nonvoluntary_ctxt_switches: 37 root@pod3:/#