Kaspersky Container Security

Usar ClickHouse, el DBMS externo

Además del DBMS ClickHouse (componente de Kaspersky Container Security incluido en el kit de distribución), la solución también puede funcionar con los recursos del DBMS externo ClickHouse. Para ello, debe realizar las siguientes acciones:

Kaspersky Container Security funciona con ClickHouse 22.6 o posterior.

Inicio de página
[Topic 298717]

Crear una base de datos para Kaspersky Container Security

Para crear una base de datos para Kaspersky Container Security, realice lo siguiente:

En ClickHouse, en la estación de trabajo, ejecute el siguiente comando:

CREATE DATABASE IF NOT EXISTS kcs

donde kcs es el nombre de la base de datos para Kaspersky Container Security.

Para configurar la base de datos creada para Kaspersky Container Security:

  1. Añada usuarios y defina el método de autorización. Para ello, debe realizar las siguientes acciones:
    1. Añada los siguientes usuarios:
      • un usuario con derechos para leer los datos que recibe el núcleo de Kaspersky Container Security (lectura)

        <roles>

        <kcs_reader_role>

        <grants>

        <query>GRANT SELECT ON kcs.*</query>

        </grants>

        </kcs_reader_role>

      • un usuario con derechos para escribir datos a partir de solicitudes de agentes externos (escritura)

        <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>

    2. Especifique el método para autorizar usuarios: con una contraseña o mediante un certificado.

      Ejemplo de configuración de usuarios con autenticación mediante contraseña

      <clickhouse>

      ...

      <kcsuser-write>

      <password>*********</password>

      <networks>

      <ip>::/0</ip>

      </networks>

      ...

      <grants>

      <query>GRANT kcs_writer_role</query>

      </grants>

      </kcsuser-write>

      <kcsuser-read>

      <password>*********</password>

      <networks>

      <ip>::/0</ip>

      </networks>

      ...

      <grants>

      <query>GRANT kcs_reader_role</query>

      </grants>

      </kcsuser-read>

      ...

      <roles>

      <kcs_reader_role>

      <grants>

      <query>GRANT SELECT ON kcs.*</query>

      </grants>

      </kcs_reader_role>

      <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>

      ...

      </roles>

      ...

      </clickhouse>

      Ejemplo de configuración de usuarios con autenticación mediante certificados

      <clickhouse>

      ...

      <kcsuser-write>

      <ssl_certificates>

      <common_name>kcsuser-write</common_name>

      </ssl_certificates>

      <networks>

      <ip>::/0</ip>

      </networks>

      ...

      <grants>

      <query>GRANT kcs_writer_role</query>

      </grants>

      </kcsuser-write>

      <kcsuser-read>

      <ssl_certificates>

      <common_name>kcsuser-read</common_name>

      </ssl_certificates>

      <networks>

      <ip>::/0</ip>

      </networks>

      ...

      <grants>

      <query>GRANT kcs_reader_role</query>

      </grants>

      </kcsuser-read>

      ...

      <roles>

      <kcs_reader_role>

      <grants>

      <query>GRANT SELECT ON kcs.*</query>

      </grants>

      </kcs_reader_role>

      <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>

      ...

      </roles>

      ...

      </clickhouse>

  2. Especifique los discos para el almacenamiento de datos a corto y largo plazo. Al trabajar con ClickHouse, Kaspersky Container Security puede almacenar grandes cantidades de datos con diversos períodos de retención. De forma predeterminada, la mayoría de los eventos se almacenan durante 30 minutos como máximo, mientras que la información sobre incidentes se almacena durante 90 días como máximo. Dado que la grabación de eventos requiere una cantidad considerable de recursos, para garantizar una velocidad de grabación alta y suficiente espacio en disco, se recomienda usar diferentes discos para el almacenamiento de datos a corto y largo plazo.

    Ejemplo de la configuración del almacenamiento de datos

    <clickhouse>

    ...

    <storage_configuration>

    <disks>

    <kcs_disk_hot>

    <path>/etc/clickhouse/hot/</path>

    </kcs_disk_hot>

    <kcs_disk_cold>

    <path>/etc/clickhouse/cold/</path>

    </kcs_disk_cold>

    </disks>

    <policies>

    <kcs_default>

    <volumes>

    <default>

    <disk>kcs_disk_hot</disk>

    </default>

    <cold>

    <disk>kcs_disk_cold</disk>

    </cold>

    </volumes>

    </kcs_default>

    </policies>

    </storage_configuration>

    ...

    </clickhouse>

Inicio de página

[Topic 298742]

Configuración del DBMS externo ClickHouse

Para configurar el uso del DBMS externo ClickHouse en Kaspersky Container Security:

  1. En el archivo de configuración values.yaml, especifique que la solución usará el DBMS externo ClickHouse:

    default:

    kcs-clickhouse:

    external: true

  2. Especifique las variables para usar el DBMS externo ClickHouse:

    configmap:

    infraconfig:

    type: fromEnvs

    envs:

    ...<variables para usar el DBMS externo ClickHouse>

    En esta sección, debe especificar las siguientes variables:

    • EXT_CLICKHOUSE_PROTOCOL: protocolo para conectarse con el DBMS externo ClickHouse
    • EXT_CLICKHOUSE_HOST: host de la conexión con el DBMS externo ClickHouse externo
    • EXT_CLICKHOUSE_PORT: puerto para conectarse con el DBMS externo ClickHouse
    • EXT_CLICKHOUSE_DB_NAME: nombre de la base de datos preparada para usarse con Kaspersky Container Security
    • EXT_CLICKHOUSE_COLD_STORAGE_NAME: nombre del disco donde ClickHouse almacenará a largo plazo datos sobre incidentes
    • EXT_CLICKHOUSE_STORAGE_POLICY_NAME: nombre de la directiva de almacenamiento de datos según la que ClickHouse transferirá al disco los datos sobre incidentes para su almacenamiento a largo plazo

      Si usa el mismo disco para el almacenamiento de datos a corto y a largo plazo, no deberá especificar los valores de EXT_CLICKHOUSE_COLD_STORAGE_NAME ni de EXT_CLICKHOUSE_STORAGE_POLICY_NAME.

    • EXT_CLICKHOUSE_SSL_AUTH: variable de la autenticación SSL para los usuarios de ClickHouse Si se especifica el valor true, la autenticación se realiza sin contraseñas, pero mediante certificados de clientes.

      Si TLS_INTERNAL tiene el valor false, EXT_CLICKHOUSE_SSL_AUTH también debe tener el valor false.

    • EXT_CLICKHOUSE_ROOT_CA_PATH: ruta al certificado de CA, que se especifica si se usa el protocolo https para conectarse a ClickHouse (EXT_CLICKHOUSE_PROTOCOL: https). Puede especificar la ruta de las siguientes maneras:
      • Coloque el certificado de CA de ClickHouse en el directorio que determina la ruta. En ese caso, debe quitar las marcas de comentarios del bloque the secret.cert-kcs-clickhouse-ca.
      • Use Vault para almacenar los datos del certificado. En este caso, debe quitar las marcar de comentarios del bloque cert-kcs-clickhouse-ca en la sección vault.certificate.
  3. Especifique los valores de los secretos para usar el DBMS externo ClickHouse:

    configmap:

    secret:

    infracreds:

    type: fromEnvs

    envs:

    ...<secretos para usar el DBMS externo ClickHouse>

    En esta sección, debe especificar lo siguiente:

    • EXT_CLICKHOUSE_WRITE_USER: nombre de un usuario con permisos de escritura, que se creó para usarse con Kaspersky Container Security
    • CLICKHOUSE_WRITE_PASSWORD: contraseña de un usuario con permisos de escritura, que se creó para usarse con Kaspersky Container Security
    • EXT_CLICKHOUSE_READ_USER: nombre de un usuario con permisos de lectura, que se preparó para usarse con Kaspersky Container Security
    • CLICKHOUSE_READ_PASSWORD: contraseña de un usuario con permisos de lectura, que se creó para usarse con Kaspersky Container Security

      Las variables CLICKHOUSE_READ_PASSWORD y CLICKHOUSE_WRITE_PASSWORD no se usan si el valor de EXT_CLICKHOUSE_SSL_AUTH es true.

    Los nombres de usuario y contraseñas también pueden especificarse al usar el almacenamiento de secretos Vault.

    Ejemplo de la configuración del DBMS externo ClickHouse

    kcs-clickhouse:

    external: true

    persistent: true

    ...

    configmap:

    infraconfig:

    type: fromEnvs

    envs:

    ...

    EXT_CLICKHOUSE_PROTOCOL: https

    EXT_CLICKHOUSE_HOST: clickhouse.ns.svc.cluster.local

    EXT_CLICKHOUSE_PORT: 8443

    EXT_CLICKHOUSE_DB_NAME: kcs

    EXT_CLICKHOUSE_COLD_STORAGE_NAME: cold

    EXT_CLICKHOUSE_STORAGE_POLICY_NAME: kcs_default

    EXT_CLICKHOUSE_SSL_AUTH: false

    EXT_CLICKHOUSE_ROOT_CA_PATH: /etc/ssl/certs/kcs-clickhouse-ca.crt

    ...

    secret:

    ...

    infracreds:

    type: fromEnvs

    envs:

    ...

    EXT_CLICKHOUSE_WRITE_USER: kcsuser-write

    EXT_CLICKHOUSE_READ_USER: kcsuser-read

    CLICKHOUSE_WRITE_PASSWORD: **************

    CLICKHOUSE_READ_PASSWORD: ***********

    ...

    Al usar Vault:

    vault:

    ...

    secret:

    type: managedByVault

    ...

    EXT_CLICKHOUSE_WRITE_USER: kv/secret/kcs/clickhouse@EXT_CLICKHOUSE_WRITE_USER

    EXT_CLICKHOUSE_READ_USER: kv/secret/kcs/clickhouse@EXT_CLICKHOUSE_READ_USER

    CLICKHOUSE_WRITE_PASSWORD: kv/secret/kcs/clickhouse@CLICKHOUSE_WRITE_PASSWORD

    CLICKHOUSE_READ_PASSWORD: kv/secret/kcs/clickhouse@CLICKHOUSE_READ_PASSWORD

    ...

Inicio de página
[Topic 298743]