(Возврат на основную страницу)
Editorial
Шон МакКоун
Является ли обнаруженная в SQL Server дыра безопасности реальной угрозой?
Programming
Кевин С. Гофф
Чертова дюжина: 13 советов для улучшения производительности управления данными
Ицик Бен-Ган
Наборы группировки. Часть 1
Other
Эндрю Сиссон
Помощник по миграции на SQL Server. Часть 1
Является ли обнаруженная в SQL Server дыра безопасности реальной угрозой?
DOWNLOAD
В начале сентября компания Sentrigo (http://www.sentrigo.com/passwords/) обнаружила дыру в системе безопасности SQL Server. Проблема заключается в том, что SQL Server хранит в памяти пароли открытым текстом и для их извлечения не требуется особенных усилий. На первый взгляд это не составляет большой проблемы, так как для того чтобы получить к паролям доступ, необходимо обладать правами системного администратора. Однако существуют ситуации, когда этот недостаток может перерасти в катастрофу. Так как большинство пользователей используют в разных ситуациях один и тот же пароль, обнаружение его дает доступ к множеству ресурсов, за рамками конкретной инсталляции SQL Server. Следует отметить, что проблема существует только для тех пользователей, которые входят на сервер в режиме SQL Server аутентификации. Для тех, кто авторизуется под доменный бюджет проблемы не существует, так как в этом случае передается только идентификатор (token) безопасности и, собственно говоря, красть нечего. Что же касается паролей системы безопасности самого SQL Server, тут имя пользователя и его пароль хранятся в памяти открытым текстом. Основной момент в прессрелизе Sentrigo не столько касается бреши в системе безопасности, сколько того факта, что Microsoft отказалась предпринимать какиелибо действия по исправлению ситуации.
Я связался с сотрудниками Microsoft и вот что мне сообщили: «После тщательного исследования Microsoft приняла решение, что эта проблема не рассматривается как реальная угроза безопасности и не планируется выпуск заплатки, закрывающей эту дыру. Как подтверждают сами специалисты, обнаружившие проблему, для получения доступа к паролям необходимо обладать привилегиями администратора на атакуемой системе. Злоумышленник, имеющий административные права, и так уже имеет полный контроль над системой и может устанавливать программы, просматривать, менять или удалять данные или создавать новых пользователей с полным набором прав». Соответственно, Microsoft рекомендует, чтобы корпоративные заказчики применили меры по обеспечению безопасности, рассмотренные в документе «Security guidance» (http://technet.microsoft.com/enus/library/cc184906.aspx) и чтобы все пользователи использовали рекомендации, указанные в документе «Guidelines to protect their PC» (http://www.microsoft.com/security/default.aspx).
Специалисты Sentrigo настаивают, что проблема достаточно серьезна, но Microsoft утверждает, что это не так. На мой взгляд, Sentrigo реагирует правильно, тогда как Microsoft прячет голову в песок. Я не понимаю, почему корпорация так старательно уворачивается от реального взгляда на вещи, но даже когда я разговаривал с их представителем, тот был вполне убежден, что все необходимое уже сказано.
Ниже я постараюсь объяснить, почему я считаю правильной позицию Sentrigo, это вопрос правильной оценки последствий. Давайте рассмотрим два сценария.
Сценарий No. 1
Вы системный администратор в компании и обладаете всеми правами на серверы, где установлен SQL. Вы также эксплуатируете систему аудита, которая обеспечивает гарантию, что никто, включая вас, не превысит своих полномочий. По какойто причине вы лелеете низкие планы, но чертова система аудита держит вас в узде.
Тут вам доводится прочитать историю, рассказанную Sentrigo. Вы получаете в свои руки средство чтения памяти и получаете имя и пароль того человека, на которого вы точите зуб. Вы начинаете действия в базе данных от его имени. Теперь он попадает под подозрение, так как именно от его имени творятся все эти безобразия. В результате он может потерять работу, хотя не совершил ничего предосудительного. Подобное вредительство может продолжаться сколько угодно долго. Несмотря на то, что вы администратор с широкими правами, именно это требует запрета на доступ к паролю другого пользователя.
Получение права на расшифровку закрытых данных — еще одна сторона подобного сценария. В организации внедрена система шифрования от стороннего поставщика. Она обеспечивает защиту данных даже от системного администратора. Помните, основная проблема не в том, чтобы получить дополнительные привилегии, угроза в том, что появляется возможность совершать незаконные действия от чужого имени. Кроме того, может быть вы администратор только на части серверов, указанная дырка в безопасности позволит получить доступ к другим машинам.
Сценарий No. 2
Этот сценарий еще хуже, так как он гораздо более вероятен и более опасен, так как позволяет получить недопустимый уровень привилегий.
Допустим, вы разработчик и, как это часто бывает, имеете права администратора на сервере разработки. Вы просите администратора взглянуть на вашу машину, например, под предлогом проблем с неким запросом, или просите его сделать вам резервную копию, в общем, придумываете причину. После того как администратор входит на сервер, вы получаете возможность снять его пароль, теперь вы получаете административные привилегии на все серверы, которые обслуживаются этим администратором. У вас есть не просто права администратора, вы способны выступить от его имени и никто не сможет вас отследить. Достаточно даже того, что вы получаете возможность украсть информацию, без того чтобы ктото узнал об этом. Анализ журналов аудита не даст никакого результата, так как все участники процесса выступали в рамках собственных привилегий.
Но может быть и хуже. Вам даже не придется выступать от имени администратора или заманивать его на сервер, чтобы украсть пароль. Есть немало других пользователей, чьи привилегии вы сможете похитить. Возьмем, к примеру, продукт типа Ecora (www.ecora.com), который выполняет инвентаризацию ваших серверов, где работает SQL. Вполне возможно, что он обследует и ваш сервер, так что есть возможность украсть его пароль. А как насчет таких пакетов мониторинга как SCOM, Spotlight или OpenView? Как насчет скриптов, которые исполняются по сети для выполнения разного рода административных заданий? В крупной организации столько подвижных частей, все их отследить просто невозможно.
Возможные решения
Есть несколько способов избежать проблем, связанных с описанной дырой безопасности. Вопервых, используйте доменные бюджеты для регистрации на сервере. Они не передают текст пароля, только метку безопасности. Мои разработчики устали слышать от меня отказы в предоставлении им бюджетов в рамках SQLаутентификации. Я иногда это позволяю, но только в том случае, когда нет иного выхода и в строго ограниченных масштабах.
Не создавайте универсальных SQLбюджетов. Если пароль украден, вы сможете найти конкретного человека, связанного с этим паролем, его можно поспрашивать и определить, что люди делали в определенное время. Если возможно четко определить конкретного пользователя, есть больше шансов определить, что же на самом деле случилось. Но если используется универсальный бюджет, вариантов его использования получается слишком много, и найти истинную причину проблем оказывается совсем не просто, по крайней мере, на это потребуется гораздо больше времени.
Вы можете использовать открывшуюся возможность для восстановления потерянных паролей, которые невозможно восстановить или изменить иным способом. Недавно я сам попал в такую ситуацию. Я унаследовал SQLпользователя, который использовался практически по всей сети и столь многими процессами, что я просто не мог изменить его без риска поломать сотни настроек. Если вы попали в похожую ситуацию, то при непредусмотренной смене пароля в базе данных возникает масса проблем.
Еще один хороший пример — использование связанных серверов. Вы не можете сменить пароль, после того как выполнена настройка связанного сервера. Так что если пароль утерян, вы также стоите перед неприятной проблемой. Я сам попал в аналогичную ситуацию. У меня есть несколько связанных серверов, которые обращаются к серверам в других группах или подразделениях, и никто не может вспомнить, под каким паролем они устанавливают соединения. И мы не можем поменять его, так как не представляем, сколько групп используют эти настройки.
Какова бы ни была причина, вам необходимо извлечь пароль из памяти сервера. Обратитесь к моему видео на сайте MidnightDBA.com (http://midnightdba.itbookworm.com/recoversqlpasswords/recoversqlpasswords.html) и посмотрите, как можно воспользоваться новыми возможностями. Это настолько просто, что становится страшновато.
Я надеюсь, что вы сможете использовать найденные средства во благо, но все же надеюсь, что рано или поздно дырка будет запечатана, Microsoft просто должна это сделать.
Чертова дюжина: 13 советов для улучшения производительности управления данными
Кевин С. Гофф (Kevin S. Goff)
Статья об управлении данными в Visual Studio 2005 и SQL Server посвящена обобщениям .NET (.NET generics), содержит введение в новый класс ObjectDataSource и демонстрирует некоторые дополнительные новые возможности T-SQL 2005.
Работаете ли вы с C# или VB.NET, имеете ли дело с frontend или с backend приложениями, от вашего опыта в управлении данными напрямую зависит ваш вклад в проект.
Новые классы .NETобобщений предоставляют почти квантовый скачок эффективности, позволяя вам писать более простой код, который делает больше. Класс ObjectDataSource из ASP.NET 2.0 поможет вам интегрировать классы бизнесобъектов (middletier dataaware classes) с элементами управления связанными с данными (databound controls) на вебстранице. TSQL 2005 предлагает новые языковые возможности в помощь разработчикам баз данных.
В заключение серии статей об управлении данными, я сконцентрируюсь на обобщениях .NET, ObjectDataSource из ASP.NET 2.0 и некоторым дополнительным возможностям TSQL 2005.
Начало с мыслями об окончании: целое попурри советов по обработке данных
Сейчас типичный солнечный день, я пишу эти строки сидя на у себя во дворе, и еще никогда прежде возможности по обработке данных в Visual Studio 2005 и TSQL 2005 не были столь «горячи». Я только что закончил продолжительное путешествие, в ходе которого я участвовал в конференциях и других общественных событиях, и я вернулся с гигантским зарядом энергии, который собираюсь использовать в этот выпуск своих советов.
Итак, приступим! Вот состав команды на игру чертовой дюжины (и хотя в состав бейсбольной команды входит только девять игроков, у нас целых тринадцать советов!).
Серия советов с первого по седьмой рассматривают обобщения .NET и в ее заключении описывается универсальный класс доступа к данным, который заполняет типизированный dataset из хранимой процедуры.
Середина нашей команды (Совет 8) описывает простой пример, демонстрирующий возможности объекта ObjectDataSource из ASP.NET 2.0.
Задние ряды команды описывают (в общих чертах) еще пять советов по работе с серверной базой данных (backend database)!
Наборы группировки. Часть 1
Ицик БенГан (Itzik BenGan)
DOWNLOAD
Я хочу посвятить эту статью отличной концепции, которая активно применялась в течение некоторого времени, но в SQL Server 2008 получила некоторые новые функциональные свойства. Я говорю о наборах группирования, полезных при обработке агрегированных данных. Они позволяют создавать решения анализа информации в реляционной базе данных, служащие альтернативой применению службы Analysis Services, когда это целесообразно.
Принимая во внимание это обстоятельство, давайте рассмотрим наборы группирования. Все примеры кода в этой серии статей, посвященных наборам группирования, будут выполняться для таблицы Orders, созданной в базе данных tempdb. Выполните код из рис. 1, чтобы создать таблицу Orders и заполнить ее данными. К слову, самые наблюдательные из вас заметят коечто необычное в инструкции INSERT рис. 1: в нем используется небольшая, но очень удобная возможность TSQL в SQL Server 2008, называемая конструктором значений строк (Row Value Constructors). То есть вы теперь можете вставлять в таблицу несколько строк одной инструкцией INSERT VALUES. Просто заключите набор значений каждой строки в скобки и разделите строки запятыми.
Наборы группирования
При изучении всякой новой возможности хороший способ начать — это понять, какие проблемы эта возможность помогает разрешить, и как вы решали такие проблемы раньше. Наборы группирования — не новая идея, это не более чем набор элементов/атрибутов, по которым вы выполняете группировку. К примеру, набор атрибутов в любом привычном запросе с GROUP BY — это набор группирования. В SQL Server 2008 появился новый параметр/вложенное предложение, именуемое GROUPING SETS, позволяющее вам определять несколько наборов группирования в одном запросе. С точки зрения логики, запрос с параметром GROUPING SETS производит один результирующий набор, как будто объединяя результирующие наборы нескольких запросов с GROUP BY. Нельзя сказать, что вы не могли получить то же самое раньше, но с параметром GROUPING SETS вы имеете возможность писать гораздо меньше кода, ваш запрос будет гораздо более эффективен, и вы получите больше гибкости, чем в прошлом.
Помощник по миграции на SQL Server. Часть 1
Эндрю Сиссон (Andrew Sisson)
Поставляемый Microsoft помощник по миграции на SQL Server (SQL Server Migration Assistant — SSMA) для Oracle облегчает преобразование данных и переход с баз данных Oracle, помогает конвертировать код языка программирования PL/SQL в код языка программирования T-SQL, упрощает перенос данных Oracle в систему управления базами данных (СУБД) Microsoft SQL Server.
После посещения цикла обзоров SQL Server 2008 (под кодовым наименованием Katmai) и первой ежегодной конференции Microsoft по бизнесаналитике в Сиэтле этой весной я нахожусь под впечатлением от улучшений, которые Microsoft сделала в области масштабируемости и расширяемости группы технологий SQL Server. Microsoft продолжает делать значительные успехи, развеивая давно существующее незаслуженное представление о том, что SQL Server не является мощной платформой баз данных. С выходом SQL Server 2008 переход на SQL Server c других систем управления базами данных (СУБД) стал еще более притягательным, невзирая на то, что подготовка и выполнение миграции в сложных окружениях могут быть все более трудными. Однако Microsoft предоставляет бесплатный инструмент — помощник по миграции на SQL Server (SQL Server Migration Assistant — SSMA) для Oracle — с целью облегчить переход на SQL Server с других СУБД. SSMA может помочь наметить в общих чертах задание миграции, конвертировать код PL/SQL в код TSQL, перенести данные, протестировать перенесенные объекты и развернуть мигрированную базу данных. Давайте рассмотрим, как установить и настроить SSMA, а также то, как использовать SSMA Testing Wizard (Мастер Тестирования SSMA) для тестирования перенесенной базы данных.
============================== Дополнительно ===================================================
http://sourceforge.net/projects/sugarcrm/files/
SugarCRM 5.2 now available! A complete CRM system for businesses of all sizes. Core CRM functionality includes sales automation, marketing campaigns, support cases, project mgmt, calendaring and more. Built in PHP, supports MySQL and SQL Server.
=======================================
http://www.devart.com/dotconnect/unidirect/download.html
UniDirect .NET
UniDirect .NET offers universal access to data of different databases for the Microsoft .NET Framework. It supports most of major database servers, including Microsoft SQL Server, Microsoft Access, Oracle, DB2, MySQL, PostgreSQL, InterBase, and Firebird. Other servers can be accessed through their ADO.NET, OLE DB and ODBC providers.
UniDirect .NET is based on ADO.NET technology and can be used in the same way as the SQL Server .NET Data Provider. The main feature of UniDirect .NET is an access to multiple database servers at the same code. With UniDirect .NET it is possible to avoid writing conditional code for different providers or using ADO.NET interfaces directly. UniDirect .NET implements full support of design-time development and integration with IDE, which allows to reduce development time greatly.
=====================================
http://sqlservercache.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=15045
SQL Server Cache Manager
This utility will allow you to return information about what is stored is the SQL Server cache and how efficiently it is being used. The utility allows you to query off of various criteria such as use count so you can see which queries execution plans are being reused and which aren't. It also will show you whether it's they are ad-hoc queries, prepared or stored procedures. This information can be handy when looking for queries in programs that need to be optimized.
This project was originally written with Visual Studio 2005 against the .Net Framework 2.0 but has been upgraded to Visual Studio 2008 and is now compiling against the .Net Framework 3.5 (nothing specific to 3.5 though so if needed the target framework could be easily changed). The source code was written in Visual Basic.
======================================
http://www.datamanipulation.net/SQLQueryStress/sqlquerystressdownload.asp
SQLQueryStress is a simple, lightweight performance testing tool, designed to load test individual queries. It includes support for randomization of input parameters in order to test cache repeatability, and includes basic capabilities for reporting on consumed server resources.
=====================================
http://www.ssmstoolspack.com/Download/STP
SSMS Tools Pack - an add-in with lots of IDE options (Query Execution history, regions, debug sections, CRUD stored procedures creation, new query templates, running custom scripts from Object explorer's context menu) for SQL Server Management Studio and SQL Server Management Studio Express