Главная Security, Windows, Без рубрики, Новое Публикация виртуальных машин в UAG
  • Публикация виртуальных машин в UAG

    Microsoft Forefront Unified Access Gateway (UAG) 2010 – очень интересное средство для публикации внутренних ресурсов для внешних (да и внутренних тоже) пользователей. Но вот есть в нем очень серьезный недостаток – нет никаких средств автоматизации процесса управления. Точнее так, средства автоматизации есть, в виде COM-интерфесов, но они недокументированы и понять, как они работают и какие параметры принимают, мне так и не удалось.

     
     
    Информации на просторах Интернет об этом я также не нашел. Дополнительные неудобства вызывает и консоль управления UAG, явно выполненная не в майкрософтовском стиле (по известным причинам). Ну и что с этого, скажете вы? Тогда немного об истоках проблемы. Есть вычислительная среда, в виде энного количества серверов, включенных в группу управления VMM. В VMM нарезаны облака, на облака делегировано управление для конечных пользователей (разработчиков). В этих облаках разработчики создают виртуальные машины для своих нужд. Виртуальные машины необходимо как-то публиковать для доступа как снаружи так изнутри. На помощь нам приходит UAG – мы публикуем RDP виртуальных машин. Казалось бы, что еще нужно?
     

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

     

    • виртуальные машины постоянно создаются и удаляются (а это нужно актуализировать информацию).
    • необходимо постоянно добавлять/удалять пользователей для опубликованных ярлыков UAG.

     

    Вот здесь то мы и встречаемся с неудобной консолью управления UAG и отсутствием автоматизации. Поэтому была поставлена задача как-то облегчить страдания группы поддержки и дать возможность конечным пользователям самим публиковать свои виртуальные машины, добавлять/удалять пользователей для ярлыков и держать это все в актуальном состоянии. Дать доступ к консоли UAG конечным пользователям – не вариант. После недолгих изучений, было обнаружено, что UAG хранит свою конфигурацию в файле UAG.egf, что находится в common\conf\ в папке установки. Файл текстовый, имеет некоторую иерархическую структуру. В качестве узлов иерархии выступают объекты, такие как, trunk, приложения, политики и т.д. Теперь нужно было как-то разобрать эту информацию. Полностью описывать структуры файла не буду, да и таких знаний у меня нет. Меня больше интересовали именно приложения RDP.

     

    Структура файла:

    {

    настройки самого UAG (версия схемы, алгоритмы шифрования и т.д.)

    {

    Репозитории аутентификации

    {

    }

    }

    {

    trunk http (80) и его настройки

    }

    {

    trunk https и его настройки

    {

    опубликованные приложения  <<< то что нам нужно

    }

    }

    ………..

    }

    Приложение формируется из набора атрибутов со значениями.

     

    Формат атрибута следующий:

    m_<тип><наименование атрибута>_<ID-приложения>[_<податрибуты и коды>]=[<значение>]

    В "[]" заключены необязательные данные.

     

    К типам относятся b (boolean), n (numeric), cs (скорее всего case-sensitive string) и т.д. Хотя конечно это не нужная для нас информация, мы ее никак использовать не будем. Наименование атрибута – думаю понятно что это.  Примеры: AppName, AppID, AppAuthList. У приложения есть целочисленный уникальный идентификатор (ID-приложения). Уникальный скорее всего в пределах транка (Trunk).  Могут быть некоторые податрибуты. Например, для AuthList – это Repository, UserName и т.д.

     

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

    Список атрибутов для ярлыка RDP можно посмотреть здесь – http://pastebin.com/5sz0EV9z

    Список атрибутов для конкретного приложения можно получить с помощью вот этого скрипта (Powershell) – http://pastebin.com/WqHP0fx9. На входе путь к файлу UAG и имя приложения, которое отображается в консоли. На выходе список атрибутов со значениями. В принципе достаточно повторить все эти атрибуты, добавить в секцию приложений конкретного транка, сохранить и активировать конфигурацию. В итоге нужный ярлык с приложением должен появиться на UAG-портале.

    Но не все так просто. У приложения есть идентификатор вот в таком виде:

    m_csAppId_24=7F81AB0527A443BEBA2018216CBCD110.

    Когда изначально разбирался в структуре файла, я думал что это некий хэш MD5. Тем более очень похож, 128 бит. Пробовал его прикладывать к имени приложения, но результат отрицательный. К чему бы еще приложить – не нашел. Сейчас пишу эту статью и в голову пришла мысль, что это обычный GUID, без знаков "-" и фигурных скобок. Возможно в ближайшее время эта информация подтвердится. Дополнительно нужно было убедиться, что в файле не меняются другие атрибуты или если меняются то какие и где. Для этого написал небольшой скрипт для получения различий между двумя файлами (сначала поискал готовые утилиты, но они меня не удовлетворили, а тратить время на дальнейший поиск и изучение еще и этого вопроса вовсе не хотелось). Скрипт можно взять здесь – http://pastebin.com/3w5hp4Wz. На входе пути файлов Source и Dest.

    Как выяснилось изменяются еще ряд атрибутов, такие как количество приложений в транке. Все это я учел и начал вручную публиковать RDP-ярлык. То есть, я беру и повторяю список атрибутов для приложения "Personal RDP", изменяю некоторые атрибуты (имена, ID и т.д.), изменяю дополнительные атрибуты и активирую конфигурацию. Мое приложение на портале не появляется и конфигурация откатывается на изначальную. Ошибок почему-то в мониторе активации нет. Тогда я иду другим способом. Создаю некоторое приложение через консоль UAG. Далее изменяю нужные мне атрибуты уже через текстовый файл: имя, отображаемое имя, внутренний IP-адрес, список авторизации и т.д.. Применяю конфигурацию. Работает!

     

    Ну собственно таким способом и решил действовать.

    В результате родился следующий скрипт (Powershell): http://pastebin.com/jW9S0qaC

     

    Список функций:

     

    • Set-UAGConfig – устанавливает глобальные переменные с расположением файла-egf, расположением каталога для бэкапов файлов-egf и путь к активатору (об этом немного позже). По умолчанию, в качестве $SourceFile берется UAG.egf из каталога установки UAG. $BackupDir – c:\EGFBackups (если не существует, то происходит попытка создания каталога). $UagActivator – по умолчанию C:\Scripts\UAGActivate.exe.
    • Backup-UAGConfig – копирует egf-файл из $SourceFile в $BackupDir с добавлением временной метки (для уникальности)
    • Disable-UAGApp – отключает опубликованное приложением, переименовывает в Unused<ID> и очищает некоторые атрибуты. Например, если вы хотите удалить приложение, то вызываете эту функцию.
    • Enable-UAGApp – включает приложение. Эта функция находит доступное отключенное приложением (с именем Unused<ID>), включает его и присваивает ему атрибуты. Какие? Имя приложения, имя приложения на портале, в ShortDescription попадает ID облака (это конкретно моя реализация), в LongDescription попадает GUID виртуальной машины, IP-адрес внутреннего сервера (ВМ). Большинство этих атрибутов устанавливается конкретно под мои задачи. Вам они скорее всего не подойдут. В этом случае необходимо изменить скрипт.
    • Set-UAGApp – обновляет атрибуты для уже опубликованного приложения. В моем случае это имя приложения, имя приложения на портале, ProjectID -> ShortDescription, VMID -> LongDescription и IP-адрес.
    • Get-UAGAuth – возвращает список авторизации для опубликованного приложения (выходной формат описан далее).
    • Set-UAGAuth – устанавливает список авторизации для опубликованного приложения.
    • Get-UAGAppList – возвращает список приложений, опубликованный для конкретного облака по ProjectID (это конкретно под мою задачу).
    • Get-UAGApp – возвращает приложение по VMID или по имени на портале (VMID берется из LongDescription).
    • Activate-UAGConfig – активирует конфигурацию с помощью файла из переменной $UAGActivator.

     

    Как этим пользоваться?

     

    Предварительный этап:

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

    2) Далее вы импортируете функции в консоль Powershell: Import-Module "c:\Scripts\UAGFunctions.ps1"

    3) делаете резервную копию файла конфигурации Backup-UAGConfig

    4) Отключаете созданные приложения Disable-UAGApp -AppName "Имя приложения на портале"

    Внимание!!! Обратите внимание, что в моей реализации я работаю с приложениями по имени, отображаемому на портале или по VMID, который я сохраняю в атрибуте LongDescription.

    5) Активируете конфигурацию командой Activate-UAGConfig

     

    Далее 1 шаг – включаем свободное приложение (Unused):

    1. $ErrorActionPreference = "Stop"
    2. GetPSSession | RemovePSSession
    3. #Пароль для учетной записи, которая подключается удаленно к UAG
    4. $SecureString = ConvertTo-SecureString -String "\`d.T.~Vb/{41BAA34C-B0E6-41D0-8F2B-CB3901AAF6A8}\`d.T.~Vb/" -AsPlainText-Force
    5. $Creds = New-Object system.Management.Automation.PSCredential("domain\os2uag_connector", $SecureString)
    6. $SessionOpt = NewPSSessionOption OperationTimeout (30*60*1000)
    7. #Подключаемся к UAG через PSRemoting
    8. $Session = NewPSSession -ComputerName "server-uag01" -Credential $Creds SessionOption $SessionOpt
    9. #Импортируем модуль с функциями
    10. InvokeCommand Session $Session ScriptBlock {ImportModule "c:\Scripts\UAGFunctions.ps1"}
    11. #Устанавливаем глобальные переменные $BackupDir и UAGActivator
    12. InvokeCommand Session $Session ScriptBlock {SetUAGConfig BackupDir "c:\EGFBackups" UAGActivatorPath"c:\Scripts\UAGActivate.exe" }
    13. #Бэкапим конфиг
    14. InvokeCommand Session $Session ScriptBlock {BackupUAGConfig}
    15. $ScriptBlock = {
    16.         #Заполняем входную информацию для публикации
    17.         $VMID = "\`d.T.~Ed/{6F6D86D8-3492-4328-B606-7B983F64826F}.VM ID\`d.T.~Ed/"
    18.         $AppName = "\`d.T.~Ed/{6F6D86D8-3492-4328-B606-7B983F64826F}.VM Name\`d.T.~Ed/"
    19.         $ProjectID = [int]("\`d.T.~Ed/{6F6D86D8-3492-4328-B606-7B983F64826F}.Cloud\`d.T.~Ed/".Split("_")[0].Substring(1))
    20.         $IPAddress = "\`d.T.~Ed/{90F45712-817A-4429-A5F0-668F26467CFD}.{08BCA15A-22A5-4770-81E7-1D41E21D1CDA}\`d.T.~Ed/"
    21.         #Смотрим опубликовано ли уже приложение по имени
    22.         $App = GetUAGApp AppName $AppName
    23.         if ($App){
    24.                 if ($App.VMID -ne ($VMID.ToString().ToUpper().Replace("-",""))){
    25.                         #Если приложение (ВМ) с таким именем опубликовано и VMID различаются, то скорее всего старую ВМ удалили и создали с тем же именем
    26.                         #в этом случае отключаем исходное
    27.                         DisableUAGApp AppName $AppName
    28.                         #включаем ярлык, заполняем атрибутами
    29.                         EnableUAGApp AppName $AppName AppGUID $VMID ProjectID $ProjectID IpAddr $IPAddress
    30.                 }
    31.                 else{
    32.                         #обновляем информацию о приложении
    33.                         SetUAGApp AppName $AppName IpAddr $IPAddress ProjectID $ProjectID
    34.                 }
    35.         }
    36.         else{
    37.                 $App = GetUAGApp VMID $VMID
    38.                 if (-not $App){
    39.                         #Включаем Unused приложение
    40.                         EnableUAGApp AppName $AppName AppGUID $VMID ProjectID $ProjectID IpAddr $IPAddress
    41.                 }
    42.                 else {
    43.                         #обновляем информацию о приложении
    44.                         SetUAGApp AppName ($App.AppPortalName) AppGUID $VMID IpAddr $IPAddress NewAppName $AppNameProjectID $ProjectID
    45.                 }
    46.         }
    47. }
    48. #выполняем скрипт-блок, сформированный ранее
    49. InvokeCommand Session $Session ScriptBlock $ScriptBlock
    50. $Session | RemovePSSession

     

    Шаг 2 – настраиваем авторизацию:

     

    1. $ErrorActionPreference = "Stop"
    2. $SecureString = ConvertTo-SecureString -String "\`d.T.~Vb/{41BAA34C-B0E6-41D0-8F2B-CB3901AAF6A8}\`d.T.~Vb/" -AsPlainText-Force
    3. $Creds = New-Object system.Management.Automation.PSCredential("domain\os2uag_connector", $SecureString)
    4. $SessionOpt = NewPSSessionOption OperationTimeout (30*60*1000)
    5. $Session = NewPSSession -ComputerName "server-uag01" -Credential $Creds SessionOption $SessionOpt
    6. InvokeCommand Session $Session ScriptBlock {ImportModule "c:\Scripts\UAGFunctions.ps1"}
    7. InvokeCommand Session $Session ScriptBlock {SetUAGConfig BackupDir "c:\EGFBackups" UAGActivatorPath"c:\Scripts\UAGActivate.exe" }
    8. $ScriptBlock = {
    9.         #Имя приложения, отображаемое на портале
    10.         $AppName = "\`d.T.~Ed/{6F6D86D8-3492-4328-B606-7B983F64826F}.VM Name\`d.T.~Ed/"
    11.         #DN пользователя в AD (я использую Active Directory Repository, для других репозиториев эти атрибуты могут отличаться)
    12.         $UserDN = "\`d.T.~Ed/{D6BCE08A-3CA4-4480-9482-4635B5083573}.Distinguished Name\`d.T.~Ed/"
    13.         $UserCanArr = @($UserDN.split(",") | where {$_ -notlike "dc=*"} | foreach {$_.Substring(3)})
    14.         $UserCanArr = @(for($i=($UserCanArr.Count1);$i -ge 0; $i) { $UserCanArr[$i] })
    15.         #User Canonical String без домена (это тоже особенность Active Directory Repository в UAG)
    16.         $UserCanStr = [string]::Join(‘\’, $UserCanArr)
    17.         #Получаю список авторизации для приложения
    18.         $authlist = GetUAGAuth AppName $AppName
    19.         #Создаю новый объект
    20.         $userObj = New-Object System.Object
    21.         #DN
    22.         $userObj | Add-Member -Name ID -MemberType NoteProperty -Value $UserDN
    23.         #Тип – 1 (пользователь)
    24.         $userObj | Add-Member -Name IsUser -MemberType NoteProperty -Value "1"
    25.         #Это имя репозитория (не имя домена, а именно репозитория аутентификации)
    26.         $userObj | Add-Member -Name Repository -MemberType NoteProperty -Value "domain.com"
    27.         #User Canonical name
    28.         $userObj | Add-Member -Name UserName -MemberType NoteProperty -Value $UserCanStr
    29.         #Разрешить – 1 (для блокирования видимо 0)
    30.         $userObj | Add-Member -Name Allow -MemberType NoteProperty -Value "1"
    31.         #добавляю к исходному списку (hash-таблица, в которой в качестве ключа используется DN) нового пользователя
    32.         $authlist[$userObj.ID] = $userObj
    33.         #Устанавливаю список авторизации для приложения
    34.         SetUAGAuth AppName $AppName UserArray $authlist
    35. }
    36. #Выполняю скрипт-блок, подготовленный ранее
    37. InvokeCommand Session $Session ScriptBlock $ScriptBlock
    38. #Здесь можно активировать, но в моем случае активация конфигурации происходит чуть позже
    39. #Invoke-Command -Session $Session -ScriptBlock { Activate-UAGConfig }
    40. $Session | RemovePSSession

     

    Теперь завершающий этап – активация:

     

    1. $ErrorActionPreference = "Stop"
    2. $SecureString = ConvertTo-SecureString -String "\`d.T.~Vb/{41BAA34C-B0E6-41D0-8F2B-CB3901AAF6A8}\`d.T.~Vb/" -AsPlainText-Force
    3. $Creds = New-Object system.Management.Automation.PSCredential("domain\os2uag_connector", $SecureString)
    4. $SessionOpt = NewPSSessionOption OperationTimeout (30*60*1000)
    5. $Session = NewPSSession -ComputerName "server-uag01" -Credential $Creds SessionOption $SessionOpt
    6. InvokeCommand Session $Session ScriptBlock {ImportModule "c:\Scripts\UAGFunctions.ps1"}
    7. InvokeCommand Session $Session ScriptBlock {SetUAGConfig BackupDir "c:\EGFBackups" UAGActivatorPath"c:\Scripts\UAGActivate.exe" }
    8. InvokeCommand Session $Session ScriptBlock { ActivateUAGConfig }
    9. $Session | RemovePSSession

     

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

     

    Что за UAGActivate.exe?

    Это скрипт Autoit, скомпилированный в .exe файл. Он запускает ConfigMgrUtil.exe для активации конфигурации UAG и посылает ему нажатия клавиш. Почему-то ConfigMgrUtil.exe отказался, в моем случае, принимать команды через поток StdIn, пришлось извращаться и делать через autoit.

     

    Скрипт autoit:

     

    Run("C:\Program Files\Microsoft Forefront Unified Access Gateway\utils\ConfigMgr\ConfigMgrUtil.exe -a")

    WinWait("C:\Program Files\Microsoft Forefront Unified Access Gateway\utils\ConfigMgr\ConfigMgrUtil.exe")

    ControlSend("C:\Program Files\Microsoft Forefront Unified Access Gateway\utils\ConfigMgr\ConfigMgrUtil.exe", "", "", "{ENTER}")

    ControlSend("C:\Program Files\Microsoft Forefront Unified Access Gateway\utils\ConfigMgr\ConfigMgrUtil.exe", "", "", "{ENTER}")

    ControlSend("C:\Program Files\Microsoft Forefront Unified Access Gateway\utils\ConfigMgr\ConfigMgrUtil.exe", "", "", "{ENTER}")

     

    Сам autoit здесь.

    Скомпилированный выше скрипт здесь. 

    (SHA-1: b97f3151c3016f5eba54b460c43545d1810e5d21)

    Этот файл нужно сохранить под оригинальным именем (UAGActivate.exe) в папке c:\Scripts. Либо при выполнении скрипта/модуля с UAG-функциями установить путь к активатору. У меня реализована схема публикации через Service Manager Portal (здесь пользователи создают заявки), далее отрабатывает System Center 2012 Orchestrator (бывший Opalis).

     

    Runbook в Orchestrator выглядит вот так:

     

    Скрипт с функциями был написан для схемы UAG версии 2010 SP1, но без изменений работает на SP3. Тестировался на протяжении месяца, без каких-либо проблем.

     

Комментарии

  1. >>Но тут начинаются проблемы. Поскольку среда динамичная и относительно большая, то >>поддерживать такое решение (с ручной публикацией) становится практически невозможным

    Не согласен. Для этого есть роль remote desktop gateway у Windows Server. Если машинка появилась в сети в результате развертывания, в VMM например, и на ней включен RDP access, то попасть на неё с интернета вообще нет никаких проблем. по 443 порту через RDG

  2. to Вася: Да, но тогда
    1) пользователям нужно запоминать IP-адреса своих виртуальных машин (а их у одной группы разработчиков может быть сотни)
    2) необходимо также контролировать доступ к конкретной виртуальной машине.

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

    в общем, RDG рассматривался, как и рассматривался он в связке с RD Web Access, но в итоге нужно было некоторое унифицированное решение, с единой мордой, с единой точкой входа. Также на этом же UAG публикуются, хоть и реже, другие приложения, в этом случае плодить несколько сайтов не удобно.

  4. В связи со снятием с поддержки TMG и UAG со стороны Microsoft, долго искал им замену для публикации консолей и Web доступа к виртуальным машинам на VMM 2012 SP1. Пока ничего лучшего, чем прокинуть всё на отдельный адаптер и опубликовать через Cisco ASA не нашёл. Какие ещё будут варианты, для публикации нескольких облаков с доступом внутрь каждой машины через один публичный IP адрес?

  5. to Имя:
    UAG не снят с поддержки и даже с развития.
    TMG пока тоже не снят с поддержки и, если я не ошибаюсь, то поддержка будет до 2015 расширенная и до 2020 обычная. Но это лучше проверить.
    В случае с асой, то это обычный NAT (+ дополнительный deep inspection). Ну то есть аса то не обычный NAT, а вот этот способ можно назвать обычным NATом.
    Поэтому тут можно выбрать любое устройство с функцией NAT, если нет каких-то особых требований.
    И получается, что UAG до сих пор актуален, TMG который в нем используется нужен только как Host Firewall, и если TMG не будет, придется только найти другой Host Firewall.

  6. Уважаемый gexeg!

    На мой взгляд, ситуация выглядит следующим образом:
    1) TMG мёртв (Windows Server 2012 не поддерживается и новых версий не будет)
    http://blogs.technet.com/b/server-cloud/archive/2012/09/12/important-changes-to-forefront-product-roadmaps.aspx
    2) UAG устарел (поддержки Windows Server 2012 нет и не предвидится, т.к. продукт заточен под фильтры стека TCP/IP Windows Server 2008 на базе TMG, который умер (см. выше))
    http://www.forefrontblog.nl/category/forefront-uag/
    3) Экономическое обоснование прекращения продуктовой линейки TMG выглядит правдоподобным, а это значит, что на замену им отдельный платный продукт от Microsoft не предвидится.
    http://hal2020.com/2012/09/15/goodbye-forefront-it-was-nice-knowing-you/
    4) В Cisco ASA есть портал приложений, а-ля RDG на котором можно опубликовать ярлыки консолей, сайтов и программ для доступа по HTTPS через один внешний IP адрес (так что не NAT-ом единым сильна Cisco).

    P.S. Я сам большой любитель линейки ISA/TMG, но, ввиду вышеперечисленных причин, рассматриваю варианты для миграции текущего решения по публикации пользовательских облаков на что-то более основательное с перспективой поддержки как Windows Server 2012, так и далее.

    Если Вам известны иные решения по публикации облаков VMM (без использования UAG), буду рад увидеть ссылки на них или хотя бы подходы, которые стоит посмотреть.

  7. to Андрей Лавров:
    1) TMG не может быть мертв, только потому что нельзя установить на WinS 2012. Хотя трудности с покупкой Win2k8r2 наверно все-таки существуют. Я в этом вопросе не разбираюсь, лучше у сейлов спросить.
    2) Я думаю поддержка W2012 в UAG появится. Не весь функционал заточен под фильтры TCP/IP, а только часть.
    3) А какое отношение имеет линейка TMG к UAG.
    4) про SSL VPN Portal слышал, но возможностей не знал. Надо будет посмотреть в эту сторону.

    Другие решения мне не известны

  8. Тоже интересна тема. А функционал нового VMM в составе SC 2012 предполагает же публикацию машин через селф-сервис портал, или как там он называется сейчас?Насколько я понял – там сейчас все красиво: вэб доступ с разных платформ и браузеров, HTML5 и т.д. Понятно, что все это тяжелее и дороже привычной ISA и менее привычной, но все же понятной UAG, но направление MSFT в облака прослеживается четко imho, туда же сворачивание линейки форефронт файрвольной в пользу комплексных решений… еще бы сертификаты SSL шли бы в коробке с сервером, как приятный бонус от MS (доверяемые клиентами внешнеми), а тож еще геморрой наладить подключения через тот же RDG… Купила бы уже MS Thawte какой 🙂

  9. to Интересующийся теоретик:
    1) VMM SSP (сейчас, в SP1, он уже не поддерживается, вместо него используется App Controller) может давать доступ к виртуальным машинам. Но работать через VMMовский Viewer (аналог консоли к VM в Hyper-v) не удобно. И буфер не работает, и более тормозной он. Еще и в окне браузера встроен. В общем, было высказывание, что не удобно. С другой стороны там есть еще и возможность подключения через RDP. Но поскольку среды изолированные, то есть VMM ничего не знает про внутренности стендов в виртуалках, то подключиться к таким машинам не возможно, тем более извне, по RDP. App Controller в принципе должен предлагать тоже самое что и VMM SSP, за тем исключением, что App Controller построен на SliverLight. Но я App Controller пока не юзал, удобно/неудобно/можно/нельзя сказать не могу.
    2) Если говорить про RDG, то UAG для RDP его и использует, просто политики свои накладывает, да портал собственный.

  10. 2gexeg: Большое спасибо за ответ и вообще разъяснения по этому поводу – в рунете крайне мало толковой информации по сабжу. Сам я уже, наверное, третий год морочусь в фоновом режиме этой задачей. Задача максимум – это обеспечить доступ пользователям к ВМ как раз таки в браузерах (разных) без требования всяческих активиксов, аддонов, IE, и вообще желательно свести телодвижения клиентов до минимума. Желателен доступ из под любуй платформу. Хотя бы даже посредством VDI, как это реализовано у Citrix VDI-in-box. Так вот, на предыдущей платформе MS (W2K8R2+SCVMM 2008) ничего толком из “хотелок” реализовать не удалось. Маялся также с пробросом VMM через TMG, маялся с публикацией через UAG – требуемый эффект получен не был. Так вот, в текущей платформе SCVMM заявлен WebAccess anytime anywhere – вот и хочется опробывать его. Кстати, если не сложно, подскажите – где можно почитать касательно неудобства использования и т.д. я чего то не нахожу описания реальных внедрений, где можно посмотреть. как работает этот самый SSP новый, AppController который

  11. Статья отличная! Пиши еще всякое!

  12. 2gexeg: “консоль управления UAG, явно выполненная не в майкрософтовском стиле (по известным причинам). ” Не всем причины известны, можете пояснить?
    Я также “не слегка” в ауте от прекращения поддержки TMG (выше анонимус и Андрей Лавров, по моему, правильные вещи написали по этому поводу), но времени чтобы UAG поставить хотя бы, пока никак не нахожу. В свободное после работы время рассматриваю различные альтернативы/решения, но их кот наплакал как-бы и по тем полезной инфы очень мало.

  13. Сорри, я дальше процитированной фразы не ушел.

  14. to Дмитрий Караваев:
    >>>Не всем причины известны, можете пояснить?<<>>UAG использует функционал стека TCP/IP в Wins2k8 r2<<<. Да есть такое, но это функционал связанный с Direct Access и по-моему еще какие-то унаследованные от IAG функции. Замечательно, уберут поддержку Direct Access из UAG и портируют на Windows 2012, тем более что в 2012 решили определенные проблемы 2k8r2 в части Direct Access, которые решались только UAG'ом. Ну то есть это конечно все фантазии и догадки, но все же MS не объявляла о прекращении развития UAG. То есть в текущем варианте у нас есть еще целых 7 лет (железно!) для работы с этим продуктом. Инвестиции вложенные сейчас в UAG вернутся за 7 лет? Планирует ли кто-то использование IT-сервисов на 7 лет вперед? Еще можно сказать, что UAG является уже зарекомендовавшим себя продуктом, с довольно простой установкой, относительно несложным планированием, поддержкой и т.д. То есть развивать его не надо, вкладываться в него не нужно. Спланировал, установил, настроил, работает, поддерживаешь. За 7 лет появится уже сформировавшийся рынок решений на замену (в случае если UAG действительно не будет развиваться дальше), можно будет придти на все готовенькое и смигрировать на эти решения.

  15. какая-то каша опубликовалась в комментарии выше.
    Половина комента куда-то исчезла. 🙁

  16. gexeg, ничего, я понял что мне нужно было ) Спасибо.