Безопасность в последних версиях Caché и

advertisement
Безопасность в последних версиях
Caché и Ensemble
Грачев Андрей
«Школа Инноваций InterSystems 2007»
Welcome/FAQ
• Цель занятий
• Практический взгляд на современную систему
безопасности в Caché и Ensemble
• Для кого эти занятия
• Для разработчиков, кто знаком с СУБД Caché и её
технологиями.
Безопасность. Аспекты
• Доступность
• Данные должны быть доступны тому, кому они
предназначены
• Целостность
• Данные не должны быть несанкционированно
изменены
• Защита от НСД
• Данные не должны быть доступны тому, кто не
имеет на них право («не пущать!»)
Безопасность. Задачи
• Помешать нарушить
• Система должна предупреждать инциденты
• Идентифицировать
• Факт попытки нарушения нужно уметь
идентифицировать
• Принять меры к неповторению
• Учесть ошибки, внести исправления
План
• Введение в модель безопасности Caché
• System Management Portal
• Аутентификация
• Авторизация
• Система Аудита и Security Advisor
• Защищенное взаимодействие и криптование
• Вопросы и ответы
Проверка компьютеров....
• Пожалуйста, не редактируйте ничего в настройках ОС и
Caché до начала занятий!
Модель безопасности Caché.
Введение
Безопасность, безопасность.....
LDAP
Аутентификация
Стандарты
Firewall
Крипт
Пользователь
Права
ГОСТ
Kerberos
Identity Management
Сертификация
Авторизация
Аудит
SSL/TLS
FIPS
Контроль доступа
Технологии
Роли
Hashing
AES
Пароли
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 от вендора
• Степень защищенности определяется по самому слабому
звену
Начальные установки безопасности
• В процессе инсталляции запрашивается начальный
уровень настроек:
Minimal/Минимальные
Normal/Средние
Locked Down/Максимальные
• Это именно начальные настройки для сервисов и уровня
безопасности Caché
Начальные установки безопасности (2)
•
Разница для пользователей:
1.
2.
3.
•
Разница по службам:
1.
2.
3.
•
Шаблон пароля (i.e. 3.32ANP or 8.32ANP)
Учетная запись _SYSTEM (Enabled/Disabled)
Роль для UnknownUser (%All or None)
Какие Службы (Services) разрешены?
Право «Use» для службы установлено в
Public?
Требует ли служба аутентификации? Какой?
См. Caché Installation Guide: Preparing for
Caché Advanced Security.
System Management Portal
System Management Portal
(Портал управления)
• Новый интерфейс (browser-based)
– Позволяет удаленное управление без установки ПО на клиента
– Минимизирует межплатформенную несовместимость
• Интерфейс объединяет функции отдельных утилит
(см. 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é
обеспечиваются следующие механизмы
аутентификации:
– Operating System: использование
аутентификации ОС для определения
пользователя Caché
– Kerberos: использование многоплатформенного
механизма Kerberos
– Caché Login: Caché сама хранит хэши паролей
для всех пользователей
– Unauthenticated: Работа с
неидентифицируемым пользователем
Аутентификация через ОС
• Caché определяет пользователя по информации от ОС
• Аутентификация пользователей производится в ОС ее родными
средствами
• Применима только к процессам (службам) на сервере
• Нельзя подключиться с удаленной машины
– например, если студия Caché с одного компьютера пытается
подключиться к серверу на другом компьютере.
• Обычно используется для UNIX и OpenVMS.
• На MS Windows аутентификация через ОС работает только для
локальных входов (например, запуска служб).
Kerberos
• Что это такое «Kerberos»
–
–
–
–
Открытый стандарт, изначально разработанный в MIT
Позволяет проводить аутентификацию по небезопасной сети
Достаточно устойчив к атакам
Назван в честь 3-х голового пса, охранявшего, по мнению древних греков
подземное царство, так как протокол был построен на 3-х основных принципах.
– См. RFC 4120
• Достоинства:
–
–
–
–
–
Пароль НИКОГДА не передается по сети
Реализован на всех платформах, на которых работает Caché и Ensemble
Поддерживает гетерогенные сети
Быстрый и масштабируемый
Прозрачен для пользователей системы
Вход в систему после аутентификации
• После аутентификации через 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”)
Вы должны получить сообщение:
<Cache Error: Insufficient Privilege for Programmer Access or Debug
Prompt.>
<Session disconnected>
Причина:
–
Пользователь “guest” не имеет роли позволяющей
использовать ресурс на разработку (%Development:Use),
например роль %Developer
Упр. 2 (продолжение):
Вход в систему
6. Исправьте ситуацию через SMP (добавьте пользователю guest
роль %Development).
7. Заново откройте терминал
8. Повторите попытку перерегистрации.
9. Посмотрите $Roles, $Username
10. Восстановите прежние права пользователя guest (через SMP
уберите у пользователя guest роль %Development).
Управление безопасностью для ODBC
• Опции системы
безопасности Caché были
добавлены к драйверу
ODBC.
• Способ аутентификации
задается для каждого
соединения (DSN).
• Допускается или Caché
Login или аутентификация
через Kerberos
Уровни безопасности соединения
• Опция “Kerberos”
указывает на…
– Kerberos используется
для идентификации
пользователя.
– Дальнейший обмен
происходит без
проверки целостности
и шифрования.
Уровни безопасности соединения (прод.)
• “Packet Integrity” -
обеспечивает
аутентификацию по Kerberos
и...
– Каждый пакет
сопровождается хэшзначением, что позволяет
получателю проверить
его легитимность.
– Данные не шифруются
Уровни безопасности соединения (прод.)
• Опция “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) определяет то, что можно сделать
зарегестрированному (аутентифицированному) пользователю
• Терминология
– Сущность (Asset): что-то, что подлежит защите
• База данных в Caché
• Подключение к Caché по SQL
• Возможность создать резервную копию
– Ресурс (Resource): то, что защищает сущность
•
•
•
•
•
Ресурс «База данных» (напр. %DB_Samples)
Ресурс «Административное действие» (напр. %Admin_Manage)
Ресурс «Разработка» (напр. %Development)
Ресурс на службу (напр. %Service_CSP)
Определяемое пользователем
Основы авторизации (прод.)
• Терминология (прод.)
– Право (Permission): возможность что-то сделать
• Read (R): Просмотр (но не изменение) содержимого ресурса
• Write (W): Просмотр или изменение содержимого ресурса
• Use (U): Использование ресурса, например приложения или службы
– Привилегия (Privilege): дает право сделать что-то с
ресурсом, соотнесенным с одним или несколькими
сущностями (assets), напр. читать БД Samples
• Привилегия записывается как имя ресурса, после которого через
двоеточие идут названия прав, разделенные запятой:
• Пример: %DB_SAMPLES:Read
Подробнее про права…
• Права (permissions), связаные с ресурсами образовывают
привилегии.
• Привилегии могут быть сделаны публичными (Public).
• Это эквивалентно тому, что любой пользователь обладает
данной привилегией
– Пример: Если привилегия %Service_CacheDirect:Use сделана публичной
(Public), то тогда любой пользователь может подключить клиента к
серверу Caché напрямую (по Caché Direct)
• 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») роли
– Предопределенные роли устанавливаются в момент установки
Caché и не могут быть изменены позже
– В Caché есть несколько предопределенных ролей (напр.
%Development, %All, и т.д.)
Роль %All
• Особая предопределенная роль
• Включает в себя все привилегии на все ресурсы системы
(«суперроль»)
• Не может быть удалена или модифицирована
• В системе всегда должен существовать хотя бы один
пользователь с ролью %All
– Если такой пользователь только один, то он не может быть
удален или запрещен его вход в систему.
– Все это не позволяет «оставить ключи за захлопнутой
дверью»
Области и безопасность
• Терминология
– Область (Namespace): логический набор данных и программ,
хранимых в одной или нескольких физических БД
• Пользователи и приложения взаимодействуют с БД в 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)
• Caché позволяет:
– Создать определение приложения (application definition)
– Назначить ему роли, которые содержат все необходимые
привилегии
– Дать пользователю роль для работы с приложением.
– Новые привилегии будут доступны только в приложении.
Определение приложения
• Предназначено для защиты приложений
• 3 типа приложений:
– CSP application definitions: связано с CSP-приложением
– Privileged Routine application definitions: описывает приложения, которые
могут вызывать метод AddRoles
– Client application definitions: описывает клиентские приложения
Добавленные роли и соответствующие
роли (Added Roles и Matching Roles)
• Каждый процесс Caché имеет набор ролей, которые определяют
текущие привилегии для процесса.
• Этот набор ролей включает роли пользователя, определенные в
момент аутентификации, так и добавленные роли, которые
наследуются от запущенного приложения (ролей, приписанных
самому приложению, Added 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é
• Показывает всю информацию по конфигурации,
относящуюся к делу
• Рекомендует изменения или места для более глубокого
изучения
• Обеспечивает кросс-ссылки на элементы 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é обеспечивает поддержку аудита для:
– Обязательных (Mandatory) событий: Системные события, которые всегда
журналируются (старт и останов Caché)
– Опциональные события: События в Caché, которые регистрируются только в
случае явного указания (напр. события, относящиеся к системе безопасности)
– События пользователя: События приложения, журналируемые только тогда,
когда явно указано
– Настраиваемые (Custom) события: Приложение может генерировать свой
собственный журнал через методы $system.Security.Audit().
Что Caché не журналирует
• Caché не генерирует автоматически события аудита для
нормальной работы с БД (напр. вставки, обновления или
удаления записей в таблицах), так как:
– Приложения сами могут сгенерировать такие записи через
методы объектов или триггеры SQL
– Аудит может быть весьма накладным с точки зрения
производительности
– Стоит рекомендовать, чтобы приложение создало одиночное
событие, чем на автомате генерировать их тысячи
– Проткол изменений моэет быть частью приложения
Доступ к данным аудита
• Журнал аудита хранится в отдельной, защищенной БД
Caché - CACHEAUDIT
• Эта БД защищена ресурсом %DB_CACHEAUDIT
• Caché предоставляет несколько стандартных отчетов
по аудиту (Audit Reports)
• Доступ к журналу аудита может быть произведен через
SQL или Audit API
• Этот доступ защищен системой безопасности Caché
Управление журналом аудита (Audit Log)
• System Management Portal позволяет:
– Copy: События дня (или дней) м.б. скопированы в другую область
– Export: События дня (или дней) м.б. экспортированы в файл
– Purge: События дня (или дней) м.б. удалены из журнала
• БД журналируема и архивируема
• Для облегчения мониторинга за событиями, Caché хранит
счетчик по каждому типу события. Эти счетчики доступны через
стандартные интерфейсы управления.
– Пример: Мониторинг событий LoginFailure может
использоваться для контроля активности по попыткам
взлома системы
Аудит в картинках…
Упр. 7:
Просмотр журнала событий
1. Войдите в Systems Management Portal, выберите Security
Management, затем выберите пункт Auditing (в подменю Security
Definitions), затем выберите пункт View Audit Database.
2.
3.
4.
5.
Обратите внимание на параметры отбора событий
Нажмите кнопку Search.
Посмотрите получившийся список.
Обратите внимание на событие Audit report
Создание событий аудита из
приложения
• Приложения могут добавлять в журнал свои
собственные записи через метод Audit():
$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),
приемник первого, являются криптующими протоколами для
обеспечения защищенных соединений
• Обеспечивают как аутентификацию участников, так и защиту
обмена
• Позволяют клиенту и серверу взаимодействовать с
уменьшением риска перехвата, подмены или потери данных.
• Чаще всего используются вместе с HTTP, образовывая HTTPS
• Требует действий по настройке (файлы с конфигурациями для
сертификата X.509, ключа и т.д.)
Как организовано взаимодействие?
http://www.securityfocus.com/unix/images/ssl_02.jpg
Как организовано взаимодействие? (2)
http://www.securityfocus.com/unix/images/ssl_02.jpg
Шифрование БД
Защита данных в Caché 5.1+
• Данные д.б. защищены в следующих состояниях:
– При использовании: Caché разграничивает доступ к
данным в памяти (в соответствии с правами
пользователя).
– При передаче: Caché поддерживает протокол
Kerberos и SSL/TSL, что защищает данные при
передаче по сети.
– При хранении: Caché шифрование на уровне блоков
данных при хранении данных на отчуждаемых
носителях (диски, лента и т.д.).
Мотивация…
• Многие типы данных д.б. защищены от неавторизованного
доступа или модификации:
– Коммерческие данные
– Приватные (частные) данные
– Правительственные и военные данные (особый случай)
• Источники угроз для данных:
– Криминал, правительство, конкуренты, журналисты,
сотрудники, развлекающиеся хакеры и т.д..
• По Законам существует ответственность как компаний, так и
людей за непринятие мер по предотвращению утечки некоторых
данных и по факту утечки.
Цели разработки
• 2 критичных требования к эффективной и удобной
системе шифрования данных:
– Обеспечить сильную защиту, подтвержденную
современными стандартами
– Решение не должно сильно влиять на общую
производительность
• Результат - платформно независимое решение по
шифрованию БД, прозрачное к прикладному коду!
Шифрование данных в Caché 5.2
• Предназначено для предотвращения несанкционированного
доступа через просмотр или работу с базами данных Caché.
• Шифрование выполняется на уровне БД и задается в момент
создания БД.
• Шифрование и дешиврование в Caché реализовано на основе
открытого алгоритма AES (Advanced Encryption Standard).
• Шифрование и дешифрование выполняются в момент чтения и
записи из/в БД («на лету»).
• Соответствующие записи в WIJ тоже зашифрованы.
• БД CACHETEMP и журналы Journal тоже могут шифроваться.
• Минимальное потери по производительности!!!
Влияние на производительность
• От процессора для выполнения шифрования/
дешифрования в Caché требуется примерно 30 тактов
на байт, независимо от типа процессора.
• Полная оценка воздействия на производительность
складывается из учета:
– Как часто приложение обращается к диску
– Какая часть данных шифруется
– Какова частота работы процессора
Влияние на производительность (2)
• Пример. Пусть очень большое приложение работает на сервере
с 32 1 GHz процессорами, выполняет 5000 чтений и записей
блоков в секунду, 20% которых шифруются:
5000
blocks
bytes
cycles
 20%  8192
 30
second
block
byte
 0.25 ЦПУ
cycles
109
second
• Шифрация для такого приложения требует менее 1% от
вычислительной мощности!!!
• Т.к. Caché использует «write daemons» для записи данных из
буферов глобалов на диск, то для приложения задержки при
чтении/записи не будет!
Ключ для шифрования БД
• Каждый экземпляр Caché может использовать свой уникальный
ключ.
• Этот ключ может быть использован для шифрования всех
шифруемых БД на сервере.
• Этот ключ является постоянным, его не надо менять после
создания и активации.
• Caché работает с ключами длиной128, 192 или 256 бит. По
умолчанию - 128 бит.
• Ключ хранится под администратором в специальном файле
(Encryption Key File).
Ключевой файл (Encryption Key File)
• Содержит несколько зашифрованных копий ключа.
• Каждая копия ассоциирована с учетной записью Encryption Key
File Administrator (имя пользователя и контрольная фраза).
• Эта учетная запись нужна для активации ключа и управления
шифруемыми БД.
• После создания ключевого файла он может быть скопирован
куда угодно.
• Утрата ключевого файла может привести к тому, что данные в
БД будут недоступны.
• Рекомендуется хранить копию ключевого файла в безопасном
месте. Например, на 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.
• Информация о каждом новом администраторе
добавляется в ключевой файл.
• Нужно ииметь хотя бы одну резервную копию пары
«имя-пароль» для аварийных случаев
• Ключевые файлы также должны подвергаться
процедуре резервного копирования системы
Упр. 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 БД может быть шифрованной только
если это задано в момент создания.
• Можно зашифровать существующие базы данных (кроме
системных) через утилиту cvencrypt!
• Caché должна иметь активизированный ключ до момента
создания или монтирования зашифрованной БД.
• Caché предоставляет возможность по итерактивному (interactive)
или автоматическому (unattended) запуску шифрованных БД.
• Можно также шифровать 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é на другой
(на котором используется другой ключ).
•
Процедура для перемещения данных:
1.
2.
•
Сделать резервную копию (Back up)
Перешифровать cache.dat с помощью утилиты cvencrypt.
cvencrypt позволяет:
1.
2.
3.
Зашифровать БД (сделать ее шифрованной)
Расшифровать БД
Перешифровать БД с использованием нового ключа
Вопросы?
Download