Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Вопросы и ответы по MS SQL Server" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
MS SQL Server - дело тонкое...
Информационный Канал Subscribe.Ru |
#213<< #214 |
СОДЕРЖАНИЕ
Обеспечение безопасности репликации SQL Server 2000
По материалам статьи Marcin Policht:
SQL Server 2000 Security - Part 9 - Replication Security Безопасность репликации - очень важная задача, которую нужно очень тщательно планировать. Давайте начнём с замечания о том, что процедуры создания/администрирование издателей, дистрибуторов и подписчиков (включая публикацию базы данных для репликации) доступны только для серверной роли sysadmin. После определения участников репликации, только члены роли sysadmin и члены роли db_owner публикуемой базы данных могут создавать и настраивать публикации. Мониторинг репликации доступен для членов серверной роли sysadmin и роли replmonitor базы данных distributor, которая создаётся автоматически, вместе с дистрибутором. Дистрибутор создаётся в SQL Server Enterprise Manager с помощью опции "Configure Publishing, Subscribers and Distribution...", в пункте меню Tools -> Replication. Вы можете разместить издателя и дистрибутора на одном и том же компьютере, или использовать для дистрибутора отдаленный сервер. В последнем случае, издателя нужно сначала создать на сервере размещения дистрибутора. Сделать это можно на закладке Publishers диалогового окна Publisher and Distributor Properties, которое можно вызвать, выбрав опцию "Configure Publishing, Subscribers and Distribution...". Там Вы можете назначить издателей (из списка серверов, зарегистрированных в SQL Server Enterprise Manager), которых будет обслуживать дистрибутор. На закладке Distributor того же диалогового окна, Вы можете задать пароль подключения администратора, который будет использоваться издателями при подключении к дистрибутору, для его администрирования. На этих же закладках Вы можете увидеть опцию для создания нескольких базы данных distribution, выделенных для разных групп издателей (что повышает безопасность работы нескольких издателей с одним дистрибутором). При создании издателя, требуется определить логины пользователей, которые будут использовать агенты репликации для подключения к издателю. Аналогично, при создании подписчика, на закладке Subscribers диалогового окна Publisher and Distributor Properties, Вы должны установить контекст безопасности подключений агента к издателю/дистрибутору. Так как агенты репликации управляются заданиями SQL Server Agent, по умолчанию они работают в контексте безопасности учетной записи SQL Server Agent. Вы можете принять значение по умолчанию или изменить контекст подключения к SQL Server на другой, обладающий необходимым для этого набором разрешений. При создании публикаций можно разрешить существование анонимных подписчиков. Несмотря на то, что это упрощает управление публикацией, особенно когда подписчиков очень много, это негативно влияет на безопасность тиражируемых данных, и допустимо только после очень тщательного рассмотрения возможных последствий утечки информации. Теперь давайте сделаем обзор требований безопасности для разных типов репликации. Начнём мы с общих для всех типов механизмов. Одним из таких механизмов является моментальный снимок, который используется в каждом типе репликации хотя бы один раз. Снимки обслуживаются программой Snapshot Agent, запускающейся на дистрибуторе, и имеют следующие требования безопасности:
Требования для работы Snapshot Agent одинаковы для всех типов репликации. Однако, при использовании репликации транзакций или репликации слиянием, Вы должны учитывать дополнительные аспекты, которые касаются работы дистрибутора и Log Reader агента для репликации транзакций или Merge - агента в случае репликации слиянием. Log Reader Agent работает с дистрибутором. Его задача читать отмеченные для репликации транзакции в журнале издаваемой базы данных и копировать их в виде команд в базу данных distribution. Всё это происходит в контексте безопасности SQL Server Agent дистрибутора. Тиражированием изменений подписчикам занимается Distribution Agent, который, кроме необходимых ему для этого прав в базе distribution, также нуждается в правах на INSERT, UPDATE и DELETE в базах данных подписчиков, и должен иметь разрешение на чтение в папке моментальных снимков на дистрибуторе. Merge Agent в репликации слиянием занимается синхронизацией данных между издателем и подписчиками. Он контролирует изменения с обеих сторон, разрешая возможные конфликты и отмечая все изменения данных в таблицах метаданных издателя. Для этого ему требуются прав на SELECT, DELETE, INSERT и UPDATE в базе данных издателя. Изменения, переданные агентом издателю, впоследствии будут применены другими подписчиками. Механизм изменений данных на подписчиках зависит от того, какой используется тип подписки, push или pull. В первом случае, Merge Agent запускается на дистрибуторе, подключается к подписчику и тиражирует изменения, для чего ему нужны права на INSERT, DELETE и UPDATE. Во втором случае, Merge Agent запускается на подписчиках, подключается к издателю, получает метаданные об изменениях и выполняет их на подписчике. Обратите внимание, что для pull - подписки существуют отдельные экземпляры Merge Agents на дистрибуторе и на подписчике. Вы можете использовать этот факт в своих интересах и запускать их под различными учетными записями, фактически регулируя уровень доступа, который подписчик имеет в базе данных distribution (и на сервере). Независимо от места запуска, Merge Agent нуждается в праве на чтение в папке снимков (по умолчанию это: "Program Files\Microsoft SQL Server\MSSQL\Repldata") на дистрибуторе. При работе в составе Active Directory, Вы можете публиковать там экземпляры SQL Server, их базы данных и статьи для репликации как объекты домена. С одной стороны, это упрощает к ним доступ и облегчает их поиск для легитимных подписчиков; но с другой стороны, это потенциально выставляет их напоказ тем, кому об этих публикациях знать не положено. Как Вы можете видеть, аспекты безопасности репликации баз данных SQL Server 2000 довольно сложны. К счастью, работа с ними значительно упрощена при использование мастеров, и предупреждений, которые выдаются ими в процессе конфигурирования, а также параметров по умолчанию, которые учитывают типовые требования безопасности. SQL Server 2000: основы работы с представлениями
По материалам статьи Navneeth Diwaker Naik
SQL Server 2000: View Basics Представления - это не что иное, как сохраненные команды SQL, которые иногда называют "виртуальными таблицами". Учтите, что представления не могут хранить данные (кроме индексированных представлений); они только ссылаются данные, присутствующие в таблицах. Давайте рассмотрим базовый синтаксис создания представления: CREATE VIEW View_Name AS SELECT Statement GO Есть две важные опции, которые могут быть использованы при создании представления. Это SCHEMABINDING и ENCRYPTION. Мы рассмотрим каждую из них подробно, но сначала разберем пример создания обычного представления без опций. USE Northwind GO CREATE VIEW vwSample As SELECT CustomerID, CompanyName, ContactName FROM CUSTOMERS GO Этот скрипт создает представление vwSample. Теперь вместо использования полной команды SELECT можно воспользоваться следующей командой: SELECT * from vwSample Пожалуйста, удалите это представление, если вы выполняете мои примеры на своем компьютере, потому что я буду использовать одно и то же имя во всей главе. DROP VIEW vwSample Создание представлений с опцией SCHEMABINDING Создание представления с опцией SCHEMABINDING блокирует таблицы, на которые ссылается представление и запрещает любые изменения схемы этих таблиц. Обратите внимание на два важных условия при создании представления с опцией SCHEMABINDING: - объекты должны указываться вместе с именами их владельцев (имя из двух частей); - использование SELECT * не допускается. Ниже приведен пример представления с опцией SCHEMABINDING: CREATE VIEW vwSample With SCHEMABINDING As SELECT CustomerID, CompanyName, ContactName FROM DBO.CUSTOMERS -- Имя из двух частей (владелец.объект) GO Эта команда создает представление vwSample. После создания представления попробуйте изменить таблицу CUSTOMERS, это не удастся. Это результат опции SCHEMABINDING. Т.к. vwSample ссылается на таблицу CUSTOMERS, то вы не можете выполнять команду ALTER на таблице CUSTOMERS. Не забудьте удалить представление. DROP VIEW vwSample Создание представлений с опцией ENCRYPTION Эта опция зашифровывает определение представления. Пользователи не смогут просмотреть определение представления после его создания. USE NORTHWIND GO CREATE VIEW vwSample With ENCRYPTION As SELECT CustomerID, CompanyName, ContactName FROM DBO.CUSTOMERS GO SELECT * FROM SYSCOMMENTS WHERE ID = (SELECT ID FROM SYSOBJECTS WHERE XTYPE = 'V' AND NAME = 'vwSample') Определение представления будет сохранено в зашифрованном формате в системной таблице syscomments. Внимание: после шифрования определения расшифровать его уже нельзя. Поэтому будьте очень осторожны при использовании опции ENCRYPTION. Не забудьте удалить представление. DROP VIEW vwSample Индексированные представления SQL SERVER 2000 позволяет создавать индексы для представлений. Предыдущие версии SQL SERVER не позволят делать это. Но нужно отметить одну важную особенность - первый индекс представления должен обязательно быть уникальным и кластерным. SQL SERVER 2000 не позволит вам создать любой другой индекс, пока представление не будет иметь уникальный кластерный индекс. Давайте рассмотрим пример индексированного представления: CREATE VIEW vwSample As SELECT CustomerID, CompanyName, ContactName FROM DBO.CUSTOMERS GO CREATE UNIQUE CLUSTERED INDEX indClustered ON NORTHWIND.DBO.VWSAMPLE (CUSTOMERID) GO Эта команда создает уникальный кластерный индекс для представления. Не забудьте удалить представление. DROP VIEW vwSample Варианты использования представлений Представления могут быть использованы для вставки/обновления и удаления данных из таблицы. Давайте подробно разберем, как это делать. Сначала рассмотрим, как вставить данные в таблицу, используя представление. Следующий скрипт создаст таблицу TEST и представление vwSample. USE NORTHWIND GO CREATE TABLE [Test] ( TestID INT, TestName VARCHAR (100) ) GO CREATE VIEW vwTest As SELECT TestID, TestName FROM Test GO Теперь вставим данные в таблицу Test, используя представление. Выполните следующую команду. Она вставит данные в таблицу Test. INSERT INTO vwTest VALUES (1, 'Test 1') SELECT * from Test TestID TestName ------------------------------- 1 Test 1 Теперь обновим данные, используя то же представление. UPDATE vwTest SET TestName = 'New Value' WHERE TestID = 1 SELECT * from Test TestID TestName -------------------------------- 1 New Value Таким же образом мы можем удалить данные из таблицы, используя то же самое представление. Не забудьте удалить представление. DROP VIEW vwTest Триггер INSTEAD OF на представлении SQL SERVER 2000 позволяет создавать триггеры на представлениях. Предыдущие версии SQL SERVER не позволяли делать это. Это является новой особенностью SQL SERVER 2000. Но помните, что вы можете создать только триггеры INSTEAD OF на представлениях. CREATE VIEW vwSample As SELECT CustomerID, CompanyName, ContactName FROM DBO.CUSTOMERS GO Ограничения представлений Существуют некоторые ограничения при использовании представлений. Вот они: - нельзя использовать SELECT INTO в представлении; - временные таблицы не могут использоваться в представлении; - параметризованные представления не существуют, т.е. вы не можете передавать параметры в представления; - выражения COMPUTE & COMPUTE BY не могут использоваться в представлении. Представления и пользовательские функции Представления и пользовательские функции используются почти для одной и той же цели. Главным отличием является то, что пользовательские функции могут получать параметры, а представления нет. Также результат пользовательской функции может быть напрямую использован в команде SELECT, что невозможно сделать с представлением. Заключение Представления - это не что иное, как сохраненные команды SQL. Пользователь может вставлять, удалять или обновлять данные, используя представления в SQL SERVER 2000. Индексы и триггеры также могут быть созданы для представлений, но с ограничением - первый индекс должен быть UNIQUE CLUSTERED INDEX, а триггер должен быть типа INSTEAD OF. Представления и пользовательские функции предназначены практически для одной и той же цели с той лишь разницей, что пользовательские функции могут иметь параметры, а представления нет. Navneeth Diwaker Naik (navneeth_naik@satyam.com) является сотрудником Satyam Computers Services Limited, Hyderabad, Andhra Pradesh (Индия). Статьи на русском языке
Публикация SQL Server в Active Directory
SQL Server: Routine to push existing records up or down Самые популярные темы недели
Кто на чем пишет клиентов под SQL Server?
Функция, которая выбирает товары
|
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.soft.winsoft.sqlhelpyouself |
Отписаться |
В избранное | ||