Безопасность в последних версиях Caché и Ensemble Грачев Андрей «Школа Инноваций InterSystems 2007»
Welcome/FAQ Цель занятий Практический взгляд на современную систему безопасности в Caché и Ensemble Для кого эти занятия Для разработчиков, кто знаком с СУБД Caché и её технологиями.
Безопасность. Аспекты Доступность Данные должны быть доступны тому, кому они предназначены Целостность Данные не должны быть несанкционированно изменены Защита от НСД Данные не должны быть доступны тому, кто не имеет на них право («не пущать!»)
Безопасность. Задачи Помешать нарушить Система должна предупреждать инциденты Идентифицировать Факт попытки нарушения нужно уметь идентифицировать Принять меры к неповторению Учесть ошибки, внести исправления
План Введение в модель безопасности Caché Введение в модель безопасности Caché System Management Portal System Management Portal Аутентификация Аутентификация Авторизация Авторизация Система Аудита и Security Advisor Система Аудита и Security Advisor Защищенное взаимодействие и криптование Защищенное взаимодействие и криптование Вопросы и ответы Вопросы и ответы
Проверка компьютеров.... Пожалуйста, не редактируйте ничего в настройках ОС и Caché до начала занятий! Пожалуйста, не редактируйте ничего в настройках ОС и Caché до начала занятий!
Модель безопасности Caché. Введение
Безопасность, безопасность..... Аутентификация Авторизация Аудит Firewall Сертификация FIPS Стандарты Пароли Пользователь Роли Права Крипт Identity Management Hashing Контроль доступа ГОСТ AES Kerberos LDAP Технологии SSL/TLS
Caché Advanced Security Простая, единообразная архитектура Простая, единообразная архитектура Полная и высокопроизводительная модель для разработки приложений Полная и высокопроизводительная модель для разработки приложений Возможность простой интеграции и встраивания управления безопасностью в приложения. Возможность простой интеграции и встраивания управления безопасностью в приложения. Минимизация нагрузки на общую производительность Минимизация нагрузки на общую производительность Возможность быть частью безопасной (защищенной) среды и обеспечить взаимодействие с другими приложениями Возможность быть частью безопасной (защищенной) среды и обеспечить взаимодействие с другими приложениями Возможность реализовать строгие политики разграничения доступа и аудита Возможность реализовать строгие политики разграничения доступа и аудита Использование стандартов и сертификация Использование стандартов и сертификация Caché Advanced Security Современная модель безопасности введена с версии Caché 5.1
Компоненты 1. Аутентификация: идентификация пользователей 2. Авторизация: убедиться, что пользователь имеет право доступа к запрашиваемым ресурсам 3. Аудит: вести журнал событий 4. Безопасное взаимодействие: защитить сетевой трафик от прослушивания и подмены 5. Шифрация базы данных: защита от неавторизованного просмотра данных
Объекты управления. Термины 1. Resources, Permissions, Privileges –Resources (ресурсы): основной объект защиты (БД, служба, приложение, действие, и т.д.). Обеспечивает защиту одной или более сущности (Asset). Asset - физический объект защиты –Permissions (право): некоторое действие, которое можно выполнить с ресурсом (читать, писать, удалить, выполнить и т.д.) –Privileges (привелегия): пара Resource:Permissions (%DB_MyDB:Read). 2. Users, Roles –User (пользователь). Например, _system, guest –Role (роль): набор пользователей (users). Например, %All –Привилегии связаны с ролями
Подготовка защищенного окружения Подготовка безопасного окружения Подготовка безопасного окружения –Выполняется до инсталляции Caché –Метод аутентификации и авторизации определяется решаемыми задачами На всех платформах Caché имеется поддержка протокола Kerberos от вендора На всех платформах Caché имеется поддержка протокола Kerberos от вендора Степень защищенности определяется по самому слабому звену Степень защищенности определяется по самому слабому звену
Начальные установки безопасности В процессе инсталляции запрашивается начальный уровень настроек: В процессе инсталляции запрашивается начальный уровень настроек: Это именно начальные настройки для сервисов и уровня безопасности Caché Это именно начальные настройки для сервисов и уровня безопасности Caché Minimal/Минимальные Minimal/Минимальные Normal/Средние Normal/Средние Locked Down/Максимальные Locked Down/Максимальные
Начальные установки безопасности (2) Разница для пользователей: Разница для пользователей: 1.Шаблон пароля (i.e. 3.32ANP or 8.32ANP) 2.Учетная запись _SYSTEM (Enabled/Disabled) 3.Роль для UnknownUser (%All or None) Разница по службам: Разница по службам: 1.Какие Службы (Services) разрешены? 2.Право «Use» для службы установлено в Public? 3.Требует ли служба аутентификации? Какой? См. Caché Installation Guide: Preparing for Caché Advanced Security. См. Caché Installation Guide: Preparing for Caché Advanced Security.
System Management Portal
System Management Portal (Портал управления) Новый интерфейс (browser-based) Новый интерфейс (browser-based) –Позволяет удаленное управление без установки ПО на клиента –Минимизирует межплатформенную несовместимость Интерфейс объединяет функции отдельных утилит (см. 5.0.*): Интерфейс объединяет функции отдельных утилит (см. 5.0.*): –Configuration Manager –Control Panel –Explorer –SQL Manager
Упр. 1: Использование Портала управления 1. Откройте Портал управления (Systems Management Portal) из Caché Cube (войти как _system/SYS) 2. Выберите Управление безопасностью (Security Management) из меню System Administration 3. Выберите Пользователи(Users) из Security Definitions 4. Выберите Создать нового пользователя (Create New User)
Упр. 1 (продолжение): Использование Портала управления 6. Введите guest как Имя (Name), school guest как Полное имя (Full Name) и t как пароль и его подтверждение 7. Измените Область по умолчанию (Default Namespace) на USER 8. Сохраните изменения (кнопка Save) 9. Получив сообщение об ошибке, введите test как пароль и его подтверждение 10. Сохраните изменения (кнопка Save) 11. Выберите роли [Roles] и установите %DB_USER в списке Selected, подтвердите изменения, нажав кнопку Assign 12. Выберите пользователей [Users] из верхнего меню в окне ролей, убедитесь, что там появился новый пользователь
Аутентификация
Аутентификация: установление личности В механизме аутентификации Caché обеспечиваются следующие механизмы аутентификации: В механизме аутентификации Caché обеспечиваются следующие механизмы аутентификации: –Operating System: использование аутентификации ОС для определения пользователя Caché –Kerberos: использование многоплатформенного механизма Kerberos –Caché Login: Caché сама хранит хэши паролей для всех пользователей –Unauthenticated: Работа с неидентифицируемым пользователем
Аутентификация через ОС Caché определяет пользователя по информации от ОС Caché определяет пользователя по информации от ОС Аутентификация пользователей производится в ОС ее родными средствами Аутентификация пользователей производится в ОС ее родными средствами Применима только к процессам (службам) на сервере Применима только к процессам (службам) на сервере Нельзя подключиться с удаленной машины Нельзя подключиться с удаленной машины –например, если студия Caché с одного компьютера пытается подключиться к серверу на другом компьютере. Обычно используется для UNIX и OpenVMS. Обычно используется для UNIX и OpenVMS. На MS Windows аутентификация через ОС работает только для локальных входов (например, запуска служб). На MS Windows аутентификация через ОС работает только для локальных входов (например, запуска служб).
Kerberos Что это такое «Kerberos» Что это такое «Kerberos» –Открытый стандарт, изначально разработанный в MIT –Позволяет проводить аутентификацию по небезопасной сети –Достаточно устойчив к атакам –Назван в честь 3-х голового пса, охранявшего, по мнению древних греков подземное царство, так как протокол был построен на 3-х основных принципах. –См. RFC 4120 Достоинства: Достоинства: –Пароль НИКОГДА не передается по сети –Реализован на всех платформах, на которых работает Caché и Ensemble –Поддерживает гетерогенные сети –Быстрый и масштабируемый –Прозрачен для пользователей системы
Вход в систему после аутентификации После аутентификации через Kerberos, ОС или средствами Caché, пользователь считается зарегестрированным («залогиненным», logged in) и устанавливается связь с Caché После аутентификации через Kerberos, ОС или средствами Caché, пользователь считается зарегестрированным («залогиненным», logged in) и устанавливается связь с Caché Новые специальные переменные: Новые специальные переменные: –$USERNAME cодержит имя пользователя –$ROLES соддержит список ролей, имеющихся у пользователя
Упр. 2: Вход в систему 1. Откройте Terminal из Caché Cube 2. Выполните следующую команду: write $USERNAME 3. Выполните следующую команду: write $Roles
Упр. 2 (продолжение): Вход в систему 4. Выполните команду: write $system.Security.Login("_SYSTEM","sys") write $system.Security.Login("_SYSTEM","SYS") Обратите внимание на выдачи "1" (успешный вход) и "0" (неуспешный вход). Почему выдался 0?
Упр. 2 (продолжение): Вход в систему 5. Выполните команду: write $system.Security.Login(guest,test) Вы должны получить сообщение: Причина: –Пользователь guest не имеет роли позволяющей использовать ресурс на разработку (%Development:Use), например роль %Developer
Упр. 2 (продолжение): Вход в систему 6. Исправьте ситуацию через SMP (добавьте пользователю guest роль %Development). 7. Заново откройте терминал 8. Повторите попытку перерегистрации. 9. Посмотрите $Roles, $Username 10. Восстановите прежние права пользователя guest (через SMP уберите у пользователя guest роль %Development).
Управление безопасностью для ODBC Опции системы безопасности Caché были добавлены к драйверу ODBC. Опции системы безопасности Caché были добавлены к драйверу ODBC. Способ аутентификации задается для каждого соединения (DSN). Способ аутентификации задается для каждого соединения (DSN). Допускается или Caché Login или аутентификация через Kerberos Допускается или Caché Login или аутентификация через Kerberos
Уровни безопасности соединения Опция Kerberos указывает на… Опция Kerberos указывает на… –Kerberos используется для идентификации пользователя. –Дальнейший обмен происходит без проверки целостности и шифрования.
Уровни безопасности соединения (прод.) Packet Integrity - обеспечивает аутентификацию по Kerberos и... Packet Integrity - обеспечивает аутентификацию по Kerberos и... –Каждый пакет сопровождается хэш- значением, что позволяет получателю проверить его легитимность. –Данные не шифруются
Уровни безопасности соединения (прод.) Опция Encryption обеспечивает аутентификацию по Kerberos, Packet Integrity и … Опция Encryption обеспечивает аутентификацию по Kerberos, Packet Integrity и … –Весь обмен шифруется! –Гарантирует подтверждение источника и содержимого и защиту содержимого
Пример настройки JDBC // «service principal name» - определяет сервер Kerberos prop.put("service principal name", "cacheDEVCON"); // connection security level определет уровень безопасности соединения и д.б. равен: // AUTHENTICATION или INTEGRITY или CONFIDENTIALITY prop.put("connection security level", GSSSocket.CONFIDENTIALITY); // для устанвоки соединения используется стандартный синтаксис Connection conn = DriverManager.getConnection("jdbc:Cache://localhost:1972/SAMPLES/jdbc.log",prop);
Авторизация
Основы авторизации Авторизация (Authorization) определяет то, что можно сделать зарегестрированному (аутентифицированному) пользователю Авторизация (Authorization) определяет то, что можно сделать зарегестрированному (аутентифицированному) пользователю Терминология Терминология – Сущность (Asset): что-то, что подлежит защите База данных в CachéБаза данных в Caché Подключение к Caché по SQLПодключение к Caché по SQL Возможность создать резервную копиюВозможность создать резервную копию – Ресурс (Resource): то, что защищает сущность Ресурс «База данных» (напр. %DB_Samples)Ресурс «База данных» (напр. %DB_Samples) Ресурс «Административное действие» (напр. %Admin_Manage)Ресурс «Административное действие» (напр. %Admin_Manage) Ресурс «Разработка» (напр. %Development)Ресурс «Разработка» (напр. %Development) Ресурс на службу (напр. %Service_CSP)Ресурс на службу (напр. %Service_CSP) Определяемое пользователемОпределяемое пользователем
Основы авторизации (прод.) Терминология (прод.) Терминология (прод.) – Право (Permission): возможность что-то сделать Read (R): Просмотр (но не изменение) содержимого ресурсаRead (R): Просмотр (но не изменение) содержимого ресурса Write (W): Просмотр или изменение содержимого ресурсаWrite (W): Просмотр или изменение содержимого ресурса Use (U): Использование ресурса, например приложения или службыUse (U): Использование ресурса, например приложения или службы – Привилегия (Privilege): дает право сделать что-то с ресурсом, соотнесенным с одним или несколькими сущностями (assets), напр. читать БД Samples Привилегия записывается как имя ресурса, после которого через двоеточие идут названия прав, разделенные запятой:Привилегия записывается как имя ресурса, после которого через двоеточие идут названия прав, разделенные запятой: Пример: %DB_SAMPLES:ReadПример: %DB_SAMPLES:Read
Подробнее про права… Права (permissions), связаные с ресурсами образовывают привилегии. Права (permissions), связаные с ресурсами образовывают привилегии. Привилегии могут быть сделаны публичными (Public). Привилегии могут быть сделаны публичными (Public). Это эквивалентно тому, что любой пользователь обладает данной привилегией Это эквивалентно тому, что любой пользователь обладает данной привилегией –Пример: Если привилегия %Service_CacheDirect:Use сделана публичной (Public), то тогда любой пользователь может подключить клиента к серверу Caché напрямую (по Caché Direct) Caché обеспечивает функции по проверке привилегий у текущего процесса: $SYSTEM.Security.Check(Resource,Privilege) Caché обеспечивает функции по проверке привилегий у текущего процесса: $SYSTEM.Security.Check(Resource,Privilege)
Упр. 3: Как узнать наличие привилегии Проверьте свои привилегии. Выполните: w $SYSTEM.Security.Check("%DB_Samples","W") w $SYSTEM.Security.Check("%DB_Samples","RW") w $SYSTEM.Security.Check("%DB_Samples","W,read") w $SYSTEM.Security.Check("%DB_Samples","Use") w $SYSTEM.Security.Check("%DB_Samples","Write") w $SYSTEM.Security.Check("%DB_Samples","Read") w $SYSTEM.Security.Check("%DB_Samples","write,read") Обратите внимание на выдачи "1" (есть такая привилегия) и "0" (нет такой привилегии). Почему выдался 0?
Упр. 3 (продолжение): Узнайте, что вы можете Получите свои привилегии для ресурса. Выполните: w $SYSTEM.Security.Check("%DB_Samples") w $SYSTEM.Security.Check("%XYZ")
Роли Терминология Терминология – Роль (Role): именованный набор привилегий Обычно многие пользователи имеют одинаковые привилегииОбычно многие пользователи имеют одинаковые привилегии Набор привилегий может быть определен единожды и потом использоватьсяНабор привилегий может быть определен единожды и потом использоваться Пользователь может иметь более одной роли.Пользователь может иметь более одной роли. Привилегии могут быть назначены только ролиПривилегии могут быть назначены только роли Привилегии не могут быть назначены напрямую пользователюПривилегии не могут быть назначены напрямую пользователю Основной элемент авторизацииОсновной элемент авторизации
Роли (прод.) Роли определяются из: Роли определяются из: –Имени пользователя –Приложения («добавленные» или «приписанные» роли) –Код в %CACHESYS (set $ROLES=Inventory, new $ROLES) –Привилегированные рутины ($System.Security.AddRoles)
Роли (прод.) Существуют предопределенные («Predefined») и определяемые пользователями («User-defined») роли Существуют предопределенные («Predefined») и определяемые пользователями («User-defined») роли –Предопределенные роли устанавливаются в момент установки Caché и не могут быть изменены позже –В Caché есть несколько предопределенных ролей (напр. %Development, %All, и т.д.)
Роль %All Особая предопределенная роль Особая предопределенная роль Включает в себя все привилегии на все ресурсы системы («суперроль») Включает в себя все привилегии на все ресурсы системы («суперроль») Не может быть удалена или модифицирована Не может быть удалена или модифицирована В системе всегда должен существовать хотя бы один пользователь с ролью %All В системе всегда должен существовать хотя бы один пользователь с ролью %All –Если такой пользователь только один, то он не может быть удален или запрещен его вход в систему. –Все это не позволяет «оставить ключи за захлопнутой дверью»
Области и безопасность Терминология Терминология – Область (Namespace): логический набор данных и программ, хранимых в одной или нескольких физических БД Пользователи и приложения взаимодействуют с БД в Caché через области.Пользователи и приложения взаимодействуют с БД в Caché через области. Доступ к данным в области определяется наличием привилегий, связанных с БД из этой области.Доступ к данным в области определяется наличием привилегий, связанных с БД из этой области. Данное условие проверяется в момент, когда:Данное условие проверяется в момент, когда: –Процесс пытается сделать область текущей (напр. $ZU(5), команда ZN/ZNSPACE или утилита %CD) –Делается попытка подключиться к Caché используя службу, которая, в свою очередь, подключается к области ( напр. Caché Direct, SQL, и т.д.).
Службы Caché Терминология Терминология – Службы Caché: означает то, через что пользователи или другие компьютеры подключаются к Caché (напр. %Service_Telnet) –Управление службами - существенная часть управления безопасностью. –Настройки для служб: Разрешена или запрещенаРазрешена или запрещена Тип аутентификации для службыТип аутентификации для службы Допустимы ли входящие подключенияДопустимы ли входящие подключения
Схема авторизации через роли
Упр. 4: Назначение ролей 1. Войти в Systems Management Portal (login: _system/SYS) из Caché Cube, выберите Security Management, выберите Roles. 2. Выберите Edit для роли %DB_Samples и перейдите к закладке Members 3. Добавьте пользователя guest к списку и нажмите Assign 4. Guest будет добавлен к членам роли (Members of this Role) 5. Это еще один способ управления ролями
Ресурсы приложений Позволяют пользователям выполнять что-то (получить доступ к сущностям, защищенным ресурсами), но только через приложение. Позволяют пользователям выполнять что-то (получить доступ к сущностям, защищенным ресурсами), но только через приложение. Предоставляет механизм для расширения роли пользователя, называемый Эскалацией привилегии (Privilege Escalation) Предоставляет механизм для расширения роли пользователя, называемый Эскалацией привилегии (Privilege Escalation) Caché позволяет: Caché позволяет: –Создать определение приложения (application definition) –Назначить ему роли, которые содержат все необходимые привилегии –Дать пользователю роль для работы с приложением. –Новые привилегии будут доступны только в приложении.
Определение приложения Предназначено для защиты приложений Предназначено для защиты приложений 3 типа приложений: 3 типа приложений: –CSP application definitions: связано с CSP-приложением –Privileged Routine application definitions: описывает приложения, которые могут вызывать метод AddRoles –Client application definitions: описывает клиентские приложения
Добавленные роли и соответствующие роли (Added Roles и Matching Roles) Каждый процесс Caché имеет набор ролей, которые определяют текущие привилегии для процесса. Каждый процесс Caché имеет набор ролей, которые определяют текущие привилегии для процесса. Этот набор ролей включает роли пользователя, определенные в момент аутентификации, так и добавленные роли, которые наследуются от запущенного приложения (ролей, приписанных самому приложению, Added Roles). Этот набор ролей включает роли пользователя, определенные в момент аутентификации, так и добавленные роли, которые наследуются от запущенного приложения (ролей, приписанных самому приложению, Added Roles). Для каждого определения приложения может быть задано отображение текущих ролей (matching roles) на другие, целевые роли (target roles). Для каждого определения приложения может быть задано отображение текущих ролей (matching roles) на другие, целевые роли (target roles). –Когда приложение инициализируется, оно получает и целевые роли, полученные на основе ролей пользователя.
Упр. 5: Роли для приложений 1. Закройте все браузеры, проверьте доступность Документации Caché 2. Откройте Systems Management Portal (login: _system/SYS) из Caché Cube, выберите Security Management, выберите CSP Applications. 3. Нажмите на Edit для /csp/docbook/. 4. Укажите, что не «Не аутентифицируемый» и требуется «Пароль» 5. Задайте требуемый ресурс как %Development и нажмите Save 6. Закройте все браузеры (или перезапустите СУБД) проверьте доступность Документации Caché 7. Попробуйте войти как guest, затем как _system. 8. Почему guest не смог войти, а _system смог?
Упр. 5 (продолжение): Роли для приложений 9. Откройте Systems Management Portal (login: _system/SYS) из Caché Cube, выберите Security Management, выберите CSP Applications. 10. Для CSP приложения /csp/docbook снимите требование наличие ресурса %Development для запуска. 11. Закройте все браузеры. Проверьте доступность документации для guest 12. Для ресурса %DB_Docbook нажмите Edit и снимите опцию Read (Чтение) для общего доступа (Public). Нажмите Save. 13. Закройте все браузеры. Проверьте доступность документации для guest 14. Почему guest не смог получить данные?
Упр. 5 (продолжение): Роли для приложений 15. Откройте Systems Management Portal (login: _system/SYS) из Caché Cube, выберите Security Management, выберите CSP Applications. 16. Для CSP приложения /csp/docbook задайте пару в Matching Roles: %DB_USER (Matching role) - %DB_DOCBOOK (target role). 17. Нажмите Assign 18. Закройте все браузеры. Проверьте доступность документации для guest 19. Почему теперь guest смог получить документацию?
Аудит и Советник по безопасности (Security Advisor)
Советник по безопасности (Security Advisor) Создан для помощи системному администратору в обеспечении должного уровня безопасности систем на Caché Создан для помощи системному администратору в обеспечении должного уровня безопасности систем на Caché Показывает всю информацию по конфигурации, относящуюся к делу Показывает всю информацию по конфигурации, относящуюся к делу Рекомендует изменения или места для более глубокого изучения Рекомендует изменения или места для более глубокого изучения Обеспечивает кросс-ссылки на элементы SMP, где нужные изменения можно внести. Обеспечивает кросс-ссылки на элементы SMP, где нужные изменения можно внести.
Упр. 6: Использование Security Advisor 1. Откройте Systems Management Portal, выберите Security Management, выберите Security Advisor. 2. Посмотрите на те выдачи, которые были сделаны по результатам работы Security Advisor 3. Перейдите по ссылке details указанной для категории Аудит (Auditing) 4. Включите опцию Enable Audit в настройках системной безопасности (System Security Settings) и сохраните изменения, нажав кнопку Save
Аудит Одна из важных частей системы безопасности Одна из важных частей системы безопасности Регистрация определенных ключевых событий в журнале аудита безопасности Регистрация определенных ключевых событий в журнале аудита безопасности Caché обеспечивает поддержку аудита для: Caché обеспечивает поддержку аудита для: –Обязательных (Mandatory) событий: Системные события, которые всегда журналируются (старт и останов Caché) –Опциональные события: События в Caché, которые регистрируются только в случае явного указания (напр. события, относящиеся к системе безопасности) –События пользователя: События приложения, журналируемые только тогда, когда явно указано –Настраиваемые (Custom) события: Приложение может генерировать свой собственный журнал через методы $system.Security.Audit().
Что Caché не журналирует Caché не генерирует автоматически события аудита для нормальной работы с БД (напр. вставки, обновления или удаления записей в таблицах), так как: Caché не генерирует автоматически события аудита для нормальной работы с БД (напр. вставки, обновления или удаления записей в таблицах), так как: –Приложения сами могут сгенерировать такие записи через методы объектов или триггеры SQL –Аудит может быть весьма накладным с точки зрения производительности –Стоит рекомендовать, чтобы приложение создало одиночное событие, чем на автомате генерировать их тысячи –Проткол изменений моэет быть частью приложения
Доступ к данным аудита Журнал аудита хранится в отдельной, защищенной БД Caché - CACHEAUDIT Журнал аудита хранится в отдельной, защищенной БД Caché - CACHEAUDIT Эта БД защищена ресурсом %DB_CACHEAUDIT Эта БД защищена ресурсом %DB_CACHEAUDIT Caché предоставляет несколько стандартных отчетов по аудиту (Audit Reports) Caché предоставляет несколько стандартных отчетов по аудиту (Audit Reports) Доступ к журналу аудита может быть произведен через SQL или Audit API Доступ к журналу аудита может быть произведен через SQL или Audit API Этот доступ защищен системой безопасности Caché Этот доступ защищен системой безопасности Caché
Управление журналом аудита (Audit Log) System Management Portal позволяет: System Management Portal позволяет: –Copy: События дня (или дней) м.б. скопированы в другую область –Export: События дня (или дней) м.б. экспортированы в файл –Purge: События дня (или дней) м.б. удалены из журнала БД журналируема и архивируема БД журналируема и архивируема Для облегчения мониторинга за событиями, Caché хранит счетчик по каждому типу события. Эти счетчики доступны через стандартные интерфейсы управления. Для облегчения мониторинга за событиями, Caché хранит счетчик по каждому типу события. Эти счетчики доступны через стандартные интерфейсы управления. –Пример: Мониторинг событий LoginFailure может использоваться для контроля активности по попыткам взлома системы
Аудит в картинках…
Упр. 7: Просмотр журнала событий 1. Войдите в Systems Management Portal, выберите Security Management, затем выберите пункт Auditing (в подменю Security Definitions), затем выберите пункт View Audit Database. 2. Обратите внимание на параметры отбора событий 3. Нажмите кнопку Search. 4. Посмотрите получившийся список. 5. Обратите внимание на событие Audit report
Создание событий аудита из приложения Приложения могут добавлять в журнал свои собственные записи через метод Audit(): Приложения могут добавлять в журнал свои собственные записи через метод Audit(): $SYSTEM.Security.Audit(EventSource, EventType, Event, EventData, Description) $SYSTEM.Security.Audit(EventSource, EventType, Event, EventData, Description) Это позволяет настраивать сообщения разработчикам и генерировать их в приложении. Это позволяет настраивать сообщения разработчикам и генерировать их в приложении. Не требуется специальной привилегии для добавления события в журнал. Не требуется специальной привилегии для добавления события в журнал.
Упр. 8: Регистрация своих событий 1. Откройте терминал, выполните: w $SYSTEM.Security.Audit(myapp, myType, myEvent,, ). 2. Обратите внимание на результат - 0. Событие не записано. 3. В SMP Auditing -> Configure User Events -> Create New Event создайте новое разрешенное событие Source=myapp, Type=myType, Event=myEvent, убедитесь, что оно разрешено (Enabled). Нажмите кнопку Save. 4. Повторно выполните из терминала: w $SYSTEM.Security.Audit(myapp, myType, myEvent,, ). 5. Снова посмотрите журнал событий (повторно сгенерируйте его).
Защищенные соединения
Начиная с Caché 5.2 поддерживается возможность безопасных соединений. InterSystems реализовала поддержку протоколов Secure Sockets Layer (SSL v2/v3) и Transport Layer Security (TLS v1). Используются библиотек OpenSSL Встроено в реализацию TCP
Что такое SSL/TLS? Secure Sockets Layer ( SSL ) и Transport Layer Security ( TLS ), приемник первого, являются криптующими протоколами для обеспечения защищенных соединений Secure Sockets Layer ( SSL ) и Transport Layer Security ( TLS ), приемник первого, являются криптующими протоколами для обеспечения защищенных соединений Обеспечивают как аутентификацию участников, так и защиту обмена Обеспечивают как аутентификацию участников, так и защиту обмена Позволяют клиенту и серверу взаимодействовать с уменьшением риска перехвата, подмены или потери данных. Позволяют клиенту и серверу взаимодействовать с уменьшением риска перехвата, подмены или потери данных. Чаще всего используются вместе с HTTP, образовывая HTTPS Чаще всего используются вместе с HTTP, образовывая HTTPS Требует действий по настройке (файлы с конфигурациями для сертификата X.509, ключа и т.д.) Требует действий по настройке (файлы с конфигурациями для сертификата X.509, ключа и т.д.)
Как организовано взаимодействие?
Как организовано взаимодействие? (2)
Шифрование БД
Защита данных в Caché 5.1+ Данные д.б. защищены в следующих состояниях: Данные д.б. защищены в следующих состояниях: –При использовании: Caché разграничивает доступ к данным в памяти (в соответствии с правами пользователя). –При передаче: Caché поддерживает протокол Kerberos и SSL/TSL, что защищает данные при передаче по сети. –При хранении: Caché шифрование на уровне блоков данных при хранении данных на отчуждаемых носителях (диски, лента и т.д.).
Мотивация… Многие типы данных д.б. защищены от неавторизованного доступа или модификации: Многие типы данных д.б. защищены от неавторизованного доступа или модификации: –Коммерческие данные –Приватные (частные) данные –Правительственные и военные данные (особый случай) Источники угроз для данных: Источники угроз для данных: –Криминал, правительство, конкуренты, журналисты, сотрудники, развлекающиеся хакеры и т.д.. По Законам существует ответственность как компаний, так и людей за непринятие мер по предотвращению утечки некоторых данных и по факту утечки. По Законам существует ответственность как компаний, так и людей за непринятие мер по предотвращению утечки некоторых данных и по факту утечки.
Цели разработки 2 критичных требования к эффективной и удобной системе шифрования данных: 2 критичных требования к эффективной и удобной системе шифрования данных: –Обеспечить сильную защиту, подтвержденную современными стандартами –Решение не должно сильно влиять на общую производительность Результат - платформно независимое решение по шифрованию БД, прозрачное к прикладному коду! Результат - платформно независимое решение по шифрованию БД, прозрачное к прикладному коду!
Шифрование данных в Caché 5.2 Предназначено для предотвращения несанкционированного доступа через просмотр или работу с базами данных Caché. Предназначено для предотвращения несанкционированного доступа через просмотр или работу с базами данных Caché. Шифрование выполняется на уровне БД и задается в момент создания БД. Шифрование выполняется на уровне БД и задается в момент создания БД. Шифрование и дешиврование в Caché реализовано на основе открытого алгоритма AES (Advanced Encryption Standard). Шифрование и дешиврование в Caché реализовано на основе открытого алгоритма AES (Advanced Encryption Standard). Шифрование и дешифрование выполняются в момент чтения и записи из/в БД («на лету»). Шифрование и дешифрование выполняются в момент чтения и записи из/в БД («на лету»). Соответствующие записи в WIJ тоже зашифрованы. Соответствующие записи в WIJ тоже зашифрованы. БД CACHETEMP и журналы Journal тоже могут шифроваться. БД CACHETEMP и журналы Journal тоже могут шифроваться. Минимальное потери по производительности!!! Минимальное потери по производительности!!!
Влияние на производительность От процессора для выполнения шифрования/ дешифрования в Caché требуется примерно 30 тактов на байт, независимо от типа процессора. От процессора для выполнения шифрования/ дешифрования в Caché требуется примерно 30 тактов на байт, независимо от типа процессора. Полная оценка воздействия на производительность складывается из учета: Полная оценка воздействия на производительность складывается из учета: –Как часто приложение обращается к диску –Какая часть данных шифруется –Какова частота работы процессора
Влияние на производительность (2) Пример. Пусть очень большое приложение работает на сервере с 32 1 GHz процессорами, выполняет 5000 чтений и записей блоков в секунду, 20% которых шифруются: Пример. Пусть очень большое приложение работает на сервере с 32 1 GHz процессорами, выполняет 5000 чтений и записей блоков в секунду, 20% которых шифруются: Шифрация для такого приложения требует менее 1% от вычислительной мощности!!! Шифрация для такого приложения требует менее 1% от вычислительной мощности!!! Т.к. Caché использует «write daemons» для записи данных из буферов глобалов на диск, то для приложения задержки при чтении/записи не будет! Т.к. Caché использует «write daemons» для записи данных из буферов глобалов на диск, то для приложения задержки при чтении/записи не будет! ЦПУ
Ключ для шифрования БД Каждый экземпляр Caché может использовать свой уникальный ключ. Каждый экземпляр Caché может использовать свой уникальный ключ. Этот ключ может быть использован для шифрования всех шифруемых БД на сервере. Этот ключ может быть использован для шифрования всех шифруемых БД на сервере. Этот ключ является постоянным, его не надо менять после создания и активации. Этот ключ является постоянным, его не надо менять после создания и активации. Caché работает с ключами длиной128, 192 или 256 бит. По умолчанию бит. Caché работает с ключами длиной128, 192 или 256 бит. По умолчанию бит. Ключ хранится под администратором в специальном файле (Encryption Key File). Ключ хранится под администратором в специальном файле (Encryption Key File).
Ключевой файл (Encryption Key File) Содержит несколько зашифрованных копий ключа. Содержит несколько зашифрованных копий ключа. Каждая копия ассоциирована с учетной записью Encryption Key File Administrator (имя пользователя и контрольная фраза). Каждая копия ассоциирована с учетной записью Encryption Key File Administrator (имя пользователя и контрольная фраза). Эта учетная запись нужна для активации ключа и управления шифруемыми БД. Эта учетная запись нужна для активации ключа и управления шифруемыми БД. После создания ключевого файла он может быть скопирован куда угодно. После создания ключевого файла он может быть скопирован куда угодно. Утрата ключевого файла может привести к тому, что данные в БД будут недоступны. Утрата ключевого файла может привести к тому, что данные в БД будут недоступны. Рекомендуется хранить копию ключевого файла в безопасном месте. Например, на USB Flash в сейфе директора. Рекомендуется хранить копию ключевого файла в безопасном месте. Например, на USB Flash в сейфе директора.
Упр. 9: Создание ключевого файла 1. Откройте Systems Management Portal, выберите Database Encryption, выберите Create Encryption Key. 2. Задайте c:\school.key в поле имени файла для ключевого файла (Encryption Key File Name). 3. Введите guest как имя администратора ключа (Administrator Name, тот, кто будет активизировать ключ, не обязательно администратор СУБД) и test в поле пароля (Password) и его подтверждения. 4. Нажмите кнопку Save, что сохранит файл на диске, затем close. 5. Итак, создан ключевой файл, в котором каждая копия ключа для шифрования закриптована с использованием администраторского ключа.. 6. Прим.: Сохранеие файла одновременно «активизирует» ключ.
Управление ключами Администраторы ключей могут быть добавлены или удалены через System Management Portal. Администраторы ключей могут быть добавлены или удалены через System Management Portal. Информация о каждом новом администраторе добавляется в ключевой файл. Информация о каждом новом администраторе добавляется в ключевой файл. Нужно ииметь хотя бы одну резервную копию пары «имя-пароль» для аварийных случаев Нужно ииметь хотя бы одну резервную копию пары «имя-пароль» для аварийных случаев Ключевые файлы также должны подвергаться процедуре резервного копирования системы Ключевые файлы также должны подвергаться процедуре резервного копирования системы
Упр. 10: Управление администраторами ключей 1. Откройте Systems Management Portal -> Database Encryption -> Manage Key File. 2. Введите c:\school.key как имя файла ключа (Encryption Key File Name) или используйте проводник (Browse) 3. Нажмите OK 4. Нажмите Add и добавьте нового администратора ключа. 5. Нажмите Delete для только что заведенного администратора 6. Нажмите OK 7. Обратите внимание, что нельзя удалить последнего администратора
Создание зашифрованных БД При использовании SMP БД может быть шифрованной только если это задано в момент создания. При использовании SMP БД может быть шифрованной только если это задано в момент создания. Можно зашифровать существующие базы данных (кроме системных) через утилиту cvencrypt! Можно зашифровать существующие базы данных (кроме системных) через утилиту cvencrypt! Caché должна иметь активизированный ключ до момента создания или монтирования зашифрованной БД. Caché должна иметь активизированный ключ до момента создания или монтирования зашифрованной БД. Caché предоставляет возможность по итерактивному (interactive) или автоматическому (unattended) запуску шифрованных БД. Caché предоставляет возможность по итерактивному (interactive) или автоматическому (unattended) запуску шифрованных БД. Можно также шифровать CACHETEMP и журналы. Можно также шифровать CACHETEMP и журналы.
Упр. 11: Создание зашифрованной БД 1. System Management Portal -> Configuration -> Namespaces -> Create New Namespace. 2. Введите ENCRYPTED как имя области и нажмите Create new Database 3. Введите ENCRYPTED как имя новой БД и пометьте Encrypt Database? checkbox. 4. Убедитесь, что новая БД находится в нужной директории c:\Program Files\CacheSys\mgr\ENCRYPTED и нажмите Next. 5. Нажимайте Next для принятия значений по умолчанию 6. Нажмите Finish и Save для завершения процесса.
Упр. 12: Работа с зашифрованной БД 1. Откройте терминал и войдите в область ENCRYPTED (USER>zn ENCRYPTED). 2. создайте новую глобаль (set ^a=This is my encrypted data.) и закройте терминальную сессию. 3. System Management Portal -> Databases и отмонтируйте (Dismount) базу данных ENCRYPTE. 4. Подтвердите действие (Perform Action Now) 5. Откройте базу данных ENCRYPTED, открыв файл CACHE.DAT вc:\Program Files\CacheSys\mgr\ENCRYPTED через стандартный Блокнот (Windows Notepad).
Упр. 12 (продолжение): Работа с зашифрованной БД 6. Обратите внимание, что данные внутри зашифрованы 7. Закройте блокнот 8. System Management Portal -> Database Encryption -> Deactivate Encryption Key, подтвердите выполнение Perform Action Now. 9. Перейдите в начало SMP (Home), затем перейдите к Databases. 10. Попробуйте смонтировать (Mount) базу данных ENCRYPTED.
Упр. 12 (продолжение): Работа с зашифрованной БД 11. Подтвердите свое дейстствие, нажав Perform Action now. 12. Обратите внимание, что база данных не была подмонтирована (имеет статус Not Mountable) так как в данный момент нет активированного ключа для данного экземпляра сервера. 13. Задание: Повторно активизируйте ключ для сервера и подмонтируйте эту БД.
Перемещение зашифрованной БД между серверами Иногда нужно перенести БД с одного сервера Caché на другой (на котором используется другой ключ). Иногда нужно перенести БД с одного сервера Caché на другой (на котором используется другой ключ). Процедура для перемещения данных: Процедура для перемещения данных: 1.Сделать резервную копию (Back up) 2.Перешифровать cache.dat с помощью утилиты cvencrypt. cvencrypt позволяет: cvencrypt позволяет: 1.Зашифровать БД (сделать ее шифрованной) 2.Расшифровать БД 3.Перешифровать БД с использованием нового ключа
Вопросы?