Узнайте о том, как менять секреты в Azure Stack Hub
В этой статье содержатся рекомендации по смене секретов для обеспечения безопасного взаимодействия с ресурсами и службами инфраструктуры Azure Stack Hub.
Общие сведения
Azure Stack Hub использует секреты для обеспечения безопасного взаимодействия с ресурсами и службами инфраструктуры. Чтобы поддерживать целостность инфраструктуры Azure Stack Hub, операторам нужна возможность смены секретов с частотой, согласованной с требованиями к безопасности организации.
Когда срок действия секретов приближается, на портале администрирования создаются следующие оповещения. Смена секретов позволит устранить условия, активирующие следующие оповещения:
- ожидается истечение срока действия пароля учетной записи службы;
- ожидается истечение срока действия внутреннего сертификата;
- ожидается истечение срока действия внешнего сертификата.
Предупреждение
До истечения срока действия на портале администрирования активируются 2 этапа оповещений:
- За 90 дней до истечения срока действия создается предупреждение.
- За 30 дней до истечения срока действия создается критическое оповещение.
Очень важно завершить смену секретов, если вы получаете эти уведомления. В противном случае это может привести к потере рабочих нагрузок и возможному повторному развертыванию Azure Stack Hub за свой счет.
Дополнительные сведения о мониторинге и исправлении оповещений см. в статье Мониторинг работоспособности и оповещений в Azure Stack Hub.
Примечание
В средах Azure Stack Hub до версии 1811 могут возникать предупреждения об ожидающих обработки внутренних сертификатах или об окончании срока действия секретов. Эти предупреждения являются неточными. Их следует игнорировать без выполнения смены внутренних секретов. Неточные оповещения об истечении срока действия внутренних секретов — это известная проблема, которая устранена в версии 1811. Срок действия внутренних секретов не истекает, если среда была активна в течение двух лет.
Предварительные требования
Настоятельно рекомендуется использовать поддерживаемую версию Azure Stack Hub и применить последнее доступное исправление для версии Azure Stack Hub, выполняемой вашим экземпляром. Например, если вы используете версию 2008, убедитесь, что установлено последнее исправление, доступное для версии 2008.
Важно!
Для версий до 1811:
- Если смена секретов уже выполнена, необходимо выполнить обновление до версии 1811 или более поздней, прежде чем снова выполнять смену секретов. Смена секретов выполняется через привилегированную конечную точку, и для нее нужны учетные данные оператора Azure Stack Hub. Если вы не знаете, была ли выполнена смена секретов в вашей среде, обновите до 1811, прежде чем выполнять смену секретов.
- Вам не нужно менять секреты для добавления сертификатов узла расширения. См. руководство по подготовке хост-процесса для расширений для Azure Stack Hub и добавлению сертификатов.
Уведомляйте пользователей о запланированных операциях обслуживания. Насколько это возможно, запланируйте обычные периоды обслуживания в нерабочее время. Операции технического обслуживания могут влиять на рабочие нагрузки пользователей и на операции портала.
Во время смены секретов операторы могут заметить, что оповещения открываются и автоматически закрываются. Такое поведение считается нормальным и предупреждения можно игнорировать. Операторы могут проверить правильность этих оповещений с помощью командлета PowerShell Test-AzureStack. Для операторов, использующих System Center Operations Manager для мониторинга систем Azure Stack Hub, размещение системы в режиме обслуживания не позволит этим оповещениям достичь своих систем ITSM. Однако оповещения будут поступать, если система Azure Stack Hub станет недоступной.
Смена внешних секретов
Важно!
Смена внешнего секрета для:
- Секреты, не относящиеся к сертификату, такие как безопасные ключи и строки , должны выполняться администратором вручную. Сюда входят пароли учетных записей пользователей и администраторов, а также пароли сетевых коммутаторов.
- Секреты поставщика дополнительных ресурсов (RP) рассматриваются в отдельных руководствах:
- Учетные данные контроллера управления основной платой (BMC) — это ручной процесс, описанный далее в этой статье.
- Реестр контейнеров Azure внешних сертификатов — это ручной процесс, описанный далее в этой статье.
В этом разделе рассматривается смена сертификатов, используемых для защиты внешних служб. Эти сертификаты предоставляются оператором Azure Stack Hub для следующих служб:
- портал администрирования;
- общедоступный портал;
- Azure Resource Manager для администратора;
- глобальный Azure Resource Manager;
- Key Vault администратора;
- Key Vault
- Хост-процесс для расширений администратора
- ACS (включая хранилище BLOB-объектов, таблиц и очередей);
- ADFS1
- Диаграмма1
- Реестр контейнеров2
1Применимо при использовании федеративных служб Active Directory (ADFS).
2Применимо при использовании Реестр контейнеров Azure (ACR).
Подготовка
Перед сменой внешних секретов:
Test-AzureStack
Запустите командлет PowerShell с помощью-group SecretRotationReadiness
параметра , чтобы убедиться, что все выходные данные теста работоспособны перед сменой секретов.Подготовьте новый набор внешних сертификатов для замены:
Новый набор должен соответствовать спецификациям сертификатов, описанным в требованиях к PKI-сертификатам Azure Stack Hub.
Создайте запрос подписи сертификата (CSR) для отправки в центр сертификации (ЦС). Выполните действия, описанные в разделе Создание запросов на подпись сертификатов , и подготовьте их для использования в среде Azure Stack Hub, выполнив действия, описанные в разделе Подготовка PKI-сертификатов. Azure Stack Hub поддерживает смену секретов для внешних сертификатов из нового центра сертификации (ЦС) в следующих контекстах:
Смена из ЦС Смена на ЦС Поддержка версий Azure Stack Hub Self-Signed Enterprise 1903 & более поздней версии Self-Signed Self-Signed Не поддерживается Self-Signed Общедоступные* 1803 & более поздней версии Enterprise Enterprise 1803 & позже; 1803–1903, если то же корпоративное ЦС, используемое при развертывании Enterprise Self-Signed Не поддерживается Enterprise Общедоступные* 1803 & более поздней версии Общедоступные* Enterprise 1903 & более поздней версии Общедоступные* Self-Signed Не поддерживается Общедоступные* Общедоступные* 1803 & более поздней версии Обязательно проверьте сертификаты, которые вы подготавливаете, выполнив действия, описанные в разделе Проверка сертификатов PKI.
Убедитесь, что в пароле отсутствуют специальные символы, например
$
,*
,#
,@
,or
)".Убедитесь, что для PFX-файлов используется шифрование TripleDES-SHA1. Если у вас возникнут проблемы, см. руководство по устранению распространенных неполадок с сертификатами PKI в Azure Stack Hub.
Сохраните резервную копию в сертификаты, используемые для смены, в защищенном расположении резервной копии. Если смена выполняется, а затем завершается сбоем, замените сертификаты в общей папке резервными копиями перед повторным запуском смены. Резервные копии необходимо сохранить в безопасном расположении.
Создайте общую папку, к которой можно получить доступ из виртуальных машин ERCS. Общая папка должна быть доступной для чтения и записи для удостоверения CloudAdmin .
Откройте консоль интегрированной среды сценариев PowerShell на компьютере с доступом к общей папке. Перейдите к общей папке, в которой вы создаете каталоги для размещения внешних сертификатов.
Создайте папку в общей папке с именем
Certificates
. В папке certificates создайте вложенную папку с именемAAD
илиADFS
в зависимости от поставщика удостоверений, используемого центром. Например, .\Certificates\AAD или .\Certificates\ADFS. Здесь не следует создавать другие папки, кроме папки certificates и вложенной папки поставщика удостоверений.Скопируйте новый набор внешних сертификатов на замену, созданный на шаге 2, в папку .\Certificates\<IdentityProvider> , созданную на шаге 6. Как упоминалось выше, вложенная папка поставщика удостоверений должна иметь
AAD
значение илиADFS
. Убедитесь, что альтернативные имена субъектов (SAN) заменяющих внешних сертификатов соответствуют форматуcert.<regionName>.<externalFQDN>
, указанному в требованиях к сертификату инфраструктуры открытых ключей (PKI) Azure Stack Hub.Ниже приведен пример структуры папок для поставщика удостоверений Microsoft Entra:
<ShareName> │ └───Certificates └───AAD ├───ACSBlob │ <CertName>.pfx │ ├───ACSQueue │ <CertName>.pfx │ ├───ACSTable │ <CertName>.pfx │ ├───Admin Extension Host │ <CertName>.pfx │ ├───Admin Portal │ <CertName>.pfx │ ├───ARM Admin │ <CertName>.pfx │ ├───ARM Public │ <CertName>.pfx │ ├───Container Registry* │ <CertName>.pfx │ ├───KeyVault │ <CertName>.pfx │ ├───KeyVaultInternal │ <CertName>.pfx │ ├───Public Extension Host │ <CertName>.pfx │ └───Public Portal <CertName>.pfx
*Применимо при использовании Реестр контейнеров Azure (ACR) для идентификатора Microsoft Entra и ADFS.
Примечание
При смене внешних сертификатов реестра контейнеров необходимо вручную создать вложенную Container Registry
папку поставщика удостоверений. Кроме того, необходимо сохранить соответствующий PFX-сертификат в этой вложенной папке, созданной вручную.
Поворот
Чтобы сменить внешние секреты, выполните следующие действия.
Используйте следующий скрипт PowerShell для смены секретов. Скрипту требуется доступ к сеансу привилегированной конечной точки (PEP). Доступ к PEP осуществляется через удаленный сеанс PowerShell на виртуальной машине, где размещается PEP. Если вы используете интегрированную систему, существует три экземпляра PEP, каждый из которых выполняется внутри виртуальной машины (Prefix-ERCS01, Prefix-ERCS02 или Prefix-ERCS03) на разных узлах. Скрипт выполняет следующие задачи:
Создает сеанс PowerShell с привилегированной конечной точкой с помощью учетной записи CloudAdmin и сохраняет сеанс в виде переменной. Эта переменная используется в качестве параметра на следующем шаге.
Запускает Invoke-Command, передав переменную сеанса PEP в
-Session
качестве параметра .Выполняется
Start-SecretRotation
в сеансе PEP с использованием следующих параметров. Дополнительные сведения см. в справочнике по Start-SecretRotation :Параметр Переменная Описание -PfxFilesPath
$CertSharePath Сетевой путь к корневой папке сертификатов, как описано на шаге 6 раздела Подготовка, например \\<IPAddress>\<ShareName>\Certificates
.-PathAccessCredential
$CertShareCreds Объект PSCredential для учетных данных для общей папки. -CertificatePassword
$CertPassword Защищенная строка пароля, используемая для всех созданных файлов сертификатов PFX.
# Create a PEP session winrm s winrm/config/client '@{TrustedHosts= "<IP_address_of_ERCS>"}' $PEPCreds = Get-Credential $PEPSession = New-PSSession -ComputerName <IP_address_of_ERCS_Machine> -Credential $PEPCreds -ConfigurationName "PrivilegedEndpoint" -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US) # Run secret rotation $CertPassword = ConvertTo-SecureString '<Cert_Password>' -AsPlainText -Force $CertShareCreds = Get-Credential $CertSharePath = "<Network_Path_Of_CertShare>" Invoke-Command -Session $PEPsession -ScriptBlock { param($CertSharePath, $CertPassword, $CertShareCreds ) Start-SecretRotation -PfxFilesPath $CertSharePath -PathAccessCredential $CertShareCreds -CertificatePassword $CertPassword } -ArgumentList ($CertSharePath, $CertPassword, $CertShareCreds) Remove-PSSession -Session $PEPSession
Смена внешних секретов занимает около часа. После успешного завершения консоль отобразит
ActionPlanInstanceID ... CurrentStatus: Completed
сообщение, за которым следуетAction plan finished with status: 'Completed'
. Удалите сертификаты из общей папки, созданной при работе с разделом подготовки, и храните их в безопасном расположении резервного копирования.Примечание
Если смена секретов завершается сбоем, следуйте инструкциям в сообщении об ошибке и повторно запустите
Start-SecretRotation
с параметром-ReRun
.Start-SecretRotation -ReRun
Обратитесь в службу поддержки, если при смене секретов постоянно возникают сбои.
При необходимости, чтобы убедиться, что все внешние сертификаты были изменены, запустите средство проверки Test-AzureStack с помощью следующего скрипта:
Test-AzureStack -Include AzsExternalCertificates -DetailedResults -debug
Смена внутренних секретов
Перечень внутренних секретов включает сертификаты, пароли, защищенные строки и ключи, используемые инфраструктурой Azure Stack Hub без вмешательства оператора Azure Stack Hub. Внутренняя ротация секретов требуется только в том случае, если вы подозреваете, что один из них был взломан, или если вы получили предупреждение об истечении срока действия.
В развертываниях, предшествующих версии 1811, могут отображаться оповещения об ожидающих истечения срока действия внутреннего сертификата или секрета. Эти оповещения являются неточными и должны игнорироваться и являются известной проблемой, устраненной в 1811.
Чтобы сменить внутренние секреты, выполните следующие действия.
Запустите следующий сценарий PowerShell. Обратите внимание на то, что в разделе "Выполнить смену секретов" используется только
-Internal
параметр командлета Start-SecretRotation:# Create a PEP Session winrm s winrm/config/client '@{TrustedHosts= "<IP_address_of_ERCS>"}' $PEPCreds = Get-Credential $PEPSession = New-PSSession -ComputerName <IP_address_of_ERCS_Machine> -Credential $PEPCreds -ConfigurationName "PrivilegedEndpoint" -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US) # Run Secret Rotation Invoke-Command -Session $PEPSession -ScriptBlock { Start-SecretRotation -Internal } Remove-PSSession -Session $PEPSession
Примечание
Для версий до 1811 флаг не требуется
-Internal
.После успешного завершения консоль отобразит
ActionPlanInstanceID ... CurrentStatus: Completed
сообщение, за которым следуетAction plan finished with status: 'Completed'
.Примечание
Если ротация секретов не удалась, следуйте инструкциям в сообщении об ошибке и повторно запустите
Start-SecretRotation
с параметрами-Internal
и-ReRun
.Start-SecretRotation -Internal -ReRun
Обратитесь в службу поддержки, если при смене секретов постоянно возникают сбои.
Смена корневого сертификата Azure Stack Hub
Корневой сертификат Azure Stack Hub подготавливается во время развертывания по истечении пяти лет. Начиная с версии 2108, при смене внутреннего секрета также выполняется смена корневого сертификата. Стандартное оповещение об истечении срока действия секрета определяет срок действия корневого сертификата и создает оповещения в течение 90 (предупреждение) и 30 (критических) дней.
Чтобы сменить корневой сертификат, необходимо обновить систему до версии 2108 и выполнить внутреннюю смену секретов.
В следующем фрагменте кода для получения списка срока действия корневого сертификата используется привилегированная конечная точка:
$pep = New-PSSession -ComputerName <ip address> -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
$stampInfo = Invoke-Command -Session $pep -ScriptBlock { Get-AzureStackStampInformation }
$rootCert = $stampInfo.RootCACertificates| Sort-Object -Property NotAfter | Select-Object -Last 1
"The Azure Stack Hub Root Certificate expires on {0}" -f $rootCert.NotAfter.ToString("D") | Write-Host -ForegroundColor Cyan
Обновите учетные данные BMC
Контроллер управления основной платы отслеживает физическое состояние серверов. Обратитесь к поставщику оборудования OEM, чтобы получить инструкции по обновлению пароля и имени учетной записи пользователя для BMC.
Примечание
Поставщик OEM может предоставлять дополнительные приложения для управления. Обновление имени пользователя или пароля для других приложений управления не влияет на имя пользователя или пароль BMC.
- Обновите контроллер управления основной платой на физических серверах Azure Stack Hub в соответствии с инструкциями поставщика. Пароли и имена пользователя для всех контроллеров BMC в среде должны совпадать. Имена пользователей BMC должны содержать не более 16 знаков.
- Вам больше не нужно обновлять учетные данные контроллера управления основной платой на физических серверах Azure Stack Hub в соответствии с инструкциями поставщиков OEM. Имя пользователя и пароль для каждого BMC в вашей среде должны быть одинаковыми и не могут превышать 16 символов.
Откройте привилегированную конечную точку в сеансах Azure Stack Hub. См. инструкции по использованию привилегированной конечной точки в Azure Stack Hub.
После открытия сеанса привилегированной конечной точки запустите один из приведенных ниже скриптов PowerShell, которые используют Invoke-Command для запуска Set-BmcCredential. Если вы используете необязательный параметр -BypassBMCUpdate с командой Set-BMCCredential, учетные данные в BMC не обновляются. Обновляется только внутреннее хранилище данных Azure Stack Hub. Передайте переменную сеанса привилегированной конечной точки в качестве параметра.
Ниже приведен пример скрипта PowerShell, который запрашивает имя пользователя и пароль:
# Interactive Version $PEPIp = "<Privileged Endpoint IP or Name>" # You can also use the machine name instead of IP here. $PEPCreds = Get-Credential "<Domain>\CloudAdmin" -Message "PEP Credentials" $NewBmcPwd = Read-Host -Prompt "Enter New BMC password" -AsSecureString $NewBmcUser = Read-Host -Prompt "Enter New BMC user name" $PEPSession = New-PSSession -ComputerName $PEPIp -Credential $PEPCreds -ConfigurationName "PrivilegedEndpoint" -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US) Invoke-Command -Session $PEPSession -ScriptBlock { # Parameter BmcPassword is mandatory, while the BmcUser parameter is optional. Set-BmcCredential -BmcPassword $using:NewBmcPwd -BmcUser $using:NewBmcUser } Remove-PSSession -Session $PEPSession
Вы также можете закодировать имя пользователя и пароль в переменные, которые могут быть менее безопасными:
# Static Version $PEPIp = "<Privileged Endpoint IP or Name>" # You can also use the machine name instead of IP here. $PEPUser = "<Privileged Endpoint user for example Domain\CloudAdmin>" $PEPPwd = ConvertTo-SecureString '<Privileged Endpoint Password>' -AsPlainText -Force $PEPCreds = New-Object System.Management.Automation.PSCredential ($PEPUser, $PEPPwd) $NewBmcPwd = ConvertTo-SecureString '<New BMC Password>' -AsPlainText -Force $NewBmcUser = "<New BMC User name>" $PEPSession = New-PSSession -ComputerName $PEPIp -Credential $PEPCreds -ConfigurationName "PrivilegedEndpoint" -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US) Invoke-Command -Session $PEPSession -ScriptBlock { # Parameter BmcPassword is mandatory, while the BmcUser parameter is optional. Set-BmcCredential -BmcPassword $using:NewBmcPwd -BmcUser $using:NewBmcUser } Remove-PSSession -Session $PEPSession
Справка. Командлет Start-SecretRotation
Командлет Start-SecretRotation меняет секреты инфраструктуры системы Azure Stack Hub. Этот командлет можно выполнить только для привилегированной конечной Invoke-Command
точки Azure Stack Hub, используя блок скрипта, передав сеанс PEP в параметре -Session
. По умолчанию он сменяет только сертификаты всех конечных точек инфраструктуры внешней сети.
Параметр | Тип | Обязательно | Положение | По умолчанию | Описание |
---|---|---|---|---|---|
PfxFilesPath |
Строка | False | именованная | None | Путь к общей папке \Certificates , содержащей все сертификаты конечных точек внешней сети. Требуется только при смене внешних секретов. Путь должен заканчиваться папкой \Certificates , например \\<IPAddress>\<ShareName>\Certificates. |
CertificatePassword |
SecureString | False | именованная | None | Пароль для всех сертификатов, предоставляемых в -PfXFilesPath. Необходимое значение, если PfxFilesPath предоставлен, когда сменяются внешние секреты. |
Internal |
Строка | False | именованная | None | Флаг -Internal должен использоваться каждый раз, когда оператор Azure Stack Hub хочет сменить внутренние секреты инфраструктуры. |
PathAccessCredential |
PSCredential | False | именованная | None | Учетные данные PowerShell для общего ресурса каталога \Certificates, который содержит все сертификаты конечных точек внешней сети. Требуется только при смене внешних секретов. |
ReRun |
SwitchParameter | False | именованная | None | Необходимо использовать каждый раз, когда смена секретов повторно пресекается после неудачной попытки. |
Синтаксис
Для смены внешних секретов
Start-SecretRotation [-PfxFilesPath <string>] [-PathAccessCredential <PSCredential>] [-CertificatePassword <SecureString>]
Для смены внутренних секретов
Start-SecretRotation [-Internal]
Для повторной смены внешних секретов
Start-SecretRotation [-ReRun]
Для повторной смены внутренних секретов
Start-SecretRotation [-ReRun] [-Internal]
Примеры
Смена только секретов внутренней инфраструктуры
Эту команду необходимо выполнять с использованием привилегированной конечной точки среды Azure Stack Hub.
PS C:\> Start-SecretRotation -Internal
Эта команда меняет все инфраструктурные секреты, предоставляемые для внутренней сети Azure Stack Hub.
Смена только секретов внешней инфраструктуры
# Create a PEP Session
winrm s winrm/config/client '@{TrustedHosts= "<IP_address_of_ERCS>"}'
$PEPCreds = Get-Credential
$PEPSession = New-PSSession -ComputerName <IP_address_of_ERCS> -Credential $PEPCreds -ConfigurationName "PrivilegedEndpoint" -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
# Create Credentials for the fileshare
$CertPassword = ConvertTo-SecureString '<CertPasswordHere>' -AsPlainText -Force
$CertShareCreds = Get-Credential
$CertSharePath = "<NetworkPathOfCertShare>"
# Run Secret Rotation
Invoke-Command -Session $PEPsession -ScriptBlock {
param($CertSharePath, $CertPassword, $CertShareCreds )
Start-SecretRotation -PfxFilesPath $CertSharePath -PathAccessCredential $CertShareCreds -CertificatePassword $CertPassword
} -ArgumentList ($CertSharePath, $CertPassword, $CertShareCreds)
Remove-PSSession -Session $PEPSession
Эта команда сменяет сертификаты TSL, используемые для конечных точек инфраструктуры внешней сети Azure Stack Hub.
Смена секретов внешней и внутренней инфраструктуры (только до версии 1811).
Важно!
Эта команда применяется только к Azure Stack до версии 1811, так как в ней смена для внутренних и внешних сертификатов выполняется раздельно.
Начиная с версии 1811+ вы больше не сможете сменять внутренние и внешние сертификаты.
# Create a PEP Session
winrm s winrm/config/client '@{TrustedHosts= "<IP_address_of_ERCS>"}'
$PEPCreds = Get-Credential
$PEPSession = New-PSSession -ComputerName <IP_address_of_ERCS> -Credential $PEPCreds -ConfigurationName "PrivilegedEndpoint" -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
# Create Credentials for the fileshare
$CertPassword = ConvertTo-SecureString '<CertPasswordHere>' -AsPlainText -Force
$CertShareCreds = Get-Credential
$CertSharePath = "<NetworkPathOfCertShare>"
# Run Secret Rotation
Invoke-Command -Session $PEPSession -ScriptBlock {
Start-SecretRotation -PfxFilesPath $using:CertSharePath -PathAccessCredential $using:CertShareCreds -CertificatePassword $using:CertPassword
}
Remove-PSSession -Session $PEPSession
Эта команда меняет секреты инфраструктуры, предоставляемые во внутренней сети Azure Stack Hub, и сертификаты TLS, используемые для конечных точек инфраструктуры внешней сети Azure Stack Hub. Командлет Start-SecretRotation сменяет все созданные стеком секреты и, так как сертификаты предоставлены, сертификаты внешних конечных точек.
Дальнейшие действия
Дополнительные сведения о системе безопасности Azure Stack Hub