Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Вопросы и ответы по MS SQL Server" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
MS SQL Server - дело тонкое...
Информационный Канал Subscribe.Ru |
#243<< #244 |
СОДЕРЖАНИЕ Общая система безопасности приложений на предприятии Авторы: Николай Денищенко и Сергей Гавриленко
Не так давно мы проводили собеседование кандидатов на должность программиста и не в последнюю
очередь интересовались отношением претендента к вопросам защиты данных. Несмотря на то, что
большинство кандидатов активно участвовало в разработке бизнес-приложений, практически никто
из них не уделял должного внимания безопасности. Такое скорбное положение вещей нас несколько
озадачило и послужило стимулом для написания статьи. Необходимость создания общей системы безопасности предприятия
Никогда не стоит полагаться на честность сотрудников и на то, что они будут добросовестно
выполнять должностные предписания (если, конечно, сотрудники вашего предприятия не самураи
и при первом же намёке на их нечестность докажут вам свою преданность, сделав харакири). Удовлетворение требованиям корпоративной безопасности: ограничение доступа к объектам приложений.
Приложения, работающие с конфиденциальными данными (денежные проводки, клиентские базы и пр.)
уже сами по себе подразумевают контроль и разграничение прав доступа между сотрудниками
предприятия. Для предотвращения несанкционированного доступа к базам данных приложений система
безопасности должна быть тесно интегрирована с безопасностью MS SQL Server (чтобы Маша не
смогла никакими инструментальными средствами получить доступ к данным, не предназначенным
для её глаз). Разграничение функций между системными администраторами и разработчиками
Обязанности по регистрации пользователей в приложениях, как правило, возлагаются на администратора
баз данных или на системных администраторов. Во втором случае ситуация осложняется тем, что
системные администраторы не должны иметь полного доступа на SQL Server'а предприятия (в силу
своей квалификации). Существование нескольких групп разработки ПО на предприятии За исключением редких случаев, когда разработкой приложений занимается одна команда, на предприятии имеется несколько групп, которые ведут разные проекты. Людей, мыслящих одинаково в природе не встречается, поэтому каждая группа, озадаченная проблемой безопасности своих приложений, принимается изобретать велосипед. В результате любое новое приложение наделяется своей неповторимой системой безопасности, которая никак не сочетается с другими, аналогичными по своей сути системами, или попросту их дублирует. Сведение повторяемости кода к минимуму
Методы защиты объектов в приложениях легко поддаются абстрагированию. Поэтому логичным было
бы выделить код, предоставляющий требуемый уровень абстракции, для последующего многократного
использования. Это позволит разработчикам сосредоточиться на реализации основных функций
приложения и не отвлекаться на решение проблем, связанных с безопасностью. Удобство для пользователей. Необходимо помнить лишь одну учётную запись и пароль
Практика показывает, что среднестатистический пользователь способен запомнить от одного до
трёх паролей одновременно. Если количество учётных записей для одного сотрудника начинает
стремиться к бесконечности, на мониторах появляются гирлянды из маленьких жёлтых бумажек,
где пароли написаны открытым текстом. Предприятие, конечно, может проводить тесты сотрудников
на память при приёме на работу, но, скорее всего, решение этой проблемы будет возложено на
программистов. Организация централизованной обратной связи с пользователями и уменьшение трудозатрат на сопровождение Каково бы ни было устройство защиты ваших приложений, пользователь должен знать, куда обратиться в случае утери пароля или иных проблем, так или иначе касающихся политики учётных записей. Наличие соответствующих пунктов в справочной системе приложений, где указана контактная информация и описаны процедуры разрешения проблем (получение учётной записи для нового сотрудника, восстановление пароля, смена привилегий в связи со сменой должности сотрудника и т.д.), может существенно сэкономить время пользователям и системным администраторам. Подробная документация и своевременные комментарии оставят у пользователя благоприятное впечатление о ваших разработках. Любое начинание, пусть даже такое как ограничение пользователей в правах, должно сопровождаться аргументированными доводами. Устройство системы безопасности Таким образом, мы приходим к организационной схеме, изображённой на рис.1. База общей системы безопасности содержит тот самый абстрактный уровень, который позволяет свести к минимуму повторяемость кода. Что может быть вынесено на этот уровень:
Представленная функциональность должна быть доступна через Административную утилиту. Рис.1 Давайте теперь перейдём к непосредственному проектированию. Единая политика учётных записей В первую очередь следует выработать принцип именования учётных записей и в последствие от него не отступать. Например, вот так:
Пользователь: Маша Ведро Не связывайте пароль с личной информацией о пользователе (кличка любимого пуделя и дата рождения не подойдут). Маше также следует объяснить, что разглашать пароль можно, но излишняя болтливость будет стоить ей месячной зарплаты. Чуть выше, мы договорились, что наша система безопасности интегрирована с безопасностью MS SQL Server. Проще говоря, создание учётной записи в Административной утилите должно приводить к созданию логина на сервере. Есть два способа это сделать синхронный и асинхронный. Рассмотрим оба варианта.
Недостаток этого способа заключается в том, что создающий учётную запись, должен быть включён как минимум в роль security admin, а это не соответствует нашему требованию о скромных полномочиях системных администраторов.
Асинхронный способ позволяет избежать недостатков предыдущего способа. Мы можем дать
администратору права только на процедуру, добавляющую записи в T и не включать его в роль
security admin. Зато задание, владелец (owner) которого обладает полномочиями security admin,
на 3 шаге выполнит все необходимые действия.
Процедура удаления аналогична процедуре создания учётной записи за тем лишь исключением,
что как при синхронном, так и асинхронном способе нужно позаботиться о том, чтобы удаляемый
логин не был подключен к серверу.
На шаге 4 мы подстраховываем себя на случай, если в момент принудительного завершения процессов пользователь снова попытается подключиться к серверу. Контроль подключений к вашим программам является одним из самых важных аспектов общей системы безопасности. Он позволяет всегда быть в курсе того, кто работал с приложениями в определённый промежуток времени, кто работает с ними в данный момент и даже оставляет возможность принудительно завершить работу одного или нескольких пользователей. Несмотря на всю значимость этого контроля, его очень легко обеспечить.
Если ваши приложения рассчитаны на работу через службу терминалов или Citrix Metaframe, то
для получения реального IP-адреса и хоста можно воспользоваться соответствующими API. Например,
Citrix предоставляет Server SDK, куда входит документация и готовые примеры.
Описанный алгоритм быстро отучает весь отдел продаж работать под учётной записью Маши Ведро. Способ с таймером
Таким образом продолжительность работы одной сессии всегда можно определить с погрешностью интервала времени, с которым запускается задание. Способ без таймера
Теперь, вооружившись бесценной теорией, мы уже можем реализовать небольшую часть схемы данных.
На рис.2 изображён вариант, который получился у нас.
Рис.2 Единственное требование, которое имеет смысл предъявлять группам - это возможность наследования. Другими словами одна группа может быть включена в другую, при этом права должны быть унаследованы от группы-предка.
Для того чтобы изменение прав в Административной утилите (например, путём включения пользователя
в группу) как-то отражалось на полномочиях учётных записей в SQL Server'е, мы должны предусмотреть
возможность сопоставления серверных ролей и ролей баз данных нашим объектам безопасности.
Один из вариантов организации такой связи представлен на рис.3.
Рис.3
На рис.4 приведены уже ставшие родными таблицы Users и Objects. Как несложно догадаться
Groups содержит список групп общей системы безопасности. Флаг is_built_in говорит о том,
что данная группа является встроенной (такую группу нельзя удалить), а at_least_one_member,
что в данной группе должна оставаться хотя бы одна учётная запись.
Второй случай.
При таком алгоритме работы нужно учесть один нюанс. А именно, если вы непосредственно на сервере добавите пользователя в роль, то через какое-то время задание восстановит полномочия пользователя согласно тому, как они заданы в общей системе безопасности.
Рис.4
В логах удобно использовать категории событий, особенно когда число событий довольно большое.
Чтобы обеспечить приемлемую гибкость, каждое приложение должно иметь собственный набор категорий.
На рис.5 таблица EventCategories как раз выполняет эту функцию.
Рис.5
Не секрет, что на этапе внедрения приложений на предприятии возможны ошибки. Не учитывать
этот факт, по крайней мере, недальновидно. Поэтому, если вы предусмотрите возможность
фиксировать ошибки в логе, это поможет быстро локализовать проблему и даже выявить причину
их возникновения.
Рис.6
Учтите, что ошибки иногда возникают даже до того, как клиентская часть подключится к серверу.
Следовательно, приложение не всегда может отправить эту информацию в систему безопасности.
Автоматическое обновление клиентских частей и контроль версий Самый простой и, как нам кажется, самый надёжный способ обновления приложений может выглядеть следующим образом.
Представим теперь, что на предприятии имеется несколько филиалов, 2000 одарённых сотрудников и на рабочих местах установлены ваши приложения. Нетрудно вообразить, что произойдёт, если вечером вы выложили новый релиз, а на следующее утро все 2000 одарённых начнут выкачивать с центрального сервера актуальную версию. Ситуация, конечно, неприятная, но разрешимая. На рис.7 изображён один из возможных вариантов.
Рис.7
После выхода релиза разработчики выкладывают его на свой сервер. На шаге 1 любыми доступными
средствами обновление тиражируется на файловые сервера каждого из филиалов. Пользователи,
пришедшие с утра на работу, запускают приложение и успешно обновляются на шаге 2. Каким же
образом программа узнает, с какого файлового сервера выкачивать релиз? Подсказкой может
служить IP-адрес компьютера пользователя. Как правило, на филиале имеется несколько подсетей,
а все IP-адреса одной подсети обычно имеют три одинаковые байта. Таким образом, в системе
безопасности мы можем сопоставить эти три байта файловому серверу филиала.
Рис.8 Совсем не обязательно слепо следовать нашим рекомендациям. Мы продемонстрировали только общие принципы. То, как эти принципы могут быть воплощены в жизнь, зависит от требований, которые предъявляются системе безопасности на вашем предприятии. Изменения dbcc memorystatus в Yukon
По материалам статьи Slava Oks:
Changes in dbcc memorystatus in Yukon
Вероятно, Вам доводилось использовать в SQL Server 2000 команду dbcc, выдающую
информацию о состоянии памяти. В Yukon разработчики изменили выводимую dbcc memorystatus
информацию, чтобы учесть изменения в дизайне нового менеджера памяти, которые автор
описал в предыдущих статьях.
Следующая часть подводит итог об узле процессора
Далее следует информация, относящаяся к узлу, которая сгруппирована по типу клерка памяти. Как Вы должны помнить, существует несколько клерков. (будет выдано 5 строк)
После этого dbcc memorystatus выводит резюме для каждого клерка в разрезе узлов.
Остальная часть выдаваемой информации подобна той, которая описана в статье: INF: Using DBCC MEMORYSTATUS to Monitor SQL Server Memory Usage В большинстве случаев, предоставляемой этой командой информации недостаточно для выяснения причин возникновения проблем с памятью. Однако, информации этой команды может быть достаточно для понимания того, как распределяется память в SQL Server. Автор обычно использует эту команду в качестве первого шага при отладке проблем SQL Server с памятью. Например, если у сервера произойдёт сбой из-за ошибки резервирования VAS, зная сколько распределено VAS, можно классифицировать утечку как внутренней, так и внешней памяти SQL Server.
Version Control - Part 4 - Rolling Back Самые популярные темы недели
Больше книг хороших и разных!
MSSQL+ Кластер на Windows 2003 Enterprise Edition |
Вопросы, предложения, коментарии, замечания, критику и т.п. оставляйте Виталию Степаненко и Александру Гладченко в форуме: Обсуждение рассылки
|
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.soft.winsoft.sqlhelpyouself |
Отписаться |
В избранное | ||