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:/#
参考リンク