Интеграция удостоверения AD FS с центром обработки данных Azure Stack Hub

Вы можете развернуть Azure Stack Hub, используя Microsoft Entra ID или службы федерации Active Directory (AD FS) в качестве провайдера удостоверений. Перед развертыванием Azure Stack Hub необходимо сделать выбор. В подключенном сценарии можно выбрать идентификатор Microsoft Entra или AD FS. В сценарии без подключения поддерживается только AD FS. В этой статье показано, как интегрировать AD FS Azure Stack Hub с вашей AD FS в ЦОД.

Внимание

Вы не сможете изменить поставщик удостоверений без повторного развертывания всего решения Azure Stack Hub.

Службы федерации Active Directory и Microsoft Graph

Развертывание с AD FS позволяет удостоверениям в существующем лесу Active Directory проходить аутентификацию с ресурсами в Azure Stack Hub. Этот существующий лес Active Directory требует развертывания AD FS, чтобы можно было создать отношения доверия с федерацией AD FS.

Аутентификация является одной из составляющих идентификации. Для управления доступом на основе ролей (RBAC) в Azure Stack Hub необходимо настроить компонент Graph. При делегировании доступа к ресурсу компонент Graph ищет учетную запись пользователя в существующем лесу Active Directory, используя протокол LDAP.

Архитектура AD FS в Azure Stack Hub

Существующая служба AD FS — это служба выпуска токенов безопасности для учетных записей (STS), которая отправляет утверждения в службу AD FS для Azure Stack Hub (ресурсная STS). В Azure Stack Hub автоматизация создаёт доверие к поставщику утверждений с помощью конечной точки метаданных для существующего AD FS.

В существующем AD FS должны быть настроены отношения доверия с доверяющей стороной. Этот шаг не выполняется службой автоматизации и должен быть настроен оператором. Конечную точку с виртуальным IP-адресом Azure Stack Hub для AD FS можно создать по образцу https://adfs.<Region>.<ExternalFQDN>/.

Конфигурация отношений доверия с проверяющей стороной также требует настройки правил преобразования утверждений, которые предоставляются корпорацией Майкрософт.

Для конфигурации Graph необходимо указать учетную запись службы с разрешением на чтение в существующем Active Directory. Эта учетная запись необходима в качестве входных данных службе автоматизации для реализации сценариев RBAC.

Для выполнения последнего шага для подписки поставщика по умолчанию настраивается новый владелец. Эта учетная запись получает полный доступ ко всем ресурсам после входа на портал администрирования Azure Stack Hub.

Требования:

Компонент Требование
График Microsoft Active Directory 2012, 2012 R2, 2016 и 2019
AD FS Windows Server 2012, 2012 R2, 2016 и 2019

Настройка интеграции Graph

Graph поддерживает только интеграцию с одиночным лесом Active Directory. Если существует несколько лесов, для получения пользователей и групп используется только лес, указанный в конфигурации.

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

Параметр Параметр листа сведений о развертывании Описание Пример
CustomADGlobalCatalog Полное доменное имя леса AD FS Полное доменное имя целевого леса Active Directory, с которым требуется интегрировать. Contoso.com
CustomADAdminCredentials Пользователь с разрешением на чтение LDAP. Graphservice

Настройка сайтов Active Directory

В случае развертывания Active Directory с несколькими сайтами настройте сайт Active Directory, который находится ближе всего к вашему развертыванию Azure Stack Hub. Такая конфигурация позволяет избежать необходимости в разрешении запросов службой Graph в Azure Stack Hub через сервер глобального каталога на удаленном сайте.

Добавьте подсеть Public VIP (Общедоступная сеть VIP) Azure Stack Hub в объект Active Directory, который находится ближе всего к Azure Stack Hub. Например, в Active Directory есть два сайта: Сиэтл и Редмонд. Если Azure Stack Hub развернут на сайте Сиэтла, добавьте подсеть общедоступной виртуальной сети Azure Stack Hub на сайт Active Directory для Сиэтла.

Дополнительные сведения о сайтах Active Directory см. в разделе "Проектирование топологии сайта".

Примечание.

Если Active Directory состоит из одного сайта, этот шаг можно пропустить. Если у вас настроена подсеть catch-all, убедитесь, что подсеть общедоступной виртуальной виртуальной виртуальной сети Azure Stack Hub не входит в нее.

Создание учетной записи пользователя в существующей службе Active Directory (необязательно)

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

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

    • Имя пользователя: graphservice.
    • Пароль: используйте надежный пароль и настройте пароль, чтобы он никогда не истекал.

    Никаких специальных разрешений или членства не требуется.

Запустить автоматизацию для настройки графа

Для выполнения этой процедуры используйте компьютер в сети центра обработки данных, который может взаимодействовать с привилегированной конечной точкой в Azure Stack Hub.

  1. Откройте сеанс Windows PowerShell с повышенными правами (запуск от имени администратора) и подключитесь к IP-адресу привилегированной конечной точки. Используйте учетные данные CloudAdmin для проверки подлинности.

    $creds = Get-Credential
    $pep = New-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
    
  2. Теперь, когда у вас есть сеанс с привилегированной конечной точкой, выполните следующую команду:

     $i = @(
            [pscustomobject]@{ 
                      CustomADGlobalCatalog="fabrikam.com"
                      CustomADAdminCredential= Get-Credential -Message "Do not include the domain name of the graphservice account in the username."
                      SkipRootDomainValidation = $false 
                      ValidateParameters = $true
                    }) 
    
     Invoke-Command -Session $pep -ScriptBlock {Register-DirectoryService -customCatalog $using:i} 
    

    При появлении запроса укажите данные учетной записи пользователя, которую требуется использовать для службы Graph (например, graphservice). Входные данные для командлета Register-DirectoryService должны быть именем леса или корневым доменом в лесу, а не любым другим доменом в лесу.

    Внимание

    Дождитесь всплывающего окна учетных данных (Get-Credential не поддерживается в привилегированной конечной точке) и введите учетные данные учетной записи службы Graph.

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

    Параметр Описание
    SkipRootDomainValidation Указывает, что вместо рекомендуемого корневого домена следует использовать дочерний домен.
    ValidateParameters Пропускает все проверки на валидацию.

Протоколы и порты Graph

Служба Graph в Azure Stack Hub использует следующие протоколы и порты для взаимодействия с сервером глобального каталога (GC) и центром распространения ключей (KDC), которые могут обрабатывать запросы на вход в целевом лесу Active Directory.

Служба Graph в Azure Stack Hub использует следующие протоколы и порты для взаимодействия с целевой службой Active Directory:

Тип Порт Протокол
LDAP 389 TCP или UDP
LDAP (SSL) 636 Протокол tcp
LDAP GC 3268 Протокол tcp
LDAP GC SSL 3269 Протокол tcp

Настройка интеграции AD FS путем скачивания метаданных федерации

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

Параметр Параметр листа развертывания Описание Пример
CustomAdfsName Имя поставщика AD FS Имя поставщика утверждений.
Так оно отображается на целевой странице AD FS.
Контосо
CustomAD
FSFederationMetadataEndpointUri
URI метаданных AD FS Ссылка на метаданные федерации. https://ad01.contoso.com/federationmetadata/2007-06/federationmetadata.xml
Проверка Отзыва Сертификата Подписи Неприменимо Необязательный параметр для пропуска проверки списка отзыва сертификатов. нет

Активация автоматизации для настройки доверия поставщика утверждений в Azure Stack Hub (загрузив метаданные федерации)

Для выполнения этой процедуры используйте компьютер, который может взаимодействовать с привилегированной конечной точкой в Azure Stack Hub. Ожидается, что сертификат, используемый для учетной записи STS AD FS, доверяется Azure Stack Hub.

  1. Откройте сеанс Windows PowerShell с повышенными правами и подключитесь к привилегированной конечной точке.

    $creds = Get-Credential
    Enter-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
    
  2. Подключившись к привилегированной конечной точке, выполните следующую команду, указав параметры, подходящие для используемой среды.

    Register-CustomAdfs -CustomAdfsName Contoso -CustomADFSFederationMetadataEndpointUri "https://ad01.contoso.com/federationmetadata/2007-06/federationmetadata.xml"
    
  3. Выполните следующую команду, чтобы изменить владельца подписки поставщика по умолчанию, указав актуальные параметры для используемой среды.

    Set-ServiceAdminOwner -ServiceAdminOwnerUpn "administrator@contoso.com"
    

Настройка интеграции AD FS путем предоставления файла метаданных федерации

Начиная с версии 1807, используйте этот метод, если выполняется какое-либо из следующих условий:

  • Цепочка сертификатов для AD FS отличается по сравнению с другими конечными точками в Azure Stack Hub.
  • Нет сетевого подключения между экземпляром AD FS Azure Stack Hub и существующим сервером AD FS.

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

Параметр Описание Пример
CustomAdfsName Имя поставщика утверждений. Так оно отображается на целевой странице AD FS. Контосо
Настраиваемое содержимое файла метаданных федерации ADFS Содержимое метаданных. $using:federationMetadataFileContent

Создание файла метаданных федерации

Для выполнения следующей процедуры необходимо использовать компьютер с сетевым подключением к текущему развертыванию AD FS, которое становится службой безопасности токенов учетной записи (STS). Кроме того, нужно установить необходимые сертификаты.

  1. Откройте сеанс Windows PowerShell с повышенными правами и выполните следующую команду, указав актуальные параметры для используемой среды.

    $url = "https://win-SQOOJN70SGL.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml"
    $webclient = New-Object System.Net.WebClient
    $webclient.Encoding = [System.Text.Encoding]::UTF8
    $metadataAsString = $webclient.DownloadString($url)
    Set-Content -Path c:\metadata.xml -Encoding UTF8 -Value $metadataAsString
    
  2. Копируйте файл метаданных на компьютер, который может взаимодействовать с привилегированной конечной точкой.

Активация автоматизации для настройки доверия поставщика утверждений в Azure Stack Hub (с помощью файла метаданных федерации)

Чтобы выполнить эту процедуру, используйте компьютер, который может взаимодействовать с привилегированной конечной точкой в Azure Stack Hub и имеет доступ к файлу метаданных, созданному на предыдущем шаге.

  1. Откройте сеанс Windows PowerShell с повышенными привилегиями и подключитесь к привилегированной конечной точке:

    $federationMetadataFileContent = get-content c:\metadata.xml
    $creds=Get-Credential
    Enter-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
    
  2. Теперь, когда вы подключены к привилегированной конечной точке, выполните следующую команду, используя соответствующие параметры для вашей среды:

    Register-CustomAdfs -CustomAdfsName Contoso -CustomADFSFederationMetadataFileContent $using:federationMetadataFileContent
    
  3. Выполните следующую команду, чтобы изменить владельца подписки поставщика по умолчанию. Используйте соответствующие параметры для вашей среды:

    Set-ServiceAdminOwner -ServiceAdminOwnerUpn "administrator@contoso.com"
    

    Примечание.

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

Настройка доверяющей стороны в существующем развертывании AD FS (STS учетной записи)

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

Вспомогательный сценарий можно скачать в разделе средств Azure Stack Hub на сайте GitHub.

Если вы решили вручную выполнить команды, сделайте следующее.

  1. Скопируйте приведенное ниже содержимое в TXT-файл (например, сохраните этот файл как c:\ClaimIssuanceRules.txt) в экземпляре AD FS или элементе фермы своего центра обработки данных.

    @RuleTemplate = "LdapClaims"
    @RuleName = "Name claim"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
    => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"), query = ";userPrincipalName;{0}", param = c.Value);
    
    @RuleTemplate = "LdapClaims"
    @RuleName = "UPN claim"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
    => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"), query = ";userPrincipalName;{0}", param = c.Value);
    
    @RuleTemplate = "LdapClaims"
    @RuleName = "ObjectID claim"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"]
    => issue(Type = "http://schemas.microsoft.com/identity/claims/objectidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType);
    
    @RuleName = "Family Name and Given claim"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
    => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"), query = ";sn,givenName;{0}", param = c.Value);
    
    @RuleTemplate = "PassThroughClaims"
    @RuleName = "Pass through all Group SID claims"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid", Issuer =~ "^(AD AUTHORITY|SELF AUTHORITY|LOCAL AUTHORITY)$"]
    => issue(claim = c);
    
    @RuleTemplate = "PassThroughClaims"
    @RuleName = "Pass through all windows account name claims"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
    => issue(claim = c);
    
  2. Подтвердите, что проверка подлинности на основе Windows Forms для экстрасети и интрасети включена. Вы можете проверить, включен ли он, с помощью следующего командлета.

    Get-AdfsAuthenticationProvider | where-object { $_.name -eq "FormsAuthentication" } | select Name, AllowedForPrimaryExtranet, AllowedForPrimaryIntranet
    

    Примечание.

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

    В статье Настройка политик аутентификации описана процедура включения политики проверки подлинности на основе форм.

  3. Чтобы добавить доверие проверяющей стороне, выполните следующую команду Windows PowerShell на экземпляре AD FS или на узле фермы. Обязательно обновите конечную точку AD FS и укажите файл, созданный на шаге 1.

    Внимание

    Для клиентов, использующих Azure Stack Hub версии 2002 и более поздних версий, протокол TLS 1.2 применяется к конечной точке ADFS Azure Stack Hub. Таким образом, протокол TLS 1.2 также должен быть включен на серверах ADFS клиента. В противном случае при запуске Add-ADFSRelyingPartyTrust на узле или ферме ADFS клиента возникнет следующая ошибка:

    Add-ADFSRelyingPartyTrust : The underlying connection was closed: An unexpected error occurred on a send.

    Для AD FS 2016 и 2019

    Add-ADFSRelyingPartyTrust -Name AzureStack -MetadataUrl "https://YourAzureStackADFSEndpoint/FederationMetadata/2007-06/FederationMetadata.xml" -IssuanceTransformRulesFile "C:\ClaimIssuanceRules.txt" -AutoUpdateEnabled:$true -MonitoringEnabled:$true -enabled:$true -AccessControlPolicyName "Permit everyone" -TokenLifeTime 1440
    

    Для AD FS 2012 и AD FS 2012 R2

    Add-ADFSRelyingPartyTrust -Name AzureStack -MetadataUrl "https://YourAzureStackADFSEndpoint/FederationMetadata/2007-06/FederationMetadata.xml" -IssuanceTransformRulesFile "C:\ClaimIssuanceRules.txt" -AutoUpdateEnabled:$true -MonitoringEnabled:$true -enabled:$true -TokenLifeTime 1440
    

    Внимание

    Чтобы настроить правила авторизации выдачи при использовании AD FS на основе Windows Server 2012 или Windows Server 2012 R2, необходимо использовать оснастку MMC AD FS.

  4. При использовании браузера Microsoft Edge для доступа к Azure Stack Hub необходимо игнорировать привязки маркеров. В противном случае попытка входа завершится сбоем. На экземпляре AD FS или элементе фермы выполните следующую команду.

    Примечание.

    Эта инструкция неприменима при использовании Windows Server 2012 или 2012 R2 AD FS. В этих случаях можно спокойно пропустить эту команду и перейти к интеграции.

    Set-AdfsProperties -IgnoreTokenBinding $true
    

Создание СПН

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

  • Использование Azure CLI с развертыванием AD FS в Azure Stack Hub.
  • Пакет управления System Center для Azure Stack Hub при развертывании с AD FS.
  • Поставщики ресурсов в Azure Stack Hub при развертывании с AD FS.
  • разные приложения;
  • вам требуется неинтерактивный вход в систему.

Внимание

AD FS поддерживает только сеансы интерактивного входа в систему. Если для автоматического сценария требуется неинтерактивный вход, используйте имя субъекта-службы (SPN).

Дополнительные сведения о создании имени субъекта-службы см. в разделе Создание субъекта-службы для AD FS.

Устранение неполадок

Откат конфигурации

Если возникла ошибка, которая оставила среду в состоянии, в котором аутентификация невозможна, можно выполнить откат.

  1. Откройте сеанс Windows PowerShell с повышенными правами и выполните следующие команды.

    $creds = Get-Credential
    Enter-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
    
  2. Затем выполните следующую командлету.

    Reset-DatacenterIntegrationConfiguration
    

    После выполнения откатной операции все изменения конфигурации отменяются. Возможна будет только аутентификация с использованием встроенного пользователя CloudAdmin.

    Внимание

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

    Set-ServiceAdminOwner -ServiceAdminOwnerUpn "azurestackadmin@[Internal Domain]"
    

Сбор дополнительных журналов

В случае сбоя при выполнении какого-либо из командлетов можно собрать дополнительные журналы, выполнив командлет Get-AzureStackLog.

  1. Откройте сеанс Windows PowerShell с повышенными правами и выполните следующие команды.

    $creds = Get-Credential
    Enter-PSSession -ComputerName <IP Address of ERCS> -ConfigurationName PrivilegedEndpoint -Credential $creds
    
  2. Затем выполните следующую командлету.

    Get-AzureStackLog -OutputPath \\myworkstation\AzureStackLogs -FilterByRole ECE
    

Следующие шаги

Интеграция внешних решений для мониторинга