Логирование использования внешних адресов пользователями в Windows Azure Pack
В одном из проектов облака на базе Windows Azure Pack для государственной организации, в техническом задании было требование - логирование активации внешних IP адресов для клиентов. Изначально данная задача выполнялась с помощью скрипта PowerShell, который запускался один раз в час и отлавливал события в SCVMM. Но, к сожалению, этот вариант имеет много недостатков. Поэтому было принято решение использовать функционал Windows Azure Pack и SMA (Runbook).Так как решение независимо от других (например, от биллинга), мы создадим новую таблицу в предварительно приготовленной базе данных Microsoft SQL:
USE MyDB
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.iplogDB
(ID int not null identity(1,1) PRIMARY KEY,
Owner varchar(50) NULL,
Operation varchar(10) NULL,
IP varchar(20) NULL,
Date varchar(20) NULL,
Name varchar(20) NULL,
Custom varchar(50) NULL
) GO
ALTER TABLE dbo.iplogDB SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
select Has_Perms_By_Name(N'dbo.iplogDB', 'Object', 'ALTER') as ALT_Per, Has_Perms_By_Name(N'dbo.iplogDB', 'Object', 'VIEW DEFINITION') as View_def_Per, Has_Perms_By_Name(N'dbo.iplogDB', 'Object', 'CONTROL') as Contr_Per
Таблица будет выглядеть так:
ID | Owner | Operation | IP | Date | Name |
Custom
|
Порядковый номер | Пользователь | ADD/DEL | IP адрес | Date | Имя операции | Резерв |
Когда таблица создана, приступаем к написанию Runbook. Основная идея в том, что при его выполнении надо убедиться, что был добавлен или удален IP адрес для подписки. Если так, то заносим информацию в базу данных.
Теперь составим таблицу, в которой укажем, как будем обрабатывать события:
N | Событие | Объект |
1 | Включение NAT | VMM.NATConnection |
2 | Добавление правила NAT | VMM.NATConnection |
3 | Отключение NAT | VMM.NATConnection |
4 | Удаление сети | VMM.VMNetworkGateway |
5 | Удаление подписки | VMM.VMNetworkGateway |
6 | Добавление сети | VMM.NATConnection |
Далее определим, какие данные мы будем забирать из WAP, какие из VMM JOB:
ID | SubscriptionID | Operation | IP | Date | Name |
Custom
|
Auto | JOB | WAP | JOB | JOB | WAP | Reserved |
Runbook:
Когда Runbook создан и импортирован, необходимо создать Assets. В них мы укажем данные для соединения с базой данных и сервером VMM:
Name | Type | Data |
VmmConnection
|
VirtualMachineManager
|
CONTOSO\Rbuser,
Password,
VMMclusterName
|
MsSQL-iploggingDB
|
PowerShell Credential
|
IploggingDBsa,
Password
|
MsSQL-iplogging-Server
|
String
|
SQlServerName
|
MsSQL-iplogging-Database
|
String
|
IploggingDB
|
Теперь надо для Runbook установить тег SPF, опубликовать его и привязать к событиям:
OBJECT | ACTION |
VMM NATConnection | Create |
VMM NATConnection | Delete |
VMM VMNetworkGateway | Delete |
На этом настройка логирования закончена. Теперь представим, что у нас уже есть активные подписки, поэтому надо добавить их IP адреса в базу данных. Для этого сделаем скрипт, который внесет текущую информацию:
На этом этапе решение является вполне работоспособным, но с одним "но" - при удалении подписки, Windows Azure Pack не создает задачу по удалению сетей. Поэтому, при поиске владельца адреса, необходимо учитывать, что подписка могла быть удалена. В следующей статье мы внесем изменения в решение - расширим его функционал, научив удалять сети для удаленных пользователей и вносить данную информацию в базу данных.
Комментариев нет:
Отправить комментарий