2016-09-06 14:18:12 -04:00
|
|
|
package types
|
|
|
|
|
|
|
|
// Seccomp represents the config for a seccomp profile for syscall restriction.
|
|
|
|
type Seccomp struct {
|
|
|
|
DefaultAction Action `json:"defaultAction"`
|
|
|
|
// Architectures is kept to maintain backward compatibility with the old
|
|
|
|
// seccomp profile.
|
|
|
|
Architectures []Arch `json:"architectures,omitempty"`
|
|
|
|
ArchMap []Architecture `json:"archMap,omitempty"`
|
|
|
|
Syscalls []*Syscall `json:"syscalls"`
|
|
|
|
}
|
|
|
|
|
2016-12-19 01:45:48 -05:00
|
|
|
// Architecture is used to represent a specific architecture
|
2016-09-06 14:18:12 -04:00
|
|
|
// and its sub-architectures
|
|
|
|
type Architecture struct {
|
|
|
|
Arch Arch `json:"architecture"`
|
|
|
|
SubArches []Arch `json:"subArchitectures"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// Arch used for architectures
|
|
|
|
type Arch string
|
|
|
|
|
|
|
|
// Additional architectures permitted to be used for system calls
|
|
|
|
// By default only the native architecture of the kernel is permitted
|
|
|
|
const (
|
|
|
|
ArchX86 Arch = "SCMP_ARCH_X86"
|
|
|
|
ArchX86_64 Arch = "SCMP_ARCH_X86_64"
|
|
|
|
ArchX32 Arch = "SCMP_ARCH_X32"
|
|
|
|
ArchARM Arch = "SCMP_ARCH_ARM"
|
|
|
|
ArchAARCH64 Arch = "SCMP_ARCH_AARCH64"
|
|
|
|
ArchMIPS Arch = "SCMP_ARCH_MIPS"
|
|
|
|
ArchMIPS64 Arch = "SCMP_ARCH_MIPS64"
|
|
|
|
ArchMIPS64N32 Arch = "SCMP_ARCH_MIPS64N32"
|
|
|
|
ArchMIPSEL Arch = "SCMP_ARCH_MIPSEL"
|
|
|
|
ArchMIPSEL64 Arch = "SCMP_ARCH_MIPSEL64"
|
|
|
|
ArchMIPSEL64N32 Arch = "SCMP_ARCH_MIPSEL64N32"
|
|
|
|
ArchPPC Arch = "SCMP_ARCH_PPC"
|
|
|
|
ArchPPC64 Arch = "SCMP_ARCH_PPC64"
|
|
|
|
ArchPPC64LE Arch = "SCMP_ARCH_PPC64LE"
|
|
|
|
ArchS390 Arch = "SCMP_ARCH_S390"
|
|
|
|
ArchS390X Arch = "SCMP_ARCH_S390X"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Action taken upon Seccomp rule match
|
|
|
|
type Action string
|
|
|
|
|
|
|
|
// Define actions for Seccomp rules
|
|
|
|
const (
|
|
|
|
ActKill Action = "SCMP_ACT_KILL"
|
|
|
|
ActTrap Action = "SCMP_ACT_TRAP"
|
|
|
|
ActErrno Action = "SCMP_ACT_ERRNO"
|
|
|
|
ActTrace Action = "SCMP_ACT_TRACE"
|
|
|
|
ActAllow Action = "SCMP_ACT_ALLOW"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Operator used to match syscall arguments in Seccomp
|
|
|
|
type Operator string
|
|
|
|
|
|
|
|
// Define operators for syscall arguments in Seccomp
|
|
|
|
const (
|
|
|
|
OpNotEqual Operator = "SCMP_CMP_NE"
|
|
|
|
OpLessThan Operator = "SCMP_CMP_LT"
|
|
|
|
OpLessEqual Operator = "SCMP_CMP_LE"
|
|
|
|
OpEqualTo Operator = "SCMP_CMP_EQ"
|
|
|
|
OpGreaterEqual Operator = "SCMP_CMP_GE"
|
|
|
|
OpGreaterThan Operator = "SCMP_CMP_GT"
|
|
|
|
OpMaskedEqual Operator = "SCMP_CMP_MASKED_EQ"
|
|
|
|
)
|
|
|
|
|
|
|
|
// Arg used for matching specific syscall arguments in Seccomp
|
|
|
|
type Arg struct {
|
|
|
|
Index uint `json:"index"`
|
|
|
|
Value uint64 `json:"value"`
|
|
|
|
ValueTwo uint64 `json:"valueTwo"`
|
|
|
|
Op Operator `json:"op"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// Filter is used to conditionally apply Seccomp rules
|
|
|
|
type Filter struct {
|
|
|
|
Caps []string `json:"caps,omitempty"`
|
|
|
|
Arches []string `json:"arches,omitempty"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// Syscall is used to match a group of syscalls in Seccomp
|
|
|
|
type Syscall struct {
|
|
|
|
Name string `json:"name,omitempty"`
|
|
|
|
Names []string `json:"names,omitempty"`
|
|
|
|
Action Action `json:"action"`
|
|
|
|
Args []*Arg `json:"args"`
|
|
|
|
Comment string `json:"comment"`
|
|
|
|
Includes Filter `json:"includes"`
|
|
|
|
Excludes Filter `json:"excludes"`
|
|
|
|
}
|