blob: 3a88c13c6abed31c9f7c692a15d13c30ac356fab [file] [log] [blame] [edit]
# Copyright 2023 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
description "Security event reporting daemon"
author "chromium-os-dev@chromium.org"
# Minimum log level defined in base/logging.h.
# 0:INFO, 1:WARNING, 2:ERROR, 3:ERROR_REPORT, 4:FATAL
# -1:VLOG(1), -2:VLOG(2), etc
# Set to log only INFO or above by default.
import SECAGENTD_LOG_LEVEL
# Set this env var to true to bypass any policy checks and always report
# all events.
import BYPASS_POLICY_FOR_TESTING
# Set this env var to true to bypass the initial wait for an Agent Start event
# to be enqueued successfully.
import BYPASS_ENQ_OK_WAIT_FOR_TESTING
# Set this env var to true to stop reporting XDR events for unaffiliated users.
import STOP_REPORTING_FOR_UNAFFILIATED_USERS
# Set this env var to the desired value of the agent heartbeat timer
# (> 0) period in seconds.
import SET_HEARTBEAT_PERIOD_S_FOR_TESTING
# Set this env var to the desired value of the event batching interval
# in seconds.
import PLUGIN_BATCH_INTERVAL_S_FOR_TESTING
start on starting system-services
stop on stopping system-services
# secagentd keeps very little state and can easily recover so allow the OOM
# killer to terminate it.
oom score -100
respawn
# These enviroment variable may be modified in the ebuild file.
env SECAGENTD_FREEZER_CGROUP_DIR=/sys/fs/cgroup/freezer/secagentd
script
# Args passed through to secagentd.
args=""
# --log_level: The logging level.
v="${SECAGENTD_LOG_LEVEL}"
if [ -n "${v}" ]; then
args="${args} --log_level=${v}"
fi
# --bypass_policy_for_testing: Skip checking the device policy for XDR
# reporting.
v="${BYPASS_POLICY_FOR_TESTING}"
if [ -n "${v}" ]; then
args="${args} --bypass_policy_for_testing=${v}"
fi
# --bypass_enq_ok_wait_for_testing: Skip waiting for the first successful
# enqueueing of an agent start event before starting XDR reporting.
v="${BYPASS_ENQ_OK_WAIT_FOR_TESTING}"
if [ -n "${v}" ]; then
args="${args} --bypass_enq_ok_wait_for_testing=${v}"
fi
# --stop_reporting_for_unaffiliated_users: Stops reporting when an
# unaffiliated user signs in.
v="${STOP_REPORTING_FOR_UNAFFILIATED_USERS}"
if [ -n "${v}" ]; then
args="${args} --stop_reporting_for_unaffiliated_users=${v}"
fi
# --set_heartbeat_period_s_for_testing: Set timer for agent heartbeat.
v="${SET_HEARTBEAT_PERIOD_S_FOR_TESTING}"
if [ -n "${v}" ]; then
args="${args} --set_heartbeat_period_s_for_testing=${v}"
fi
# --plugin_batch_interval_s_for_testing: Set event batch interval.
v="${PLUGIN_BATCH_INTERVAL_S_FOR_TESTING}"
if [ -n "${v}" ]; then
args="${args} --plugin_batch_interval_s_for_testing=${v}"
fi
# Args passed to minijail0.
# Inherit supplementary groups.
jail="-G"
jail="${jail} --config /usr/share/minijail/secagentd.conf"
exec minijail0 ${jail} -- /usr/sbin/secagentd ${args}
end script
post-start script
echo $(status | cut -f 4 -d ' ') > \
"${SECAGENTD_FREEZER_CGROUP_DIR}/cgroup.procs"
end script