вторник, 9 мая 2017 г.

Логирование использования внешних адресов пользователями в 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:


IDSubscriptionIDOperationIP DateName
Custom
Auto JOB WAP JOB JOB WAP Reserved


Runbook:



Когда Runbook создан и импортирован, необходимо создать Assets. В них мы укажем данные для соединения с базой данных и сервером VMM:


NameTypeData
VmmConnection
VirtualMachineManager
CONTOSO\Rbuser,
Password,
VMMclusterName
MsSQL-iploggingDB
PowerShell Credential
IploggingDBsa,
Password
MsSQL-iplogging-Server
String
SQlServerName
MsSQL-iplogging-Database
String
IploggingDB

Теперь надо для Runbook установить тег SPF, опубликовать его и привязать к событиям:

OBJECTACTION
VMM NATConnectionCreate
VMM NATConnectionDelete
VMM VMNetworkGateway

Delete


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



На этом этапе решение является вполне работоспособным, но с одним "но" - при удалении подписки, Windows Azure Pack не создает задачу по удалению сетей. Поэтому, при поиске владельца адреса, необходимо учитывать, что подписка могла быть удалена. В следующей статье мы внесем изменения в решение - расширим его функционал, научив удалять сети для удаленных пользователей и вносить данную информацию в базу данных.


Комментариев нет:

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