KESL 容器
Kaspersky Endpoint Security 分发包包含用于创建容器应用程序(“KESL 容器”)的文件,容器应用程序可嵌入到外部系统,从扫描镜像存储库中的容器镜像。
- 扫描位于存储库中的容器镜像。
- 将不包含受感染对象的已扫描镜像传输到受信任的存储库。
使用 REST API 执行与 KESL 容器的交互。还可以使用 Kaspersky Security Center 配置 KESL 容器设置。
不能使用命令行管理 KESL 容器。
部署和激活 KESL 容器
分发包描述
分发包包含以下文件:
- docker-service-<版本>.tgz – 包含创建镜像所需文件的压缩文件
- kesl-<版本>.rpm – Kaspersky Endpoint Security 安装包
- klnagent.rpm – Kaspersky Security Center 网络代理安装包
docker-service-<版本>.tgz 压缩文件包含以下文件:
- kesl-service – 容器应用程序文件的目录。
- Dockerfile – 用于构建 18.06 以下版本的 docker 镜像的文件。
- Dockerfile.1809 – 用于构建 18.05 之后版本的 docker 镜像的文件。
- build.sh.example – 用于构建镜像的脚本示例。
- run.sh.example – 用于启动 KESL 容器的脚本示例。
- kesl-service.config.example – 容器应用程序配置文件的示例。
- klnagent.conf.example – 用于连接到 Kaspersky Security Center 的配置文件示例。
- readme.md – 快速参考。
KESL 容器部署和激活
要准备 KESL 容器以供使用:
- 解压缩文件 tar -xvf docker-service-<版本>.tgz。
- 如果要使用 Kaspersky Security Center 配置 KESL 容器设置,请执行以下操作:
- 在 klnagent.conf.example 文件中,指定网络代理变量的值。有关详细信息,请参阅 Kaspersky Security Center 文档(“在静默模式下安装 Linux 网络代理(带应答文件)”部分)。
- 将 klnagent.conf.example 复制为 kesl-service/klnagent.conf。
- 使用 build.sh.example 安装脚本构建 KESL 容器 Docker 镜像:
- 如果使用代理服务器,请为 COMMON_AGRS 变量指定所需的值。
- 如有必要,将目标 kesl-service 镜像的名称更改为所需名称。
- 将 build.sh.example 复制为 build.sh 并为其分配一个可执行文件属性。
- 运行 build.sh。
- 通过执行
docker images -a
命令确保构建成功完成。将显示以下命令执行结果:
REPOSITORY TAG IMAGE ID CREATED SIZE
kesl-service latest <十六进制> <
创建时间
> <
大小
>
- 通过以下方式之一激活 KESL 容器:
- 使用 Kaspersky Security Center。
- 使用配置文件。
- 使用环境变量(参见步骤 8)。
- 配置 KESL 容器。
- 使用以下命令启动 KESL 容器:
docker run --privileged --init -p <
<KESL 容器端口
>:<
设备端口
> \
-e <
变量
_1> -e <
变量
_2> ... -e <
变量
_n> \
-v <
挂载点
_1> -v <
挂载点
_2> ... -v <
挂载点
_n> \
<
镜像名称
>
其中:
<
KESL 容器端口
>
是 KESL 容器的端口,必须可以从 KESL 容器外部的网络访问。<
设备端口
>
– 是安装了 KESL 容器的设备的端口。您可以在文件 run.sh.example 中看到 run 命令的示例。
- 如果要使用环境变量激活 KESL 容器,请执行以下操作之一:
- 如果要指定激活码,请在启动 KESL 容器时添加以下设置(参见步骤 7):
KRAS4D_ACTIVATION = '<
激活码
>'
:docker run ... -e KRAS4D_ACTIVATION='<
激活码
>'
- 如果要应用密钥文件,请在启动 KESL 容器时添加以下选项(参见步骤 7):
KRAS4D_ACTIVATION = '<
密钥文件
>' and KRAS4D_KEYPATH=/root/kesl-service/keys
:docker run ... -e KRAS4D_ACTIVATION='<
密钥文件
>' -e KRAS4D_KEYPATH=/root/kesl-service/keys -v <
包含密钥的目录的路径
>:/root/kesl-service/keys
- 如果要指定激活码,请在启动 KESL 容器时添加以下设置(参见步骤 7):
配置 KESL 容器
KESL 容器设置以多种方式初始化:
- 默认值(除非另外指定)。
- 从配置文件。在这种情况下,配置文件中的值的优先级高于默认值。
- 这些值可以在启动时作为环境变量传递给 KESL 容器。环境变量的优先级高于配置文件中的设置。
- 在扫描请求主体中。请求主体中的设置具有最高优先级,但它们仅在单个请求中有效。
KESL 容器设置
下表介绍了 KESL 容器设置及其默认值。
KESL 容器设置
设置说明 |
可用值 |
默认值 |
---|---|---|
用于监听 REST API 的端口 |
|
8085 |
事件严重性级别 |
|
noset |
授权密钥 |
如果指定了 |
|
激活码或密钥文件 |
要使用激活码激活 KESL 容器,请在运行 KESL 容器时在配置文件中指定激活码或在环境变量中传递激活码:
要使用密钥文件激活 KESL 容器,请在运行 KESL 容器时在配置文件中指定密钥文件或在环境变量中传递密钥文件:
要使用密钥文件激活 KESL 容器,需要 /root/kesl-service/keys 挂载点。 |
|
其他扫描设置 |
可选的
其中 |
|
其他更新设置 |
可选的
其中 |
|
在 KESL 容器启动时更新应用程序数据库 |
默认情况下,启动 KESL 容器时,应用程序数据库会下载到 /var/opt/kaspersky/kesl/common/updates 目录。 为了实现多个 KESL 容器与一个应用数据库实例的联合操作,并加快 KESL 容器的启动速度,建议通过挂载方式将该目录移至安装了 KESL 容器的设备:
|
True |
如果目标存储库中已存在镜像,则不处理该镜像。 |
|
False |
等待应用程序命令运行的最长时间(秒) |
|
600 |
等待应用程序数据库更新任务运行的最长时间(秒) |
|
600 |
设置配置文件的名称。 |
|
kesl-service.config |
环境变量
以下环境变量可用于配置 KESL 容器:
- KRAS4D_PORT – 用于监听 REST API 的端口。
- KRAS4D_LOGLEVEL – 事件严重性级别。
- KRAS4D_XAPIKEY – 请求授权密钥。
- KRAS4D_ACTIVATION – 激活码或密钥文件名。
- KRAS4D_SCANOPTIONS – 其他扫描设置。
- KRAS4D_UPDATEOPTIONS – 其他更新设置。
- KRAS4D_FORCEUPDATE – 在 KESL 容器启动时更新应用程序数据库。
- KRAS4D_SKIPIMAGEIFEXISTS – 如果目标存储库中已存在镜像,则不处理该镜像。
- KRAS4D_GENERALTIMEOUT – 等待应用程序命令运行的最长时间。
- KRAS4D_UPDTASKTIMEOUT – 等待应用程序数据库更新任务运行的最长时间。
- KRAS4D_CFGNAME:KESL 容器配置文件的名称。
配置文件
KESL 容器配置文件采用 yaml 格式。要从文件中读取设置,请在安装了 KESL 容器的设备上挂载 /root/kesl-service/config/ 路径,如果配置文件的名称与默认名称不同,请指定配置文件的名称。因此,您可以为每组 KESL 容器指定单独的配置文件。
示例:启动 KESL 容器
|
下表显示了配置文件设置和相应的环境变量。
设置与环境变量之间的对应关系
配置文件设置 |
环境变量 |
---|---|
Common 部分 |
|
port: <监听端口> |
# KRAS4D_PORT=8085 |
sqlpath: <包含扫描结果的数据库文件的完整路径> |
# KRAS4D_SQLPATH |
certdir: <包含注册表证书的目录的路径> |
# KRAS4D_CERTDIR |
keypath: <包含授权许可密钥的目录的路径> |
# KRAS4D_KEYPATH |
tmppath: <临时目录的完整路径> |
# KRAS4D_TMPPATH |
logpath: <事件日志的完整路径> |
# KRAS4D_LOGPATH |
loglevel: [noset|debug|info|warning|error|critical] |
# KRAS4D_LOGLEVEL |
Control 部分 |
|
xapikey: <请求授权密钥> |
# KRAS4D_XAPIKEY=None |
forceupdate: <容器启动时强制数据库更新 [True|False]> |
# KRAS4D_FORCEUPDATE |
activation: </root/kesl-service/config/ 中的激活码或密钥文件名> |
# KRAS4D_ACTIVATION |
detectaction: [delete|skip] |
# KRAS4D_DETECTACTION |
scanoptions: <扫描设置 [ScanArchived=yes ScanSfxArchived=yes ...]> |
# KRAS4D_SCANOPTIONS |
skipimageifexist: <如果要将扫描的镜像复制到的服务器上已存在该镜像,则不扫描该镜像> |
# KRAS4D_SKIPIMAGEIFEXIST |
generaltimeout: <等待应用程序命令运行的最长时间> |
# KRAS4D_GENERALTIMEOUT |
updtasktimeout: <等待应用程序数据库更新任务运行的最长时间> |
# KRAS4D_UPDTASKTIMEOUT |
Repositories 部分 |
|
<server>:<port>:请求验证时需要授权的镜像注册表的地址和端口。 |
|
Credentials 子部分 |
|
user: 镜像注册表中授权的用户名 |
|
pass: 镜像注册表中授权的密码 |
|
配置文件示例 |
可用挂载点
以下挂载点可用于使用 KESL 容器:
- /root/kesl-service/data/scans.sqlite – 包含扫描结果的数据库文件的路径。
- /var/opt/kaspersky/kesl/common/updates – 应用程序数据库的路径。
- /root/kesl-service/certificates – 包含存储库证书的目录的路径。
- /root/kesl-service/keys – 包含授权许可密钥的目录的路径。
- /var/log/kaspersky/ – 包含事件日志的目录的路径。
- /root/kesl-service/config/ – 配置文件的路径。
- /var/lib/containers/vfs-storage – Podman 实用程序正常工作所需的挂载点。
使用 REST API
使用 REST API 实现与 KESL 容器的交互。
使用 REST API,可以提交以下请求:
- 扫描一个文件或多个文件。为此,请提交一个扫描请求 (POST)。
示例:
POST http://<服务器>:<端口>/scans
一个或多个文件。
- 扫描一个或多个 Docker 镜像。为此,请提交一个扫描请求 (POST)。
示例:
POST http://<服务器>:<端口>/scans
要扫描的 Docker 镜像的链接。
- 扫描一个或多个具有附加设置的 Docker 镜像。为此,请提交一个扫描请求 (POST)。
示例:
POST http://<服务器>:<端口>/scans
某种类型的 JSON。
- 获取扫描会话列表。为此,请发送对扫描会话相关信息的请求 (GET)。
示例:
GET http://<服务器>:<端口>/scans
- 获取有关扫描会话的信息。为此,请发送对扫描会话相关信息的请求 (GET)。
示例:
GET http://<服务器>:<端口>/scans/<唯一扫描会话标识符>
- 在不重新加载 KESL 容器的情况下添加注册表证书。为此,请提交一个添加注册表证书的请求 (POST)。
示例:
POST http://<服务器>:<端口>/addcert