birmaga.ru
добавить свой файл

  1 ... 15 16 17 18

Управление политиками PBM

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

Создание политики с помощью PowerShell


Отличный ресурс, где можно научиться создавать политики с помощью PowerShell (а не вручную в среде SQL Server Management Studio), — блог Sethu по ссылке ниже.

http://blogs.msdn.com/sethus/archive/2008/06/16/sql-2008-powershell-script-for-creating-a-policy-and-saving-to-file.aspx

Пространство имен Microsoft.SqlServer.Management.Dmf содержит классы, представляющие управляющие объекты на основе политик SQL Server.

Дополнительные сведения см. в разделе http://msdn.microsoft.com/ru-ru/library/microsoft.sqlserver.management.dmf.aspx.


Развертывание политик PBM с помощью PowerShell (DeployPBMPolicies.ps1)


Следующий сценарий PowerShell может быть использован для развертывания сценариев управления на основе политик на другом экземпляре базы данных.

# Экспорт политик с сервера

$policydir = "C:\Policies\"

del C:\Policies\*

$sourceserver = "<Компьютер>\<Экземпляр>"

$conn = new-object Microsoft.SQlServer.Management.Sdk.Sfc.SqlStoreConnection("server=$sourceserver;Trusted_Connection=true");

$polstore = new-object Microsoft.SqlServer.Management.DMF.PolicyStore($conn);

$fileprefix = "ExportedPolicy_"

$policycount = 0

#Временное решение, пока не будет исправлена ошибка.

#$sourcepolicycount = $polstore.Policies.Count;

foreach ($policy in $polstore.Policies)

{

$policycount++;


$StringWriter = New-Object System.IO.StringWriter;

$XmlWriter = New-Object System.XMl.XmlTextWriter $StringWriter;

#$polstore.ExportPolicy($polstore.Policies[$policy.Key], $XmlWriter);

$policy.serialize($XmlWriter);

$XmlWriter.Flush();

$StringWriter.Flush();

$outputfile = $policydir + ("{0}.xml" -f (Encode-SqlName $policy.Name));

$StringWriter.ToString() | out-file $outputfile;

}

if ($policycount -gt 0)


{

Write-Host $policycount " политик из "$sourcepolicycount " экспортировано в " $policydir -foregroundcolor "green"

}

else


{

write-host "Политики не экспортированы" -foregroundcolor "red"

}
# Импорт политик на несколько серверов

$policylocation = "C:\Policies"

$serversfile = "C:\Servers.txt"

$servercount = 0

$servers = Get-Content $serversfile

foreach ($server in $servers) {

$servercount++;

$conn = new-object Microsoft.SQlServer.Management.Sdk.Sfc.SqlStoreConnection("server='$server';Trusted_Connection=true");

$polstore = new-object Microsoft.SqlServer.Management.DMF.PolicyStore($conn);

foreach ($fileobject in get-childitem $policylocation){

$file = $fileobject.FullName

$reader = [System.Xml.XmlReader]::Create((convert-path $file));

$output = $polstore.ImportPolicy($reader, 0, $true, $true);

}

}



if ($servercount -gt 0)

{

Write-Host "Политики импортированы на" $servercount "серверов." -foregroundcolor "green"



}

else


{

write-host "Политики не импортированы" -foregroundcolor "red"

}

Перенос политик проверки работоспособности в таблицу базы данных


Ниже приведен набор сценариев PowerShell и SQL для извлечения и загрузки данных о политиках с нескольких серверов и помещения их в централизованное местоположение для просмотра.
Примечание. При переносе политик проверки работоспособности выполняется прямая передача таблицы базы данных с данными о политиках из базы данных msdb в центральную базу данных. Возможно, лучший способ сделать это — образец PBMTalk Дэна Джонса (Dan Jones), который также включен в этот пакет SDK. Дополнительные сведения см. в папке PMTalk, где содержится презентация PowerPoint, схема политик и код PBM для экспорта данных управления на основе политик.

Загрузите решение

Распакуйте файл Policy.zip в папку по своему выбору (например, D:\audit\code\Policy)

Обновите базу данных SQLAudit

Эта база данных будет использоваться в качестве центрального сервера. Чтобы добавить данные о политиках, установите PolicyLoad.sql на центральном сервере, где нужно просматривать все отчеты, например на том сервере, где находится база данных аудита SQLAudit. Таким образом, центральная база данных SQLAudit будет содержать данные всех политик и данные аудита.


В центральной базе данных SQLAudit заполните таблицу pol.ServerList данными со всех серверов, по которым нужно получать информацию. Пример приведен ниже.

insert into pol.ServerList values ('campschurmann', 1)

insert into pol.ServerList values ('emmonsroute', 1)

insert into pol.ServerList values ('emmonsglacier', 0)


где 1 — включено, а 0 — отключено.
Выполните сценарий PowerShell

Как отмечалось в разделе Использование управления на основе политик для определения, развертывания и проверки политик, этот сценарий считывает данные из таблицы pol.ServerList, проходит по всем серверам, перечисленным в ней, извлекает данные политик и загружает их на центральный сервер. Скопируйте сценарий PolicyExLoad.ps1 на центральный сервер, например в каталог D:\audit\code\Policy


Убедитесь, что эта папка также содержит архив (например, D:\audit\code\Policy\archive)
Этот сценарий PowerShell требует наличия оснасток SQL Server, чтобы иметь возможность запуска sqlps перед открытием обычного окна командной строки (а не окна командной строки PowerShell).
В командной строке можно выполнить следующую команду.

.\PolicyExLoad.ps1 "[SQLCentral]" "[Database]" ”[Date]” “[Folder]”


SQLCentral: экземпляр сервера, содержащий центральную базу данных (т. е. SQLAudit).
Database: в большинстве случаев это база данных SQLAudit.

Date: последняя дата (т. е. один день), в который была выполнена политика. Если необходимы все данные о политике, укажите пустые кавычки "", чтобы получить все данные.

Folder: центральный репозиторий файлов журналов политик. Не забывайте, что в этой папке также должна быть папка для архива.
Здесь сценарий подключается к каждому из серверов, извлекает данные политик и записывает в общую папку CSV-файл. Обратите внимание, что существует два типа данных о политиках.


  • Таблицы измерений политик: содержат основные конструкции политик (имя, условие, категория и т. д.). Если политика изменяется или удаляется, то эта информация обновится в соответствующих таблицах msdb на удаленных серверах. В случае приведенного ниже сценария будет получено имя, условие и категория политики в следующих таблицах.

    • syspolicy_policies

    • syspolicy_conditions

    • syspolicy_policy_categories




  • Таблицы фактов политик: поскольку эти таблицы содержат историю выполнения и подробные сведения о состоянии работоспособности, эти данные не обновляются (только вставляются новые события). Приведенный ниже сценарий получает историю выполнения, подробные сведения об истории выполнения и состояние работоспособности для следующих таблиц.

    • syspolicy_policy_execution_history

    • syspolicy_policy_execution_history_details

    • syspolicy_system_health_state

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

ИмяСервера_[таблицаПолитики]_ггггММдд_ччммсс.csv
Затем сценарий PowerShell вызывает хранимую процедуру [pol].[uspImportPolicyData], которая выполняет некоторую дополнительную бизнес-логику для импорта каждого из CSV-файлов в соответствующую таблицу.

  • Если это файл для таблицы измерения политик, то данные будут сначала помещены в промежуточную таблицу. Затем все данные, связанные с экземплярами серверов в этой промежуточной таблице, будут удалены из таблицы политик. Смысл этого заключается в том, что нам необходимы актуальные данные о политиках (кем созданы, какие аспекты и условия используют, обновленный текст и т. п.). Затем промежуточная таблица используется для заполнения таблицы политик.





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



  • После импорта этого файла он будет перемещен в каталог Folder\archive, чтобы исключить его повторную обработку.

Просмотр некоторых отчетов о политиках

Установите сценарий PolicyReports.sql на центральный сервер и базу данных (куда был установлен файл PolicyLoad.sql).

Как отмечалось в разделе Использование управления на основе политик для определения, развертывания и проверки политик, по журналам аудита можно сформировать несколько отчетов. Для просмотра этих отчетов необходимо выполнить развертывание решения [Policy Reports - PBM] служб Reporting Services.


  • Откройте решение [Policy Reports PBM] служб Reporting Services в среде Visual Studio.




  • Укажите в качестве TargetServerURL свой сервер, т. е. замените http://campschurmann/ на имя своего сервера.


Рис. . Страница свойств решения [Policy Reports — PBM] служб RS



  • Убедитесь в том, что общий источник данных SQLAudit.rds указывает на вашу базу данных SQLAudit (а не на версию базы данных SQLAudit на другом сервере).




  • Выполните развертывание отчетов (Построить > Развернуть). После этого можно просматривать отчеты по адресу: http://[имя сервера] /Reports/Pages/Folder.aspx?ItemPath=%2fSQL+Auditing+Reports&ViewMode=List


Заключение


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

В этом техническом документе содержатся только общие сведения о компонентах и функциях, связанных с обеспечением соответствия требованиям, реализованных в SQL Server 2008. В следующих версиях эти возможности планируется значительно расширить. Дополнительные сведения об обеспечении соответствия требованиям см. по адресу http://www.microsoft.com/sql.



Дополнительные сведения см. в разделах:

http://www.microsoft.com/sqlserver/: веб-узел SQL Server

http://technet.microsoft.com/ru-ru/sqlserver/: технический центр SQL Server

http://msdn.microsoft.com/ru-ru/sqlserver/: центр разработки SQL Server

http://www.microsoft.com/sqlserver/2008/ru/ru/wp-sql-2008-security.aspx: технический документ по безопасности SQL Server

http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1626&SiteID=1: форум по безопасности SQL Server

http://blogs.msdn.com/sqlsecurity/: блог по безопасности SQL Server

http://blogs.msdn.com/sqlpbm/: блог по управлению на основе политик SQL Server


Помог ли вам этот документ? Оставьте свой отзыв. Оцените этот документ по шкале от 1 (плохо) до 5 (отлично). Почему он заслужил такую оценку? Пример.

  • Относить ли хорошую оценку на счет удачных примеров, информативных снимков экрана, ясного изложения, чего-либо еще?
  • Относить ли плохую оценку на счет неудачных примеров, неразборчивых снимков экрана, невнятного изложения?

Ваш отзыв поможет нам повысить качество нашей документации.

Отправить отзыв.






<< предыдущая страница