Kaspersky Security для контейнеров

Подключение к внешним ресурсам для хранения данных

Кроме компонентов Kaspersky Security для контейнеров, которые входят в комплект поставки, решение может также работать со следующими внешними ресурсами для хранения данных:

  • база данных PostgreSQL;
  • СУБД ClickHouse;
  • s3-совместимое файловое хранилище MinIO.

Настройка параметров подключения к внешним ресурсам для хранения данных осуществляется с помощью конфигурационного файла values.yaml.

В этом разделе

Создание пользователя для внешней базы данных PostgreSQL

Использование внешней СУБД ClickHouse

Настройка параметров внешнего хранилища MinIO

В начало
[Topic 298985]

Создание пользователя для внешней базы данных PostgreSQL

При работе с Kaspersky Security для контейнеров вы можете использовать базы данных PostgreSQL в составе решения или собственные базы данных PostgreSQL. Для установки внешней базы данных PostgreSQL, которая не работает со схемой Kaspersky Security для контейнеров, требуется создать отдельного пользователя. Вы можете сделать это с помощью установки пакета Helm Chart с заданными параметрами схемы для внешней базы данных PostgreSQL.

Чтобы создать пользователя с индивидуальной схемой для внешней базы данных PostgreSQL:

  1. Выполните следующую команду для создания отдельного пространства имен для внешней базы данных PostgreSQL:

    kubectl create ns kcspg

    где kcspg – пространство имен для внешней базы данных PostgreSQL.

  2. Выполните следующие действия для развертывания внешней базы данных PostgreSQL:
    1. Укажите параметры для развертывания внешней базы данных PostgreSQL в конфигурационном файле pg.yaml.

      Параметры для развертывания внешней базы данных PostgreSQL

      apiVersion: apps/v1

      kind: Deployment

      metadata:

      annotations:

      deployment.kubernetes.io/revision: "1"

      labels:

      app: postgres

      component: postgres

      name: postgres

      namespace: kcspg

      spec:

      replicas: 1

      selector:

      matchLabels:

      app: postgres

      component: postgres

      strategy:

      type: Recreate

      template:

      metadata:

      creationTimestamp: null

      labels:

      app: postgres

      component: postgres

      spec:

      containers:

      - name: postgres

      image: postgres:13-alpine

      ports:

      - containerPort: 5432

      env:

      - name: POSTGRES_DB

      value: api

      - name: POSTGRES_USER

      value: postgres

      - name: POSTGRES_PASSWORD

      value: postgres

      volumeMounts:

      - mountPath: "/var/lib/postgresql/data"

      name: "pgdata"

      imagePullSecrets:

      - name: ci-creds

      volumes:

      - hostPath:

      path: "/home/docker/pgdata"

      name: pgdata

      В параметрах задается пароль к базе данных. Этот пароль затем требуется указать в разделе infraconfig конфигурационного файла values.yaml, который входит в состав пакета Helm Chart в комплекте поставки решения.

    2. Выполните следующую команду:

      kubectl apply -f pg.yaml -n kcspg

    Название этой внешней базы данных формируется следующим образом:

    <имя_пода>.<название пространства имен>.<сервис>.cluster.local

    Например, postgres.kcspg.svc.cluster.local

  3. Выполните следующие действия для развертывания объекта Service в кластере:
    1. Укажите параметры для развертывания объекта Service в конфигурационном файле svc.yaml.

      Параметры для развертывания объекта Service в кластере

      apiVersion: v1

      kind: Service

      metadata:

      name: postgres

      spec:

      type: ClusterIP

      selector:

      component: postgres

      ports:

      - port: 5432

      targetPort: 5432

    2. Выполните следующую команду:

      kubectl apply -f svc.yaml -n kcspg

  4. Выполните следующие действия для создания пользователя, применяемой схемы и связи пользователя и схемы:
    1. С помощью развернутого в п.2b элемента postgres зайдите в под.
    2. Запустите интерактивный терминал psql с помощью следующей команды:

      psql -h localhost -U postgres -d api

    3. Выполните следующие команды:

      CREATE ROLE kks LOGIN PASSWORD 'kks' NOINHERIT CREATEDB;

      CREATE SCHEMA kks AUTHORIZATION kks;

      GRANT USAGE ON SCHEMA kks TO PUBLIC;

  5. В конфигурационном файле values.yaml укажите параметры для использования внешней базы PostgreSQL.

    Параметры в файле values.yaml

    default:

    postgresql:

    external: true

    configmap:

    infraconfig:

    type: fromEnvs

    envs:

    POSTGRES_HOST: postgres.kcspg.svc.cluster.local

    POSTGRES_PORT: 5432

    POSTGRES_DB_NAME: api

    secret:

    infracreds:

    type: fromEnvs

    envs:

    POSTGRES_USER: kks

    POSTGRES_PASSWORD: kks

    Значения параметров, указанных в values.yaml, должны совпадать со значениями сходных параметров в конфигурационных файлах pg.yaml и svc.yaml.

  6. Запустите обновление решения.

    Пример выполнения команд для создания пользователя с внешней базой данных PostgreSQL

    export KUBECONFIG=/root/.kube/config

    export CHART_URL=repo.kcs.kaspersky.com

    export CHART_USERNAME=<CHART_USERNAME>

    export CHART_PASSWORD=<CHART_PASSWORD>

    export VERSION=2.0.0

    export KCS_HOSTNAME=kcs.apps.aws.ext.company.com

    export IMAGE_URL=company.gitlab.examplecloud.com:5050

    export IMAGE_USERNAME=<repo_user>

    export IMAGE_PASSWORD=<repo_pass>

    cd /tmp

    helm registry login --username $IMAGE_USERNAME --password $IMAGE_PASSWORD company.gitlab.examplecloud.com:5050/company/kcs/chart

    helm pull oci://company.gitlab.examplecloud.com:5050/company/kcs/chart/kcs --version $VERSION

    tar -xf kcs*.tgz -C /tmp

    cp -rf /tmp/values.yaml /tmp/kcs

    cd /tmp/kcs

    helm upgrade --install kcs-release --create-namespace --namespace kcs --values values.yaml --version $VERSION --timeout 30m --wait --debug .

В начало
[Topic 292954]

Использование внешней СУБД ClickHouse

Кроме СУБД ClickHouse, которая является компонентом Kaspersky Security для контейнеров и входит в комплект поставки, решение может также работать с ресурсами внешней СУБД ClickHouse. Для этого необходимо выполнить следующее:

Kaspersky Security для контейнеров работает с СУБД ClickHouse 22.6 или выше.

В начало
[Topic 298717]

Создание базы данных для Kaspersky Security для контейнеров

Чтобы создать базу данных для Kaspersky Security для контейнеров,

в ClickHouse на рабочей станции выполните команду:

CREATE DATABASE IF NOT EXISTS kcs

где kcs – имя базы данных для Kaspersky Security для контейнеров.

Чтобы настроить параметры созданной базы данных для Kaspersky Security для контейнеров:

  1. Добавьте пользователей и определите способ их авторизации. Для этого выполните следующие шаги:
    1. Добавьте следующих пользователей:
      • пользователя с правами на чтение данных, полученных ядром Kaspersky Security для контейнеров (англ. reader).

        <roles>

        <kcs_reader_role>

        <grants>

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

        </grants>

        </kcs_reader_role>

      • пользователя с правами на запись данных из запросов от внешних агентов (англ. writer).

        <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. Определите способ авторизации пользователей: с помощью пароля или сертификата.

      Пример настройки пользователей с авторизацией с помощью пароля

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

      Пример настройки пользователей с авторизацией с помощью сертификата

      <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. Определите диски для краткосрочного и долгосрочного хранения данных. При работе с ClickHouse Kaspersky Security для контейнеров может сохранять большой объем данных с разными сроками хранения. По умолчанию основной объем событий хранится максимум 30 минут, а информация об инцидентах сохраняется до 90 дней. Поскольку для записи событий требуется много ресурсов, обеспечивающих высокую скорость записи и выделение места хранения, рекомендуется использовать разные диски для размещения данных на краткосрочное и долгосрочное хранение.

    Пример настройки параметров хранения данных

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

В начало
[Topic 298742]

Настройка параметров внешней СУБД ClickHouse

Чтобы настроить параметры Kaspersky Security для контейнеров для использования внешней СУБД ClickHouse:

  1. В конфигурационном файле values.yaml укажите, что решение использует внешнюю СУБД ClickHouse:

    default:

    kcs-clickhouse:

    external: true

  2. Укажите значения переменных для использования внешней СУБД ClickHouse:

    configmap:

    infraconfig:

    type: fromEnvs

    envs:

    ...<переменные для использования внешней СУБД ClickHouse>

    В этом разделе необходимо указать следующие переменные:

    • EXT_CLICKHOUSE_PROTOCOL – протокол подключения к внешней СУБД ClickHouse.
    • EXT_CLICKHOUSE_HOST – хост подключения к внешней СУБД ClickHouse.
    • EXT_CLICKHOUSE_PORT – порт для подключения к внешней СУБД ClickHouse.
    • EXT_CLICKHOUSE_DB_NAME – имя базы данных, подготовленной для использования с Kaspersky Security для контейнеров.
    • 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 (EXT_CLICKHOUSE_PROTOCOL: https) для подключения к ClickHouse. Вы можете указать путь одним из следующих способов:
  3. Укажите значения секретов для использования внешней СУБД ClickHouse:

    configmap:

    secret:

    infracreds:

    type: fromEnvs

    envs:

    ...<секреты для использования внешней СУБД ClickHouse>

    В этом разделе необходимо указать следующее:

    • EXT_CLICKHOUSE_WRITE_USER – имя пользователя с правами на запись, подготовленного для использования с Kaspersky Security для контейнеров.
    • CLICKHOUSE_WRITE_PASSWORD – пароль пользователя с правами на запись, подготовленного для использования с Kaspersky Security для контейнеров.
    • EXT_CLICKHOUSE_READ_USER – имя пользователя с правами на чтение, подготовленного для использования с Kaspersky Security для контейнеров.
    • CLICKHOUSE_READ_PASSWORD – пароль пользователя с правами на чтение, подготовленного для использования с Kaspersky Security для контейнеров.

      CLICKHOUSE_READ_PASSWORD и CLICKHOUSE_WRITE_PASSWORD не используются, если для переменной EXT_CLICKHOUSE_SSL_AUTH указано значении true.

    Имена пользователей и пароли к ним также можно указать с помощью хранилища секретов Vault.

    Пример настройки параметров внешней СУБД 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: ***********

    ...

    При использовании 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

    ...

В начало
[Topic 298743]

Настройка параметров внешнего хранилища MinIO

Чтобы настроить параметры Kaspersky Security для контейнеров для использования внешнего s3-совместимого файлового хранилища MinIO:

  1. В конфигурационном файле values.yaml укажите, что решение использует внешнее хранилище MinIO:

    default:

    kcs-s3:

    external: true

  2. Укажите значения переменных для использования MinIO:

    configmap:

    infraconfig:

    type: fromEnvs

    envs:

    ...<переменные для использования внешнего хранилища MinIO>

    В этом разделе необходимо указать следующие переменные:

    • MINIO_HOST – хост для подключения к MinIO.
    • MINIO_PORT – порт для подключения к MinIO.
    • MINIO_BUCKET_NAME – имя раздела в MinIO, выделенного для хранения данных Kaspersky Security для контейнеров.
    • MINIO_SSL – переменная для подключения к MinIO с использованием ssl (в том числе с помощью протокола https).

      Если переменная TLS_INTERNAL имеет значение false, значение MINIO_SSL также должно быть false.

    • MINIO_ROOT_CA_PATH – путь до CA-сертификата, который указывается в случае использования протокола https (MINIO_SSL: true) для подключения к MinIO. Вы можете указать путь одним из следующих способов:
  3. Укажите значения секретов для использования внешнего хранилища MinIO:

    configmap:

    secret:

    infracreds:

    type: fromEnvs

    envs:

    ...<секреты для использования внешнего хранилища MinIO>

    В этом разделе необходимо указать следующее:

    • MINIO_ROOT_USER - имя пользователя MinIO, выделенного для Kaspersky Security для контейнеров.
    • MINIO_ROOT_PASSWORD - пароль пользователя MinIO, выделенного для Kaspersky Security для контейнеров.

    Имена пользователей и пароли к ним также можно указать с помощью хранилища секретов Vault.

    Пример настройки параметров внешнего файлового хранилища MinIO

    kcs-s3:

    enabled: true

    external: true

    ...

    configmap:

    infraconfig:

    type: fromEnvs

    envs:

    ...

    MINIO_HOST: kcs-s3

    MINIO_PORT: 9000

    MINIO_BUCKET_NAME: reports

    MINIO_SSL: true

    MINIO_ROOT_CA_PATH: /etc/ssl/certs/minio-ca.crt

    ...

    secret:

    ...

    infracreds:

    type: fromEnvs

    envs:

    ...

    MINIO_ROOT_USER: kcs_user

    MINIO_ROOT_PASSWORD: ********

    ...

    При использовании Vault:

    vault:

    ...

    secret:

    type: managedByVault

    ...

    MINIO_ROOT_USER: kv/test/minio@MINIO_ROOT_USER

    MINIO_ROOT_PASSWORD: kv/test/minio@MINIO_ROOT_PASSWORD

В начало
[Topic 298749]