Ротация секретов в Azure Stack Hub
В этой статье приведены рекомендации по выполнению смены секретов для обеспечения безопасного взаимодействия с ресурсами и службами инфраструктуры Azure Stack Hub.
Обзор
Azure Stack Hub использует секреты для обеспечения безопасного взаимодействия с ресурсами и службами инфраструктуры. Чтобы поддерживать целостность инфраструктуры Azure Stack Hub, операторам нужна возможность смены секретов с частотой, согласованной с требованиями к безопасности организации.
При истечении срока действия секретов на портале администрирования создаются следующие оповещения. Завершение ротации секретов устраняет следующие оповещения:
- ожидается истечение срока действия пароля учетной записи службы;
- ожидается истечение срока действия внутреннего сертификата;
- ожидается истечение срока действия внешнего сертификата.
Предупреждение
До истечения срока действия на портале администрирования активируются два этапа оповещений:
- 90 дней до истечения срока действия предупреждения создается оповещение.
- 30 дней до истечения срока действия создается критическое оповещение.
Крайне важно завершить смену ключей, если вы получаете эти уведомления. Невыполнение этого может привести к потере задач и возможно потребует повторного развертывания Azure Stack Hub за ваш счет.
Дополнительные сведения о мониторинге и исправлении оповещений см. в статье Мониторинг работоспособности и оповещений в Azure Stack Hub.
Предварительные условия
- Рекомендуется использовать поддерживаемую версию Azure Stack Hub и применить последнее доступное исправление для версии Azure Stack Hub, на которой работает ваш экземпляр. Например, если вы используете 2408, убедитесь, что вы установили последнее доступное исправление для 2408.
- Уведомите пользователей о запланированных операциях обслуживания. Запланируйте стандартные окна обслуживания, по возможности в нерабочие часы. Операции обслуживания могут повлиять как на рабочие нагрузки пользователей, так и на операции портала.
- Создайте запросы на подписывание сертификатов для Azure Stack Hub.
- Подготовка PKI-сертификатов Azure Stack Hub.
- Во время смены секретов операторы могут заметить, что оповещения открываются и автоматически закрываются. Такое поведение считается нормальным и предупреждения можно игнорировать. Операторы могут проверить валидность этих оповещений с помощью командлета Test-AzureStack PowerShell. Для операторов, использующих 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
- Хранилище ключей
- Хост для расширений администратора
- 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 Самоподписанный Предприятие 1903 и позже Самоподписанный Самоподписанный Не поддерживается Самоподписанный Общественный* 1803 и позже Предприятие Предприятие 1803 и более поздние; 1803-1903, если используется тот же корпоративный Центр сертификации при развертывании Предприятие Самоподписанный Не поддерживается Предприятие Общественный* с версии 1803 и более поздние версии Публичный* Предприятие 1903 и позднее Публичный* Самоподписанный Не поддерживается Общественный* Общественный* 1803 и более поздних версий *Часть доверенной корневой программы Windows.
Обязательно проверьте сертификаты, которые вы готовите с помощью шагов, описанных в разделе "Проверка сертификатов PKI"
Убедитесь, что в пароле отсутствуют специальные символы, например
$
,*
,#
,@
,or
)".Убедитесь, что для PFX-файлов используется шифрование TripleDES-SHA1. Если у вас возникнут проблемы, см. руководство по устранению распространенных неполадок с сертификатами PKI в Azure Stack Hub.
Сохраните резервную копию сертификатов, используемых для ротации, в защищенном месте для хранения резервных копий. Если смена выполняется, а затем завершается сбоем, замените сертификаты в общей папке резервными копиями перед повторным запуском смены. Резервные копии необходимо сохранить в безопасном расположении.
Создайте общую папку, к которой можно получить доступ из виртуальных машин ERCS. Совместно используемый ресурс должен быть доступен для чтения и записи для учетной записи CloudAdmin.
Откройте консоль PowerShell ISE на компьютере с доступом к сетевому общему ресурсу. Перейдите к общей папке, в которой вы создаете каталоги для размещения внешних сертификатов.
Создайте папку в общей папке с именем
Certificates
. В папке сертификатов создайте вложенную папку, названнуюAAD
илиADFS
, в зависимости от используемого поставщика удостоверений. Например, .\Certificates\AAD или .\Certificates\ADFS. Никакие другие папки, кроме папки сертификатов и вложенных папок поставщика удостоверений, не должны быть созданы здесь.Скопируйте новый набор внешних сертификатов, созданных на шаге 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
*применимо для Microsoft Entra ID и AD FS при использовании реестра контейнеров Azure.
Примечание.
Если вы обновляете сертификаты внешнего реестра контейнеров, необходимо вручную создать вложенную папку Реестр контейнеров в папке поставщика удостоверений. Кроме того, необходимо вручную создать вложенную папку и сохранить в ней соответствующий .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. Внутренняя ротация секретов требуется только в том случае, если вы подозреваете, что один из них был взломан, или если вы получили предупреждение об истечении срока действия.
Выполните следующие шаги, чтобы обновить внутренние секреты:
Запустите следующий сценарий 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
После успешного завершения консоль отображает сообщение
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.
Примечание.
Изготовитель оборудования может предоставить дополнительные приложения для управления. Обновление имени пользователя или пароля для других приложений управления не влияет на имя пользователя или пароль BMC.
- Обновите BMC на физических серверах Azure Stack Hub в соответствии с инструкциями производителя оборудования. Имя пользователя и пароль для каждого BMC в вашей среде должны быть одинаковыми. Имена пользователей BMC должны содержать не более 16 знаков.
- Вам больше не нужно предварительно обновлять учетные данные контроллера BMC на физических серверах 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. Этот командлет можно выполнить только в привилегированной конечной точке Azure Stack Hub, используя Invoke-Command
блок скрипта, передав сеанс PEP в параметре -Session
. По умолчанию он сменяет только сертификаты всех конечных точек инфраструктуры внешней сети.
Параметр | Тип | Обязательное поле | Должность | По умолчанию. | Описание |
---|---|---|---|---|---|
PfxFilesPath |
Строка | Ложь | Названный | нет | Путь к папке общего доступа \Certificates корневой папки, содержащей все сертификаты конечной точки внешней сети. Требуется только при смене внешних секретов. Путь должен заканчиваться папкой \Certificates , например \\<IPAddress>\<ShareName>\Certificates. |
CertificatePassword |
SecureString (Безопасная строка) | Ложь | Названный | нет | Пароль для всех сертификатов, предоставляемых в -PfXFilesPath. Необходимое значение, если PfxFilesPath предоставлен, когда сменяются внешние секреты. |
Internal |
Строка | Неверно | Назван | нет | Флаг Internal должен использоваться каждый раз, когда оператор Azure Stack Hub хочет изменить внутренние секреты инфраструктуры. |
PathAccessCredential |
PSCredential | Ложь | Назван | нет | Учетные данные PowerShell для файлового ресурса каталога \Certificates, который содержит все сертификаты конечных точек внешних сетей. Требуется только при смене внешних секретов. |
ReRun |
ПараметрПереключателя | Неверно | Назван | нет | Всегда следует использовать, когда смена секретов повторяется после неудачной попытки. |
Синтаксис
Для смены внешних секретов
Start-SecretRotation [-PfxFilesPath <string>] [-PathAccessCredential <PSCredential>] [-CertificatePassword <SecureString>]
Для смены внутренних секретов
Start-SecretRotation [-Internal]
Для повторного выполнения смены внешних секретов
Start-SecretRotation [-ReRun]
Для повторного запуска ротации внутренних секретов
Start-SecretRotation [-ReRun] [-Internal]
Примеры
Меняйте только секреты внутренней инфраструктуры
Эту команду необходимо выполнять с использованием привилегированной конечной точки среды Azure Stack Hub.
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.
Следующие шаги
Дополнительные сведения о системе безопасности Azure Stack Hub