Шаг 6. Настройка интеграции со смежными сервисами (опциональный)#

Ниже описана процедура интеграции с рекомендованными АО «СберТех» продуктами. На усмотрения пользователя может быть настроена интеграция с аналогичными по функциональности продуктом от других производителей:

Система аудита (ПКБ) настраивается на стороне клиента. Настройка отправки событий в syslog для аудита описана в разделе «Безопасность и аудит» документа «Руководство администратора».

Настройка интеграции с локальным syslog#

Чтобы настроить интеграцию:

  1. Перед запуском кластера выполните действия:

    • Скопируйте библиотеку ise-audit-syslog-integration из каталога ./libs/optional в каталог ./libs дистрибутива DataGrid:

      cp -r ./libs/optional/ise-audit-syslog-integration/ ./libs/
      
    • Включите аудит — добавьте в конфигурационный файл кластера блок:

      <bean id="securityPluginConfiguration" class="com.sbt.security.ignite.core.SecurityPluginConfiguration">
          <property name="auditIntegrationConfiguration" ref="auditCfg"/>
      </bean>
      
      <bean id="auditCfg" class="com.sbt.security.ignite.integration.audit.syslog.SyslogIntegrationConfiguration">
      <property name="sourceSystemName" value="IgniteSE"/>
      <property name="moduleName" value="IgniteSE"/>
      <property name="nodeName" value="localhost"/>
      </bean>
      
  2. Запустите и активируйте кластер DataGrid.

    Java#
     // Запуск кластера.
     ./bin/startServer.sh
    
     // Активация кластера.
     ./bin/control.sh --set-state ACTIVE
    
  3. Проверьте записи аудита с помощью команды:

    sudo less /var/log/messages
    

При корректной настройке события кластера DataGrid будут отправляться в локальный syslog.

Настройка интеграции с компонентом PACMAN (CFGA)#

Взаимодействие DataGrid с конфигуратором возможно в двух режимах: режим эмуляции и режим с обычным сервером конфигуратора. Сейчас используется только первый режим.

Чтобы настроить интеграцию:

  1. Используйте заглушки (placeholders) в конфигурации узлов DataGrid вместо логинов и паролей.

    Пример
    XML#
    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:util="http://www.springframework.org/schema/util"
           xsi:schemaLocation="
                http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans.xsd
                http://www.springframework.org/schema/util
                http://www.springframework.org/schema/util/spring-util.xsd">
    
        <bean abstract="false"  id="ignIgniteConfiguration" class="org.apache.ignite.configuration.IgniteConfiguration">
            <!-- ############# inc/property/ ############# -->
            <!-- Свойство `binaryConfiguration`. -->
            <property name="binaryConfiguration">
                <bean class="org.apache.ignite.configuration.BinaryConfiguration">
                    <property name="compactFooter" value="true"/>
                </bean>
            </property>
            <!-- Конец свойства `binaryConfiguration`. -->
            <property name="discoverySpi">
                <ref bean="ignTcpDiscoverySpi"/>
            </property>
            <property name="communicationSpi">
                <ref bean="ignTcpCommunicationSpi"/>
            </property>
            <!-- Свойство `gridLogger`. -->
            <property name="gridLogger">
                 <bean class="org.apache.ignite.logger.log4j2.Log4J2Logger">
                    <constructor-arg type="java.lang.String" value="/opt/ignite/server/config/ignite-log4j2.xml"/>
                </bean>
            </property>
            <!-- Конец свойства `gridLogger`. -->
    
            <!-- Свойство `metricExporterSpi`. -->
            <property name="metricExporterSpi">
              <list>
                <bean class="org.apache.ignite.spi.metric.jmx.JmxMetricExporterSpi"/>
              </list>
            </property>
            <!-- Конец свойства `metricExporterSpi`. -->
    
            <!-- `property_main`. -->
            <property name="consistentId"            value="node-01"/>
            <property name="workDirectory"           value="/opt/ignite/server/work"/>
            <property name="metricsLogFrequency"     value="30000"/>
            <property name="failureDetectionTimeout" value="30000"/>
            <property name="rebalanceThreadPoolSize" value="4"/>
            <property name="peerClassLoadingEnabled" value="true"/>
            <property name="activeOnStart"           value="true"/>
            <!-- Конец `property_main`. -->
            <property name="dataStorageConfiguration">
                <ref bean="ignDataStorageConfiguration"/>
            </property>
    
            <property name="connectorConfiguration">
                <ref bean="ignConnectorConfiguration"/>
            </property>
            <property name="clientConnectorConfiguration">
                <ref bean="ignClientConnectorConfiguration"/>
            </property>
            <property name="transactionConfiguration">
                <ref bean="ignTransactionConfiguration"/>
            </property>
    
            <!-- `pluginProviders_with_ssl_audit`. -->
            <property name="pluginProviders">
                <list>
                    <ref bean="securityPlugin"/>
    
                    <bean class="com.sbt.ignite.CheckParametersPluginProvider">
                        <property name="stopNodeOnCheckFailure" value="false" />
                        <property name="nodeAttributesHardCheck" value="true" />
                    </bean>
                    <bean class="org.apache.ignite.cdc.conflictresolve.CacheVersionConflictResolverPluginProvider">
                        <property name="clusterId" value="2" />
                        <property name="caches">
                            <list>
                                <value>rb_app_callbacks</value>
                                <value>rb_app_message</value>
                                <value>rb_app</value>
                            </list>
                        </property>
                        <property name="conflictResolveField" value="timestamp" />
                    </bean>
                </list>
            </property>
    
            <!-- Свойство `snapshotThreadPoolSize`. -->
            <property name="snapshotThreadPoolSize"  value="4"/>
            <!-- Конец свойства `snapshotThreadPoolSize`. -->
    
            <!-- Запустите `CustomConfiguration`. -->
            <!-- Завершите `CustomConfiguration`. -->
        </bean>
    
        <!-- ############# inc/bean/ ############# -->
        <!-- `TcpDiscoverySpi`. -->
        <bean id="ignTcpDiscoverySpi" class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
            <property name="localPort"      value="47500"/>
            <property name="localPortRange" value="9"/>
            <property name="connectionRecoveryTimeout" value="30000"/>
            <property name="ipFinder">
                <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
                    <property name="addresses">
                        <list>
                            ...
                            ...
                            ...
                        </list>
                    </property>
                </bean>
            </property>
        </bean>
        <!-- Конец `TcpDiscoverySpi`. -->    <!-- Bean `TcpCommunicationSpi`. -->
        <bean id="ignTcpCommunicationSpi" class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
            <property name="localPort"             value="47100"/>
            <property name="localAddress"          value="#{localhostInetAddress.getHostAddress()}"/>
            <property name="sharedMemoryPort"      value="-1"/>
            <property name="idleConnectionTimeout" value="600000"/>
            <property name="socketWriteTimeout"    value="30000"/>
            <property name="selectorsCount"        value="18"/>
            <property name="connectionsPerNode"    value="1"/>
            <property name="usePairedConnections"  value="false"/>
            <property name="messageQueueLimit"     value="0"/>
        </bean>
        <!-- Конец bean `TcpCommunicationSpi`. -->
    
        <bean id="securityPlugin" class="com.sbt.security.ignite.core.SecurityPluginProvider">
            <constructor-arg ref="securityPluginConfiguration"/>
        </bean>
    
         <bean id="securityPluginConfiguration" class="com.sbt.security.ignite.core.SecurityPluginConfiguration">
         <property name="nodeLogin" value="#{igniteProperties.getProperty('SecurityPluginConfiguration.nodeLogin')}"/>
         <property name="nodePassword" value="#{igniteProperties.getProperty('SecurityPluginConfiguration.nodePassword')}"/>
         <property name="selfKeyStorePath" value="/opt/ignite/server/config/keystore.jks"/>
         <property name="selfKeyStorePassword" value="#{igniteProperties.getProperty('SecurityPluginConfiguration.selfKeyStorePwd')}"/>
         <property name="trustStorePath" value="/opt/ignite/server/config/truststore.jks"/>
         <property name="trustStorePassword" value="#{igniteProperties.getProperty('SslContextFactory.trustStorePassword')}"/>
         <property name="userDataStore" value="/opt/ignite/server/config/ansible-security-data.json"/>
         <property name="auditIntegrationConfiguration">
             <bean class="com.sbt.security.ignite.integration.audit3.AuditConnectionConfiguration">
                 <property name="connectionProperties" value="#{auditConfigurator.getPlatformPropertyLoader().loadProperties()}"/>
             </bean>
         </property>
     </bean>
    
      <!-- `client: False.` -->
      <!-- `configurator: True`. -->
        <!-- Bean `ignConnectorConfiguration`. -->
        <bean id="ignConnectorConfiguration" class="org.apache.ignite.configuration.ConnectorConfiguration">
            <property name="host"          value="0.0.0.0"/>
            <property name="port"          value="11211"/>
            <property name="idleTimeout"   value="180000"/>
    
        </bean>
        <!-- Конец bean `ignConnectorConfiguration`. -->
        <!-- Bean `ignClientConnectorConfiguration`. -->
        <bean id="ignClientConnectorConfiguration" class="org.apache.ignite.configuration.ClientConnectorConfiguration">
            <property name="host"           value="0.0.0.0"/>
            <property name="port"           value="10800"/>
            <property name="portRange"      value="100"/>
            <property name="jdbcEnabled"    value="false"/>
            <property name="odbcEnabled"    value="false"/>
            <property name="threadPoolSize" value="16"/>
    
            <property name="thinClientEnabled" value="true"/>
            <property name="thinClientConfiguration" ref="thinClientConfiguration"/>
    
        </bean>
        <!-- Конец bean `ClientConnectorConfiguration`. -->
        <!-- Bean `thinClientConfiguration`. -->
        <bean id="thinClientConfiguration" class="org.apache.ignite.configuration.ThinClientConfiguration">
            <property name="maxActiveComputeTasksPerConnection" value="100"/>
        </bean>
        <!-- Конец bean `thinClientConfiguration`. -->
        <!-- `TransactionConfiguration`. -->
        <bean id="ignTransactionConfiguration"  class="org.apache.ignite.configuration.TransactionConfiguration">
            <property name="defaultTxIsolation"              value="READ_COMMITTED"/>
            <property name="defaultTxTimeout"                value="300000"/>
            <property name="txTimeoutOnPartitionMapExchange" value="10000"/>
        </bean>
        <!-- Конец `TransactionConfiguration`. -->
        <!-- Запустите bean `ignDefaultDataRegionConfiguration`. -->
        <bean id="ignDefaultDataRegionConfiguration" class="org.apache.ignite.configuration.DataRegionConfiguration">
            <property name="name"                       value="default"/>
            <property name="metricsRateTimeInterval"                    value="1000"/>
            <property name="persistenceEnabled"                    value="false"/>
            <property name="maxSize"                    value="#{5L * 1024 * 1024 * 1024}"/>
            <property name="metricsEnabled"                    value="true"/>
            <property name="cdcEnabled"                    value="true"/>
            <property name="initialSize"                    value="#{5L * 1024 * 1024 * 1024}"/>
            <property name="pageEvictionMode"           value="RANDOM_2_LRU"/>
        </bean>
            <!-- Завершите bean `ignDefaultDataRegionConfiguration`. -->
    
        <!-- Bean `ignDataStorageConfiguration`. -->
        <!-- Настройка durable памяти для узла DataGrid. -->
        <bean id="ignDataStorageConfiguration" class="org.apache.ignite.configuration.DataStorageConfiguration">
    
            <!-- Переопределяет конфигурацию региона данных по умолчанию, которая создается автоматически. -->
            <property name="defaultDataRegionConfiguration">
                <ref bean="ignDefaultDataRegionConfiguration"/>
            </property>
    
            <!-- Установите максимальный размер, который WAL-архив может занимать в файловой системе. -->
            <property name="maxWalArchiveSize" value="#{15L * 1024 * 1024 * 1024}"/>
            <!-- Добавьте любую строку в конечную конфигурацию. -->
                    <!-- Устанавливает путь к каталогу WAL-архива. -->
                    <property name="walArchivePath" value="/opt/ignite/wal_archive"/>
                    <property name="walPath" value="/opt/ignite/wal"/>
                    <!-- Устанавливает размер WAL-сегмента. -->
                    <property name="walSegmentSize" value="#{1024*1024*1024}"/>
                    <!-- Устанавливает свойство, которое определеяет поведение операции `WAL fsync`. -->
                    <property name="walMode" value="LOG_ONLY"/>
                    <property name="metricsEnabled" value="true"/>
                    <property name="metricsRateTimeInterval" value="60000"/>
                    <property name="walCompactionEnabled" value="true"/>
                    <!-- Установите максимальный размер, который WAL-архив может занимать в файловой системе. -->
                    <property name="walForceArchiveTimeout" value="10000"/>
                    <property name="cdcWalPath" value="/opt/ignite/wal_archive/cdc" />
    
        </bean>
       <!-- Конец bean `ignDataStorageConfiguration`. -->
    
        <bean id="auditConfigurator" class="com.sbt.core.commons.config_spring.PlatformPlaceholderConfigurer">
            <constructor-arg name="artifactId" value="audit-client-core2-platform" />
            <property name="ignoreUnresolvablePlaceholders" value="false" />
        </bean>
    
      <!-- `configurator: True`. -->
        <!-- Beans для `ignite_se_use_configurator`. -->
        <bean id="igniteConfigurator" class="com.sbt.core.commons.config_spring.PlatformPlaceholderConfigurer">
            <constructor-arg name="artifactId" value="ise" />
            <property name="ignoreUnresolvablePlaceholders" value="false" />
        </bean>
        <bean id="ignitePlatformProperties" factory-bean="igniteConfigurator" factory-method="getPlatformPropertyLoader" />
        <bean id="igniteProperties" factory-bean="ignitePlatformProperties" factory-method="loadProperties" />
        <!-- Конец beans для `ignite_se_use_configurator`. -->
    
        <!-- Запустите `CustomConfiguration`. -->
           <import resource="file:/opt/ignite/server/config/caches.xml"/>
        <!-- Завершите `CustomConfiguration`. -->
    
    </beans>
    
  2. Запустите узлы с помощью JVM-опций:

    • для режима эмуляции:

      -Dgroup.id=somegroupid
      -Dnode.id=somenodeid
      -Dmodule.id=somemoduleid
      -Dconfig-store.disabled=true
      -Dplatform-config=file:platform.config
      
    • для режима с сервером конфигуратора:

      -Dgroup.id=somegroupid
      -Dnode.id=somenodeid
      -Dmodule.id=somemoduleid
      -Dconfig-store.disabled=false
      -Dplatform-config=file:platform.config
      
  3. Создайте файл platform.config:

    ######################
    # Managed via Ansible
    # DO NOT EDIT
    ######################
    ise@SslContextFactory.keyStorePassword=****
    ise@SslContextFactory.trustStorePassword=****
    ise@SecurityPluginConfiguration.selfKeyStorePwd=*****
    ise@SecurityPluginConfiguration.nodeLogin=****
    ise@SecurityPluginConfiguration.nodePassword=*****
    
    ######################
    # Managed via Ansible
    # DO NOT EDIT
    ######################
    config-store@jdbc.url=*******
    config-store@crypto.password=***
    config-store@jdbc.password=***
    config-store@jdbc.login=***
    
    platform-commons@sudirLogoutUrl=******
    platform-commons@sudir-enabled=true
    platform-commons@monitoring.enabled=false
    platform-commons@sudirLoginUrl=*******
    platform-commons@net.ssl.enabled=true
    platform-commons@net.ssl.keyStoreType=jks
    platform-commons@net.jmx.port=1115
    platform-commons@net.ssl.trustStoreType=jks
    platform-commons@access.dev-mode=false
    
    audit-client-core2-platform@mock[GROUP]/enabled.mock=true
    audit-client-core2-platform@main.server=
    audit-client-core2-platform@fallback.server=
    audit-client-core2-platform@retry.attempts=3
    audit-client-core2-platform@delivery.timeout.ms=120000
    audit-client-core2-platform@request.timeout.ms=30000
    audit-client-core2-platform@linger.ms=10
    
    audit-client-core2-platform@security.protocol=PLAINTEXT
    audit-client-core2-platform@ssl.protocol=TLSv1.2
    audit-client-core2-platform@ssl.truststore.location=
    audit-client-core2-platform@ssl.truststore.password=
    audit-client-core2-platform@ssl.keystore.location=
    audit-client-core2-platform@ssl.keystore.password=
    audit-client-core2-platform@ssl.key.password=
    
    ise@SslContextFactory.keyStorePassword=****
    ise@SslContextFactory.trustStorePassword=****
    ise@SecurityPluginConfiguration.selfKeyStorePwd=*****
    ise@SecurityPluginConfiguration.nodeLogin=****
    ise@SecurityPluginConfiguration.nodePassword=*****
    

Примечание

Для копирования папки используйте команду cp -r /opt/ignite/server/libs/optional/ise-security-pprb-configurator /opt/ignite/server/libs/.