目录
连接到外部数据存储资源
除了分发包中包含的卡巴斯基容器安全组件外,该解决方案还可以与以下外部数据存储资源配合使用:
- PostgreSQL 数据库
- ClickHouse DBMS
- 兼容 S3 的 MinIO 文件存储
通过 values.yaml 配置文件来配置与外部数据存储资源连接的设置。
为外部 PostgreSQL 数据库创建用户
对于卡巴斯基容器安全,您可以使用解决方案中包含的 PostgreSQL 数据库或您自己的 PostgreSQL 数据库。要安装不适用于卡巴斯基容器安全模式的外部 PostgreSQL 数据库,您必须创建单独的用户。您可以通过安装带有为外部 PostgreSQL 数据库指定的模式参数的 Helm Chart 包来执行此操作。
要为外部 PostgreSQL 数据库创建具有自定义模式的用户:
- 运行以下命令为外部 PostgreSQL 数据库创建单独的命名空间:
kubectl create ns kcspg
其中
kcspg
是外部 PostgreSQL 数据库的命名空间。 - 要部署外部 PostgreSQL 数据库:
- 在 pg.yaml 配置文件中指定部署外部 PostgreSQL 数据库的参数。
该参数指定数据库的密码。然后,您必须在 values.yaml 配置文件的
infraconfig
部分中指定此密码,该文件是解决方案分发套件中包含的Helm Chart 包的一部分。 - 运行以下命令:
kubectl apply -f pg.yaml -n kcspg
该外部数据库的名称格式如下:
pod_name
>.
命名空间名称
>.
服务
>.cluster.local
例如,
postgres.kcspg.svc.cluster.local
- 在 pg.yaml 配置文件中指定部署外部 PostgreSQL 数据库的参数。
- 要在集群中部署服务对象:
- 在 svc.yaml 配置文件中指定服务对象部署参数。
- 运行以下命令:
kubectl apply -f svc.yaml -n kcspg
- 要创建用户、模式和用户-模式关系:
- 使用步骤 2b 中展开的 postgres 元素,登录到Pod。
- 启动 psql 交互式终端:
psql -h localhost -U postgres -d api
- 运行以下命令:
CREATE ROLE kks LOGIN PASSWORD 'kks' NOINHERIT CREATEDB;
CREATE SCHEMA kks AUTHORIZATION kks;
GRANT USAGE ON SCHEMA kks TO PUBLIC;
- 在 values.yaml 配置文件中,指定使用外部 PostgreSQL 数据库所需的参数。
values.yaml中指定的参数值必须与 pg.yaml 和svc.yaml 配置文件中对应参数的值匹配。
- 开始解决方案更新。
使用外部 ClickHouse DBMS
除了作为卡巴斯基容器安全组件并包含在分发包中的 ClickHouse DBMS 之外,该解决方案还可以使用外部 ClickHouse DBMS 的资源。为此,您必须执行以下操作:
- 为卡巴斯基容器安全创建数据库,添加并配置用户,以及定义磁盘策略(如果使用不同的磁盘分别进行长期和短期数据存储)。
- 在 values.yaml 配置文件中为外部 ClickHouse DBMS 指定所需变量。
卡巴斯基容器安全与 ClickHouse 22.6 或更高版本兼容。
页首为卡巴斯基容器安全创建数据库
要为卡巴斯基容器安全创建数据库:
在工作站上的 ClickHouse 中,运行以下命令:
CREATE DATABASE IF NOT EXISTS kcs
其中 kcs
是卡巴斯基容器安全数据库的名称。
要配置为卡巴斯基容器安全所创建的数据库的设置:
- 添加用户并定义他们的授权方法。为此,您必须执行以下操作:
- 添加以下用户:
- 有权读取卡巴斯基容器安全核心所接收数据的用户(读取者)。
<roles>
<kcs_reader_role>
<grants>
<query>GRANT SELECT ON kcs.*</query>
</grants>
</kcs_reader_role>
- 有权写入来自外部代理请求的数据的用户(写入者)。
<roles>
<kcs_writer_role>
<grants>
<query>GRANT CREATE TABLE, INSERT, ALTER, UPDATE ON kcs.*</query>
<query>GRANT SELECT (source_ip, source_port, source_alias, dest_ip, dest_port, dest_alias, protocol, severity, action, event_time, count, type) ON kcs.node_agent_events</query>
</grants>
</kcs_writer_role>
- 有权读取卡巴斯基容器安全核心所接收数据的用户(读取者)。
- 指定用户授权方法:使用密码或证书。
- 添加以下用户:
- 指定用于短期和长期数据存储的磁盘。与 ClickHouse 配合使用时,卡巴斯基容器安全可以存储具备不同保留期的大量数据。默认情况下,事件的主要部分最多存储 30 分钟,而事故相关信息最多存储 90 天。由于事件记录需要大量资源来确保较高的记录速度和足够的磁盘空间,因此推荐使用不同的磁盘来分别进行短期和长期数据存储。
配置外部 ClickHouse DBMS 设置
要配置卡巴斯基容器安全设置以使用外部 ClickHouse DBMS:
- 在 values.yaml 配置文件中,指定该解决方案使用外部 ClickHouse DBMS:
default:
kcs-clickhouse:
external: true
- 指定使用外部 ClickHouse DBMS 所需的变量:
configmap:
infraconfig:
type: fromEnvs
envs:
...<
使用外部 ClickHouse DBMS 所需的变量
>
在本部分中,您必须指定以下变量:
EXT_CLICKHOUSE_PROTOCOL
是用于连接外部 ClickHouse DBMS 的协议。EXT_CLICKHOUSE_HOST
是用于连接外部 ClickHouse DBMS 的主机。EXT_CLICKHOUSE_PORT
是用于连接外部 ClickHouse DBMS 的端口。EXT_CLICKHOUSE_DB_NAME
是准备与卡巴斯基容器安全配合使用的数据库的名称。EXT_CLICKHOUSE_COLD_STORAGE_NAME
是磁盘的名称,ClickHouse 将在该磁盘上长期存储事故相关数据。EXT_CLICKHOUSE_STORAGE_POLICY_NAME
是数据存储策略的名称,ClickHouse 将根据该策略将事故相关数据传输到磁盘进行长期存储。如果您使用同一个磁盘进行短期和长期数据存储,则无需指定
EXT_CLICKHOUSE_COLD_STORAGE_NAME
和EXT_CLICKHOUSE_STORAGE_POLICY_NAME
的值。EXT_CLICKHOUSE_SSL_AUTH
是 ClickHouse 用户进行 SSL 授权所需的变量。如果指定值为“true
”,则使用客户端证书无需密码即可进行授权。如果
TLS_INTERNAL
为“false
”,则EXT_CLICKHOUSE_SSL_AUTH
也必须为“false
”。EXT_CLICKHOUSE_ROOT_CA_PATH
是 CA 证书的路径,如果使用 https 协议连接 ClickHouse (EXT_CLICKHOUSE_PROTOCOL: https
),则需要指定该路径。您可以通过下列其中一种方式指定路径:- 将 ClickHouse CA 证书放置在路径所指定的目录中。在这种情况下,您必须取消
secret.cert-kcs-clickhouse-ca
块的注释。 - 使用 Vault 以存储证书数据。在这种情况下,您必须取消
vault.certificate
部分中cert-kcs-clickhouse-ca
块的注释。
- 将 ClickHouse CA 证书放置在路径所指定的目录中。在这种情况下,您必须取消
- 指定使用外部 ClickHouse DBMS 所需的 secret 值:
configmap:
secret:
infracreds:
type: fromEnvs
envs:
...<
使用外部 ClickHouse DBMS 所需的 secret
>
在本部分中,您必须指定以下变量:
EXT_CLICKHOUSE_WRITE_USER
是为与卡巴斯基容器安全配合使用而创建的具有写入权限的用户的名称。CLICKHOUSE_WRITE_PASSWORD
是为与卡巴斯基容器安全配合使用而创建的具有写入权限的用户的密码。EXT_CLICKHOUSE_READ_USER
是为与卡巴斯基容器安全配合使用而准备的具有读取权限的用户的名称。CLICKHOUSE_READ_PASSWORD
是为与卡巴斯基容器安全配合使用而创建的具有读取权限的用户的密码。如果
EXT_CLICKHOUSE_SSL_AUTH
设置为“true
”,则不使用CLICKHOUSE_READ_PASSWORD
和CLICKHOUSE_WRITE_PASSWORD
。
还可以使用 Vault secret 存储来指定用户名和密码。
配置 MinIO 外部存储设置
要配置卡巴斯基容器安全设置以使用外部兼容 S3 的 MinIO 文件存储:
- 在 values.yaml 配置文件中,指定该解决方案使用外部 MinIO 文件存储:
default:
kcs-s3:
external: true
- 指定使用 MinIO 所需的变量值:
configmap:
infraconfig:
type: fromEnvs
envs:
...
使用外部 MinIO 文件存储所需的变量
>
在本部分中,您必须指定以下变量:
MINIO_HOST
是连接 MinIO 的主机。MINIO_PORT
是连接 MinIO 的端口。MINIO_BUCKET_NAME
是 MinIO 中为卡巴斯基容器安全数据分配的存储容器的名称。MINIO_SSL
是用于与 MinIO 建立 ssl 连接所需的变量(包括使用 https 协议)。如果
TLS_INTERNAL
为“false
”,则MINIO_SSL
必须也为“false
”。MINIO_ROOT_CA_PATH
是 CA 证书的路径,如果使用 https 协议连接 MinIO (MINIO_SSL: true
),则需要指定该路径。您可以通过下列其中一种方式指定路径:- 将 MinIO CA 证书放置在路径所指定的目录中。在这种情况下,您必须取消
secret.cert-minio-ca
块的注释。 - 使用 Vault 以存储证书数据。在这种情况下,您必须取消
vault.certificate
部分中cert-minio-ca
块的注释。
- 将 MinIO CA 证书放置在路径所指定的目录中。在这种情况下,您必须取消
- 指定使用外部 MinIO 文件存储所需的 secret 值:
configmap:
secret:
infracreds:
type: fromEnvs
envs:
...<
使用外部 MinIO 文件存储所需的 secret
>
在本部分中,您必须指定以下变量:
MINIO_ROOT_USER
是为卡巴斯基容器安全指定的 MinIO 用户的名称。MINIO_ROOT_PASSWORD
是为卡巴斯基容器安全指定的 MinIO 用户的密码。
还可以使用 Vault secret 存储服务来指定用户名和密码。