Подготовка хост-процесса для расширений в Azure Stack Hub

Хост-процесс для расширений защищает Azure Stack Hub путем уменьшения количества необходимых портов TCP/IP. В этой статье рассматривается подготовка Azure Stack Hub для хост-процесса для расширений, который автоматически включается с помощью пакета обновления Azure Stack Hub более поздней версии, чем 1808. Эта статья относится к обновлениям Azure Stack Hub 1808, 1809 и 1811.

Требования к сертификатам

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

В таблице показаны новые пространства имен и связанные с ними сертификаты:

Папка развертывания Требуемый субъект сертификата и альтернативное имя субъекта Область (для каждого региона) Пространство имен поддомена
Хост-процесс для расширений администратора *.adminhosting.<регион>.<fqdn> (ssl-сертификаты с подстановочными знаками) Хост-процесс для расширений администратора adminhosting.<регион>.<полное_доменное_имя>
Общедоступный хост-процесс для расширений *.Хостинг.<регион>.<fqdn> (ssl-сертификаты с подстановочными знаками) Общедоступный хост-процесс для расширений Хостинг.<регион>.<Полное доменное имя>

Подробные требования к сертификатам см. в статье Требования к сертификатам инфраструктуры открытых ключей Azure Stack Hub.

Создание запроса на подпись сертификата

Инструмент проверки готовности Azure Stack Hub позволяет создать запрос на подпись сертификата для двух новых обязательных SSL-сертификатов. Выполните действия, описанные в статье Создание запросов на подписывание сертификатов для Azure Stack Hub.

Примечание

Можно пропустить этот шаг в зависимости от того, как вы запросили SSL-сертификаты.

Проверка новых сертификатов

  1. Откройте сеанс PowerShell с повышенными правами на узле жизненного цикла аппаратного обеспечения или рабочей станции управления Azure Stack Hub.

  2. Запустите следующий командлет, чтобы установить инструмент проверки готовности Azure Stack Hub:

    Install-Module -Name Microsoft.AzureStack.ReadinessChecker
    
  3. Выполните следующий сценарий, чтобы создать нужную структуру папки:

    New-Item C:\Certificates -ItemType Directory
    
    $directories = 'ACSBlob','ACSQueue','ACSTable','Admin Portal','ARM Admin','ARM Public','KeyVault','KeyVaultInternal','Public Portal', 'Admin extension host', 'Public extension host'
    
    $destination = 'c:\certificates'
    
    $directories | % { New-Item -Path (Join-Path $destination $PSITEM) -ItemType Directory -Force}
    

    Примечание

    При развертывании с Microsoft Entra идентификатором Federated Services (AD FS) в $directories скрипта необходимо добавить следующие каталоги: ADFS, Graph.

  4. Поместите имеющиеся сертификаты, которые вы сейчас используете в Azure Stack Hub, в соответствующие каталоги. Например, поместите сертификат ARM администратора в папку Arm Admin. Затем поместите только что созданные сертификаты размещения в каталоги Admin extension host и Public extension host.

  5. Чтобы запустить проверку сертификата, выполните следующий командлет:

    $pfxPassword = Read-Host -Prompt "Enter PFX Password" -AsSecureString 
    
    Start-AzsReadinessChecker -CertificatePath c:\certificates -pfxPassword $pfxPassword -RegionName east -FQDN azurestack.contoso.com -IdentitySystem AAD
    
  6. Проверьте выходные данные. Все сертификаты должны пройти все проверки.

Импорт сертификатов хост-процесса для расширений

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

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

  2. Откройте интегрированную среду сценариев PowerShell, чтобы выполнить следующие блоки сценария.

  3. Импортируйте сертификат для конечной точки размещения администратора.

    
    $CertPassword = read-host -AsSecureString -prompt "Certificate Password"
    
    $CloudAdminCred = Get-Credential -UserName <Privileged endpoint credentials> -Message "Enter the cloud domain credentials to access the privileged endpoint."
    
    [Byte[]]$AdminHostingCertContent = [Byte[]](Get-Content c:\certificate\myadminhostingcertificate.pfx -Encoding Byte)
    
    Invoke-Command -ComputerName <PrivilegedEndpoint computer name> `
    -Credential $CloudAdminCred `
    -ConfigurationName "PrivilegedEndpoint" `
    -ArgumentList @($AdminHostingCertContent, $CertPassword) `
    -ScriptBlock {
            param($AdminHostingCertContent, $CertPassword)
            Import-AdminHostingServiceCert $AdminHostingCertContent $certPassword
    }
    
  4. Импортируйте сертификат для конечной точки размещения.

    $CertPassword = read-host -AsSecureString -prompt "Certificate Password"
    
    $CloudAdminCred = Get-Credential -UserName <Privileged endpoint credentials> -Message "Enter the cloud domain credentials to access the privileged endpoint."
    
    [Byte[]]$HostingCertContent = [Byte[]](Get-Content c:\certificate\myhostingcertificate.pfx  -Encoding Byte)
    
    Invoke-Command -ComputerName <PrivilegedEndpoint computer name> `
    -Credential $CloudAdminCred `
    -ConfigurationName "PrivilegedEndpoint" `
    -ArgumentList @($HostingCertContent, $CertPassword) `
    -ScriptBlock {
            param($HostingCertContent, $CertPassword)
            Import-UserHostingServiceCert $HostingCertContent $certPassword
    }
    

Обновление конфигурации DNS

Примечание

Этот шаг не является обязательным, если вы использовали делегирование зоны DNS для интеграции DNS. Если записи A отдельного узла были настроены для публикации конечных точек Azure Stack Hub, вам нужно создать две дополнительные записи A узла:

IP-адрес Hostname (Имя узла) Тип
<IP-адрес> *. Adminhosting.<Регион>.<Полное доменное имя> A
<IP-адрес> *. Хостинг.<Регион>.<Полное доменное имя> A

Выделенные IP-адреса можно получить с помощью привилегированной конечной точки, выполнив командлет Get-AzureStackStampInformation.

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

В статье Публикация служб Azure Stack Hub в центре обработки данных описываются порты и протоколы, которым для публикации Azure Stack Hub перед развертыванием хост-процесса для расширений требуется входящая связь.

Публикация новых конечных точек

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

# Create a PEP Session
winrm s winrm/config/client '@{TrustedHosts= "<IpOfERCSMachine>"}'
$PEPCreds = Get-Credential
$PEPSession = New-PSSession -ComputerName <IpOfERCSMachine> -Credential $PEPCreds -ConfigurationName "PrivilegedEndpoint" -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)

# Obtain DNS Servers and extension host information from Azure Stack Hub Stamp Information and find the IPs for the Host Extension Endpoints
$StampInformation = Invoke-Command $PEPSession {Get-AzureStackStampInformation} | Select-Object -Property ExternalDNSIPAddress01, ExternalDNSIPAddress02, @{n="TenantHosting";e={($_.TenantExternalEndpoints.TenantHosting) -replace "https://*.","testdnsentry"-replace "/"}},  @{n="AdminHosting";e={($_.AdminExternalEndpoints.AdminHosting)-replace "https://*.","testdnsentry"-replace "/"}},@{n="TenantHostingDNS";e={($_.TenantExternalEndpoints.TenantHosting) -replace "https://",""-replace "/"}},  @{n="AdminHostingDNS";e={($_.AdminExternalEndpoints.AdminHosting)-replace "https://",""-replace "/"}}
If (Resolve-DnsName -Server $StampInformation.ExternalDNSIPAddress01 -Name $StampInformation.TenantHosting -ErrorAction SilentlyContinue) {
    Write-Host "Can access AZS DNS" -ForegroundColor Green
    $AdminIP = (Resolve-DnsName -Server $StampInformation.ExternalDNSIPAddress02 -Name $StampInformation.AdminHosting).IPAddress
    Write-Host "The IP for the Admin Extension Host is: $($StampInformation.AdminHostingDNS) - is: $($AdminIP)" -ForegroundColor Yellow
    Write-Host "The Record to be added in the DNS zone: Type A, Name: $($StampInformation.AdminHostingDNS), Value: $($AdminIP)" -ForegroundColor Green
    $TenantIP = (Resolve-DnsName -Server $StampInformation.ExternalDNSIPAddress01 -Name $StampInformation.TenantHosting).IPAddress
    Write-Host "The IP address for the Tenant Extension Host is $($StampInformation.TenantHostingDNS) - is: $($TenantIP)" -ForegroundColor Yellow
    Write-Host "The Record to be added in the DNS zone: Type A, Name: $($StampInformation.TenantHostingDNS), Value: $($TenantIP)" -ForegroundColor Green
}
Else {
    Write-Host "Cannot access AZS DNS" -ForegroundColor Yellow
    $AdminIP = (Resolve-DnsName -Name $StampInformation.AdminHosting).IPAddress
    Write-Host "The IP for the Admin Extension Host is: $($StampInformation.AdminHostingDNS) - is: $($AdminIP)" -ForegroundColor Yellow
    Write-Host "The Record to be added in the DNS zone: Type A, Name: $($StampInformation.AdminHostingDNS), Value: $($AdminIP)" -ForegroundColor Green
    $TenantIP = (Resolve-DnsName -Name $StampInformation.TenantHosting).IPAddress
    Write-Host "The IP address for the Tenant Extension Host is $($StampInformation.TenantHostingDNS) - is: $($TenantIP)" -ForegroundColor Yellow
    Write-Host "The Record to be added in the DNS zone: Type A, Name: $($StampInformation.TenantHostingDNS), Value: $($TenantIP)" -ForegroundColor Green
}
Remove-PSSession -Session $PEPSession

Пример выходных данных

Can access AZS DNS
The IP for the Admin Extension Host is: *.adminhosting.\<region>.\<fqdn> - is: xxx.xxx.xxx.xxx
The Record to be added in the DNS zone: Type A, Name: *.adminhosting.\<region>.\<fqdn>, Value: xxx.xxx.xxx.xxx
The IP address for the Tenant Extension Host is *.hosting.\<region>.\<fqdn> - is: xxx.xxx.xxx.xxx
The Record to be added in the DNS zone: Type A, Name: *.hosting.\<region>.\<fqdn>, Value: xxx.xxx.xxx.xxx

Примечание

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

Конечная точка (виртуальный IP-адрес) Протокол порты;
Размещение администратора HTTPS 443
Hosting HTTPS 443

Обновление имеющихся правил публикации (после включения хост-процесса для расширений)

Примечание

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

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

Примечание

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

Конечная точка (виртуальный IP-адрес) Протокол порты;
Портал (для администратора) HTTPS 12495
12499
12646
12647
12648
12649
12650
13001
13003
13010
13011
13012
13020
13021
13026
30015
Портал (для пользователя) HTTPS 12495
12649
13001
13010
13011
13012
13020
13021
30015
13003
Azure Resource Manager (для администратора) HTTPS 30024
Azure Resource Manager (для пользователя) HTTPS 30024

Дальнейшие действия