1 / 87

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

Безопасность в последних версиях Caché и Ensemble. Грачев Андрей. «Школа Инноваций InterSystems 2007». Welcome/FAQ. Цель занятий Практический взгляд на современную систему безопасности в Caché и Ensemble Для кого эти занятия

dallon
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Безопасность в последних версияхCaché и Ensemble Грачев Андрей «Школа Инноваций InterSystems 2007»

  2. Welcome/FAQ • Цель занятий • Практический взгляд на современную систему безопасности в Caché и Ensemble • Для кого эти занятия • Для разработчиков, кто знаком с СУБД Caché и её технологиями.

  3. Безопасность. Аспекты • Доступность • Данные должны быть доступны тому, кому они предназначены • Целостность • Данные не должны быть несанкционированно изменены • Защита от НСД • Данные не должны быть доступны тому, кто не имеет на них право («не пущать!»)

  4. Безопасность. Задачи • Помешать нарушить • Система должна предупреждать инциденты • Идентифицировать • Факт попытки нарушения нужно уметь идентифицировать • Принять меры к неповторению • Учесть ошибки, внести исправления

  5. План • Введение в модель безопасности Caché • System Management Portal • Аутентификация • Авторизация • Система Аудита и Security Advisor • Защищенное взаимодействие и криптование • Вопросы и ответы

  6. Проверка компьютеров.... • Пожалуйста, не редактируйте ничего в настройках ОС и Caché до начала занятий!

  7. Модель безопасности Caché.Введение

  8. LDAP Аутентификация Firewall Пользователь Стандарты Крипт Права ГОСТ Kerberos IdentityManagement Аудит SSL/TLS FIPS Авторизация Сертификация Контроль доступа Технологии Роли AES Пароли Hashing Безопасность, безопасность.....

  9. Caché Advanced Security Современная модель безопасности введена с версииCaché 5.1 • Простая, единообразная архитектура • Полная и высокопроизводительная модель для разработки приложений • Возможность простой интеграции и встраивания управления безопасностью в приложения. • Минимизация нагрузки на общую производительность • Возможность быть частью безопасной (защищенной) среды и обеспечить взаимодействие с другими приложениями • Возможность реализовать строгие политики разграничения доступа и аудита • Использование стандартов и сертификация Caché Advanced Security

  10. Компоненты • Аутентификация: идентификация пользователей • Авторизация: убедиться, что пользователь имеет право доступа к запрашиваемым ресурсам • Аудит: вести журнал событий • Безопасное взаимодействие: защитить сетевой трафик от прослушивания и подмены • Шифрация базы данных: защита от неавторизованного просмотра данных

  11. Объекты управления. Термины • Resources, Permissions, Privileges • Resources (ресурсы): основной объект защиты (БД, служба, приложение, действие, и т.д.). Обеспечивает защиту одной или более сущности (Asset). Asset - физический объект защиты • Permissions (право): некоторое действие, которое можно выполнить с ресурсом (читать, писать, удалить, выполнить и т.д.) • Privileges (привелегия): пара Resource:Permissions (%DB_MyDB:Read). • Users, Roles • User (пользователь). Например, _system, guest • Role (роль): набор пользователей (users). Например, %All • Привилегии связаны с ролями

  12. Подготовка защищенного окружения • Подготовка безопасного окружения • Выполняется до инсталляции Caché • Метод аутентификациии авторизацииопределяется решаемыми задачами • На всех платформах Caché имеется поддержка протокола Kerberos от вендора • Степень защищенности определяется по самому слабому звену

  13. Minimal/Минимальные Normal/Средние Locked Down/Максимальные Начальные установки безопасности • В процессе инсталляции запрашивается начальный уровень настроек: • Это именно начальныенастройки для сервисов и уровня безопасности Caché

  14. Начальные установки безопасности (2) • Разница для пользователей: • Шаблон пароля (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.

  15. System Management Portal

  16. System Management Portal(Портал управления) • Новый интерфейс (browser-based) • Позволяет удаленное управление без установки ПО на клиента • Минимизируетмежплатформенную несовместимость • Интерфейс объединяет функции отдельных утилит(см. 5.0.*): • Configuration Manager • Control Panel • Explorer • SQL Manager

  17. Упр. 1: Использование Портала управления • ОткройтеПортал управления (Systems Management Portal)изCaché Cube (войти как “_system/SYS”) • Выберите Управление безопасностью (Security Management)из меню System Administration • Выберите Пользователи(Users)изSecurity Definitions • Выберите Создать нового пользователя (Create New User)

  18. Упр. 1 (продолжение): Использование Портала управления • Введите “guest”как Имя (Name), “school guest”как Полное имя (Full Name)и“t”как пароль и его подтверждение • Измените Область по умолчанию (Default Namespace)наUSER • Сохраните изменения (кнопка Save) • Получив сообщение об ошибке, введите “test”как пароль и его подтверждение • Сохраните изменения (кнопка Save) • Выберите роли[Roles]и установите %DB_USERв спискеSelected, подтвердите изменения, нажав кнопкуAssign • Выберите пользователей[Users]из верхнего меню в окне ролей, убедитесь, что там появился новый пользователь

  19. Аутентификация

  20. Аутентификация: установление личности • В механизме аутентификации Caché обеспечиваются следующие механизмы аутентификации: • Operating System:использование аутентификации ОС для определения пользователя Caché • Kerberos:использование многоплатформенного механизма Kerberos • Caché Login: Caché сама хранит хэши паролей для всех пользователей • Unauthenticated: Работа с неидентифицируемым пользователем

  21. Аутентификация через ОС • Caché определяет пользователя по информации от ОС • Аутентификация пользователей производится в ОС ее родными средствами • Применима только к процессам (службам) на сервере • Нельзя подключиться с удаленной машины • например, если студия Caché с одного компьютера пытается подключиться к серверу на другом компьютере. • Обычно используется для UNIX и OpenVMS. • На MS Windows аутентификация через ОС работает только для локальных входов (например, запуска служб).

  22. Kerberos • Что это такое «Kerberos» • Открытый стандарт, изначально разработанный в MIT • Позволяет проводить аутентификацию по небезопасной сети • Достаточно устойчив к атакам • Назван в честь 3-х голового пса, охранявшего, по мнению древних греков подземное царство, так как протокол был построен на 3-х основных принципах. • См. RFC 4120 • Достоинства: • Пароль НИКОГДА не передается по сети • Реализован на всех платформах, на которых работает Caché и Ensemble • Поддерживает гетерогенные сети • Быстрый и масштабируемый • Прозрачен для пользователей системы

  23. Вход в систему после аутентификации • После аутентификации через Kerberos, ОС или средствами Caché, пользователь считается зарегестрированным («залогиненным», “logged in”) и устанавливается связь с Caché • Новые специальные переменные: • $USERNAME cодержит имя пользователя • $ROLESсоддержит список ролей, имеющихся у пользователя

  24. Упр. 2:Вход в систему • Откройте Terminal из Caché Cube • Выполните следующую команду: write $USERNAME • Выполните следующую команду: write $Roles

  25. Упр. 2 (продолжение):Вход в систему • Выполните команду: write $system.Security.Login("_SYSTEM","sys") write $system.Security.Login("_SYSTEM","SYS") Обратите внимание на выдачи "1" (успешный вход) и "0" (неуспешный вход). Почему выдался 0?

  26. Упр. 2 (продолжение):Вход в систему • Выполните команду: write $system.Security.Login(“guest”,”test”) Вы должны получить сообщение: <Cache Error: Insufficient Privilege for Programmer Access or Debug Prompt.> <Session disconnected> Причина: • Пользователь “guest” не имеет роли позволяющей использовать ресурс на разработку (%Development:Use), например роль%Developer

  27. Упр. 2 (продолжение):Вход в систему • Исправьте ситуацию через SMP (добавьте пользователю guest роль %Development). • Заново откройте терминал • Повторите попытку перерегистрации. • Посмотрите $Roles, $Username • Восстановите прежние права пользователя guest (через SMP уберите у пользователя guest роль %Development).

  28. Управление безопасностью для ODBC • Опции системы безопасности Cachéбыли добавлены к драйверу ODBC. • Способ аутентификации задается для каждого соединения (DSN). • Допускается или Caché Loginили аутентификация черезKerberos

  29. Уровни безопасности соединения • Опция “Kerberos”указывает на… • Kerberos используется для идентификации пользователя. • Дальнейший обмен происходит без проверки целостности и шифрования.

  30. Уровни безопасности соединения (прод.) • “Packet Integrity” - обеспечивает аутентификацию по Kerberos и... • Каждый пакет сопровождается хэш-значением, что позволяет получателю проверить его легитимность. • Данные не шифруются

  31. Уровни безопасности соединения (прод.) • Опция “Encryption”обеспечивает аутентификацию по Kerberos, Packet Integrity и … • Весь обмен шифруется! • Гарантирует подтверждение источника и содержимого и защиту содержимого

  32. Пример настройки 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);

  33. Авторизация

  34. Основы авторизации • Авторизация (Authorization) определяет то, что можно сделать зарегестрированному (аутентифицированному) пользователю • Терминология • Сущность (Asset):что-то, что подлежит защите • База данных в Caché • Подключение к Caché по SQL • Возможность создать резервную копию • Ресурс (Resource):то, что защищает сущность • Ресурс «База данных» (напр. %DB_Samples) • Ресурс «Административное действие» (напр. %Admin_Manage) • Ресурс «Разработка» (напр. %Development) • Ресурс на службу (напр. %Service_CSP) • Определяемое пользователем

  35. Основы авторизации (прод.) • Терминология (прод.) • Право (Permission):возможность что-то сделать • Read (R): Просмотр (но не изменение) содержимого ресурса • Write (W): Просмотр или изменение содержимого ресурса • Use (U): Использование ресурса, например приложения или службы • Привилегия (Privilege):дает право сделать что-то с ресурсом, соотнесенным с одним или несколькими сущностями (assets), напр. читать БД Samples • Привилегиязаписывается как имяресурса,после которого через двоеточие идут названия прав, разделенные запятой: • Пример: %DB_SAMPLES:Read

  36. Подробнее про права… • Права (permissions),связаные с ресурсамиобразовываютпривилегии. • Привилегии могут быть сделаны публичными (Public). • Это эквивалентно тому, что любой пользователь обладает данной привилегией • Пример: Если привилегия %Service_CacheDirect:Useсделана публичной (Public), то тогда любой пользователь может подключить клиента к серверу Caché напрямую (по CachéDirect) • Caché обеспечивает функции по проверке привилегий у текущего процесса: $SYSTEM.Security.Check(Resource,Privilege)

  37. Упр.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?

  38. Упр.3 (продолжение):Узнайте, что вы можете Получите свои привилегии для ресурса. Выполните: w $SYSTEM.Security.Check("%DB_Samples") w $SYSTEM.Security.Check("%XYZ")

  39. Роли • Терминология • Роль (Role):именованный набор привилегий • Обычно многие пользователи имеют одинаковые привилегии • Набор привилегий может быть определен единожды и потом использоваться • Пользовательможет иметь более одной роли. • Привилегии могут быть назначенытолько роли • Привилегии не могут быть назначены напрямую пользователю • Основной элемент авторизации

  40. Роли (прод.) • Роли определяются из: • Имени пользователя • Приложения («добавленные» или «приписанные» роли) • Код в %CACHESYS (set $ROLES=“Inventory”, new $ROLES) • Привилегированные рутины ($System.Security.AddRoles)

  41. Роли (прод.) • Существуют предопределенные («Predefined»)и определяемые пользователями («User-defined») роли • Предопределенные роли устанавливаются в момент установки Caché и не могут быть изменены позже • В Caché есть несколько предопределенных ролей (напр. %Development, %All, и т.д.)

  42. Роль%All • Особаяпредопределенная роль • Включает в себя все привилегии на все ресурсы системы («суперроль») • Не может быть удалена или модифицирована • В системе всегда должен существовать хотя бы один пользователь с ролью%All • Если такой пользователь только один, то он не может быть удален или запрещен его вход в систему. • Все это не позволяет «оставить ключи за захлопнутой дверью»

  43. Области и безопасность • Терминология • Область (Namespace):логический набор данных и программ, хранимых в одной или нескольких физических БД • Пользователи и приложения взаимодействуют с БД в Caché через области. • Доступ к данным в области определяется наличием привилегий, связанных с БД из этой области. • Данное условие проверяется в момент, когда: • Процесс пытается сделать область текущей (напр. $ZU(5), команда ZN/ZNSPACE или утилита %CD) • Делается попытка подключиться к Caché используя службу, которая, в свою очередь, подключается к области (напр. Caché Direct, SQL, и т.д.).

  44. Службы Caché • Терминология • Службы Caché:означает то, через что пользователи или другие компьютеры подключаются к Caché (напр. %Service_Telnet) • Управление службами - существенная часть управления безопасностью. • Настройки для служб: • Разрешена или запрещена • Тип аутентификации для службы • Допустимы ли входящие подключения

  45. Схема авторизации через роли

  46. Упр. 4:Назначение ролей • Войти в Systems Management Portal (login: _system/SYS) из Caché Cube, выберите Security Management, выберитеRoles. • ВыберитеEditдля роли %DB_Samplesи перейдите к закладке Members • Добавьте пользователя “guest” к списку и нажмите Assign • Guest будет добавлен к членам роли (Members of this Role) • Это еще один способ управления ролями

  47. Ресурсы приложений • Позволяют пользователям выполнять что-то (получить доступ ксущностям, защищеннымресурсами), но только через приложение. • Предоставляет механизм для расширения роли пользователя, называемый Эскалацией привилегии (Privilege Escalation) • Caché позволяет: • Создать определение приложения (application definition) • Назначить ему роли, которые содержат все необходимые привилегии • Дать пользователю роль для работы с приложением. • Новые привилегии будут доступны только в приложении.

  48. Определение приложения • Предназначено для защиты приложений • 3 типа приложений: • CSP application definitions:связано с CSP-приложением • Privileged Routine application definitions:описывает приложения, которые могут вызывать метод AddRoles • Client application definitions:описывает клиентские приложения

  49. Добавленные роли и соответствующие роли (Added Roles и Matching Roles) • Каждый процесс Caché имеет набор ролей, которые определяют текущие привилегии для процесса. • Этот набор ролей включает роли пользователя, определенные в момент аутентификации, так и добавленные роли, которые наследуются от запущенного приложения (ролей, приписанных самому приложению, Added Roles). • Для каждого определения приложения может быть задано отображение текущих ролей (matching roles)на другие, целевые роли (target roles). • Когда приложение инициализируется, оно получает и целевые роли, полученные на основе ролей пользователя.

  50. Упр. 5: Роли для приложений • Закройте все браузеры, проверьте доступность Документации Caché • Откройте Systems Management Portal (login: _system/SYS) из Caché Cube, выберите Security Management, выберите CSP Applications. • Нажмите на Editдля /csp/docbook/. • Укажите, что не «Не аутентифицируемый» и требуется «Пароль» • Задайте требуемый ресурскак %Development и нажмите Save • Закройте все браузеры (или перезапустите СУБД) проверьте доступность Документации Caché • Попробуйте войти как guest, затем как _system. • Почему guest не смог войти, а _system смог?

More Related