Глава 14. Службы Федерализации Active Directory

Содержание

Глава 14. Службы Федерализации Active Directory
Как работает AD FS?
Что представляет собой заявка?
SAML
WS-Trust
WS-Federation
Компоненты AD FS
Служба федерализации
AD FS 1.0
AD FS 1.1
AD FS 2.0
AD FS 2.1
AD FS 3.0
AD FS 4.0
Что нового в AD FS 2022?
WAP
База настроек AD FS
Топологии развёртывания AD FS
Единственный сервер федерализации
Единственный сервер федерализации и единственный сервер WAP
Множество серверов федерализации и множество серверов WAP с применением Сервера SQL
Развёртывание AD FS
Записи DNS
Сертификаты SSL
Установка определённой роли AD FS
Установка WAP
Настройка осведомлённого о заявке клиента с новыми серверами федерализации
Создание доверительной проверяющей стороны
Настройка WAP
Интеграция с Azure MFA
Предварительные требования
Создание сертификата на ферме AD FS для соединения с Azure MFA
Разрешение подключения серверов AD FS с клиентом Azure MFA
Разрешение определённой ферме AD FS применения Azure MFA
Разрешение Azure MFA для аутентификации
Федерализация AD Azure при помощи AD FS
Федеративная регистрация при помощи AD Azure
Создание доверительных отношений между AD Azure и AD FS
Настройка соединения AD Azure
Проверка
Выводы

Пандемия COVID-19 ускорила цифровую трансформацию компаний. Большинство организаций больше не работают в закрытом или изолированном режиме. При цифровой трансформации они больше сотрудничают с прочими компаниями, партнёрами и потребителями для предоставления лучших продуктов и служб. Это также создаёт новые вызовы для ИТ по размещению новых требований сотрудничества. Например, компании может потребоваться совместно применять одно из её приложений с другой внешней компанией. Или же, организация может пожелать разделять ресурсы (такие как доступ к определённым серверам или совместным данным) с партнёрской компанией. В подобных ситуациях основной вопрос состоит в том как управлять учётными записями пользователей и полномочиями доступа безопасным, надёжным и масштабируемым образом.

В среде Active Directory (AD), большинство приложений или служб могут быть интегрированными с Active Directory. Это означает, что мы можем пользоваться учётными записями Active Directory для аутентификации в приложениях или службах. Однако, что если нам необходимо выполнять доступ к приложениям или службам, располагающихся в иной среде, в которой у нас нет контроля над управлением доступа? В таких случаях мы обычно заканчиваем обладанием различных учётных записей пользователей и паролей для регистрации в различных системах. Это не просто оказывает воздействие на конечных пользователей. Давайте взглянем на эту задачу с точки зрения поставщика услуги.

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

Ни с того, ни с сего, для управления идентификацией появляются новые вызовы и, если они не обрабатываются надлежащим образом, это может приводить к уязвимости всей системы целиком. Active Directory Federation Services (AD FS, Службы федерализации Active Directory) позволяют компаниям управлять своими собственными инфраструктурами идентификации и применять для доступа к приложениям, службам или ресурсам аутентификацию по запросу. При помощи этого метода пользователям не требуется применять обособленную регистрацию для доступа к системам, а владельцу ресурсов нет нужды управлять идентификацией внешних пользователей. В этой главе мы намерены изучить следующее:

  • Как работает AD FS?

  • Компоненты AD FS и как применять их при настройке AD FS

  • Развёртывание AD FS и управление ею

  • MFA (Многофакторная аутентификация, Multi-Factor Authentication) в действии

  • Как включать федерализацию при помощи Azure AD

  • Федерализация Azure AD с AD FS

Прежде чем мы рассмотрим развёртывание и настройку роли AD FS, важно разобраться с тем, как работает AD FS. Это поможет нам осознать весь потенциал развёртывания роли AD FS.

Как работает AD FS?

Rebeladmin Inc. выступает поставщиком ИТ услуг. Существует множество потребителей, которые применяют различные ИТ и базирующиеся в облачном решении службы от этой компании. В последнее время эта компания предложила панель управления на веб основе, в которой пользователи могут зарегистрироваться и управлять своими ресурсами. То же самое приложение применяется внутренними сотрудниками для управления службами инфраструктуры. Для управления идентификацией Rebeladmin Inc. применяет Active Directory Domain Services (AD DS). Когда в этом портале регистрируется внутренний ИТ сотрудник, они не запрашивают какие бы то ни было подробности регистрации. Это обусловлено тем, что данное веб приложение для разрешения доступа применяет Integrated Windows Authentication (IWA, Интегрированную с Windows аутентификацию).

Это процесс также носит название аутентификации NTLM или доменной аутентификации. Он изначально не выдаёт приглашения для регистрационных сведений и не передаёт хэшированных сведений относительно подключённого в настоящий момент пользователя в веб сервер для проверки его разрешения. Этот веб сервер присоединён к домену и данное приложение само по себе интегрировано с Active Directory. Теперь желают получить доступ к тому же самому порталу для управления их рабочими нагрузками пользователи Depache solution.

Имеются два пути обеспечения их этим:

  • Применение учётной записи Active Directory в Rebeladmin Inc.: Когда внешние пользователи пытаются получить доступ к необходимому веб порталу, их изначальный IWA получит отказ, поскольку данное приложение не понимает учётные записи внешних пользователей.

    Затем они получат приглашение на ввод подробностей своих регистрационных сведений. Если пользователь обладает некой учётной записью в экземпляре Active Directory Rebeladmin Inc., она может применяться для аутентификации в данном портале. Однако, данный способ открывает несколько требующих решения вопросов безопасности. Когда пользователи обладают некой учётной записью в Active Directory, по умолчанию Active Directory позволяет пользователям выполнять доступ к любым ресурсам, которые обладают назначенными полномочиями everyone или authenticated users. Во внутренней сетевой среде имеется возможность принуждения пользователей к следованию политикам и рекомендуется защищать их идентификацию. Однако невозможно применять те же самые стандарты для некой внешней части. Итак, такие учётные записи имеют высокую вероятность компрометации. Например, когда некий внутренний пользователь увольняется, тогда обычно его регистрация Active Directory будет сброшена и отключена. Однако когда некая учётная запись совместно применяется с внешними пользователями, тогда даже в случае увольнения соответствующего пользователя он всё ещё способен обладать доступом к этому порталу (пока он информирован). Некоторые производители применяют Active Directory Lightweight Directory Services (AD LDS) для каждого пользователя чтобы минимизировать воздействие на безопасность. Однако это добавляет накладные расходы управления чтобы сохранять запущенными различные экземпляры.

  • Доверительные отношения Active Directory между двумя инфраструктурами: Когда имеются доверительные отношения Active Directory, из удалённой инфраструктуры может быть разрешён удалённый доступ. Для наличия успешных доверительных отношений между двумя инфраструктурами должно иметься соединение, которое основывается на таких портах TCP/ UDP как 389 (LDAP, Lightweight Directory Access Protocol ) и 53 (DNS Domain Name System). Эти порты должны быть разрешёнными через межстевые экраны в обеих инфраструктурах. Данный метод добавляет дополнительные риски безопасности в обе инфраструктуры.

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

Ответом на все эти нюансы является федеративные доверительные отношения. Говоря простым языком, федеративная служба это некая услуга, которая выполняет идентификацию пользователей у своего IdP (Identity Provider, поставщика идентификации) и предоставляет доступ к приложению на основе заявки (требования, claim) от SP (Service Provider, поставщика услуги). Имеется большое число поставщиков федеративной службы, а федеративная служба Microsoft носит название AD FS (Active Directory Federation Services, федеративных служб Active Directory):

 

Рисунок 14-1


Федеративные доверительные отношения с размещённым прикладным приложением

В нашем предыдущем примере, Rebeladmin Inc. для управления идентификацией применяет AD DS. Её пользователи используют размещённое там веб приложение (MyHostedApp1) от поставщика облачной службы. Для создания доверительных отношений между Rebeladmin Inc. и SP Rebeladmin Inc. пользуется AD FS. Это позволяет пользователям Rebeladmin Inc. запускать MyHostedApp1 при помощи своих собственных полномочий Windows. При такой установке наша федеративная служба размещается в инфраструктуре самой Rebeladmin Inc. и она превращается в IdP. С точки зрения AD FS это также носит название Claims Provider (CP, Поставщика заявок). Все пользователи выполняют аутентификацию через CP. Сами производители, которые размещают данное приложение также обладают своей собственной инфраструктурой идентификации. Такой производитель приложения превращается в SP, также именуемого как Relying Party (RP, проверяющая сторона) в федеративных доверительных отношениях и такая зависимость в рассматриваемой заявке предоставляется федеративной службе на разрешение/ запрет доступа к данному приложению. К тому же, данная настройка требует открытым лишь TCP порт 443.

Даже несмотря на то что такое соединение носит название доверенного, оно не может применяться взамен Active Directory. Когда установлено доверительное отношение Active Directory, администраторы способны управлять доступом к ресурсам со стороны удалённых пользователей в точности так же, как это выполнялось для внутренних пользователей. Пользователям может быть разрешён доступ к папкам и файлам на основании полномочий NTFS (New Technology File System). Пользователям могут предоставляться полномочия для регистрации в устройствах. Любое работающее с внутренними пользователями приложение может быть также настроено и для разрешения доступа удалённым пользователям. Однако в федеративной среде, доступ может быть разрешён лишь для осведомлённых о заявках (claim-aware) приложений. Заявка это просто некий атрибут и соотносимое значение. В качестве примера, некая заявка может обладать атрибутом username и его значением, dfrancis. Установленная федеративная служба запросит доступ от SP на основании такой заявки. Если приложение данного SP на понимает заявки, оно не сможет принять решение разрешать или запрещать доступ:

 

Рисунок 14-2


Федеративные доверительные отношения в действии

Давайте повторно рассмотрим свой предыдущий пример с подробным описанием,

  1. На самом первом этапе наш пользователь Rebeladmin Inc. регистрируется в компьютере из инфраструктуры Rebeladmin Inc. Это присоединённое к домену устройство. Для регистрации в этом устройстве данный пользователь применяет свои полномочия в домене.

  2. После того как этот пользователь успешно зарегистрировался в своём устройстве, он запускает свой веб браузер и набирает значение URL для MyHostedApp1. Данное приложение размещается в своей удалённой инфраструктуре.

  3. Как только это приложение получает запрос на доступ от пользователя Rebeladmin Inc., оно сначала проверяет передаваемые через этот браузер данные (IWA). Затем оно осознаёт, что они не от его внутренней инфраструктуры, однако имеется некая учётная запись из той инфраструктуры идентификации, с которой данный Поставщик услуги (SP) имеет федеративное взаимоотношение. Если она из федеративной среды, для принятия решения по заявкам требуются права доступа этого пользователя. Таким образом, наш Поставщик услуги отправляет перенаправляемый отклик для перенаправления пользователей к веб интерфейсу федеративной службы Rebeladmin Inc.

  4. Затем этот пользователь автоматически перенаправляется к веб интерфейсу федеративной службы Rebeladmin Inc. В этом веб интерфейсе данному пользователю необходимо набрать подробности своих регистрационных данных.

  5. После того как данный пользователь предоставил свои полномочия, они удостоверяются в AD DS Rebeladmin Inc. и будут выданы его права доступа. Далее эта федеративная служба создаст некий маркер (token) безопасности, который содержит данные заявки пользователя, например, имя пользователя, участие в группах, User Principal Name (UPN, имя участника- пользователя) и адрес электронной почты. Этот маркер безопасности будет подписан соответствующим выпущенным цифровым сертификатом. В конце этого процесса федеративные службы отправят отклики обратно самому пользователю с выработанным маркером безопасности, плюс команду redirect для перенаправления соответствующего сеанса браузера пользователя обратно к MyHostedApp1.

  6. Сеанс браузера пользователя перенаправляется к своему приложению хостинга и, на этот раз, данный сеанс будет представлен с необходимым маркером безопасности, полученным им от своей федеративной службы. Затем, агент осведомлённого о заявке веб сервера расшифрует полученный маркер безопасности и заглянет в предоставленную им заявку. На основании этой заявки он принимает решение будет ли её пользователю разрешён доступ к его приложению или нет. Когда заявка принята, данный пользователь будет способен успешно увидеть изначальную страницу запрошенного приложения.

В нашем предыдущем сценарии необходимые федеративные доверительные отношения выполняются напрямую самим приложением. Однако при некоторых обстоятельствах наш Поставщик услуги (SP) также будет обладать средой своей федеративной службы со своей стороны. В основном это имеет место когда такой Поставщик услуг обладает множеством клиентов с федеративными доверительными отношениями. В данном случае происходит следующее:

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

  2. Затем федеративная служба этого поставщика услуг перенаправит данного пользователя к федеративной службе Rebeladmin.

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

  4. Основываясь на отфильтрованных заявках, федеративная служба Поставщика услуг создаст новый маркер безопасности, который будет подписан при помощи цифрового сертификата самой федеративной службы Поставщика услуг. Этот новый маркер безопасности именно тот, который будет перенаправлен в запрошенный сервер приложения.

В своём предыдущем примере я несколько раз упоминал "заявки" (требования, claims). Однако что именно представляет собой заявка и как она формируется?

Что представляет собой заявка?

Заявка (claim) это просто предложение о пользователе, которое применяется для целей авторизации поддерживающих заявки приложений. Каждая заявка содержит значения для пользователя, такие как их UPN (имя участника- пользователя), адрес электронной почты и Common Name (CN, стандартное имя).

AD FS поддерживает множество различных типов заявок. Типы заявок применяются чтобы отобразить какой вид значения будет включён в эту заявку. Приводимая ниже таблица содержит наиболее распространённые типы заявок:

Таблица 14-1. Типы заявок
Тип заявки Описание

UPN

Значение UPN этого пользователя

Email

Адрес электронной почты с типом RFC 5322

Given name

Именование пользователя

CN

Значение CN учётной записи пользователя

Name

Имя пользователя

Surname

Фамилия пользователя

Windows account name

Учётная запись в формате домен/пользователь

Group

Группа, к которой относится пользователь

Role

Роль пользователя

AD FS 1.x UPN

UPN пользователя при взаимодействии с AD FS 1.x

AD FS 1.x UPN email address

Адрес электронной почты с типом RFC 5322 при взаимодействии с AD FS 1.x

Заявка выполняет выборку значений из соответствующего хранилища атрибутов. Такое хранилище атрибутов это каталог или база данных, которые содержат учётные записи и связанные с ними атрибуты.

Active Directory также может играть роль хранилища атрибутов. Например, в некой среде Active Directory, когда типом заявки выступает UPN, эта заявка выберет своё значение из атрибутов пользователя.

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

SAML

В рассматриваемой федеративной среде значения IdP (Поставщика идентификации) и SP (Поставщика услуги) нуждаются в обмене данными аутентификации и авторизации. SAML (Security Assertion Markup Language, Язык разметки утверждений безопасности) жто открытый стандарт на основе XML, который применяется для передачи полномочий от IdP к SP. Этот стандарт впервые был предложен OASIS Security Services Technical Committee и его последняя доступная версия это 2.0. Этот стандарт обычно используется многими поставщиками федеративных служб разработчиками приложений для предоставления некой практики SSO. Его запрос заявки и обработка заявки в точности те же самые, по сравнению с применявшимися нами в предыдущем разделе, с единственным отличием, состоящем в отличии самого формата его маркера запроса и отклика. SAML применяет в качестве своего маркера подписанный файл XML. В терминологии SAML, те маркеры, которые вырабатываются на стороне Поставщика идентификации, носят название asserts (выставлением утверждений), а собственно расшифровка и обработка установки утверждений на стороне Поставщика услуги именуется assertion (получения утверждения).

WS-Trust

Это часть множества стандартов WS*, включая WS-Security, WS-Federation и сами политики WS-Security. WS это сокращение для Web Services. WS-Trust определяет ото протокол, который применяется при запросах и выпуске маркеров безопасности со стороны WS-Security. STS (Security Token Service, Служба безопасных маркеров) это большая функциональность WS-Trust и она может применяться для преобразования выпущенных локально маркеров безопасности в прочие форматы маркеров безопасности, которые могут обрабатываться вашим приложением. Она также способна преобразовывать приходящие маркеры безопасности в поддерживаемые форматы маркеров.

WS-Federation

WS-Federation это также часть стандартов WS*. В то время как SAML работает лишь с маркерами SAML, WS-Federation поддерживает применение большого числа типов маркеров, включая SAML. В целом, WS-Federation предоставляет некий механизм упрощения взаимодействия между Поставщиком идентификации и Поставщиком услуги. Самая основополагающая цель WS-Federation состоит в упрощении разработки федеративных служб посредством взаимодействия по всем областям (realm) и управления федеративными службами при помощи повторного применения модели и протокола STS WS-Trust. Дополнительные сведения относительно WS-Federation можно найти в https://ibm.co/3CGyRbO.

Компоненты AD FS

Прежде чем мы установим роль AD FS, имеется неколько связанных с ней компонентов, о которых надлежит иметь сведения. Вплоть до Windows Server 2012 R2 имелось четыре службы роли AD FS: служба федерализации, посредник службы федерализации, поддерживающий заявки агент и агент на соновании маркеров Windows (который поддерживал взаимодейтвие AD FS 1.x). Они более не доступны в качестве служб роли и когда мы устанавливаем AD FS, будет иметься лишь роль службы федерализации.

Служба федерализации

Это самая основная служба роли для AD FS и она способна работать как на стороне Поставщика идентификации, так и на стороне Поставщика услуг. Чтобы установить такую службу роли AD FS, ваша система обязана быть сервером участником домена Active Directory. В зависимости от имеющейся рабочей нагрузки, в одном и том же домене может быть установлено множество серверов федерализации и они носят название фермы AD FS. Сервер федерализации отвечает за выработку маркеров безопасности и их подписи своим сертификатом подписи. Давайте взглянем на версии AD FS, на которых до сих пор основывались выпуски.

AD FS 1.0

Впервые AD FS была введена в Windows Server 2003 R2. Эта версия AD FS более не доступна, поскольку Windows Server 2003 превзошёл своё время жизни. Она поддерживала базовые возможности SSO. Она обладала меньшей совместимостью с прочими присутствующими на рынке поставщиками служб федерализации.

AD FS 1.1

Была предложена в Windows Server 2008 и продолжена в Windows Server 2008 R2. Она не сильно изменилась по сравнению с версией 1.0. Она также страдала предоставлением ограниченной поддержки для прочих служб федерализации. Она поддерживала лишь пассивный профиль WS-Federation и SAML 1.0.

AD FS 2.0

Данная версия была выпущена после Windows Server 2008 R2, однако в качестве отдельной установки. Все прочие версии поставлялись ка часть самой ОС. Вплоть до версии 2.0 они поддерживали для своего хранилища аутентификации применение AD LDS. Это означало, что пользователи могли выполнять аутентификацию при помощи AD LDS, аналогично Active Directory. Начиая с версии 2.0, LDS больше не поддерживается в качестве хранилища учётных записей. Она способна работать как хранилище атрибутов, которое способно хранить данные AD FS, но не может применяться для аутентификации. AD FS 2.0 к тому же поддерживает среду доменов родитель- потомок, поэтому пользователи из дочернего домена для федерализации способны применять AD FS в другом домене.

Это снизило накладные расходы управления. Это также улучшило поддержку федеративных доверительных отношений за счёт применения форматов метаданных индустриального стандарта. Это позволили организациям быстро создавать доверие между федеративными партнёрами.

AD FS 2.1

Эта версия поступала с Windows Server 2012 и не обладала существенными изменениями по сравнению с версией 2.0.

AD FS 3.0

Данная версия была введена в Windows Server 2012 R2. Она удалила службу посредника AD FS из AD FS 2.0 и заменила её на WAP (Web Application Proxy, посредника веб приложений). Он работал из DMZ (Demilitarized Zone) и не нуждался в присоединении к домену. Основная его идея состояла в защите самой инфраструктуры идентификации от поддельных маркеров. К тому же, были удалены веб агенты AD FS 1.x, которые предоставляли подключения к прочим системам.

Workspace Join это одна из величайших функциональных возможностей, поступивших с AD FS 3.0. Это позволило нам регистрировать мобильные устройства (даже не-Windows) в компании или организации для доступа к приложениям и данным при помощи SSO. AD FS 3.0 более вовсе не требует IIS (Internet Information Services) и устанавливается как отдельная роль. Она также поддерживает gMSA (group Managed Service Account, учётную запись управляемой группой службы). Это новый тип учётной записи службы, который поддерживает автоматическое изменение паролей. Создание таких учётных записей и управление ими пояснялось в Главе 8, Управление пользователями, группами и устройствами. Данная версия также поддерживает маркеры доступа стандарта OAuth 2.0. Это маркеры в формате JSON и их проще применять в современных приложениях.

AD FS 4.0

AD FS 4.0 это самая последняя версия, доступная в Windows Server 2016/ 2019/ 2022. Именно ею мы пользуемся на протяжении этой главы. Данная версия поддерживается требованиями современных гибридных облачных решений. Если вы уже применяете Azure AD, эта версия позволяет вам применять Microsoft Azure MFA без установки и настройки дополнительных компонентов. В предыдущих версиях AD FS было необходимо настраивать дополнительный сервер. В этой новой версии AD FS обладает встроенным адаптером Azure MFA. Аналогично AD FS 3.0, эта новая версия также поддерживает регистрацию мобильных устройств для поддержки требований совместимости организации. Если это не среда Azure AD, тогда при помощи AD FS 4.0 вы способны применять условные политики к компонентам площадки.

К тому же эта версия поддерживает современные стандарты аутентификации, такие как OpenID Connect и OAuth 2.0.

Она предоставляет расширенную практику пользователя с Windows 10, а также с последними прикладными приложениями Android и iOS. AD FS также поддерживает аутентификацию при помощи совместимых с v3.0 LDAP каталогов. Он позволяет персоналу применять AD FS снова и снова, даже если у них не запущена AD DS. Windows 10 представил свои новые методы регистрации без пароля Windows Hello и Microsoft Passport. Они основываются на вводе PIN и биометрии, например, отпечатках пальцев и распознавании лиц. AD FS 4.0 поддерживает эти новые методы подписи.

Также была упрощена миграция с AD FS 2012 R2. Ранее, если нам было необходимо выполнять миграцию с одной версии на другую, нам требовалось параллельно с промышленной фермой AD FS строить некую ферму и затем выполнять миграцию своей конфигурации. Однако в нашей новой версии мы можем вводить вой сервер AD FS 2022 в уже имеющуюся ферму Windows Server 2012 R2 и он приступит к работе на операционном уровне Windows Server 2012 R2. После того как все Windows Server 2012 R2 удалены из вашей фермы, её операционный уровень может быть обновлён до Windows Server 2022.

Что нового в AD FS 2022?

Насколько нам известно, AD DS 2022 не обладает значительными изменениями по сравнению с AD DS 2019. Даже нет никакого нового уровня функциональности Леса или домена. То же самое применимо и к AD FS 2022. Ниже я перечислил некоторые имеющиеся у AD FS 2019 расширения. Они также применимы и к AD FS 2022:

  • Первичная аутентификация через сторонних поставщиков аутентификации: При аутентификации через AD FS до сих пор, в качестве первичной аутентификации мы обладали лишь возможностью применения встроенных методов аутентификации, таких как аутентификация формой, аутентификация сертификатом или же Azure MFA. Затем, в качестве вторичной аутентификации, мы были способны применять прочие внешние методы аутентификации. В AD FS 2022 мы теперь можем в качестве первичной аутентификации применять метод регистрации стороннего поставщика аутентификации (сначала такого поставщика необходимо зарегистрировать в вашей ферме AD FS).

  • Аутентификация без пароля: В качестве первичного метода аутентификации AD FS 2022 полностью поддерживает аутентификацию без пароля. Для AD FS 2016 это требовало дополнительных компонентов и дополнительных настроек, с тем чтобы это можно было делать.

  • Модель оценки риска: Инженеры теперь способны строить свои собственные подключаемые модули для блокировки или назначения баллов риска для запросов аутентификации в процессе этапа предварительной аутентификации при помощи Risk Assessment Model AD FS 2022. Дополнительные сведения о таком модуле доступны в https://bit.ly/3l2Qe0m.

  • Интеллектуальная блокировка внешней сети (ESL, Extranet Smart Lockout) теперь встроена в AD FS 2022: ESL защищает учётные записи пользователей от блокирования внешних учётных записей, когда они регистрируются из знакомых местоположений. Для знакомых местоположений, когда мы выявляем множественные отказы в регистрации для определённой учётной записи пользователя, это будет означать, что возможно он ошибся вместо вредоносной активности. Применяя ESL мы можем определять различные пороговые значения блокировок для знакомых и неизвестных местоположений. AD FS к тому же позволяет нам применять режим аудита для изучения знакомых местоположений когда ваша система всё ещё защищена классической функциональностью блокирования внешней среды. В AD FS 2016 у вас не было защиты когда вы применяли режим аудита.

Дополнительные сведения о прочих функциональных возможностях и исправлении ошибок доступны в https://bit.ly/3FLLy6T

WAP

Мы пользуемся серверами посредниками (прокси) для доступа в Интернет по той причине, что они осуществляют необходимое взаимодействие с Интернетом от имени внутренних пользователей и защищают последних от внешних угроз. Web Application Proxy (WAP) позволяет нам публиковать веб приложения (включая AD FS) для общего доступа без выставления туда самих серверов. Эта роль более не является частью AD FS и она поставляется как часть роли удалённого доступа. Для своей работы AD FS не требуется Web Application Proxy, однако рекомендуется применять его, когда пользователи регистрируются из внешних сетевых сред. К тому же он предоставляет базовую защиту от Denial-of-Service (DoS) путём дросселирования и подавления шумов подключений.

Сами взаимодействия между серверами- посредниками и веб клиентами зашифрованы (на основе SSL). Установка Web Application Proxy не поддерживается в том же самом сервере, что и AD FS. Он не обладает встроенными возможностями балансировки нагрузки. Если необходима балансировка нагрузки, её можно выполнить при помощи любого поддерживаемого балансировщика нагрузок на программной основе или в аппаратной реализации.

База настроек AD FS

Настройки конфигурации AD FS необходимо сохранять в базе данных. AD FS поддерживает два типа баз данных. Самый простой метод состоит в применении Windows Internal Database (WID), которая поставляется вместе с установкой AD FS. Это не обособленная установка базы данных и имеется возможность предоставления высокой доступности путём копирования баз данных в другие серверы из имеющейся фермы AD FS. Когда мы доходим до настроек AD FS, нам выдаются два варианта развёртывания:

  • Создайте свой первый федеративный сервер в ферме федеративных серверов

  • Добавьте федеративный сервер в ферму федеративных серверов

Если WID применяется с первым вариантом, тогда WID будет развёрнут с масштабированием, которое позволит серверам позднее добавляться в общую фермы и реплицировать WID. Самый первый сервер из этой фермы будет первичным сервером и он будет размещать копию чтения/ записи своей базы данных.

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

AD FS способна хранить данные конфигурации в Microsoft SQL. Это расширяет показатели производительности имеющейся фермы AD FS, в особенности, когда имеет место бо́льшая обработка, поскольку она способна считывать и записывать данные быстрее. В отличии от WID, мы можем добавить в соответствующий экземпляр SQL высокую доступность применяя метод кластеризации SQL или метод Always On {Прим. пер.: подробнее в нашем переводе SQL Server 2016 с высокой доступностью... Поль Бертуччи, Pearson Education, Inc., 2018.}. Когда AD FS применяет MS SQL, тогда каждый сервер из фермы обладает доступом на чтение/ запись к своей базе данных. Это также делает возможным поддержку таких функциональных возможностей как разрешение артефактов SAML и выявление повторного воспроизведения маркера SAML/WS-Federation. Обе эти возможности требуют настроек, которые сохраняются в совместно используемой базе данных вместо WID.

Топологии развёртывания AD FS

Имеется несколько различных моделей развёртывания, которыми мы можем воспользоваться для развёртывания AD FS:

  1. Единственный федеративный сервер

  2. Единственный федеративный сервер и единственный сервер Web Application Proxy

  3. Множество федеративных серверов и множество серверов Web Application Proxy с сервером SQL

В этом разделе мы намерены рассмотреть эти различные топологии и их характеристики.

Единственный сервер федерализации

Это самая простая из доступных модель развёртывания AD FS. Она содержит единственный сервер AD FS. Она не обладает высокой доступностью (если только та имеется на уровне хоста).

Она идеальна для среды лаборатории или среды постановки:

 

Рисунок 14-3


Развёртывание единственного федеративного сервера

В нашем предыдущем примере у нас имелось веб приложение, myapp.rebeladmin.com, которому требуется разрешать доступ через AD FS. У нас имеется один сервер AD FS в установке с WID. Он пребывает за корпоративным межсетевым экраном, а также присутствует Network Address Translation (NAT, Трансляция сетевых адресов)и размещены правила доступа для выполнения следующего:

  • Устанавливается соответствие общедоступного IP адреса к myapp.rebeladmin.com, поэтому пользователи обладают возможностью начальных запросов из внешних сетей. Рекомендуется применять TCP 443.

  • Устанавливается соответствие общедоступного IP адреса к secure.rebeladmin.com, соответствие его IP адресу adfs1.rebeladmin.com и открытие TCP 443 из внешних сетевых сред на доступ к нему.

Наше приложение также должно обладать настроенными уместными внешними и внутренними записями DNS. Когда запрос поступает из внешней сетевой среды, он должен разрешить общедоступный IP адрес, а если запрос приходит из внутренней сетевой среды, DNS должен разрешать соответствующий внутренний IP адрес. Это также носит название расщепление сознания (split- brain) DNS.

Я рекомендую для такой настройки выполнять конфигурацию ваш сервер AD FS c Network Load Balancer (NLB) Windows. Это будет стоить вам всего лишь одного дополнительного IP адреса под IP кластера NLB, однако когда нам потребуется расширять свою ферму AD FS, всё что нам потребуется, это настроить другой сервер и добавить его к NLB. Значение IP кластера будет соответствовать общедоступному IP, и он будет применяться с некой внешней записью DNS для AD FS.

При данной установке Web Application Proxy не применялся:

Таблица 14-2. Единственный сервер федерализации
Преимущества Недостатки

Низкая стоимость реализации. Для AD FS требуется лишь один сервер и никаких лицензий SQL не применялось, поскольку использовался WID.

Отсутствует избыточность. Единственная точка отказа.

Простота в управлении.

Плохая производительность, поскольку не имеется способа совместного применения нагрузок.

Нет дополнительной интеграции роли службы, а следовательно меньше зависимостей.

Меньшая безопасность, поскольку невозможно ретранслировать запросы в ваш сервер AD FS и данный метод пользуется непосредственной точкой подключения для обработки запросов (отсутствует Web Application Proxy).

Всё ещё имеется возможность настройки расширений свойств и можно добавлять серверы в ферму AD FS когда пожелаете.

N/A

Единственный сервер федерализации и единственный сервер WAP

Это идеальная установка чтобы начать. Это устраняет проблемы безопасности, которые имелись у нас в случае единственного севера федерализации. Сервер- посредник (прокси) веб приложения будет начальной точкой подключения из внешней сети и будет передавать запросы во внутренний сервер AD FS и обратно.

Здесь всё ещё не предоставляется высокая доступность, поскольку каждый представитель роли обладает лишь одним экземпляром:

 

Рисунок 14-4


Развёртывание единственного федеративного сервера и WAP

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

  • Установить соответствие общедоступного IP адреса к myapp.rebeladmin.com, поэтому пользователи могут делать начальные запросы из внешних сетевых сред. Рекомендуется применять порт TCP 443.

  • Установить соответствие общедоступного IP адреса к secure.rebeladmin.com, выставить соответствие IP адреса сервера Web Application Proxy и открыть порт TCP 443 на разрешения доступа по нему.

  • Разрешить доступ от сервера Web Application Proxy к серверу AD FS по порту TCP 443.

В нашем предыдущем примере, после того как внешний пользователь выполняет доступ к URL приложения, он будет перенаправлен к серверу Web Application Proxy. Он не обязательно должен быть присоединённым к домену, поскольку он работает из сетевой среды периметра. Серверы посредники должны быть способны разрешать необходимые имена DNS для наших серверов AD FS из сетевой среды периметра. Это может быть выполнено при помощи сервера DNS или файла host.

Аналогично предыдущей модели, это может быть реализовано при помощи NLB (балансировки сетевой нагрузки) чтобы допустить будущее расширение с минимальным воздействием. Для этого нам необходимо два кластера NLB. Первый кластер NLB служит для Web Application Proxy, а второй кластер NLB служит для серверов AD FS. Единственное изменения состоят в соответствующих записях DNS и правилах межсетевого экрана. Вместо указания DNS и правил межсетевого экрана на соответствующие адреса IP, нам необходимо применять IP адреса кластера NLB:

Таблица 14-3. Единственные сервер федерализации и WAP
Преимущества Недостатки

Улучшенная безопасность, поскольку Web Application Proxy действует как промежуточный уровень между внешними пользователями и корпоративными сетевыми средами.

Отсутствует избыточность и имеются единственные точки отказа.

Базовая защита от DoS через дросселирование и построение очередей соединений.

Стоимость реализации высока по сравнению с моделью единственного сервера, поскольку добавляются дополнительные серверы.

Эта настройка поддерживает дальнейшие расширения. Она способна добавлять серверы в ферму AD FS и группу Web Application Proxy по мере необходимости.

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

Обе приведённые выше модели пользуются методом WID для своей базы данных AD FS. Однако когда речь заходит о высокой доступности, нам необходимо рассмотреть применение метод MS SQL в качестве множества серверов, способных записывать в базу данных конфигурации.

Множество серверов федерализации и множество серверов WAP с применением Сервера SQL

До сих пор мы рассматривали режимы, которые получают преимущества от простоты реализации и улучшения безопасности. Однако данная модель сосредоточена на высокой доступности. Каждая роль вудет настроена с кластерами NLB. База данных AD FS для целей высокой доступности будет размещена в среде кластера SQL Always On {Прим. пер.: подробнее в нашем переводе SQL Server 2016 с высокой доступностью... Поль Бертуччи, Pearson Education, Inc., 2018.}. Эта модель идеальна для Поставщика услуг (SP) и прочих систем ведения дел, которые работают с большими объёмами запросов AD FS.

[Замечание]Замечание

Кластер NLB это основанное на программном обеспечении решение балансировки нагрузки, которое поставляется с самой ОС сервера Microsoft Windows. Его просто реализовать без каких бы то ни было дополнительных лицензий. Однако аппаратное решение балансировки нагрузки предоставляет бо́льшую производительность и меньшие зависимости. {Прим. пер.: также см. наш перевод Книга рецептов NGINX Дерека ДеДжонге, O’Reilly Media Inc. (2019).}

Приводимая ниже схема предоставляет образец проекта для данной технологии:

 

Рисунок 14-5


Развёртывание множества федеративных серверов и множества серверов WAP

Аналогично нашей предыдущей модели, работа этой модели отчётливо делится на два сетевых сегмента: периметра и корпоративный. Межсетевой экран должен обладать правилами NAT и доступа для поддержки следующих требований:

  • Установить соответствие общедоступного IP адреса к myapp.rebeladmin.com, поэтому пользователи могут делать начальные запросы из внешних сетевых сред. Рекомендуется применять порт TCP 443.

  • Установить соответствие общедоступного IP адреса к secure.rebeladmin.com, выставить соответствие IP адреса к IP кластера NLB группы серверов Web Application Proxy и открыть порт TCP 443 на разрешения доступа по нему из внешних сетей.

  • Разрешить доступ от серверов Web Application Proxy к IP кластера NLB фермы серверов AD FS по порту TCP 443.

Для обоих кластеров NLB начальной точкой подключения будет IP соответствующего кластера NLB. Помимо внешнего URL самого приложения, единственным общедоступным URL будет URL Web Application Proxy. В нашем предыдущем примере для secure.rebeladmin.com установлено соответствие к IP NLB кластера Web Application Proxy.

Серверы AD FS применяют группу доступности Microsoft SQL Always On для размещения базы данных AD FS. Это база данных для чтения/ записи в обоих хостах.

[Замечание]Замечание

SQL Always On это решение с высокой доступностью, которое работает поверх кластера Windows. При помощи Azure Cloud Witness Windows Server 2022 поддерживает кластер из двух узлов. Это снижает общее число серверов, которое необходимо применять для настройки SQL Always On {Прим. пер.: подробнее о настройке SQL Always On в нашем переводе SQL Server 2016 с высокой доступностью... Поль Бертуччи, Pearson Education, Inc., 2018, про организацию Witness для кластера из двух серверов на площадке в нашем переводе Windows Server 2019 Полное руководство - 2е изд. Джордан Краузе, Packt Publishing, 2019.}

Таблица 14-4. Множество серверов федерализации и множество серверов WAP с применением Сервера SQL
Преимущества Недостатки

Высокая доступность: Каждый компонент размещён во множестве серверов с балансировкой нагрузки. База данных AD FS также пользуется высокой доступностью среды SQL.

Высокая стоимость: Требуется множество серверов и лицензий (ОС, SQL сервер). Здесь также увеличивается стоимость сопровождения.

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

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

Поддерживает такие функциональные возможности как разрешение артефактов SAML и выявления повторения маркеров SAML/ WS-Federation.

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

Мы просто прошлись по различным моделям развёртывания и взвесили их за и против. Наш следующий этап состоит в рассмотрении самого процесса настройки AD FS.

Развёртывание AD FS

В этом разделе мы намерены взглянуть на развёртывание AD FS при помощи модели с единственным федеративным сервером и единственным сервером Web Application Proxy. Прежде чем мы перейдём к настройкам, нам требуется отсортировать следующие предварительные требования:

  • Записи DNS

  • Сертификаты SSL

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

Записи DNS

Нам требуется обладать несколькими записями DNS (внутренними и внешними), настроенными перед записью и развёртыванием:

Таблица 14-5. Настройки DNS
Запись DNS Внешняя Внутренняя

URL приложения

Да

Да

URL WAP

Да

N/A

URL AD FS

N/A

Да

В этой демонстрационной среде мы воспользуемся следующими URL:

  • myapp.rebeladmin.com будет адресом приложения и он будет обладать созданной внешней записью DNS и поставленным в соответствие общедоступным IP адресом. Это будет NAT к IP адресу самого сервера приложения через межсетевой экран. Он также будет обладать значением внутренней записи DNS и указывать на внутренний IP адрес соответствующего сервера приложений.

  • secure.rebeladmin.com будет внешним URL WAP. Серверы WAP расположены в сетевой среде периметра. Нет необходимости обладать внутренней записью DNS, пока у вас нет множества серверов WAP.

  • adfs.rebeladmin.com будет записью DNS нашего сервера AD FS и нет необходимости в наличии внешней записи DNS. Тем не менее, серверы WAP должны взаимодействовать с серверами AD FS через порт TCP. Поскольку у нас имеется один сервер, нет никакого смысла развёртывать сервер DNS в сетевой среде периметра и это можно выполнить при помощи записи файла hosts.

Сертификаты SSL

Развёртывание AD FS нуждается в нескольких сертификатах SSL.

В своей демонстрации мы применим следующие:

  • *.rebeladmin.com: Это сертификат SSL с символом подстановки для внешних URL. Он применяется для самого приложения и для WAP.

  • rebeladmin.com: Этот SSL нужен для взаимодействия со службой AD FS.

[Замечание]Замечание

В своей лабораторной среде мы можем создать эти сертификаты при помощи внутреннего CA (Certifcation Authority, Центра сертификации). Когда имя домена одно и то же, тогда сертификаты с символом- заместителем применяются как для внутренней, так и для внешней сетей. Сертификаты с символом подстановки упрощают управление сертификатами.

Установка определённой роли AD FS

Перед установкой, в учётной записи компьютера должен быть установлен SSL сертификат для adfs.rebeladmin.com , поскольку он необходим в процессе установки AD FS. Это можно проверить при помощи такой команды:


dir Cert:\LocalMachine\My
		
[Замечание]Замечание

Сервер AD FS обязан быть сервером участником для нашего домена и должен регистрироваться в качестве Администратора домена или Корпоративного администратора для осуществления установки.

Наш следующий шаг состоит в установке службы роли AD FS, что можно выполнить при помощи приводимой ниже команды PowerShell:


Install-WindowsFeature ADFS-Federation -IncludeManagementTools
		

Следующий далее снимок экрана отображает вывод нашей предыдущей команды:

 

Рисунок 14-6


Установка роли AD FS

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


Import-Module ADFS
$credentials = Get-Credential
Install-AdfsFarm `
-CertificateThumbprint:"938E369FA88B2F884A5BBC495F2338BE9FA0E0BB" `
-FederationServiceDisplayName:"REBELADMIN INC" `
-FederationServiceName:"adfs.rebeladmin.com" `
-ServiceAccountCredential $credentials
		

В данной установке мы пользуемся для AD FS WID, поэтому нам нет нужды настраивать SQL. В приведённой выше команде CertificateThumbprint определяет необходимый сертификат SSL (adfs.rebeladmin.com), а FederationServiceDisplayName задаёт отображаемое название нашей службы федерализации. FederationServiceName это название самой службы, и оно должно соответствовать применяемому нами SSL. ServiceAccountCredential применяется для определения подробностей учётной записи службы под установку AD FS. По окончанию необходимо выполнить перезапуск системы для применения этой конфигурации:

 

Рисунок 14-7


Настройка роли AD FS

[Замечание]Замечание

Полученная ошибка относительно значения альтернативного имени SSL, certauth.adfs.rebeladmin.com, относится к аутентификации сертификата. Вплоть до Windows Server 201, именно в этом состояла проблема, по которой ваша система не поддерживала различные привязки для аутентификации сертификата и аутентификации устройства в одном и том же хосте. Порт по умолчанию 443 применялся для аутентификации устройства и не мог обладать множеством привязок по одному и тому же каналу.

В Windows Server 2016/2016/2019/2022 это возможно и теперь поддерживаются оба метода. Первым вариантом является применение того же самого хоста (adfs.rebeladmin.com) с различными портами (443 и 49443). Второй вариант состоит в использовании различных хостов (adfs.rebeladmin.com и certauth.adfs.rebeladmin.com) с одним и тем же портом (443). Это требует чтобы сертификат SSL для поддержки certauth.adfs.rebeladmin.com в качестве альтернативного имени субъекта.

После завершения перезапуска мы можем проверить была ли успешной установка, воспользовавшись следующей командой:


Get-WinEvent "AD FS/Admin" | Where-Object {$_.ID -eq "100"} | fl
		

Она выдаст на печать содержимое события 100, которое и подтверждает успешность установки AD FS.

Установка WAP

Наш следующий этап конфигурации заключается в установке WAP. Он не обязан быть присоединённым к домену сервером и обязан размещаться в сетевой среде периметра. Перед самим процессом установки настроим необходимые сертификаты. В моей демонстрации это касается *.rebeladmin.com. Мы можем проверить их при помощи следующего:


dir Cert:\LocalMachine\My
		

Прежде чем продолжить, нам также требуется проверить способен ли сервер разрешать adfs.rebeladmin.com в качестве WAP, необходимого для подключения AD FS.

После того как всё подтверждено, мы можем установить роль WAP:


Install-WindowsFeature Web-Application-Proxy -IncludeManagementTools
		

По завершению мы можем продолжить с настройкой воспользовавшись следующим:


$credentials = Get-Credential
Install-WebApplicationProxy
-FederationServiceName "adfs.rebeladmin.com"
-FederationServiceTrustCredential $credentials
-CertificateThumbprint "3E0ED21E43BEB1E44AD9C252A92AD5AFB8E5722E"
		

В нашей предыдущей команде FederationServiceName применяется для определения имени службы AD FS и оно должно соответствовать тому названию, которое предоставлено при установке AD FS FederationServiceTrustCredential применяется для предоставления учётной записи, которая обладает авторизацией для регистрации нашего нового сервера посредника в AD FS. Та учётная запись, что применяется здесь, должна обладать полномочиями управления AD FS.

Параметр CertificateThumbprint применяется для определения необходимого WAP сертификата. В нашей демонстрации это сертификат *.rebeladmin.com. В самом конце настройки нам необходимо перезапустить свою систему для применения изменений.

По завершению перезапуска мы можем подтвердить жизнеспособность своей конфигурации, воспользовавшись приводимым ниже событием из журнала в своём сервере AD FS:


Get-WinEvent "AD FS/Admin" | Where-Object {$_.ID -eq "396"} | fl
		

Настройка осведомлённого о заявке клиента с новыми серверами федерализации

В самом начале данной главы я пояснял , что не все приложения могут для авторизации применять AD FS. Это должно быть приложение, способное применять заявки. У меня имеется приложение с названием myapp.rebeladmin.com, которое уже установлено. При его настройке я установил его на применение имеющейся STS и добавил метаданные URL своего нового сервера AD FS, а именно, https://adfs.rebeladmin.com/federationmetadata/2007-06/federationmetadata.xml.

[Замечание]Замечание

Если установка успешна, AD FS установит это XML метаданных и вы должны иметь возможность просматривать их при помощи своего веб браузера. Если они не загружаются, вам необходимо проверить всё до данного шага.

После того как это приложение настроено, когда я перейду к своему приложению , а именно, https://myapp.rebeladmin.com/myapp (в внутренней сети), я смогу обнаружить приводимую ниже ошибку. Она обусловлена тем, что что настройка AD FS, ожидаемо, не знает пока о моём приложении:

 

Рисунок 14-8


Страница регистрации AD FS

Создание доверительной проверяющей стороны

Чтобы заставить наше приложение работать, нам потребуется создать доверие проверяющей стороны между нашим приложением и настройкой AD FS. Далее лишь настройка AD FS будет информирована о данном приложении.

Для этого выполним следующие шаги:

  1. Зарегистрируемся в сервере AD FS в качестве администратора.

  2. Проследуем в Server Manager | Tools | AD FS Management.

  3. Перейдём к Relying Party Trusts (1) и затем кликнем Add Relying Party Trust... (2):

     

    Рисунок 14-9


    Добавляем доверие проверяющей части

  4. Наша система откроет мастера Add Relay Party Trust (Добавления доверия проверяющей части). Выберите Claims Aware и кликните Start.

  5. На странице Select Data Source выберите Import data about the relying party published online or on a local network и введите URL метаданных для своего приложения. Для своего приложения я создал файл метаданных с https://myapp.rebeladmin.com/myapp/federationmetadata/2007-06/federationmetadata.xml:

     

    Рисунок 14-10


    Настройка доверия проверяющей части

    [Замечание]Замечание

    После того как мы установим доверие, нам необходимо предоставить определённые сведения для соответствия имеющейся конфигурации Поставщика услуг (SP) приложения. Это достаточно головоломно, ибо даже небольшая ошибка способна вызывать проблемы. Кроме того, если такие настройки изменяются на стороне Поставщика услуг, мы не будем знать об этом пока он не проинформирует нас о том, каковы изменения на стороне AD FS. По этой причине Поставщики услуг применяют файлы XML метаданных для публикации таких необходимых настроек. Уто упрощает процесс настройки. Когда у нас нет файла метаданных, мы всё ещё имеем возможность создания необходимого доверия при помощи необходимых индивидуальных настроек.

  6. На следующей странице перейдите к Specify Display Name для заявки и кликните Next.

  7. На странице Choose an access control policy выберите Permit Everyone и кликните Next. Это новая функциональная возможность AD FS 2016/2019/2022, и она позволяет нам запросто создавать политики доступа. Также имеется возможность добавлять политики доступа потребителей. В данной демонстрации я не намерен применять никакой MFA, поскольку это лаборатория для проверки:

     

    Рисунок 14-11


    Доступ доверия проверяющей части к политике управления

  8. В своём следующем окне мы можем просмотреть все установки и кликнуть Next для продолжения.

  9. На странице Finish не забудьте проверить Confgure claims issuance policy for this application и кликните по Close:

     

    Рисунок 14-12


    Завершение мастера доверия проверяющей части

  10. Откроется окно Edit Claim Issuance policy. Если это не так, кликните по Edit Claim Issuance policy в панели action. После открытия необходимого окна кликните по кнопке Add Rule.

  11. Из Add Transform Claim Rule Wizard выберите Send Claims Using a Custom Rule и кликните по Next.

  12. На следующей странице наберите имя для своего правила потребителя и введите соответствующее правило заявки. Это правило заявки зависит от требований вашего приложения. Большинство производителей приложений определяют какое именно правило заявок вам надлежит иметь. По завершению кликните по Finish.

  13. По завершению, для выхода из мастера кликните OK.

Настройка WAP

Теперь у нас имеется настроенное при помощи AD FS приложение. Однако наше требование состоит в применении Web Application Proxy для публикации своего приложения в общий доступ.

Для этого зарегистрируемся в своём сервере Web Application Proxy в качестве администратора и выполним такую команду:


Add-WebApplicationProxyApplication
-BackendServerUrl 'https://myapp.rebeladmin.com/myapp/'
-ExternalCertificateThumbprint
'3E0ED21E43BEB1E44AD9C252A92AD5AFB8E5722E'
-ExternalUrl 'https://myapp.rebeladmin.com/myapp/'
-Name 'MyApp'
-ExternalPreAuthentication AD FS
-ADFSRelyingPartyName 'myapp.rebeladmin.com'
		

В нашей предыдущей команде ExternalUrl определяет значение внешнего URL для нашего приложения. BackendServerUrl определяет для этого приложения значение внутреннего URL. ExternalCertificateThumbprint это сертификат для его применения во внешних сетях. Параметр Name определяет имя потребителя для данного прикладного приложения, которое будет отображаться на странице proxy. ExternalPreAuthentication определяет сам режим аутентификации. В своей установке мы пользуемся режимом AD FS. также поддерживается режим pass-through. ADFSRelyingPartyName определяет имя проверяющей доверие AD FS стороны, которое будет применяться для этого приложения.

[Замечание]Замечание

Web Application Proxy способен транслировать имена хостов, применяемые во внешних URL и в URL серверов. Однако, он не способен транслировать пути.

После того как всё выполнено, когда мы выполняем доступ к своему приложению с внешнего URL https://myapp.rebeladmin.com/myapp/, он успешно переправляется посредником к AD FS и, после успешной аутентификации отображается страница самого приложения:

 

Рисунок 14-13


Доступ к приложению

Интеграция с Azure MFA

MFA (многофакторная авторизация) это сегодня распространённое требование для Интернет служб, которые могут быть для любых размещаемых в организациях решений, таких как Citrix, RDS и прочих веб приложениях. MFA к тому же применяется в гибридных средах для предоставления одного и того же уровня защиты на площадках и в облачном решении.

На рынке существует множество поставщиков услуг MFA. Некоторые из них являются решениями для площадки, в которых мы можем устанавливать некий прибор и применять услугу MFA. Другие это поставщики облачных решений и они продают MFA в качестве подписок. Потребители могут просто устанавливать некого агента на площадке и подключать его к таким облачным решениям. Azure MFA первым предложил применение служб Azure и последующих улучшений также и для поддержки защиты рабочих нагрузок на площадке. Для аутентификации пользователи могут применять SMS, телефон или PIN в приложении Microsoft Authenticator. Большинство Поставщиков услуг (SP) MFA имеют отдельного агента, которого необходимо устанавливать в ваших серверах AD FSчтобы подключаться к таким службам MFA.

Интеграция Azure MFA была осуществлена в средах Windows Server 2012 R2. Она нуждается в агенте, а также в сервере Azure MFA на площадке. Со средой интеграции AD FS 2016/2019/2022 Azure MFA произошли большие изменения. В AD FS 2016/2019/2022 нам больше нет нужды устанавливать эти компоненты. Для активной доставки необходимой конфигурации адаптер AD FS Azure допускает интеграцию с Azure AD. В этом разделе мы намерены рассмотреть то как мы можем осуществлять интеграцию своей настройки AD FS с Azure MFA.

 

Предварительные требования

Для настройки Azure MFA нам необходимы следующие моменты:

  • Действующая подписка Azure.

  • Полномочия Azure Global Administrator.

  • Установка Azure AD с федерализацией. Azure AD необходимо интегрировать с AD FS на площадке и синхронизировать идентификацию с Azure. Это поясняется позднее в данной главе.

  • Windows Server 2022 AD FS в вашей локальной инфраструктуре.

  • Для настройки MFA полномочия Корпоративного администратора в серверах AD FS.

  • Azure MFA должна быть включена. Те пользователи, которые синхронизируются из AD на площадке, должны обладать включённой MFA. Об этом я ранее написал статью и вы можете получить к ней доступ по https://bit.ly/3kZSTIc.

  • Модуль Windows Azure AD для PowerShell Windows в серверах AD FS. Его можно выгрузить с https://bit.ly/3l43zFG.

 

Создание сертификата на ферме AD FS для соединения с Azure MFA

Сначала нам нужно создать сертификат, который будет применяться с вашей фермой AD FS. Это необходимо выполнить из своего сервера AD FS:


$certbase64 = New-AdfsAzureMfaTenantCertificate -TenantID 05c6f80c-61d9-44df-bd2d-4414a983c1d4
		

Наша предыдущая команда сгенерирует новый сертификат. TenantID это значение идентификатора имеющейся у вас в Azure подписки. Его можно обнаружить выполнив это:


Login-AzureRmAccount
		

Наша предыдущая команда запросит полномочия для Azure и когда мы их предоставим, она перечислит TenantID:

 

Рисунок 14-14


TenantID Azure

Это создаст сертификат в Certifcates (Local Computer)):

 

Рисунок 14-15


Новый сертификат

 

Разрешение подключения серверов AD FS с клиентом Azure MFA

Теперь у нас имеется необходимый сертификат, однако нам следует сообщить клиенту Azure MFA о необходимости применять его в качестве полномочий для соединения с AD FS.

Перед этим нам следует подключиться к Azure AD при помощи PowerShell Azure. Мы можем сделать это, воспользовавшись такой командой:


Connect-MsolService
		

Затем мы получаем приглашение для вашей регистрации и применяем для подключения вашу учётную запись Azure Global Administrator.

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


New-MsolServicePrincipalCredential -AppPrincipalId 981f26a1-7f43-403b-a875-f8b09b8cd720 -Type asymmetric -Usage verify -Value $certbase64
		

В нашей предыдущей команде, AppPrincipalId определяет Globally Unique Identifer (GUID) для нашего клиента Azure MFA.

 

Разрешение определённой ферме AD FS применения Azure MFA

Наш следующий шаг конфигурации заключается в разрешении своей ферме AD FS применять Azure MFA. Это можно выполнить применив такую команду:


Set-AdfsAzureMfaTenant -TenantId 05c6f80c-61d9-44df-bd2d-4414a983c1d4 -ClientId 981f26a1-7f43-403b-a875-f8b09b8cd720
		

В приводимой выше команде TenantId ссылается на идентификатор арендатора Azure, а ClientId представляет клиента Azure MFA.

После успешного выполнения этой команды нам требуется перезапуск своей службы AD FS в каждом из серверов нашей фермы:

 

Рисунок 14-16


Включение Azure MFA для AD FS

 

Разрешение Azure MFA для аутентификации

Наш последний шаг конфигурации состоит во включении Azure MFA глобально для нашего сервера AD FS.

Для этого зарегистрируйтесь в сервере AD FS в качестве Корпоративного администратора. Затем перейдите к Server Manager | Tools | AD FS Management.

Затем, в полученной консоли, перейдите к Service | Authentication Methods. Далее, из панели Actions, кликните по Edit Primary Authentication Method:

 

Рисунок 14-17


Методы аутентификации AD FS

Это откроет окно для конфигурации методов глобальной аутентификации. Для этого имеются две вкладки, причём из Azure MFA вы наблюдаем обе. Когда Azure MFA применяется в качестве первичного метода посредством удаления прочих вариантов, тогда AD FS не будет запрашивать регистрации и будет применять MFA в качестве единственного метода аутентификации.

Границы его операций могут быть установлены для внутренней сети или для внешней сети:

 

Рисунок 14-18


Первичные методы аутентификации AD FS

Другой вариант для выбора MFA в качестве вторичного метода аутентификации:

 

Рисунок 14-19


Дополнительные методы аутентификации AD FS

Это завершает интеграцию Azure MFA и пользователи могут применить MFA на основе выбранных в нашем предыдущем мастере вариантов.

Федерализация AD Azure при помощи AD FS

Azure AD поддерживает различные методы интеграции с Active Directory на площадке. Мы можем настраивать федерализацию между AD FD на площадке и Azure AD для разрешения интеграции между двумя системами. При выполненном размещении федерализации пользователи способны регистрироваться в Azure AD при помощи имени и пароля пользователя Active Directory площадки. Данный метод обеспечивает прохождение аутентификации на площадке. Для настройки необходимой федерализации мы можем применять Azure AD Connect. На протяжении процесса настройки мы можем либо развернуть ноый AD FS сервер/ ферму или настроить имеющиеся серверы AD FS. В этом разделе я намерен продемонстрировать как мы можем настроить подпись федерализации между AD FS и Azure AD. Прежде чем мы перейдём к этому, важно разобраться как в точности работает метод федеративной регистрации.

Федеративная регистрация при помощи AD Azure

 

Рисунок 14-20


Как работает AD FS федерализация с Azure AD

Rebeladmin Inc. обладает федерализацией между Azure AD и AD FS площадки. Наш пользователь Марк предпринимает попытку подписки доступа к порталу Office 365 при помощи своего браузера. Давайте рассмотрим как работают аутентификация и авторизация при помощи федеративной регистрации:

  1. Марк открывает свой браузер и набирает office.com для доступа к порталу Office 365.

  2. Office 365 обладает доверительными отношениями с Azure AD. По этой причине, Office 365 отправляет запрос аутентификации к Azure AD через браузер Марка. Марк может наблюдать в своём браузере страницу регистрации Azure AD. Он следует далее и вводит своё имя, mark@rebeladmin.com и кликает по Next. Azure AD пользуется @rebeladmin.com в качестве подсказки и проверяет её настройки чтобы убедиться что rebeladmin.com это федеративный домен. В данном случае rebeladmin.com это федеративный домен и Azure AD знает куда отправлять запрос на регистрацию. Этот процесс также носит название Home Realm Discovery (Обнаружения домашней области).

  3. Azure AD отправляет запрос sign-in (регистрации) к своему серверу AD FS площадки через браузер Марка.

  4. Марк осуществляет процесс аутентификации при помощи AD FS (на основе форм или Kerberos) применяя его имя и пароль Active Directory. По окончанию успешной аутентификации AD FS отвечает на исходный запрос регистрации маркером Azure AD. Он носит название token A. Этот маркер представляет нашего пользователя. Поскольку rebeladmin.com федеративен, Azure AD способен удостоверить собственно аутентичность этого маркера проверкой его подписи.

  5. Azure AD откликается на запрос регистрации, полученный от портала Office 365 с новым маркером. Давайте именовать его token B. Office 365 обладает доверительными отношениями с Azure AD, поэтому он также способен удостоверить подпись этого маркера. После такого процесса валидации, Марк будет обладать доступом к порталу Office 365. Важно понимать, что нет никакой взаимосвязи между token A и token B. Оба маркера применяются разными системами на разных этапах процесса регистрации федерализации.

В своём следующем разделе я намерен продемонстрировать как создавать федеральные доверительные отношения между AD FS и Azure AD.

Создание доверительных отношений между AD Azure и AD FS

Приводимая ниже схема поясняет планируемую настройку демонстрации для данного упражнения.

 

Рисунок 14-21


Планируемая настройка демонстрации

В данной среде демонстрации у меня уже имеется поднятый и работающий контроллер домена Active Directory (PDC01.rebeladmin.com). Здесь в качестве имени домена Active Directory используется rebeladmin.com.

  1. Этот контроллер домена также будет применяться для Azure AD Connect.

  2. В список персональных доменов Azure AD я добавил свой домен rebeladmin.com и уже выполнил необходимый процесс проверки.

     

    Рисунок 14-22


    Состояние персонального домена Azure AD

    В данной демонстрации мы намерены воспользоваться единственным сервером AD FS (ADFSSRV01.rebeladmin.com). Мы не будем применять web application proxy (WAP).


  3. Имя нашей федеративной службы устанавливается в adfs.rebeladmin.com и оно соотносится с установленными общедоступными записями DNS и правилами межсетевого экрана для разрешения доступа к HTTPS (443) в этом сервере из Интернета.

  4. Я применяю подтверждённый сертификат SSL с символом замещения, а именно *.rebeladmin.com, выпущенный для AD FS.

В разделе Развёртывание AD FS из этой главы мы уже демонстрировали как настраивать свою службу AD FS, а потому мы не хотим повторять её здесь. У нас уже имеется настроенной в ADFSSRV01.rebeladmin.com AD FS.

Воспользовавшись Get-AdfsProperties, мы можем просмотреть текущую конфигурацию своего сервера AD FS.

 

Рисунок 14-23


Имеющаяся конфигурация AD FS

Что касается приведённого выше снимка экрана, мы можем наблюдать свой сервер настроенным с именем службы adfs.rebeladmin.com. Я также разрешаю страницу регистрации AD FS для целей тестирования, применяя Set-AdfsProperties -EnableIdpInitiatedSignonPage $true.

После этого, я имею возможность доступа через Интернет к своей странице регистрации adfs.rebeladmin.com и проверить регистрацию, воспользовавшись учётной записью своего пользователя домена.

 

Рисунок 14-24


Инициированная страница регистрации

Наш следующий этап настройки состоит в конфигурации Azure AD Connect для федерализации.

Настройка соединения AD Azure

В данной демонстрационной настройке я намерен установить в PDC01.rebeladmin.com Azure AD Connect. Для этого:

  1. Регистрируемся в ВМ в качестве Администратора домена.

  2. Выгружаем самую последнюю версию файла Azure AD Connect. Затем выполняем двойной клик по AzureADConnect.msi.

  3. Это откроет новый мастер. На странице Express Settings кликните по Customize.

     

    Рисунок 14-25


    Инициированная страница регистрации

  4. В экране Install required components кликните по кнопке Install.

  5. Это установит Azure AD Connect.

  6. После этой установки на странице регистрации выберите Federation with AD FS и кликните Next.

     

    Рисунок 14-26


    Выбор метода регистрации пользователя

  7. На следующей странице предоставьте имя пользователя Azure Global Administrator для подключения к Azure AD.

  8. На странице Connect your directories кликните кнопку Add Directory для создания учётной записи новой службы и добавьте в свою конфигурацию имеющийся домен. После размещения этой установки для продолжения кликните Next.

  9. На экране настройки регистрации Azure AD я наблюдаю rebeladmin.com уже перечисленным в качестве проверенного домена. Поэтому нет никакой нужды выполнять никаких изменений. Для продолжения кликните Next.

  10. На страницах Domain and OU fltering, Identifying users, Filtering и Optional Features я применяю значения по умолчанию.

  11. Затем, на странице Credentials, нам необходимо предоставить подробности учётной записи администратора домена и кликнуть Next.

  12. На странице AD FS farm воспользуйтесь вариантом Use an existing AD FS farm и затем выберите свой текущий сервер AD FS. После размещения необходимых сведений, кликните по Next.

     

    Рисунок 14-27


    Настройка фермы AD FS

  13. На странице Azure AD domain я выбрал rebeladmin.com в качестве домена для федерализации и для продолжения кликните по Next.

     

    Рисунок 14-28


    Выбор домена для федерализации

  14. Затем, в экране Ready to configure, кликните по кнопке Install.

  15. Это запустит процесс настройки и он может занять несколько минут для завершения.

  16. По завершению настройки покиньте свой мастер и разрешите процессу синхронизации для завершения начальной сертификации.

  17. Следующая страница настройки служит для тестирования того, чтобы удостовериться в настройке федерализации.

Проверка

Мы можем приступить к процессу проверки подтверждения состояния настройки Azure AD Connect. Для этого:

  1. Зарегистрируйтесь в портале Azure от имени Global Administrator.

  2. Затем проследуйте в Azure Active Directory | Azure AD Connect. Потом кликните по Federation из раздела user-sign in. Здесь мы можем наблюдать, что rebeladmin.com распознаётся как федеративный домен.

     

    Рисунок 14-29


    rebeladmin.com распознаётся как федеративный домен

Теперь нам требуется проверить свой процесс регистрации. Для выполнения этого:

  1. Проследуйте в https://office.com.

  2. Затем в качестве имени пользователя введите usera@rebeladmin.com. Эта учётная запись выполнила синхронизацию в Azure AD из Active Directory площадки.

     

    Рисунок 14-30


    Страница регистрации пользователя Azure AD

  3. Когда я кликаю по Next, как ожидалось, я был перенаправлен к странице формы регистрации AD FS. Здесь я ввёл необходимые имя пользователя и пароль и кликаю по кнопке Sign in.

     

    Рисунок 14-31


    Пользователь перенаправляется в форму регистрации пользователя AD FS

    [Замечание]Замечание

    Тот способ, которым выполняет аутентификацию пользователь, зависит от выбранного метода аутентификации AD FS. В данной настройке аутентификации и для внешней, и для внутренней сетевых сред, я пользуюсь только Forms Authentication.

  4. После успешной регистрации, как и ожидалось, я был перенаправлен на домашнюю страницу Office.com.

     

    Рисунок 14-32


    Доступ пользователя к порталу Office 365

Как мы можем видеть здесь, федерализация Azure AD с AD FS работает как положено. Это отмечает конец нашего процесса настройки, а также и всей главы.

Выводы

Мы начали главу с изучения имеющихся характеристик каждой из версий AD FS. Это позволяет нам планировать обновления версий и получать преимущества от новых функциональных возможностей. Топологии развёртывания AD FS изменяются в соответствии с требованиями бизнеса.

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

MFA выступает базовым требованием безопасности для публично доступных веб служб. Azure MFA вначале была введена для предоставления многофакторной защиты для служб Azure и впоследствии доработана на поддержку защиты рабочих нагрузок площадок. Вплоть до AD FS 2016/ 2019/ 2022 реализация Azure MFA для AD FS была сложным процессом. AD FS 2016/ 2019/ 2022 теперь обладает встроенной поддержкой интеграции Azure MFA. Ближе к концу этой главы мы изучили как успешно выполнить интеграцию AD FS 2022 с Azure MFA.

И последнее, но не в отношении значимости, мы изучили как включать федерализацию между Azure AD и AD FS площадки.

В своей следующей главе мы рассмотрим другую службу роли AD, Active Directory Rights Management Service (AD RMS), которую можно применять для защиты чувствительных данных в инфраструктуре.