Documentation ¶
Index ¶
- Constants
- func PermSetFromFlags(flags map[string]bool) string
- type ArtifactProps
- type ArtifactType
- type BuildpackInfo
- type Command
- type ContainerEntryInfo
- type ContainerFileInfo
- type ContainerReport
- type ContainerizeCommand
- type ConvertCommand
- type DebugCommand
- type DistroInfo
- type EditCommand
- type FSActivityInfo
- type FanMonitorReport
- type FileInfo
- type ImageBuildCommand
- type ImageIdentity
- type ImageMetadata
- type ImageReport
- type ImagesCommand
- type LintCommand
- type MergeCommand
- type MonitorDataEvent
- type MonitorReports
- type PeMonitorReport
- type ProbeCommand
- type ProcessInfo
- type ProfileCommand
- type PtMonitorReport
- type RegistryCommand
- type RunCommand
- type SensorReport
- type ServerCommand
- type SlimCommand
- type StartCommandReport
- type SyscallStatInfo
- type SystemMetadata
- type SystemReport
- type VulnerabilityCommand
- type XrayCommand
Constants ¶
const ( CommandReportDT = "doc.report.command" // DefaultFilename is the default name for the command report DefaultFilename = "slim.report.json" )
const ( ContainerReportDT = "doc.report.container" OVContainerReport = "ov/container/1.1" TTContainer = "container" )
const ( DirArtifactTypeName = "dir" FileArtifactTypeName = "file" SymlinkArtifactTypeName = "symlink" HardlinkArtifactTypeName = "hardlink" UnknownArtifactTypeName = "unknown" UnexpectedArtifactTypeName = "unexpected" )
const ( MDESourceDel = ".del" //Data Event Logger event MDESourceFan = "m.fa" //FaNotify monitor event MDESourcePT = "m.pt" //PTrace monitor event )
Event source
const ( MDETypeArtifact = "a" //Artifact event type MDETypeProcess = "p" //Process event type MDETypeState = "s" //State event )
Event types
const ( OpTypeRead = "r" OpTypeWrite = "w" OpTypeExec = "x" OpTypeCheck = "c" )
Operation types
const DefaultContainerReportFileName = "creport.json"
DefaultContainerReportFileName is the default container report file name
const DefaultMonDelFileName = "mondel.ndjson"
DefaultContainerReportFileName is the default Monitor Data Event Log file name
const OVContainerizeCommand = "ov/command/containerize/1.0"
Output Version for 'containerize'
const OVConvertCommand = "ov/command/convert/1.0"
Output Version for 'convert'
const OVDebugCommand = "ov/command/debug/1.0"
Output Version for 'debug'
const OVEditCommand = "ov/command/edit/1.0"
Output Version for 'edit'
const OVImageBuildCommand = "ov/command/imagebuild/1.0"
Output Version for 'imagebuild'
const OVImagesCommand = "ov/command/images/1.0"
Output Version for 'images'
const OVLintCommand = "ov/command/lint/1.0"
Output Version for 'lint'
const OVMergeCommand = "ov/command/merge/1.0"
Output Version for 'merge'
const OVProbeCommand = "ov/command/probe/1.0"
Output Version for 'probe'
const OVProfileCommand = "ov/command/profile/1.0"
Output Version for 'profile'
const OVRegistryCommand = "ov/command/registry/1.0"
Output Version for 'registry'
const OVRunCommand = "ov/command/run/1.0"
Output Version for 'run'
const OVServerCommand = "ov/command/server/1.0"
Output Version for 'server'
const OVSlimCommand = "ov/command/slim/1.1"
Output Version for 'slim' (aka 'build')
const OVVulnerabilityCommand = "ov/command/vulnerability/1.0"
Output Version for 'vulnerability'
const OVXrayCommand = "ov/command/xray/1.2.3"
Output Version for 'xray'
Variables ¶
This section is empty.
Functions ¶
func PermSetFromFlags ¶
PermSetFromFlags maps artifact flags to permissions
Types ¶
type ArtifactProps ¶
type ArtifactProps struct { FileType ArtifactType `json:"-"` //todo FilePath string `json:"file_path"` Mode os.FileMode `json:"modex"` //todo ModeText string `json:"mode"` LinkRef string `json:"link_ref,omitempty"` Flags map[string]bool `json:"flags,omitempty"` DataType string `json:"data_type,omitempty"` FileSize int64 `json:"file_size"` Sha1Hash string `json:"sha1_hash,omitempty"` AppType string `json:"app_type,omitempty"` FileInode uint64 `json:"in,omitempty"` //todo FSActivity *FSActivityInfo `json:"-"` UID int `json:"uid"` GID int `json:"gid"` }
ArtifactProps contains various file system artifact properties
func (*ArtifactProps) MarshalJSON ¶
func (p *ArtifactProps) MarshalJSON() ([]byte, error)
MarshalJSON encodes artifact property data
func (*ArtifactProps) UnmarshalJSON ¶
func (p *ArtifactProps) UnmarshalJSON(data []byte) error
UnmarshalJSON decodes artifact property data
type ArtifactType ¶
type ArtifactType int
ArtifactType is an artifact type ID
const ( DirArtifactType ArtifactType = 1 FileArtifactType ArtifactType = 2 SymlinkArtifactType ArtifactType = 3 UnknownArtifactType ArtifactType = 99 )
Artifact type ID constants
func GetArtifactTypeValue ¶
func GetArtifactTypeValue(s string) ArtifactType
GetArtifactTypeValue maps an artifact type name to an artifact type ID
func (ArtifactType) String ¶
func (t ArtifactType) String() string
String converts the artifact type ID to a string
type BuildpackInfo ¶
type Command ¶
type Command struct { Document string `json:"document"` Version string `json:"version"` Engine string `json:"engine"` Containerized bool `json:"containerized"` HostDistro DistroInfo `json:"host_distro"` //Docker string `json:"docker,omitempty"` Type command.Type `json:"type"` State command.State `json:"state"` Error string `json:"error,omitempty"` // contains filtered or unexported fields }
Command is the common command report data
func (*Command) ReportLocation ¶
type ContainerEntryInfo ¶
type ContainerEntryInfo struct { Entrypoint []string `json:"entrypoint,omitempty"` Cmd []string `json:"cmd,omitempty"` ExePath string `json:"exe_path"` FullExePath *ContainerFileInfo `json:"full_exe_path,omitempty"` ExeArgs []string `json:"exe_args,omitempty"` ArgFiles []*ContainerFileInfo `json:"arg_files,omitempty"` }
type ContainerFileInfo ¶
type ContainerReport ¶
type ContainerReport struct { Document string `json:"document"` Version string `json:"version"` TargetType string `json:"target_type"` TargetID string `json:"target_id"` ImageID string `json:"image_id"` StartCommand *StartCommandReport `json:"start_command"` Sensor *SensorReport `json:"sensor"` System SystemReport `json:"system"` Monitors MonitorReports `json:"monitors"` Image ImageReport `json:"image"` }
ContainerReport contains container report fields
func NewContainerReport ¶
func NewContainerReport() *ContainerReport
type ContainerizeCommand ¶
type ContainerizeCommand struct {
Command
}
ContainerizeCommand is the 'containerize' command report data
func NewContainerizeCommand ¶
func NewContainerizeCommand(reportLocation string, containerized bool) *ContainerizeCommand
NewContainerizeCommand creates a new 'containerize' command report
type ConvertCommand ¶
type ConvertCommand struct {
Command
}
ConvertCommand is the 'convert' command report data
func NewConvertCommand ¶
func NewConvertCommand(reportLocation string, containerized bool) *ConvertCommand
NewConvertCommand creates a new 'convert' command report
type DebugCommand ¶
type DebugCommand struct {
Command
}
DebugCommand is the 'debug' command report data
func NewDebugCommand ¶
func NewDebugCommand(reportLocation string, containerized bool) *DebugCommand
NewDebugCommand creates a new 'debug' command report
type DistroInfo ¶
type EditCommand ¶
type EditCommand struct {
Command
}
EditCommand is the 'edit' command report data
func NewEditCommand ¶
func NewEditCommand(reportLocation string, containerized bool) *EditCommand
NewEditCommand creates a new 'edit' command report
type FSActivityInfo ¶
type FanMonitorReport ¶
type FanMonitorReport struct { MonitorPid int `json:"monitor_pid"` MonitorParentPid int `json:"monitor_ppid"` EventCount uint32 `json:"event_count"` MainProcess *ProcessInfo `json:"main_process"` Processes map[string]*ProcessInfo `json:"processes"` ProcessFiles map[string]map[string]*FileInfo `json:"process_files"` }
FanMonitorReport is a file monitoring report
type FileInfo ¶
type FileInfo struct { EventCount uint32 `json:"event_count"` FirstEventID uint32 `json:"first_eid"` Name string `json:"-"` ReadCount uint32 `json:"reads,omitempty"` WriteCount uint32 `json:"writes,omitempty"` ExeCount uint32 `json:"execs,omitempty"` }
FileInfo contains various file object and activity metadata
type ImageBuildCommand ¶
type ImageBuildCommand struct {
Command
}
ImageBuildCommand is the 'imagebuild' command report data
func NewImageBuildCommand ¶
func NewImageBuildCommand(reportLocation string, containerized bool) *ImageBuildCommand
NewImageBuildCommand creates a new 'imagebuild' command report
type ImageIdentity ¶
type ImageIdentity struct { ID string `json:"id"` Tags []string `json:"tags,omitempty"` Names []string `json:"names,omitempty"` Digests []string `json:"digests,omitempty"` FullDigests []string `json:"full_digests,omitempty"` }
ImageIdentity includes the container image identity fields
type ImageMetadata ¶
type ImageMetadata struct { Identity ImageIdentity `json:"identity"` Size int64 `json:"size"` SizeHuman string `json:"size_human"` CreateTime string `json:"create_time"` Author string `json:"author,omitempty"` Maintainers []string `json:"maintainers,omitempty"` RuntimeName string `json:"runtime_name,omitempty"` RuntimeVersion string `json:"runtime_version,omitempty"` DockerVersion string `json:"docker_version,omitempty"` //depricating Architecture string `json:"architecture"` User string `json:"user,omitempty"` ExposedPorts []string `json:"exposed_ports,omitempty"` OS string `json:"os,omitempty"` Volumes []string `json:"volumes,omitempty"` Labels map[string]string `json:"labels,omitempty"` EnvVars []string `json:"env_vars,omitempty"` WorkDir string `json:"workdir,omitempty"` InheritedInstructions []string `json:"inherited_instructions,omitempty"` //TODO: //Should be in ImageReport dockerimage.ImageReport //because it's additional info discovered during analysis //BUT also need to find a way to make it available //for the 'build' command (at least, distro) Distro *DistroInfo `json:"distro,omitempty"` Buildpack *BuildpackInfo `json:"buildpack,omitempty"` ContainerEntry ContainerEntryInfo `json:"container_entry"` //Base image info BaseImageDigest string `json:"base_image_digest,omitempty"` BaseImageName string `json:"base_image_name,omitempty"` }
ImageMetadata provides basic image metadata
type ImageReport ¶
type ImageReport struct {
Files []*ArtifactProps `json:"files"`
}
ImageReport contains image report fields
type ImagesCommand ¶
type ImagesCommand struct {
Command
}
ImagesCommand is the 'images' command report data
func NewImagesCommand ¶
func NewImagesCommand(reportLocation string, containerized bool) *ImagesCommand
NewImagesCommand creates a new 'images' command report
type LintCommand ¶
type LintCommand struct { Command TargetType string `json:"target_type"` TargetReference string `json:"target_reference"` BuildContextDir string `json:"build_context_dir,omitempty"` HitsCount int `json:"hits_count"` NoHitsCount int `json:"nohits_count"` ErrorsCount int `json:"errors_count"` Hits map[string]*check.Result `json:"hits,omitempty"` //map[CHECK_ID]CHECK_RESULT Errors map[string]error `json:"errors,omitempty"` //map[CHECK_ID]ERROR_INFO }
LintCommand is the 'lint' command report data
func NewLintCommand ¶
func NewLintCommand(reportLocation string, containerized bool) *LintCommand
NewLintCommand creates a new 'lint' command report
func (*LintCommand) Save ¶
func (p *LintCommand) Save() bool
Save saves the Lint command report data to the configured location
type MergeCommand ¶
type MergeCommand struct { Command FirstImage string `json:"first_image"` LastImage string `json:"last_image"` UseLastImageMetadata bool `json:"use_last_image_metadata"` }
MergeCommand is the 'merge' command report data
func NewMergeCommand ¶
func NewMergeCommand(reportLocation string, containerized bool) *MergeCommand
NewMergeCommand creates a new 'edit' command report
type MonitorDataEvent ¶
type MonitorDataEvent struct { Timestamp int64 `json:"ts"` SeqNumber uint64 `json:"sn"` Source string `json:"s"` Type string `json:"t"` Pid int32 `json:"p,omitempty"` ParentPid int32 `json:"pp,omitempty"` Artifact string `json:"a,omitempty"` // used for exe path for process events OpType string `json:"o,omitempty"` // operation type Op string `json:"op,omitempty"` // operation OpNum uint32 `json:"n,omitempty"` WorkDir string `json:"w,omitempty"` Root string `json:"r,omitempty"` Cmd string `json:"c,omitempty"` State string `json:"st,omitempty"` }
type MonitorReports ¶
type MonitorReports struct { Fan *FanMonitorReport `json:"fan"` Pt *PtMonitorReport `json:"pt"` }
MonitorReports contains monitoring report fields
type PeMonitorReport ¶
PeMonitorReport is a processing monitoring report
type ProbeCommand ¶
type ProbeCommand struct {
Command
}
ProbeCommand is the 'probe' command report data
func NewProbeCommand ¶
func NewProbeCommand(reportLocation string, containerized bool) *ProbeCommand
NewProbeCommand creates a new 'probe' command report
type ProcessInfo ¶
type ProcessInfo struct { Pid int32 `json:"pid"` Name string `json:"name"` Path string `json:"path"` Cmd string `json:"cmd"` Cwd string `json:"cwd"` Root string `json:"root"` ParentPid int32 `json:"ppid"` }
ProcessInfo contains various process object metadata
type ProfileCommand ¶
type ProfileCommand struct { Command OriginalImage string `json:"original_image"` OriginalImageSize int64 `json:"original_image_size"` OriginalImageSizeHuman string `json:"original_image_size_human"` MinifiedImageSize int64 `json:"minified_image_size"` MinifiedImageSizeHuman string `json:"minified_image_size_human"` MinifiedImage string `json:"minified_image"` MinifiedImageHasData bool `json:"minified_image_has_data"` MinifiedBy float64 `json:"minified_by"` ArtifactLocation string `json:"artifact_location"` ContainerReportName string `json:"container_report_name"` SeccompProfileName string `json:"seccomp_profile_name"` AppArmorProfileName string `json:"apparmor_profile_name"` }
ProfileCommand is the 'profile' command report data
func NewProfileCommand ¶
func NewProfileCommand(reportLocation string, containerized bool) *ProfileCommand
NewProfileCommand creates a new 'profile' command report
func (*ProfileCommand) Save ¶
func (p *ProfileCommand) Save() bool
Save saves the Profile command report data to the configured location
type PtMonitorReport ¶
type PtMonitorReport struct { Enabled bool `json:"enabled"` ArchName string `json:"arch_name"` SyscallCount uint64 `json:"syscall_count"` SyscallNum uint32 `json:"syscall_num"` SyscallStats map[string]SyscallStatInfo `json:"syscall_stats"` FSActivity map[string]*FSActivityInfo `json:"fs_activity"` }
PtMonitorReport contains various process execution metadata
type RegistryCommand ¶
RegistryCommand is the 'registry' command report data
func NewRegistryCommand ¶
func NewRegistryCommand(reportLocation string, containerized bool) *RegistryCommand
NewRegistryCommand creates a new 'registry' command report
type RunCommand ¶
RunCommand is the 'run' command report data
func NewRunCommand ¶
func NewRunCommand(reportLocation string, containerized bool) *RunCommand
NewRunCommand creates a new 'run' command report
type SensorReport ¶
SensorReport provides a basic sensor report for the container environment
type ServerCommand ¶
type ServerCommand struct {
Command
}
ServerCommand is the 'server' command report data
func NewServerCommand ¶
func NewServerCommand(reportLocation string, containerized bool) *ServerCommand
NewServerCommand creates a new 'server' command report
type SlimCommand ¶
type SlimCommand struct { Command TargetReference string `json:"target_reference"` System SystemMetadata `json:"system"` SourceImage ImageMetadata `json:"source_image"` MinifiedImageSize int64 `json:"minified_image_size"` MinifiedImageSizeHuman string `json:"minified_image_size_human"` MinifiedImage string `json:"minified_image"` MinifiedImageID string `json:"minified_image_id"` MinifiedImageDigest string `json:"minified_image_digest"` MinifiedImageHasData bool `json:"minified_image_has_data"` MinifiedBy float64 `json:"minified_by"` ArtifactLocation string `json:"artifact_location"` ContainerReportName string `json:"container_report_name"` SeccompProfileName string `json:"seccomp_profile_name"` AppArmorProfileName string `json:"apparmor_profile_name"` ImageStack []*reverse.ImageInfo `json:"image_stack"` ImageCreated bool `json:"image_created"` ImageBuildEngine string `json:"image_build_engine"` }
SlimCommand is the 'build' command report data
func NewSlimCommand ¶
func NewSlimCommand(reportLocation string, containerized bool) *SlimCommand
NewSlimCommand creates a new 'slim' (aka 'build') command report
func (*SlimCommand) Save ¶
func (p *SlimCommand) Save() bool
Save saves the Build command report data to the configured location
type StartCommandReport ¶
type StartCommandReport struct { AppName string `json:"app_name"` AppArgs []string `json:"app_args,omitempty"` AppEntrypoint []string `json:"app_entrypoint,omitempty"` AppCmd []string `json:"app_cmd,omitempty"` AppUser string `json:"app_user,omitempty"` }
StartCommandReport provides a basic start command report for the container environment
type SyscallStatInfo ¶
type SyscallStatInfo struct { Number uint32 `json:"num"` Name string `json:"name"` Count uint64 `json:"count"` }
SyscallStatInfo contains various system call activity metadata
type SystemMetadata ¶
type SystemMetadata struct { Type string `json:"type"` Release string `json:"release"` Distro DistroInfo `json:"distro"` }
SystemMetadata provides basic system metadata
type SystemReport ¶
type SystemReport struct { Type string `json:"type"` Release string `json:"release"` Distro DistroInfo `json:"distro"` }
SystemReport provides a basic system report for the container environment
type VulnerabilityCommand ¶
VulnerabilityCommand is the 'vulnerability' command report data
func NewVulnerabilityCommand ¶
func NewVulnerabilityCommand(reportLocation string, containerized bool) *VulnerabilityCommand
NewVulnerabilityCommand creates a new 'registry' command report
type XrayCommand ¶
type XrayCommand struct { Command TargetReference string `json:"target_reference"` SourceImage ImageMetadata `json:"source_image"` ArtifactLocation string `json:"artifact_location"` ImageReport *dockerimage.ImageReport `json:"image_report,omitempty"` ImageStack []*reverse.ImageInfo `json:"image_stack"` ImageLayers []*dockerimage.LayerReport `json:"image_layers"` ImageArchiveLocation string `json:"image_archive_location"` RawImageManifest *dockerimage.DockerManifestObject `json:"raw_image_manifest,omitempty"` RawImageConfig *dockerimage.ConfigObject `json:"raw_image_config,omitempty"` }
XrayCommand is the 'xray' command report data
func NewXrayCommand ¶
func NewXrayCommand(reportLocation string, containerized bool) *XrayCommand
NewXrayCommand creates a new 'xray' command report
func (*XrayCommand) Save ¶
func (p *XrayCommand) Save() bool
Save saves the Xray command report data to the configured location