(Возврат на основную страницу)

 

Содержание номера за Октябрь 2006 год

На кого работают ваши администраторы?

Шон Маккаун (Sean McCown)

Предположим, у вас есть администратор или даже целая группа. Основная производственная система «падает» именно в тот момент, когда вся команда должна начать активные действия. После анализа ситуации администраторы заявляют, что отладить базу данных невозможно и следует восстанавливать данные из резервной копии.

В подобной ситуации возникает сразу несколько вопросов. Администраторы сказали правду или просто не понимают, с чем столкнулись? Можно ли было вернуть систему к жизни быстрее? Действительно ли было необходимо восстанавливать БД из резервной копии с потерей части транзакций? Произошла ли потеря данных, потому что ее было невозможно избежать или потому что схема действий в катастрофической ситуации не была разработана правильно?

Можно задать себе и другие вопросы, но в целом, я думаю, вы меня поняли. Я полагаю, что большин­ство из вас не знает ответов на них, и это частично ваша вина. Но об этом далее.

В приведенном примере ситуация могла развиваться по нескольким сценариям. Вот лишь несколько из возможных путей.

1.   БД оказалась в suspect­состоянии, что стало результатом сбоя диска. Но могло произойти и переполнение диска в середине массивной транзакции, а свободного места для отката уже не оказалось. Нужно ли прибегать к восстановлению из резервной копии? Нет.

2.   БД могла оказаться запорченной. В этом случае дальнейшие действия зависят от степени и причины неполадки. Также сильно влияет на принятие решения тот факт, насколько давно произошло повреждение. Устранить его можно с потерей данных или без нее. Однако в этом случае восстановление из копии может только ухудшить дело, т. к. битая копия лишь раз восстановит неполадку, а не избавит от нее.

3.   Если вы восстанавливаете БД из копии (неважно, по какой причине), стоит подумать, заботится ли администратор о будущем и выполняет ли он проверку копии тестовым восстановлением? Есть ли возможность скопировать «хвост» журнала, чтобы избежать потери транзакций?

А как насчет вашей вины в том, что вы попали в затруднительное положение? Почему и как — решающие вопросы. Не следует также просто верить администратору на слово. Если что­то не ладится, по­старайтесь вникнуть в детали. Узнайте у администратора, что явилось изначальной причиной проблемы, как ее можно избежать. Заставьте его все подробно объяснить, спрашивайте, пока не разберетесь окончательно. Я всегда провожу «посмертный анализ» после каждого сбоя и даже завел специальную форму, в которой указываются участники процесса, когда администраторы получили уведомление, когда проблема была решена, что послужило причиной, как можно избежать повторения и т. д. Очень важно понимать ваше окружение, найти недостатки вашего плана.

Необходимо практиковаться в отработке подобных сценариев. Заставляйте администраторов восстанавливать систему с нуля, проверять и тестировать на практике скрипты резервного копирования и восстановления из копии. Таким образом, вы сможете убедиться в их профессионализме.

Я обнаружил, что большинство администраторов баз данных не слишком напрягает силы, чтобы встретить катастрофический сбой в полной готовности. Вы должны понимать, как происходит процесс восстановления системы; если не знаете, спросите совета — есть множество специализированных печатных изданий и Web­форумов.

Один из моих любимых способов научиться новому — чтение групп новостей. Сейчас существуют подборки по всем возможным СУБД. Потратьте полчаса в день пару раз в неделю, и вы удивитесь, как много интересного можно там найти — например, вопросы, касающиеся сложных случаев. Вы можете посмотреть, что предлагают участники дискуссии, или подобрать решение самостоятельно. Вы никогда не сможете предусмотреть все варианты появления проблем, а группы новостей дадут вам пищу для размышлений. Представьте, что эта ситуация действительно возникла и попытайтесь найти ответ. Вы будете удивлены, насколько это продуктивно.

Надеюсь, что мне удалось объяснить вам, где кроется риск и как понять, насколько хороши ваши администраторы. Заставляйте их обосновывать свои действия. Я обнаружил, что часто администратор делает что­то, не имея четкой цели. А как можно достичь того, о чем не имеешь представления?

Взламываем SQL Server. Часть 1

Джоэль Скэмбрэй (Joel Scambray) и Стюарт Макклюр (Stuart McClure)

Взломы Web­серверов и замена домашних страниц изображениями полуобнаженных красоток и полными самолюбования колкостями — с этим приходится сталкиваться довольно часто, но что нам делать с хакерами, чьи намерения простираются дальше, чем несколько страниц? Рано или поздно вы столкнетесь с противником, желающим завладеть вашим самым ценным имуществом ради материальной выгоды или просто назло. Что может быть важнее информации, запертой глубоко в недрах вашей базы данных? Записи о служащих, счета покупателей, информация о кредитных картах — все это может быть похищено.

У компаний, применяющих технологии Microsoft, в качестве системы хранения данных пользуется популярностью реляционная СУБД Microsoft SQL Server, а также различные варианты MSDE (Microsoft Data Engine), которые поставляются с более чем 220 известными пакетами программного обеспечения. MSDE получила повсеместное распространение — она мощная и при этом бесплатная. Тем не менее, поскольку пользователи обычно не осведомлены об установленной MSDE, трудно найти хорошо защищенный экземпляр. К несчастью, несмотря на все заботы о масштабируемости и надежности, которыми руководствуется большинство организаций при планировании и внедрении SQL Server, часто пренебрегают ключевой составляющей любого стабильного развертывания SQL Server — безопасностью. Много времени и усилий тратится на защиту ворот за€мка, а двери королевского погреба при этом остаются широко распахнутыми.

Кроме того, как научил нас SQL­червь Slammer (www.cert.org/advisories/CA­2003­04.html), возможны другие потенциальные последствия, если безопасности SQL Server не уделяется должное внимание. Когда уязвимость шестимесячной давности ставит Интернет на колени, становится очевидным, что существует большое число установленных экземпляров SQL Server и, кажется, никто не обеспечивает правильную настройку защиты.

В этой статье мы обсудим, как злоумышленники собирают информацию, атакуют и компрометируют SQL Server, а затем приведем решения для минимизации этих угроз. Начнем с учебного сценария, очерчивающего общепринятую методологию атак, а потом подробнее рассмотрим безопасность SQL Server, инструменты и методы взлома SQL, а также меры противодействия.

XML в SQL Server 2000 и SQLXML. Часть 3

Даршан Сингх (Darshan Singh)

Как упоминалось в предыдущих частях статьи, чтобы идти в ногу с эволюцией стандартов XML и Web­сервисов, Microsoft решила создать Web­выпуски SQLXML на сайте http://msdn.microsoft.com/sqlxml. За последние три года были выпущены три основные версии SQLXML (а также различные бета­версии и сервисные пакеты). Текущую версию SQLXML 3.0 SP2 вы можете загрузить с сайта
http://msdn.microsoft.com/sqlxml.

В табл. 1 представлено обобщение основных функ­ций в каждом Web­выпуске. Подробный рассказ о каждой из них выходит за рамки данной статьи. Я приведу один простой пример и дам пояснения по нескольким основным функциям. Начнем с краткого обзора пакетов обновлений.

Ссылки в MSDN

•     Домашняя страница MSDN SQLXML (http://msdn.microsoft.com/sqlxml).

•     «SQL Server 2000: New XML Features Streamline Web­centric App Development» («SQL Server 2000: новые функции по работе с XML ускоряют разработку приложений для Web») — http://msdn.microsoft.com/msdnmag/issues/0300/sql/.

•     Статья в MSDN Magazine «Build Data­Driven Web Services with Updated XML Support for SQL Server 2000» («Построение Web­сервисов для работы с данными с помощью расширенной поддержки XML в SQL Server 2000») — http://msdn.microsoft.com/msdnmag/issues/02/05/sqlxml3/de­
fault.aspx.

•     «Приложение для SQL Server с поддержкой XML в среде ASP.NET» (http://msdn.microsoft.com/library/de­fault.asp?url=/library/en­us/Dndotnet/html/csharp­­
sqlxml­http.asp).

•     «Распределение данных предприятия через XML с помощью SQL Server 2000 и Excel 2002» (http://msdn.microsoft.com/library/default.asp?url=/library/en­us/dnexcl2k2/html/odc_excelsqlxml.asp).

•     Статьи Базы знаний (KB) о поддержке XML в SQL Server.

Следующие шаги

•     Подробную информация о встроенной поддер­жке XML и HTTP в SQL Server 2000 вы можете найти в SQL Server 2000 Books Online.

•     Если вы установили SQLXML 3.0, обратитесь к документации SQLXML 3.0 SP2 (доступна по ссылке http://msdn.microsoft.com/library/default.asp?url=/library/en­us/sqlxml3/htm/intro_5l0l.asp в режиме онлайн), где содержатся исчерпывающие сведения о функциях SQLXML 3.0.

•     Загрузите SQL Server 2000 Web Services Toolkit и изучите код и документы, входящие в его состав.

•     Почитайте мою статью «XML and HTTP Feature Changes in Yukon» («Изменения в функциональности XML и HTTP в версии Yukon»).

Табл. 1. Функциональность различных версий SQLXML

SQLXML 1.0

Февраль 2001

Пакеты обновлений (Updategrams): возможность модифицировать (insert, update, delete) реляционные данные с помощью XML через HTTP.

XML Bulk Load: компонент COM для быстрого и эффективного импорта данных в формате XML в базу данных

SQLXML 2.0

Октябрь 2001

Управляемые классы SQLXML: пространство имен Microsoft.Data.SqlXml (в Microsoft.Data.SqlXml.dll) включает классы для выполнения запросов FOR XML, запросов XPath, файлов шаблонов и поддержки пакетов обновлений.

Аннотированные XSD­схемы: XML­схема (XSD) получила статус рекомендации W3C в мае 2001 г. К октябрю 2001 г. Microsoft предоставила поддержку XSD­схемы в SQL Server 2000 с помощью SQLXML 2.0. Аннотированные XSD­схемы могут использоваться для создания XML­представления поверх реляционных данных и дальнейшего выполнения запросов XPath.

SQLXMLOLEDB для XML­форматирования на стороне клиента: как вы знаете, запрос SELECT...FOR XML преобразует реляционный набор строк в XML. Эта операция выполняется на компьютере, на котором находится сервер баз данных. Если вы хотите переложить эту задачу на клиентский компьютер (компьютер, на котором выполняется ваш код — COM­объект внутри страницы ASP, или ваш код в приложении на Visual Basic 6.0, или ISAPI DLL, как в SQL Server), SQLXML 2.0 предоставляет новый провайдер OLE DB под названием SQLXMLOLEDB, который облегчает преобразование реляционных данных в XML на стороне клиента. Вдобавок провайдер SQLXMLOLEDB позволяет выполнять запросы XPath, применяя преобразования XSLT к результирующему XML, и т. д.

SQLXML 3.0

Февраль 2002

SOAP/Web­сервисы: эта функциональность дает возможность преобразовать хранимую процедуру, или пользовательскую функцию, или запрос XML на основе шаблона в Web­метод. Было представлено новое виртуальное имя (типа soap), а для определения Web­методов может применяться IIS Virtual Directory Management for SQLXML 3.0 (Управление виртуальными каталогами IIS для SQLXML 3.0)

 

Протокол Analysis Services 2005 — XMLA через TCP/IP

Моша Пасумански (Mosha Pasumansky)

XML for Analysis 1.1 (XMLA) был провозглашен единственным сетевым протоколом для коммуникации между клиентом и сервером, используемым Analysis Services 2005. XMLA — стандартный открытый протокол, определенный советом XMLA, и его полное описание можно найти на сайте www.xmla.org. Однако очевидно, что он определяет коммуникацию между клиентом и сервером только по HTTP.

Вот маленькая выдержка из стандарта: «Спецификация построена по открытых стандартах Интернет HTTP, XML и SOAP». XMLA использует SOAP, и SOAP стандартно привязывается к HTTP с помощью заголовков HTTP. Однако, в то время как AS2005 может быть сконфигурирован для работы по HTTP, типичный способ соединения с AS2005 — непосредственно через TCP/IP. Нет никакой стандартной привязки SOAP к TCP/IP вообще, и в спецификации стандарта XMLA ничто не свидетельствует об этом. Мы собираемся показать часть за частью, уровень за уровнем, что происходит в канале, когда клиент Analysis Services (OLEDB, ADOMD.NET или AMO) работает с сервером Analysis Services через TCP/IP. Мы обнаружим и обсудим несколько важных для быстродей­ствия и безопасности обменов, которые полезны для настройки производительности и безопасности сервера, а также для поиска неисправностей. Необходимо отметить, что протокол TCP/IP в AS — патентованная технология. Это не секрет, так как патент — открытая информация, но она не может свободно скопироваться или повторно применяться третьими фирмами.

С помощью сетевого монитора мы вклинимся в канал связи и проанализируем его. Ради эксперимента мы будем изучать ответ на запрос MDX, посланный кубу Sales базы данных Foodmart 2000, мигрированной в Analysis Services 2005. Я использую приложение MDX Sample, которое поставлялось с AS2000 вместо SQL Management Studio, которая сопутствует AS2005. MDX Sample применяет ADOMD, использующий OLEDB, в отличие от SQL Management Studio, которая задействует ADOMD.NET. Я предпочитаю MDX Sample из­за того, что, выполняя некоторые действия, мы должны будем изменить некоторые свойства строки подключения. К сожалению, в SQL Management Studio сделать это невозможно.

Как настроить Virtual Server 2005 для создания тестового кластера SQL Server. Часть 1

Брэд Макгихи (Brad M. McGehee)

Многие администраторы баз данных хотели бы научиться создавать кластеры на базе SQL Server. Существует также множество компаний, у которых есть рабочий кластер SQL Server, но нет тестового. В  обоих случаях причиной является дороговизна аппаратного обеспечения для кластеризации.

К счастью, создание кластера SQL Server больше не является финансовой проблемой. С тех пор как появился Microsoft Virtual Server 2005, кто угодно может сделать это вне производственной среды на одном­единственном сравнительно недорогом компьютере. Microsoft Virtual Server 2005 позволяет вам создать виртуальный кластер, который ведет себя, в точности как настоящий, без применения дорогого аппаратного обеспечения. Теперь администраторы баз данных могут построить собственный кластер на базе SQL Server для обучения и практики, а компании — для тестирования и разработки. Это великое благо для администраторов баз данных и область, на овладение которой им, однако, потребуется потратить некоторое время1.

Цель этой статьи не в том, чтобы научить вас всему, что необходимо знать о кластеризации SQL Server. Для этого понадобится целая книга. Мы сосредоточимся на том, как использовать Virtual Server 2005 для построения виртуального кластера на базе SQL Server.

Эта статья носит технический характер и предполагает, что вы знаете, как установить и администрировать Windows Server 2003, Windows Server 2003 Clustering, Virtual Server 2005 и службу кластеризации SQL Server 2000/2005. Если вы недостаточно уверенно владеете этим, обратитесь к документации.

Картина в целом

Если вы хотите создать кластер на базе SQL Server под Virtual Server 2005, необходимо выполнить следующие шаги:

•     выбрать аппаратное обеспечение для компьютера, где будет работать Virtual Server 2005 (и кластер SQL Server);

•     выбрать ОС, под которой будет выполняться Virtual Server 2005;

•     установить и сконфигурировать эту ОС;

•     установить Virtual Server 2005;

•     сконфигурировать Virtual Server 2005 для под­держки кластеризации;

•     создать node1 (первый узел);

•     сконфигурировать node1;

•     создать node2 (второй узел);

•     сконфигурировать node2;

•     сконфигурировать кластер с двумя узлами;

•     установить SQL Server 2000/2005 как кластер.

В статье мы не будем подробно демонстрировать все шаги, а лишь рассмотрим процесс последовательного сконфигурирования Virtual Server 2005 как кластера, чтобы установить на него кластер на базе SQL Server.

Выбор аппаратного обеспечения

Вам понадобится единственный компьютер, на котором будет выполняться все это программное обеспечение:

•     операционная система (хост­ОС);

•     два экземпляра Windows 2003 (гостевые ОС);

•     Windows 2003 Clustering на каждом экземпляре Windows 2003;

•     экземпляр SQL Server, выполняющийся в режиме активного/пассивного кластера.

Даже при использовании минимальной кон­фи­гурации, рекомендованной Microsoft, для всего вышеперечисленного потребуется мощное аппаратное обеспечение. Его точные параметры зависят от того, что вы собираетесь делать с вашим кластером. Если вы создаете его для обучения, то можете обойтись гораздо более скромной конфигурацией, чем в случае, если вы намереваетесь использовать кластер в целях тестирования и разработки. Ниже приведены мои (не Microsoft) минимальные рекомендации.

Рекомендации для учебной конфигурации:

•     портативный настольный компьютер или компьютер класса сервера;

•     один процессор с частотой не менее 2 ГГц с поддержкой технологии Hyperthreading;

•     1 Гб RAM;

•     20 Гб свободного места на жестком диске2.

Рекомендации для конфигурации для тестирования/разработки:

•     компьютер класса сервера;

•     два процессора с частотой не менее 2 ГГц;

•     2 Гб RAM;

•     50 Гб свободного места на жестком диске, дисковый массив на базе RAID 1, RAID 5 или RAID 103.

Повторюсь, эти рекомендации минимальны, и более мощная аппаратная конфигурация, особенно увеличение количества RAM, может существенно повысить производительность вашего виртуального кластера. Вы можете запустить виртуальный кластер и на более скромной конфигурации, но вряд ли будете довольны его производительностью. Чтобы по­смотреть, какое аппаратное обеспечение рекомендует Microsoft, ознакомьтесь с Virtual Server Getting Started Manual.

Выбор операционной системы

Virtual Server 2005 может работать под любой из этих ОС:

•     Windows XP Professional;

•     Windows Server 2003 Standard;

•     Windows Server 2003 Enterprise;

•     Windows Server 2003 Datacenter Edition.

Если вы строите учебный кластер, Windows XP прекрасно подойдет. Но если вы создаете его для тестирования или разработки, лучше использовать Windows Server 2003 Standard или Windows Server 2003 Enterprise, которые предоставляют больше возможностей по масштабированию и производительности.

Установка и конфигурация хост­ОС

Установите хост­ОС и соответствующий набор обновлений на ваш компьютер, как вы обычно это делаете. Загрузите также все обновленные драйверы, если потребуется. После установки основной ОС убедитесь, что все аппаратное обеспечение работает правильно и, если нужно, введите вашу систему в домен и проверьте, что она может взаимодействовать с другими компьютерами через локальную сеть.

Virtual Server 2005 требует, чтобы в системе был установлен и правильно функционировал IIS. Убедитесь, что он может правильно обрабатывать Web­страницы.

Зайдите в Control Panel (Панель управления) | Sys­tem (Система), на вкладке Advanced (Дополнительно) щелкните Options (Параметры) в разделе Per­formance (Быстродействие) и в открывшемся окне на вкладке Ad­vanced (Дополнительно) выберите Back­ground ser­vices (служб, работающих в фоновом режиме) в разделе Processor scheduling (Распределение времени процессора) и Programs (Программы) в разделе Me­mo­ry usage (Использование памяти).

Если аппаратное обеспечение недостаточно мощное для вашего виртуального сервера, стоит отключить все ненужные службы ОС, чтобы освободить больше ресурсов.

Установка Virtual Server 2005

Установите Virtual Server 2005, следуя указаниям в Vir­tu­al Server Getting Started Manual. Если вы не знакомы с Virtual Server 2005, изучите Virtual Server 2005 Ad­mi­nis­tra­tion Guide перед тем, как предпринимать следующие шаги по конфигурированию Virtual Server 2005 для поддержки кластера на базе SQL Server.

Конфигурация Virtual Server 2005 для поддержки кластеризации

Теперь, когда Virtual Server 2005 установлен, можно приступить к его конфигурированию, чтобы иметь возможность построить на нем свой кластер на базе SQL Server. Нам предстоит:

•     создать виртуальную «частную» (Private) сеть для взаимодействия виртуальных узлов;

•     создать виртуальную «публичную» (Public) сеть для взаимодействия клиентов с виртуальным кластером;

•     создать виртуальный разделяемый диск для виртуального кластера;

•     создать виртуальный кворум­диск;

•     создать два виртуальных диска C для использования виртуальными узлами в виртуальном кластере.

Как только все вышеперечисленные требования будут выполнены, вы будете готовы к установке гостевых ОС и виртуального кластера.

Создание виртуальной частной сети

На этом шаге мы создадим виртуальную сеть Private, которую будут использовать два узла в нашем кластере для взаимодействия между собой.

1.   Запустите на хост­машине Virtual Server Ad­mi­nis­tra­tion Website (Web­сайт для администрирования Virtual Server). Мы будем пользоваться этим ин­струментом для конфигурирования Virtual Server 2005 для работы в качестве виртуального кластера на базе SQL Server.

2.   На экране Master Status (Основной экран статуса — экран, который отображается по умолчанию при старте Virtual Server Administration Website) в разделе Virtual Networks (Виртуальные сети) выберите Create (Создать). Это приведет к появлению Network Properties Screen (Экрана свойств сети) «New Virtual Network» («Новая виртуальная сеть»), как показано на рис. 1. В вашем случае экран может несколько отличаться. Этого следует ожидать, поскольку мой компьютер сконфигурирован иначе. Это не повлияет на наши действия.

3.   На этом экране вам нужно заменить New Virtual Network в строке Virtual network name (Имя виртуальной сети) на подходящее имя, как показано ниже. В нашем случае мы назовем ее Private. Теперь мы всегда будем помнить, что это частная виртуальная сеть, а не публичная. Помимо этого, оставьте настройку Network adapter on physical computer (Сетевой адаптер на реальном компьютере) установленной по умолчанию в None (Guests Only) [Отсутствует (Только гостевые)]. Если хотите, введите описание этой виртуальной сети в графе Virtual network notes (Описание виртуальной сети). Закончив с этим экраном, как показано на рис. 2, щелкните OK, чтобы создать эту виртуальную сеть.

1 Учитывая, что с недавних пор Virtual Server 2005 R2 можно бесплатно скачать с сайта Microsoft, это вообще манна небесная. — Прим.  ред.

2 Наш опыт показывает, что первые три параметра верны, а вот с объемом жесткого диска автор поскромничал — понадобится не менее 40 Гб. Это позволит устанавливать режим отката виртуальных дисков, сохранять состояния и пр. — Прим. ред.

3 Учитывая, что виртуальная машина — это просто файл операционной системы, желательно помещать ее на самостоятельный диск. Поэтому для отказоустойчивости лучше всего сделать несколько зеркал, а если это невозможно или не нужно — просто несколько физических дисков для каждой виртуальной машины. — Прим. ред.

(Возврат на основную страницу)

Hosted by uCoz