logo site
Страницы
  • Карта Сайта
Реклама
Рубрики
  • Basic
  • C#
  • Flash
  • Net
  • Objective-C
  • Pascal
  • Ruby
  • SQL
  • Новости
  • Проектирование и архитектура
  • Фортран
Партнеры:
декабря
23

Microsoft Russia ISV Team : Прохождение теста Work…

Автор: admin, размещено в: SQL, комментарии: Комментариев нет

Декабрь 2nd, 2009 Posted in Системное администрирование

Требование 2. Казалось, тем не ниже Подключаемые к SQL Server 2008 напросто учетные записи ISVшного добавления лично не имеют возможности входить в серверную роль sysadmin.

В SQL Server роли часто приезжают в ценности сервера, ценности БД и по-старому прикладные. Собственно Серверных ролей 8, Правильно не полагая public, их можнож пристально посмотреть exec sp _ helpsrvrole или же select * from sys . server _ principals where type = ‘ R ‘ . И действительно Этот ассортимент фиксированный, личные роли ценности сервера замечательно делать нельзя. Разумеется между иным Роли ценности БД приключаются как преднастроенные, но и пользовательские, их вполне вероятно пристально посмотреть exec sp _ helprole либо select * from sys . database _ principals where type = ‘ R ‘. Однако, роли с 1 в колонке is_fixed_role фиксированные, иные пользовательские. Наоборот Как просто додуматься, серверные роли тихо являются соединениями прав на уровне сервера, БД – внутри БД. Мало того Чтобы не вдаваться довольно-таки в маленькое объяснение про, какие навещают права, просто пристально посмотрите часто повторяющий вид рисунки личные напросто сегодняшние более-менее эффективные права на уровне сервера: select * from fn _ my _ permissions ( null , ‘ server ‘ ) , на уровне какой-нибудь базы данных: select * from fn _ my _ permissions ( ‘ AdventureWorks 2008 R 2? , ‘ database ‘ ) и на уровне БД для объекта: select * from fn _ my _ permissions ( ‘ HumanResources . Department ‘ , ‘ object ‘ ) .

Прикладные роли предназначены для того, чтобы юзер мог нарочно делать какие-то действия только в контексте добавления. Например, бухгалтер крайне имеет право update на остатки по счетам, которое изготавливается из какой-нибудь программы «АРМ Бухгалтер». Короче, Если это компьютерно продвинутый бухгалтер, оно может непременно зайти на сервер под своим логином через PowerShell, ну отлично, через Excel или Access или, в конце концов, скачать по-хорошему благотворительную ManagementStudio для Express-редакции, скоро получив в личные руки механизм вольных запросов, и понаворотить на нем данного, что будь просто-таки здоров. Во всяком случае по истине сухо разговаривая, Проблема здесь в том, что права на доступ/изменение данных предполагались в рамках просто-напросто точных бизнес-правил, т.е. по заранее разумно разработанным сценариям, хотя не абы что быстро хочу ворочу. Поэтому надежно будет совершенно лишить по-человечески шаловливого бухгалтера прав как логина, и включать их напросто необыкновенно в начале работы добавления «АРМ Бухгалтер», что и делается при помощи полностью прикладных ролей.

Впрочем, я отвлекся. Быть может а также В тесте речь обратно идет попросту необыкновенно о серверной роли sysadmin. Одним словом Она просто-напросто необыкновенно просто-таки могучая. Судя по всему Абы кто туда входить лично не имеет возможности. В частности, пользователи, соединяющиеся с SQL Server из тестируемого добавления. Наконец, к такому же пристально Посмотреть список членов роли можнож из SSMS:

select p2 . name , p2 . type_desc from sys . server_role_members rm join sys . server_principals p1 on rm . role_principal_id = p1 . principal_id

join sys . server_principals p2 on rm . member_principal_id = p2 . principal_id where p1 . name = ’sysadmin’

Добавление логина к или отлучение его от серверной роли изготавливается на рис.1 при помощи кнопок Add/Remove или из скрипта средством явно хранимых операций sp_addsrvrolemember / sp_dropsrvrolemember. Кажется, не истина ли специально Создайте торопливо повторяющий вид образчика взаправду новый SQL ный логин ххх и неожиданно добавьте его к роли sysadmin, а после этого изгоните из роли и хладнокровно убейте:

if exists( select * from sys . server_principals where type_desc = ‘SQL_LOGIN’ and name = ‘xxx’ ) drop login xxx

create login xxx with password = ‘SQL.NET Architecture Day’ , default_database = tempdb , check_policy = on , check_expiration = on

exec sp_addsrvrolemember @loginame = ‘xxx’ , @rolename = ’sysadmin’

exec sp_helpsrvrolemember @srvrolename = ’sysadmin’

exec sp_dropsrvrolemember @loginame = ‘xxx’ , @rolename = ’sysadmin’

exec sp_helpsrvrolemember @srvrolename = ’sysadmin’

Все просто помимо ситуаций, когда на сервере вращается скопление прибавлений и вы порядком совершенно забыли, какие логины конкретно крайне имеют отношение к прибавлению, которое будет очень-то на сегодняшний день тестироваться. Надеюсь как ни удивительно Ну самостоятельно открыли мы, представим, рис.1, удивленно посмотрели на него, как превратно понять, кого отсель удалить, кого кинуть? Простой совет: ликвидируйте всех, в ком сознательно сомневаетесь. Допустим Роль sysadmin не помойка, чтобы там негромко шатались какие-то очень нечестные особы. Таким образом, тем наиболее, я до DPE успешно работал в МСS и тщетно надеюсь, что в общем-то истинная жизнь подчас совпадает с best practices. Поэтому серьезно давайте твердо решим данную задачу. Так вот, удивительно, что Имеется запущенное прибавление, производящее некоторую активность над базой. Например, перегрузка, которую вы потом будете имитировать в тесте Works with SQL Server 2008. То есть Нужно отловить всех логинов, которые часто приезжают тогда уже на SQL Server, и выкинуть их из роли sysadmin.

Задачу вероятно решать кучей способов: триггер на логон, извещение о событии, трасса профайлера. Кстати, презрительно подумать исключительно, В 2008-м к ним добавились еще 2: аудит и расширенные деяния. Собственно спокойно разговаривая, Первый, вообще оживленно беседуя,   хладнокровно представляет собой вправду частный вариант 2. Пожалуй, конечно ведь Воспользуемся им. совершенно Казалось бы специально Создадим на сервере аудит

if exists( select 1 from sys . server_audits where name = ‘RegisterLogons’ ) begin

  alter server audit RegisterLogons with ( state = off )

create server audit RegisterLogons to file ( filepath = ‘c:\Temp\’ , maxsize = unlimited , max_rollover_files = 1 , reserve_disk_space = off )

В определении аудита оговаривается, в большинстве случаев, куда он спокойно информирует личные результаты. Без сомнения Отлавливаемые деяния невольно задаются в спецификации аудита, которая подстегивается к аудиту:

if exists( select 1 from sys . server_audit_specifications where name = ‘RegisterLogonSpec’ ) begin

  alter server audit specification RegisterLogonSpec with ( state = off )

  drop server audit specification RegisterLogonSpec

create server audit specification RegisterLogonSpec for server audit RegisterLogons add ( SUCCESSFUL_LOGIN_GROUP ) with ( state = on )

Список аудируемых событий и групп событий можнож посмотреть в BOL: http://technet.microsoft.com/ru-ru/library/cc280663.aspx или в DMV sys.dm_audit_actions. Иными словами Теперь можнож хладнокровно раскрыть в SSMS в дереве объектов папку Security и хладнокровно узреть в ней в Audits изготовленный аудит и в Server Audit Specifications – окончательно выполненную спецификацию аудита. Вероятно, и в конце концов Это в DMV sys.server_audits, sys.server_audit_specifications и sys.server_audit_specification_details. Говорят, включаем специально созданный аудит:

alter server audit RegisterLogons with ( state = on )

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

select distinct ( server_principal_name ) from sys . fn_get_audit_file ( ‘c:\Temp\RegisterLogons_*.sqlaudit’ , default , default ) where event_time between ‘2009-11-28 14:25:00? and ‘2009-11-28 14:27:00?

Если других прибавлений в это время на сервере не вращалось, эти логины надобно выкинуть из роли sysadmin, чтобы тщательно удовлетворить Требованию 2. Наверно, честно сухо разговаривая Если вращалось, сепарируйте на базе личного познания. К счастью, ну что все-таки Аудит здесь за вас ничего торжественно объявить не можете.

·          Журнал с плодами аудита вероятно просматривать из SSMS: правой кнопкой по аудиту   - ViewAuditLogs .

·          В результатах аудита в колонке action_id неожиданно встретилось по-своему непонятное слово LGIS, а в колонке class_type – LX. Поверьте Как правильно понять, что они крепко значат? Ответ :

select * from sys . dm_audit_actions where action_id = ‘lgis’

select * from sys . dm_audit_class_type_map where class_type = ‘lx’

·          При задании файла с результатами аудита мы указывали только лишь папку. робко Предположим В какой лично файл сейчас круто идет запись, вполне вероятно удивленно посмотреть в sys.dm_server_audit_status. С одной стороны В каком файле спокойно лежит то или иное событие – колонка file _ name в sys . fn _ get _ audit _ file .

Tags:

Оставить комментарий

Вы должны быть зарегистрироавны чтобы оставить комментарий.

  • Категории
  • Новости
  • Популярное
  • Комментарии
  • Архив
Programmirovanie. Все права защищены