Доверительные отношения между серверами (пункт 5.4)

advertisement
1
Назначение системы .............................................................................................. 2
2
Архитектура системы ............................................................................................. 3
3
Требования к компонентам системы..................................................................... 5
3.1
Хранилище системы SlotStore ........................................................................ 5
3.2
SlotAgent........................................................................................................... 6
3.3
SlotConsole ....................................................................................................... 6
4
Поставка .................................................................................................................. 7
5
Развертывание системы ........................................................................................ 8
5.1
Хранилище системы SlotStore ........................................................................ 8
5.2
Windows сервис SlotAgent ............................................................................... 8
5.3
Web-приложение ............................................................................................. 9
5.4
Доверительные отношения между серверами ............................................ 11
6
Обновление системы ........................................................................................... 15
7
XXX. процедура добавления нового источника.................................................. 16
1 Назначение системы
Система Security Log Tracker (далее Slot или система) предназначена для
мониторинга активности пользователей, связанной с доступом к критичным, с
точки зрения информационной безопасности компании, данным.
Система Slot занимается сбором данных с бизнес-приложений компании о
пользовательской активности, их коррелировании и предоставления единой точки
доступа к ним
Задачи выполняемые системой:
 сбор и долговременно хранение данных с бизнес-приложений компании
о пользовательской активности;
 коррелирование данных различных бизнес-приложений;
 предоставление единой точки доступа к данным.
На данный момент, основными точками корреляции данных являются:
 информация о пользователе (логин сотрудника компании);
 информации об абоненте (MSISDN, BAN)
2 Архитектура системы
Система Slot состоит из четырех уровней:

TargetApplications

SlotDb база данных системы, состоит из двух слоев:
целевые
производится сбор данных;
бизнес-приложения,
с
которых
 SlotMeta метаинформация;
 SlotStore хранилище;

SlotAgent отвечает за работу фоновых процессов:
 обеспечение регулярной выгрузки данных из целевых систем в
хранилище;
 обработка очереди поисковых запросов пользователей к данным
хранилища;

SlotConsole предоставляет интерфейс доступа к данным системы.
Взаимодействие между уровнями показано на рис. 1.
рис. 1. Взаимодействие компонентов системы Slot
3 Требования к компонентам системы
Для развертывания системы необходимо как минимум наличие следующих
компонентов:
 SlotStore (MS SQL Server 2000 + SP4 + последние hotfix’ы)
 SlotAgent (.NET Framework 1.1)
 SlotConsole (IIS 5.0 и выше с поддержкой ASP.NET, .NET Framework 1.1)
3.1 Хранилище системы SlotStore
SlotStore — база данных, работающая под управлением MS SQL Server 2000.
Для работы поисковых запросов к хранилищу, а также процессов обслуживающих
базу необходим запуск службы SQL Server Agent.
Для доступа к данным к удаленным источникам используется служба Distributed
Transactions Coordinator (DTC). Если система разворачивается под управлением
Windows Server 2003, тогда необходимо явно включить поддержку DTC в
компонентах системы (Administrative Tools -> Component Services -> Computers -> My computer
-> Properties (context menu) -> MSDTC ->Security configuration). Необходимо включить
следeдующие опции:
 Network DTC Access;
 Incoming Caller Authentication Required;
 Enable XA Transactions.
рис. 2. Конфигурация службы MSDTS под Windows Server 2003
3.2 SlotAgent
SlotAgent является службой Windows. Требует установки на сервере .NET
Framework 1.1.
Он взаимодействует с базой данных SlotStore и web-интерфейсом SlotConsole.
3.3 SlotConsole
Web-приложение, работает под управлением IIS. Для нормальной работы
приложения, на сервере должна стоять поддержка ASP.NET.
4 Поставка
Поставка включает в себя:
 бэкап базы данных SlotStore или скрипты развертывания пустого
хранилища;
 инсталлятор службы SlotAgent;
 набор файлов web-приложения SlotConsole.
Поставка представляет из себя набор файлов, с логическим делением файлов по
каталогам:
 sql scripts/ или sql backup/;
 agent/;
 webconsole/.
5 Развертывание системы
5.1 Хранилище системы SlotStore
На сервере предварительно должен быть установлен MS SQL Server 2000 SP4 с
последними хотфиксами или старшей версии и запущены следующие службы:
 MS SQL Server Agent;
 Distributed Transaction Coordinator.
1
На сервере необходимо развернуть базу данных SlotStore. В зависимости от
поставки это может быть сделано двумя способами:
 восстановление базы из backup-файла:
 выполнением скриптов создания исходного хранилища.
2
Добавить как минимум одного
пользователя с ролью администратора
(SlotAdmin), и одного пользователя с ролью агента (SlotAgent),
воспользовавшись процедурой dbo.spSYS_User_ADD_toRole.
exec dbo.spsys_user_ADD_toRole
@domainUser = 'Domain\UserName'
, @role
= 'SlotAdmin'
-- Domain\UserName доменное имя пользователя
3
Если база разворачивается из backup-файла — необходимо установить джоб
slot_GC. Он служит для «сборки мусора» — очищает устаревшие и
помеченные на удаление результаты из кэша-поиска, чистит устаревшие
логии и т.п.
3.1
Для настройки параметров запуска джоба «сборки мусора» —
необходимо задать соответствующие переменные в скрипте формирования
джоба, или воспользоваться оснасткой Enterprise Manager из поставки MS SQL
Server 2000.
5.2 Windows сервис SlotAgent
Для работы сервиса на сервере должен быть установлен .NET Framework 1.1.
1
Для установки службы, необходимо скопировать содержимое папки agent/ в
рабочий каталог сервиса.
2
Настроить параметры службы в файлах конфигурации server.config и
slotagent.config.xml.
2.1
Параеметры server.config требующие настройки:
Параметр
Описание
objectUri
Uniform Resource Identifier (URI), т.е. унифицированный
идентификатор ресурса.
port
порт для получения данных от Web-приложения по протоколу
TCP/IP
Например:
<wellknown
mode="SingleCall"
type="BellIntegrator.Slot.SlotSearch.TaskListener,
BellIntegrator.Slot.SlotSearch.Server"
objectUri="SearchServer"
/>
<channel ref="tcp" port="7017" />
Оба указанных параметра должны быть одинаковыми как для Агента и Webприложения.
2.2
Параметры slotagent.config.xml требующие настройки:
Параметр
Описание
SqlConnection
строка подключения к базе данных SlotStore, которая была
развернута на шаге Error! Reference source not found.. Для
подключения к sql-серверу используется Windows
аутентификация.
Например:
<SqlConnection>Integrated Security=SSPI;Persist Security
Info=False;Initial Catalog=slot_store;Data
Source=mssqlsrv\inst001;</SqlConnection>
3
Запустить
из
командной
строки
последовательно выполнить команды:
файл
SlotAgentInstall.bat
или
InstallUtil Slot.Agent.exe
net start SlotAgent
Первая команда устанавливает службу Windows с именем SlotAgent.
Вторая команда выполняет запуск службы. Во время установки будут
запрошены имя пользователя и пароль доменной учетной записи, под
которой будет работать служба. Эта учетная запись уже была
зарегистрирована в базе SlotSore как член роли SlotAgent (см. пункт 5.1 2).
4
Для
деинсталляции
сервиса
можно
воспользоваться
фаилом
SlotAgentUninstall.bat или последовательно выполнить команды:
net stop SlotAgent
InstallUtil Slot.Agent.exe /u
5.3 Web-приложение
Для работы web-приложения, на сервере предварительно должен быть
установлен IIS версии 5.0 и выше, а также включена поддержка ASP.NET 1.1.
5
Для формирования web-приложения, необходимо скопировать содержимое
папки webconsole/ в рабочий каталог сайта.
6
Настроить параметры сайта в конфигурационном файле в web.config.:
Параметр
Описание
dbConnection
строка подключения к базе данных SlotStore, которая
была развернута на шаге Error! Reference source not
found.. Для подключения к sql-серверу используется
Windows аутентификация.
searchServerHost
имя или IP адрес компьютера, где установлен
searchServerName
Uniform Resource Identifier (URI), т.е. унифицированный
идентификатор ресурса (должен соответствовать параметру
objectUri, см. пункт 5.2 2.1 ).
searchServerPort
порт, используется для передачи данных SlotAgent по
протоколу TCP/IP (должен соответствовать параметру
channel, см. пункт 5.2 2.1 ).
SlotAgent
Например:
<add key="dbConnection" value="Integrated Security=SSPI;Persist
Security Info=False;Initial Catalog=
mssqlsrv\inst001;"
slot_store;Data
Source=
/>
<add key="searchServerHost" value="localhost" />
SearchServer"
value="7017" />
<add key="searchServerName" value="
<add key="searchServerPort"
7
/>
Для папки log/ в рабочем каталоге сайта разрешить доступ на запись для
пользователя IUSR_<ИмяКомпьтера>. Пример см. на
рис. 3. Разрешения на запись пользователям Internet Guest Account
8
Для созданного рабочего каталога сайта в IIS требуется создать виртуальный
каталог. Например, если задать имя виртуального каталога slotconsole, тогда
доступ к сайту будет осуществляться по адресу: http://<имя сервера>
/slotconcole/
9
В свойствах виртуального каталога необходимо запретить анонимный доступ
и включить Windows аутентификацию.
5.4 Доверительные отношения между серверами
Если компоненты системы разнесены по разным серверам, в этом случае
требуется настройка «доверительных отношений» между серверами.
Под «доверительными» отношениями подразумевается возможность
пользователя, однажды авторизовавшись в системе, совершать далее все
действия без необходимости повторной авторизации. Повторная авторизация ему
может потребоваться в случае, когда его запрос приводит к взаимодействию
между несколькими системами. Классический пример: пользователь открывает
какую-то страницу web сайта, расположенного на web-сервере (машина клиента и
машина web-сервера – разные машины), а в коде страницы выполняется
соединение с сервером баз данных (сервер баз данных также является физически
другой машиной, чем машина клиента и машина web-сервера).
Благодаря поддержке операционной системой протокола взаимодействия
Kerberos, пользователь может со своей машины выполнить эту цепочку запросов,
ни разу не вводя повторно свои учётные данные. При этом, все действия будут
выполняться от имени некоторой учетной записи (далее – рабочая учётная
запись). В нашем случае, все действия выполняются от учетной записи, которая
прописывается в настройках IIS.
Далее приводятся необходимые настройки, которые
выполнены для корректной работы механизма аутентификации.
должны
быть
5.4.1 Настройки web-сайта
1. В файле web.config строка подключения к базе данных должна содержать
следующие параметры:
a. Integrated Security = SSPI;
b. Trusted_Connection = Yes.
2. В файле web.config необходимо включить имперсонализацию (возможность
приложения ASP.NET выполняться от имени рабочей учётной записи), а
также выбрать способ аутентификации Windows:
<system.web>
<identity impersonate="true" />
<authentication mode="Windows" />
<authorization>
<allow users="*" />
<deny users="?" />
</authorization>
3. На папку, содержащую файлы web-сайта, необходимо дать доступы
рабочей учётной записи.
5.4.2 Настройки IIS
В IIS для web-сайта необходимо создать свой Application Pool. В его настройках
необходимо на вкладке Identity выбрать возможность «настраиваемая»
(«configurable») учётная запись и ввести имя и пароль учётной записи (той самой
рабочей учётной записи).
В настройках виртуального каталога web-сайта на вкладке Directory Security в
группе Authentication and access control нажать кнопочку Edit… и в открывшемся
окне оставить отмеченной только одну галку: Integrated Windows authentication.
Примечание: после этого всё еще возможно, что будет использован один из двух
протоколов: NTLM или Kerberos. Нас интересует второй, т.к. он поддерживает
делегирование (передачу данных учётной записи между серверами для
«автоматической» аутентификации).
5.4.3 Настройки серверов
Все участвующие во взаимодействии сервера должны быть в одном «лесу» Active
Directory (один «лес» включает несколько доменов). В случае, если они находятся
в одном домене, это условие автоматически выполняется.
У каждого из серверов, который должен передавать кому-то дальше данные
рабочей учётной записи, должно быть разрешено делегирование. Чтобы в этом
удостовериться надо зайти в свойства сервера (через Administrative Tools -> Active
Directory Manager -> найти нужный сервер). На вкладке Delegation можно
проверить, что для данной машины установлено свойство «Trust this computer for
delegation to any service (Kerberos only)», либо «Trust this computer for delegation to
specified services only» и далее перечислены сервисы (сервера), для которых
должна быть включена возможность передачи данных рабочей учётной записи.
SQL Server необходимо настроить на возможность внешнего соединения, а также
дать доступ к нему для рабочей учётной записи.
Кроме того, требуется, чтобы соединение с SQL Server выполнялось по протоколу
TCP/IP (а не по Named Pipes, к примеру) для работы делегирования. Посмотреть,
какой протокол будет использоваться, можно следующим образом:
1. запустить приложение cliconfg
2. в списке выбранных протоколов должен быть протокол TCP/IP.
Список выбранных протоколов является приоритетным, те протоколы,
которые идут раньше по очереди – будут выбраны в первую очередь.
Поэтому TCP/IP должен быть первым в списке.
3. На вкладке псевдонимы (Aliases) можно посмотреть, какие уже есть
назначенные псевдонимы, а также проверить, какой для каждого из них
выбран протокол установки соединения.
5.4.4 Настройки учетной записи
Для учетной записи необходимо также разрешить делегирование. Посмотреть о
том, разрешено ли оно можно по аналогии с тем, как это делалось для серверов.
В окне свойств пользователя на вкладке Delegation надо проверить, что выбрано
«Trust this user for delegation to any service (Kerberos only)», либо «Trust this user for
delegation to specified services only» и далее перечислены те сервисы, которым
должна быть разрешена передача данных рабочей учетной записи.
Кроме того, сама учетная запись должна иметь возможность «быть переданной».
Чтобы это проверить, надо на вкладке Account окна свойств пользователя
просмотреть список свойств учетной записи («Account options») и проверить, что
не выбрано «Account is sensitive and cannot be delegated».
Рабочей учётной записи необходимо выполнять действия от имени нужных
сервисов. Для этого, ей необходимо назначить соответствующие SPN (service
principal name). Для этого может быть использована программа setspn.exe,
идущая в комплекте серверных программ Server Support Tools (?). Сделать это
может администратор Active Directory.
Проверить, были ли назначены учётной записи нужные SPN-ы можно, выполнив
команду:
setspn -L <домен>\<имя учётной записи>
Для указанной учётной записи будет выведен список всех SPN, назначенных ей.
В нашем случае, рабочей учётной записи были назначены SPN на web-сервер и
на SQL Server.
5.4.5 Способы диагностирования ошибок
Существует целый набор стандартных ошибок, которые могут возникать при
настройке использования протокола Kerberos. Чтобы определить, в чем именно
связана ошибка, необходимо включить журнализацию и проанализировать
события журнала безопасности (Security). Там можно отследить на каждом из
серверов, участвующих в запросе, какие именно учётные записи выполняют какие
действия и какие при этом задействованы протоколы. К примеру, когда
появляется запись, у которой пользователь указан ANONIMOUS можно смело
предположить, что данные рабочей учётной записи не передаются.
Другой пример, на web-сервере, должна упоминаться учетная запись
пользователя, который выполняет запрос к сайту и при этом в описании события
должно быть упомянуто, что задействован протокол Kerberos (а не NTLM).
Типичной ошибкой, является «попытка присоединиться к SQL Server пустого
пользователя» (это ошибка, которую возвращает SQL Server). Означает это
также, что, просто на просто, данные рабочей учетной записи совсем не были
переданы на SQL Server.
5.4.6 Дополнительные требования
Операционная система должна поддерживать протокол Kerberos. Для
операционных систем Windows Server 2000 существуют какие дополнительные
патчи, делающие эту ОС полностью совместимой с данным протоколом. В
Microsoft Windows 2003 всё есть изначально.
Браузер, которым пользуется клиент, должен поддерживать
аутентификации Windows (устанавливается в настройках браузера).
встроенную
6 Обновление системы
Для обновления системы формируется поставка, которая включает только
изменения компонентов системы. Она может включать:
 набор скриптов, выполняющих необходимые изменения в объектах БД
SlotStore;
 набор измененных файлов службы SlotAgent;
 набор измененных файлов, в точности повторяющих структуру каталогов
web-приложения SlotConsole.
Для применения изменений достаточно:
 для SlotStore выполнить скрипты, под dbo-пользователем (поставка
может включать bat-фийл, который инициализирует выполнения всех
скриптов); скрипты всегда формируются таким образом, что бы их можно
было выполнять неограниченное число раз без нарушения
работоспособности системы;
 для SlotAgent необходимо остановить службу, перезаписать нужные
файлы, запустить службу;
 для SlotConsole достаточно записать все файлы из поставки взамен
старых.
7 XXX. процедура добавления нового источника
1. Сформировать описание источника (используется скрипт см.)
2. Получить скрипт формирования объектов хранилища
declare @script nvarchar(4000)
exec slot_meta.dbo.spScript_Store_Actions
@OperationID = 3,
@dsId = @dsId,
@script = @script OUTPUT ,
-@suffix ,
-@storeDb,
-@useStore,
@useView = 1,
@useIdexes = 1
print @script
3. Перенести описание источника из мета-базы в хранилище
set xact_abort on
begin tran
-DATA SOURCES
--------------------------INSERT INTO Slot_store.dbo.tSysDataSources (
id
, SourceName
, Abbreviation
, Store_TableName
, descr
, id_DataSourceType )
SELECT
m.id
, m.SourceName
, m.Abbreviation
, m.Store_TableName
, m.descr
, m.id_DataSourceType
FROM Slot_meta.dbo.tDataSources m
left join slot_store.dbo.tSysDataSources s on m.id = s.id
where s.id is null
and m.id <> 5 --:)
-STORE CONTENT
--------------------------insert into slot_store.dbo.tSysStoreContent (
id
, id_datasource
, id_domain
, fieldName
, descr )
select
m.id
, m.id_datasource
, m.id_domain
, m.fieldName
, m.descr
from slot_meta.dbo.tStoreContent m
left join slot_store.dbo.tSysStoreContent s on
m.fieldName = s.fieldName
and
m.id_datasource = s.id_datasource
where s.id is null
commit tran
4. Сформировать в хранилище описание кэш-объектов
set xact_abort on
begin tran
declare @dsId int, @Store_TableName varchar(128), @i int,
@entityName varchar(128)
--получение информации об источнике
select
@dsId = id
, @Store_TableName = Store_TableName
from
slot_meta.dbo.tDataSources
where id_DataSourceType = 1 and abbreviation = 'CPA'
--удаление старого описания
--delete from slot_store.dbo.tSysCacheContent where id_DataSource =
@dsId
--формирование описания кэш-объекта
INSERT INTO slot_store.dbo.tSysCacheContent(
id_DataSource
, FieldName
, DataType
, FieldDescr
, srcTable
, srcField
, ValueType
, seq )
SELECT
@dsId,
@Store_TableName +'_id',
'int' as DataType,
'Идентификатор записи' as FieldDescr,
@Store_TableName,
'id' as FieldName,
4 as ValueType,
3000 as seq
union all
SELECT
@dsId,
@Store_TableName +'_'+ sc.FieldName as FieldName,
slot_meta.dbo.fn_dataType_formatValue(d.DataType, sc.length,
sc.scale) as DataType,
sc.descr as FieldDescr,
@Store_TableName,
sc.FieldName,
1 as ValueType,
-(isCorrelationValue - 2)*1000 as seq
FROM
slot_meta.dbo.tStoreContent sc
JOIN slot_meta.dbo.tDomains d ON sc.id_Domain = d.id
WHERE
id_DataSource = @dsId and id_DomainType = 1 -- (простые
домены)
union all
SELECT
@dsId,
slot_meta.dbo.fSYS_Get_TableEntity_Name(@Store_TableName,
sc.FieldName) as FieldName,
slot_meta.dbo.fn_dataType_formatValue(d.DataType, sc.length,
sc.scale) as DataType,
sc.descr as FieldDescr,
slot_meta.dbo.fSYS_Get_TableEntity_Name(@Store_TableName,
sc.FieldName),
sc.FieldName,
5 as ValueType,
1000 + id_Domain*10 as seq
FROM
slot_meta.dbo.tStoreContent sc
JOIN slot_meta.dbo.tDomains d ON sc.id_Domain = d.id
WHERE
id_DataSource = @dsId and id_DomainType = 2 -- (значения
доменов-сущностей)
union all
SELECT
@dsId,
slot_meta.dbo.fSYS_Get_TableEntity_Name(@Store_TableName,
sc.FieldName)+'_id_ER' as FieldName,
'int' as DataType,
'Коэффициент согласования ' + sc.FieldName as FieldDescr,
slot_meta.dbo.fSYS_Get_TableEntity_Name(@Store_TableName,
sc.FieldName),
'id_ER',
2 as ValueType,
1000 + id_Domain*11 as seq
FROM
slot_meta.dbo.tStoreContent sc
JOIN slot_meta.dbo.tDomains d ON sc.id_Domain = d.id
WHERE
id_DataSource = @dsId and id_DomainType = 2 -- (коэффициенты
согласования доменов сущностей)
union all
SELECT
@dsId,
slot_meta.dbo.fSYS_Get_TableEntity_Name(@Store_TableName,
sc.FieldName)+'_id' as FieldName,
'int' as DataType,
'Идентификатор ' + sc.FieldName as FieldDescr,
slot_meta.dbo.fSYS_Get_TableEntity_Name(@Store_TableName,
sc.FieldName),
'id',
3 as ValueType,
3000 as seq
FROM
slot_meta.dbo.tStoreContent sc
JOIN slot_meta.dbo.tDomains d ON sc.id_Domain = d.id
WHERE
id_DataSource = @dsId and id_DomainType = 2 -(идентификаторы значений доменов сущностей)
ORDER BY seq, FieldName
set @i = 0
--восстановление строгой последовательности seq
UPDATE slot_store.dbo.tSysCacheContent
SET @i = seq = @i + 1
WHERE id_DataSource = @dsId
--вывод результата
select * from slot_store.dbo.tSysCacheContent
where id_DataSource = @dsId
order by seq
commit tran
5. Сформировать
процедуру
импорта,
если
требуется,
функции
конвертирования данных, внести изменение в процедуру dbo.spImport_Manager
6. Добавить расписание ежесуточной выгрузки данных.
7. В поле countStmt таблицы dbo.tSysDataSources добавить скрипт запроса для
формирования количественного отчета о импорте.
8. Необходимо произвести настройку источника для отображения в сводном
отчете.
Download