870 likes | 1.15k Views
Безопасность в последних версиях Caché и Ensemble. Грачев Андрей. «Школа Инноваций InterSystems 2007». Welcome/FAQ. Цель занятий Практический взгляд на современную систему безопасности в Caché и Ensemble Для кого эти занятия
E N D
Безопасность в последних версияхCaché и Ensemble Грачев Андрей «Школа Инноваций InterSystems 2007»
Welcome/FAQ • Цель занятий • Практический взгляд на современную систему безопасности в Caché и Ensemble • Для кого эти занятия • Для разработчиков, кто знаком с СУБД Caché и её технологиями.
Безопасность. Аспекты • Доступность • Данные должны быть доступны тому, кому они предназначены • Целостность • Данные не должны быть несанкционированно изменены • Защита от НСД • Данные не должны быть доступны тому, кто не имеет на них право («не пущать!»)
Безопасность. Задачи • Помешать нарушить • Система должна предупреждать инциденты • Идентифицировать • Факт попытки нарушения нужно уметь идентифицировать • Принять меры к неповторению • Учесть ошибки, внести исправления
План • Введение в модель безопасности Caché • System Management Portal • Аутентификация • Авторизация • Система Аудита и Security Advisor • Защищенное взаимодействие и криптование • Вопросы и ответы
Проверка компьютеров.... • Пожалуйста, не редактируйте ничего в настройках ОС и Caché до начала занятий!
Модель безопасности Caché.Введение
LDAP Аутентификация Firewall Пользователь Стандарты Крипт Права ГОСТ Kerberos IdentityManagement Аудит SSL/TLS FIPS Авторизация Сертификация Контроль доступа Технологии Роли AES Пароли Hashing Безопасность, безопасность.....
Caché Advanced Security Современная модель безопасности введена с версииCaché 5.1 • Простая, единообразная архитектура • Полная и высокопроизводительная модель для разработки приложений • Возможность простой интеграции и встраивания управления безопасностью в приложения. • Минимизация нагрузки на общую производительность • Возможность быть частью безопасной (защищенной) среды и обеспечить взаимодействие с другими приложениями • Возможность реализовать строгие политики разграничения доступа и аудита • Использование стандартов и сертификация Caché Advanced Security
Компоненты • Аутентификация: идентификация пользователей • Авторизация: убедиться, что пользователь имеет право доступа к запрашиваемым ресурсам • Аудит: вести журнал событий • Безопасное взаимодействие: защитить сетевой трафик от прослушивания и подмены • Шифрация базы данных: защита от неавторизованного просмотра данных
Объекты управления. Термины • Resources, Permissions, Privileges • Resources (ресурсы): основной объект защиты (БД, служба, приложение, действие, и т.д.). Обеспечивает защиту одной или более сущности (Asset). Asset - физический объект защиты • Permissions (право): некоторое действие, которое можно выполнить с ресурсом (читать, писать, удалить, выполнить и т.д.) • Privileges (привелегия): пара Resource:Permissions (%DB_MyDB:Read). • Users, Roles • User (пользователь). Например, _system, guest • Role (роль): набор пользователей (users). Например, %All • Привилегии связаны с ролями
Подготовка защищенного окружения • Подготовка безопасного окружения • Выполняется до инсталляции Caché • Метод аутентификациии авторизацииопределяется решаемыми задачами • На всех платформах Caché имеется поддержка протокола Kerberos от вендора • Степень защищенности определяется по самому слабому звену
Minimal/Минимальные Normal/Средние Locked Down/Максимальные Начальные установки безопасности • В процессе инсталляции запрашивается начальный уровень настроек: • Это именно начальныенастройки для сервисов и уровня безопасности Caché
Начальные установки безопасности (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.
System Management Portal(Портал управления) • Новый интерфейс (browser-based) • Позволяет удаленное управление без установки ПО на клиента • Минимизируетмежплатформенную несовместимость • Интерфейс объединяет функции отдельных утилит(см. 5.0.*): • Configuration Manager • Control Panel • Explorer • SQL Manager
Упр. 1: Использование Портала управления • ОткройтеПортал управления (Systems Management Portal)изCaché Cube (войти как “_system/SYS”) • Выберите Управление безопасностью (Security Management)из меню System Administration • Выберите Пользователи(Users)изSecurity Definitions • Выберите Создать нового пользователя (Create New User)
Упр. 1 (продолжение): Использование Портала управления • Введите “guest”как Имя (Name), “school guest”как Полное имя (Full Name)и“t”как пароль и его подтверждение • Измените Область по умолчанию (Default Namespace)наUSER • Сохраните изменения (кнопка Save) • Получив сообщение об ошибке, введите “test”как пароль и его подтверждение • Сохраните изменения (кнопка Save) • Выберите роли[Roles]и установите %DB_USERв спискеSelected, подтвердите изменения, нажав кнопкуAssign • Выберите пользователей[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:Вход в систему • Откройте Terminal из Caché Cube • Выполните следующую команду: write $USERNAME • Выполните следующую команду: write $Roles
Упр. 2 (продолжение):Вход в систему • Выполните команду: write $system.Security.Login("_SYSTEM","sys") write $system.Security.Login("_SYSTEM","SYS") Обратите внимание на выдачи "1" (успешный вход) и "0" (неуспешный вход). Почему выдался 0?
Упр. 2 (продолжение):Вход в систему • Выполните команду: write $system.Security.Login(“guest”,”test”) Вы должны получить сообщение: <Cache Error: Insufficient Privilege for Programmer Access or Debug Prompt.> <Session disconnected> Причина: • Пользователь “guest” не имеет роли позволяющей использовать ресурс на разработку (%Development:Use), например роль%Developer
Упр. 2 (продолжение):Вход в систему • Исправьте ситуацию через SMP (добавьте пользователю guest роль %Development). • Заново откройте терминал • Повторите попытку перерегистрации. • Посмотрите $Roles, $Username • Восстановите прежние права пользователя 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:Назначение ролей • Войти в Systems Management Portal (login: _system/SYS) из Caché Cube, выберите Security Management, выберитеRoles. • ВыберитеEditдля роли %DB_Samplesи перейдите к закладке Members • Добавьте пользователя “guest” к списку и нажмите Assign • Guest будет добавлен к членам роли (Members of this Role) • Это еще один способ управления ролями
Ресурсы приложений • Позволяют пользователям выполнять что-то (получить доступ ксущностям, защищеннымресурсами), но только через приложение. • Предоставляет механизм для расширения роли пользователя, называемый Эскалацией привилегии (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: Роли для приложений • Закройте все браузеры, проверьте доступность Документации Caché • Откройте Systems Management Portal (login: _system/SYS) из Caché Cube, выберите Security Management, выберите CSP Applications. • Нажмите на Editдля /csp/docbook/. • Укажите, что не «Не аутентифицируемый» и требуется «Пароль» • Задайте требуемый ресурскак %Development и нажмите Save • Закройте все браузеры (или перезапустите СУБД) проверьте доступность Документации Caché • Попробуйте войти как guest, затем как _system. • Почему guest не смог войти, а _system смог?