.

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

Агент Admin Audit Log — один из стандартных агентов расширения команд, поставляемых в составе Exchange 2010. Он отслеживает операции администраторов на серверах Exchange 2010, независимо от того, какой административный интерфейс используется. Это становится возможным, поскольку Exchange Management Console (EMC) и Exchange Control Panel (ECP) построены на одном наборе составных команд, которые можно просмотреть в Exchange Management Shell (EMS), то есть выполнение всей бизнес-логики в Exchange 2010 проходит общим образом. Нет никаких указаний на то, что для административного интерфейса включен аудит, поэтому администраторы не знают, какие детали их операций записываются в данный момент.

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

Запуск журнала аудита действий администраторов

Аудит действий администраторов состоит из двух компонентов: агента Admin Audit Log, который контролирует действия администраторов при аудите, и функции протоколирования действий администраторов, которая записывает данные аудита в почтовый ящик аудита. Агент активируется по умолчанию, тогда как протоколирование по умолчанию блокируется. Чтобы аудит действий администраторов начал осуществляться, оба компонента — агент и протоколирование — должны быть запущены.

Для запуска журнала аудита действий администраторов следует использовать команду Set-AdminAuditLogConfig, которая указывает, какими будут функции журнала в организации. В EMS запустите команду:

Set-AdminAuditLogConfig
   -AdminAuditLogEnabled $True

Эта новая настройка должна тиражироваться по всей организации для эффективной работы на серверах, поэтому процесс может занять час или около того, прежде чем вы убедитесь, что все действия администраторов протоколируются. Однако аудит начнется намного быстрее на серверах сайта Active Directory (AD), где команда была запущена, поскольку обновленная конфигурация будет доступна в первую очередь на этих серверах. Если впоследствии вы захотите блокировать аудит действий администраторов, вам опять нужно будет запустить команду Set-AdminAuditLogConfig, только потребуется установить для параметра -AdminAuditLogEnabled значение $False.

Настройка почтового ящика аудита

В окончательной версии (RTM) Exchange 2010 необходимо создать и задать параметры стандартного почтового ящика, который будет играть роль хранилища. Вы настраиваете его, указав для параметра -AdminAuditLogMailbox, имеющегося в Set-AdminAuditLogConfig, значение в виде адреса SMTP почтового ящика. Адрес должен быть действительным и принадлежать к управляющему домену организации. Например, команда может выглядеть так:

Set-AdminAuditLogConfig
   -AdminAuditLogMailbox
   ‘AuditMailbox@contoso.com’

Хотя здесь команда расположена на нескольких строках, ее следует вводить в одну строку в EMS. То же касается и остальных команд.

В Exchange 2010 SP1 не нужно создавать и задавать настройки почтового ящика аудита. Exchange 2010 SP1 автоматически создает папку AdminAuditLogs в арбитражном почтовом ящике и сохраняет в нее данные аудита. Этот арбитражный почтовый ящик является более безопасным местом для данных аудита. Администраторы не могут предоставить доступ самим себе, записаться или удалить какие-либо элементы аудита, которые они хотят скрыть от остальных, как они могли это делать со стандартными почтовыми ящиками. Арбитражный почтовый ящик использует блокированную учетную запись, поэтому ее разблокировка занимает значительное время. К тому же эта работа оставляет следы, которые будут выдавать неразрешенные действия администратора.

Вне зависимости от того, запускаете вы Exchange 2010 SP1 или Exchange 2010 RTM, организация может использовать только один почтовый ящик аудита. Это может привести к возникновению проблем в разветвленных организациях; действия, выполняемые в одной части сети, могут иметь сложности с протоколированием в почтовом ящике аудита. Даже в централизованных средах могут быть ошибки, вызванные неработоспособностью базы данных, в которой размещается почтовый ящик аудита. В то время когда база данных недоступна для аудита, Exchange не сможет пополнять записи. Exchange записывает событие с идентификатором 5000 (их источник указывается как MSExchange Management Application) в журнал аудита событий приложений каждый раз, когда не может выполнить запись аудита. Аудит действий администраторов будет возобновлен, когда база данных станет доступной, однако никакие действия, происходящие в момент, когда почтовый ящик недоступен, не фиксируются.

Правильная настройка аудита

При запуске аудита действий администратора агент Admin Audit Log оценивает команды, насколько они меняют конфигурацию аудита, чтобы определить, нужно ли провести аудит использования этих команд. По умолчанию агент захватывает информацию о выполнении каждой команды, которая создает или редактирует данные. Агент игнорирует выполнение команд, которые начинаются со слов Get, Search и Test, чтобы избежать заполнения журнала аудита записями для команд, которые просто читают или находят информацию и тестируют компоненты Exchange.

Если нужно проверить команду, агент Admin Audit Log создает запись, содержащую детальную информацию о выполнении команды, в Inbox арбитражного почтового ящика аудита. В таблице перечислены данные, которые были захвачены и запротоколированы. Если команда выполняет действия по отношению к нескольким объектам, агент создает отдельную запись для каждого из них. Например, если администратор выполняет команду Set-Mailbox для установки новых квот хранения для нескольких почтовых ящиков, агент создаст отдельные записи для каждого почтового ящика, когда база данных будет обновлена следующей квотой хранения.

 

Таблица. Захватываемые и запротоколированные данные в Audit Entries
Захватываемые и запротоколированные данные в Audit Entries

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

Get-AdminAuditLogConfig | Format-List

выдает данные, подобные показанным на рисунке 1. В этих выходных данных обратите внимание на значение {*} для параметров AdminAuditLogCmdlets и AdminAudit-Log. Эти значения предписывают Exchange проверить каждую команду (в том числе исключения, которые были отмечены ранее) и каждый параметр этих команд.

 

Извлечение текущих параметров для аудита действий администраторов
Рисунок 1. Извлечение текущих параметров для аудита действий администраторов

Если вы хотите проверить специ­фичный набор команд (то есть действия), вы можете использовать Set-AdminAuditLogConfig. Вы определяете, какие действия подлежат проверке при помощи параметра -Admin AuditLogCmdlets. Например, команда

Set-AdminAuditLogConfig
   -AdminAuditLogКоманд 'New-Mailbox,
   New-DistributionGroup,
   New-MailboxDatabase, *Transport*'

предписывает Exchange проверить создание новых почтовых ящиков, групп рассылки и баз данных почтовых ящиков. Более того, она дает Exchange задание проверить любые действия, предпринятые для управления службой Microsoft Exchange Transport (то есть использование любой команды, чье имя содержит слово Transport).

Если вы хотите узнать только определенные данные о новых почтовых ящиках, созданных администраторами, вы можете использовать параметр -AdminAuditLogParameters команды Set-AdminAuditLogConfig. Например, команда

Set-AdminAuditLogConfig
   -AdminAuditLogCmdlets 'New-Mailbox'
   -AdminAuditLogParameters 'Name,
   DisplayName, Custom*

выводит только имя, отображаемое имя и набор значений для всех 15 пользовательских атрибутов (тех атрибутов, имена которых начинаются с Custom, такие как Custom Attribute1) новых почтовых ящиков, созданных администраторами.

Вы можете внести собственные записи в арбитражный почтовый ящик. Например, если вы хотите запротоколировать запускаемый сценарий или отметить определенную административную операцию, которую использовали для решения проблемы, можете задействовать команду Write-AdminAuditLog, например так:

Write-AdminAuditLog –Comment
   'Server acting up, cleared by
   increasing HeapSiz to 30000'.

Можно вставить до 500 текстовых символов в параметр комментария из свойства CmdletParameters записи аудита. Если вы используете Write-AdminAuditLog, стоит вносить информацию в пользовательские записи аудита, которые могут быть связаны с другой документацией, такой как ссылочный номер обращения в службу поддержки.

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

Если вы используете Exchange 2010 SP1, можете также задействовать механизм ведения истории для контроля объема данных в арбитражном почтовом ящике. По умолчанию записи аудита хранятся в течение 90 дней. Managed Folder Assistant удаляет записи аудита после окончания этого периода. Если вы хотите изменить период хранения, можете сделать это при помощи параметра -AdminAuditLogAgeLimit команды Set-AdminAuditLogConfig. Например, команда

Set-AdminAuditLogConfig
   -AdminAuditLogAgeLimit 182.00:00:00

устанавливает период сохранения данных в течение 182 дней (примерно 6 месяцев).

Контролирующий механизм был внедрен в SP1, поэтому если вы работаете с Exchange 2010 RTM, данной функции у вас нет. В этой версии все данные аудита остаются в арбитражном ящике до тех пор, пока вы не удалите их.

Поиск данных аудита

Exchange 2010 RTM не предоставляет каких-либо встроенных инструментов для просмотра журнала аудита и анализа деятельности администраторов. При использовании этой версии необходимо открыть арбитражный почтовый ящик и внимательно прочитать записи аудита, чтобы узнать, что было захвачено.

Exchange 2010 SP1 решает проблему нехватки инструментов поиска двумя способами.

  • Можно использовать новую команду Search-AdminAuditLog, которая позволяет просматривать и анализировать журнал аудита в EMS. Эта команда не работает для записей аудита Exchange 2010 RTM, поскольку они хранятся в месте, недоступном для команды.
  • Exchange 2010 SP1 включает набор заранее подготовленных административных и почтовых отчетов аудита в ECP. Эти отчеты раскрывают основную информацию. Они не содержат данные аудита, собранные арбитражным почтовым ящиком Exchange 2010 RTM. Но на практике это не должно помешать работе. Вы можете удалить исходный арбитражный почтовый ящик после того, как развернете Exchange 2010 SP1 во всей организации.

Использование Search-AdminAuditLog

При использовании Search-AdminAuditLog поиск записей аудита достаточно прост. Вот несколько примеров, как можно просмотреть действия администраторов.

Поиск действий, выполняемых одним или несколькими администраторами. Предположим, вы хотите знать, какого рода операции совершают администраторы. Вы можете идентифицировать администраторов по их псевдонимам, почтовым адресам, отображаемым именам или полным именам (DN), разделенных запятыми. Например, команда

Search-AdminAuditLog-UserIds
   Administrator, AJR |
   Format-Table RunDate, Caller,
   CmdletName -AutoSize

предписывает Exchange обнаружить действия всех, кто выполнял какие-либо операции под именами Administrator или AJR. Как показано в примере на экране 1, большая часть административной деятельности связана с почтовыми базами данных и группами доступности баз данных.

 

Поиск действий, выполняемых конкретными администраторами
Экран 1. Поиск действий, выполняемых конкретными администраторами

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

Search-AdminAuditLog
   -Cmdlets Dismount-Database,
   Mount-Database | Format-TableRunDate,
   Caller, CmdletName, ObjectModified
   -AutoSize.

Свойство ObjectModified выдает имя базы данных, в которой выполнялась операция создания или удаления. Как показано в примере на экране 2, такими базами данных были DB1 и PFDatabase1.

 

Поиск выполнения специфичных команд
Экран 2. Поиск выполнения специфичных команд

Поиск записей данных из определенного диапазона дат. Предположим, вы хотите выяснить, кто создавал новые почтовые ящики в определенный день. Вы можете применить такую команду:

Search-AdminAuditLog
   -StartDate '08/13/2010 00:00'
   -EndDate '08/13/2010 23:59'
   -Cmdlets New-Mailbox |
   Format-Table RunDate, Caller,
   ObjectModified, Succeeded -Autosize.

В полученном наборе обратите внимание на свойство Succeeded, которое определяет, было ли выполнение команды успешным. Несколько попыток запустить New-Mailbox могут провалиться, как показано на экране 3. Попытка создать почтовый ящик для Hicks, Cassie оказалась по каким-то причинам неудачной.

 

Поиск действий в рамках определенного диапазона дат
Экран 3. Поиск действий в рамках определенного диапазона дат

Особенность Search-Admin Audit Log заключается в том, что она не возвращает комментарии, вложенные в запись аудита при помощи команды Write-AdminAuditLog. Если помните, комментарии хранят информацию, которую администраторы планируют добавить в журнал аудита, поэтому важно получить доступ к этим данным. Данные содержатся в свойстве CmdletParameters записи аудита. Но если вы включите это свойство в выходной набор, все, что вы увидите, — это строчка Comment. Данные находятся в журнале аудита, но вы должны извлечь их, направляя вывод команды Search-AdminAuditLog в массив, а затем просмотреть подходящий элемент массива. Например, код

$AuditArray = Search-AdminAuditLog
   -StartDate '11/1/2010 00:00'
   -EndDate '11/1/2010 23:59'
   $AuditArray [1].CmdletParameters

создает массив, а затем просматривает данные Cmdlet-Parameters в элементе массива под номером 1.

Другая особенность, которую я заметил, заключается в том, что Exchange иногда кэширует записи аудита, потому что они не сразу видны при поиске. Я не мог воспроизвести проблему каждый раз, но было несколько случаев, когда записи аудита не появлялись при поиске в течение 5–10 минут после создания. В конце концов они были показаны, и данные не потерялись.

Также не стоит беспокоиться, если вы пытаетесь выполнить поиск, когда база данных, в которой размещается арбитражный почтовый ящик, недоступна. Для информации Exchange выдаст вам такое сообщение: The attempt to search the administrator audit log failed. Please try again later.

Использование готовых отчетов

С SP1 ECP предлагает пять отчетов на странице Auditing Reports, как показано на экране 4. ECP использует команду для получения и обработки данных из журнала аудита администраторов, журнала аудита почтового ящика и свойств почтового ящика. Например, чтобы создать отчет litigation hold report, ECP использует команды Get-Mailbox, Search-AdminAuditLog и Search-Mailbox Audit Log.

 

Использование заранее подготовленных отчетов ECP
Экран 4. Использование заранее подготовленных отчетов ECP

В отчете litigation hold report перечисляются пользователи, действия которых в соответствии с судебным постановлением должны отслеживаться (используя EMC, ECP, EMS), для определенного диапазона дат. Этот отчет показывает учетную запись, доступную для отслеживания, и период, когда осуществлялось отслеживание.

Отчет о доступе к почтовому ящику кого-то, кроме его владельца, non-owner mailbox access report, перечисляет почтовые ящики, к которым был доступ и которые были изменены не владельцем. Например, если кто-то чужой посылает сообщение, используя разрешение SendAs, вы увидите строку Subject сообщения и узнаете, была ли отсылка сообщения успешной. Однако вы не можете увидеть, кому сообщение адресовано и что оно содержит. Необходимо управлять поиском отдельного почтового ящика для поиска информации. Хотя этот способ позволяет проверять почтовые ящики, к которым имели доступ не их владельцы, это не всесторонний отчет аудита. Он лишь указывает на деятельность, которая требует дальнейшего расследования.

В отчете administrator role group report перечисляются изменения, которые применялись к ролевым группам за определенный период. Эти действия дают пользователям разрешение на выполнение различных административных действий, закрепленных за членами группы. Например, требуется членство в ролевой группе Mailbox Import Export, чтобы можно было импортировать данные из PST в почтовый ящик, а членство ролевой группы Discovery Management необходимо, чтобы начать поиск по множеству почтовых ящиков. И опять, этот отчет указывает только на деятельность, которая требует дальнейшего расследования. Например, учетной записи дается разрешение, которым она не должна обладать.

Если эти три заранее подготовленных отчета вас не удовлетворяют, можно создать пользовательские отчеты. Как было показано выше, вы можете изучить сырые данные при помощи Search-Mailbox-AuditLog и других команд.

Последние два отчета экспортируют записи аудита действий администратора и журнал аудита почтовых ящиков, поэтому вы можете без труда прочитать такие данные. Эти отчеты не выводятся на экран. Они отсылаются по почте определенным адресатам. После того как вы щелкните по Export the administrator audit log или Export mailbox audit logs на странице Auditing Reports в ECP, нужно сделать следующее.

  1. Определить период, за который вы хотите экспортировать данные (экран 5).
  2. Определить пользователя или нескольких пользователей, которые будут получать отчет.
  3. Нажать кнопку Export.

 

Экспорт журнала аудита действий администратора
Экран 5. Экспорт журнала аудита действий администратора

К сожалению, ECP не признает запрос на экспорт, но в фоновом режиме Exchange начинает искать требуемые данные. После генерации результатов поиска Exchange посылает данные получателям в виде вложения формата XML, названного SearchResult.xml. Как можно увидеть в примере на экране 6, файл SearchResult.xml содержит необработанный код XML. Когда вы открываете файл в браузере или в любом другом приложении, которое читает файлы XML, он сообщает вам о действиях, выполненных администраторами.

 

Вложенный файл SearchResult.xml
Экран 6. Вложенный файл SearchResult.xml

Вы не сможете получить доступ к вложению при помощи Outlook Web App (OWA) до тех пор, пока не модифицируете политику почтового ящика OWA для показа файлов XML. Скорее всего, делать это для всех почтовых ящиков OWA не следует, поскольку такое действие может дать пользователям возможность случайно получить доступ к XML-контенту, который может оказаться вредоносным. Лучше создать особую политику почтового ящика OWA, которая разрешает доступ к вложениям XML, и назначать эту политику почтовым ящикам администраторов.

Запуск и настройка аудита почтовых ящиков

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

Пример такого рода проблемы, которую решает аудит почтовых ящиков: неблагонадежные администраторы получают полный доступ к почтовым ящикам других пользователей, а потом регистрируются в этих почтовых ящиках, чтобы просматривать их содержимое. Хотя другие версии Exchange записывают события, показывающие, что администратор зарегистрировался с этой учетной записью, они не сообщают вам о том, что делал администратор впоследствии. Но если почтовый ящик был поставлен на аудит в Exchange 2010 SP1, он захватит детали всех проверяемых действий, выполненных администратором. Такие же данные будут захвачены для пользователей, которым был назначен делегированный доступ к почтовому ящику их владельцем.

Аудит почтовых ящиков запускается через команду Set-Mailbox. Например, если вы хотите защитить почтовый ящик генерального директора, нужно использовать такую команду:

Set-Mailbox -Identity 'CEO Mailbox'
   -AuditOwner $Null
   -AuditDelegate Update, Move,
   MoveToDeletedItems, SoftDelete,
   HardDelete, SendAs, SendOnBehalf
   -AuditEnabled $True

Здесь задание свойству -Audit Enabled значения $True запускает аудит почтового ящика. Параметр -AuditDelegate предписывает Exchange проверять любое действие по изменению контента, перемещению и удалению элементов, очистке папки Deleted Items или отправке сообщения из ящика, если это действие выполнялось делегированным лицом. В данном случае делегированное лицо — это тот, кто зарегистрировался на доступ к почтовому ящику, используя разрешения SendAs, SendOnBehalf или FullAccess. Вы также можете проверять доступ администраторов к почтовым ящикам, задавая параметр -AuditAdmin (который не показан в команде). Аудит может быть включен и на доступ владельца почтового ящика, но обычно этого не делается из-за большого количества элементов аудита, получаемых в результате.

Данные аудита почтовых ящиков хранятся в подпапке Audits папки Recoverable Items в пользовательском почтовом ящике. Проверяемые элементы почтовых ящиков сохраняются в течение 90 дней по умолчанию, однако это настройка может быть изменена, и период хранения составит до 68 лет.

Поиск по данным аудита почтовых ящиков

Существует несколько способов, с помощью которых можно просматривать данные аудита почтовых ящиков.

  • Заранее подготовленный отчет ECP. Параметр Export mailbox audit logs на странице Auditing Reports в ECP экспортирует проверяемые почтовые данные для детального прочтения.
  • Search-MailboxAuditLog. Эта команда выполняет синхронный поиск по одному или нескольким ящикам и выводит результат на экран.
  • New-MailboxAuditLogSearch. Эта команда просматривает асинхронно один или несколько ящиков в фоновом режиме и присылает результат по электронной почте.

Поскольку я уже рассказывал о том, как использовать заранее подготовленные отчеты ECP, давайте сразу перейдем к команде Search-MailboxAuditLog. Вот пример использования этой команды:

Search-MailboxAuditLog
   -Identity 'CEO Mailbox'
   -ShowDetails-StartDate '11/14/2010 00:01'
   -EndDate '11/17/2010 23:59'
   -LogonType Delegate -ResultSize 100 |
   Format-Table Operation,
      OperationResult,
   LogonUserDisplayName, ItemSubject,
   LastAcccessed

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

 

Поиск заданных почтовых данных на предмет действий, произведенных не владельцами
Рисунок 2. Поиск заданных почтовых данных на предмет действий, произведенных не владельцами

Пример использования команды New-MailboxAuditLogSearch:

New-MailboxAuditLogSearch -Name
   ’Unauthorized Delegate Access review’
   -LogonTypes Delegate
   -Mailboxes 'CEO Assistant', 'CEO',
   'Senior VP-Finance'
   -StartDate '1/1/2010'
   -EndDate '12/31/2010'
   -StatusMailRecipients
   'ComplianceAuditMailbox@contoso.com'

Этот асинхронный поиск в фоновом режиме проверяет записи для трех определенных почтовых ящиков и посылает данные на адрес SMTP, который необязательно должен быть почтовым ящиком Exchange.

О чем нужно помнить

Компаниям потребуется некоторое время, чтобы решить, хотят ли они организовывать аудит действий администраторов или почтовых ящиков, какого рода действия будут проверять, как долго будут храниться проверяемые данные и как они будут использоваться. Принимая решение по этим вопросам, нужно учитывать два соображения.

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

  • тестирование и применение текущих изменений и обновлений, включая новые пакеты обновлений Exchange;
  • тестирование и применение пакетов обновлений Windows;
  • выполнение крупных модернизаций в сети (то есть развертывание нового сервера DNS);
  • установка новых серверов Windows и Exchange;
  • установка нового программного обеспечения на сервер Exchange;
  • обновления настроек транспорта (то есть добавление нового коннектора и изменение настроек транспорта).

Во-вторых, нужно помнить, что аудит действий администраторов работает только на серверах Exchange 2010. В частности, аудит не будет работать, если администратор вносит изменения в базу данных почтового ящика или в транспортный коннектор на сервере Exchange 2007 в смешанной организации.

Тони Редмонд (exchguru@windowsitpro.com) — редактор журнала Windows IT Pro, старший технический редактор Exchange & Outlook Administrator, вице-президент и главный технолог HP Services

Поделитесь материалом с коллегами и друзьями

Купить номер с этой статьей в PDF