Использование привилегированной конечной точки в Azure Stack Hub

Для повседневных задач управления оператору Azure Stack Hub следует использовать портал администрирования, PowerShell или API-интерфейсы Azure Resource Manager. Но для выполнения некоторых менее распространенных операций понадобится использовать привилегированную конечную точку. Эта конечная точка является предварительно настроенной удаленной консолью PowerShell, которая предоставляет достаточно возможностей для нужной задачи. Конечная точка использует PowerShell JEA (Just Enough Administration) для предоставления ограниченного набора командлетов. Для доступа к привилегированной конечной точке и вызова ограниченного набора командлетов используется учетная запись с низким уровнем привилегий. Учетные записи администратора не требуются. Для повышения безопасности запрещено выполнение скриптов.

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

  • задачи низкого уровня, такие как сбор журналов диагностики;
  • различные задачи по интеграции центра обработки данных после развертывания для интегрированных систем, например добавление DNS-серверов перенаправления после развертывания, настройка интеграции Microsoft Graph, интеграции служб федерации Active Directory (AD FS), смена сертификатов и т. д.;
  • взаимодействие со службой поддержки для получения временного доступа высокого уровня, например для глубокой диагностики интегрированной системы.

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

Примечание

В Пакете средств разработки Azure Stack (ASDK) некоторые команды, доступные в привилегированной конечной точке, можно выполнять непосредственно из сеанса PowerShell на узле пакета разработки. Тем не менее вы можете проверить некоторые операции с использованием привилегированной конечной точки, например сбор данных журналов, так как это единственный доступный метод для выполнения определенных операций в среде интегрированных систем.

Примечание

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

Доступ к привилегированной конечной точке

Доступ к привилегированной конечной точке осуществляется через удаленный сеанс PowerShell на виртуальной машине, на которой размещается привилегированная конечная точка. В ASDK эта виртуальная машина называется AzS-ERCS01. Если вы используете интегрированную систему, в ней существуют три экземпляра привилегированной конечной точки на разных виртуальных машинах (префикс-ERCS01, префикс-ERCS02 или префикс-ERCS03), размещенных для обеспечения устойчивости на разных узлах.

Перед началом этой процедуры для интегрированной системы убедитесь в наличии доступа к привилегированной конечной точке по IP-адресу или DNS-имени. После первоначального развертывания Azure Stack Hub доступ к привилегированной конечной точке можно получить только по IP-адресу, так как интеграция DNS еще не настроена. Поставщик OEM предоставит вам JSON-файл с именем AzureStackStampDeploymentInfo, содержащий IP-адреса привилегированных конечных точек.

Эти IP-адреса вы можете найти на портале администрирования Azure Stack Hub. Откройте этот портал, например по адресу https://adminportal.local.azurestack.external. Выберите Управление регионами>Свойства.

При запуске привилегированной конечной точки вам нужно задать значение en-US для текущего языка и региональных параметров, в противном случае такие командлеты, как Test-AzureStack и Get-AzureStackLog, не будут работать должным образом.

Примечание

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

  1. Установите доверие.

    • В интегрированной системе выполните указанную ниже команду из сеанса Windows PowerShell с повышенными правами, чтобы добавить PEP в качестве доверенного узла на защищенную виртуальную машину, работающую на узле жизненного цикла оборудования, или на рабочую станцию с привилегированным доступом.

      Set-Item WSMan:\localhost\Client\TrustedHosts -Value '<IP Address of Privileged Endpoint>' -Concatenate
      
    • Если вы используете ASDK, войдите на узел комплекта разработки.

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

    • В интегрированной системе:

      $cred = Get-Credential
      
      $pep = New-PSSession -ComputerName <IP_address_of_ERCS> -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
      Enter-PSSession $pep
      

      Для параметра ComputerName можно указать IP-адрес или DNS-имя одной из виртуальных машин, на которых размещена привилегированная конечная точка.

      Примечание

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

    • При использовании ASDK:

      $cred = Get-Credential
      
      $pep = New-PSSession -ComputerName azs-ercs01 -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
      Enter-PSSession $pep
      

    При появлении запроса используйте следующие учетные данные:

    • Имя пользователя. Укажите учетную запись CloudAdmin в формате <домен Azure Stack Hub>\cloudadmin. (Для ASDK имя пользователя — azurestack\cloudadmin)
    • Пароль. Введите пароль, который использовался во время установки учетной записи администратора домена AzureStackAdmin.

    Примечание

    Если не удается подключиться к конечной точке ERCS, повторите шаги 1 и 2 с другим IP-адресом виртуальной машины ERCS.

    Предупреждение

    По умолчанию для метки Azure Stack Hub настроена только одна учетная запись CloudAdmin. Нет вариантов восстановления, если учетные данные учетной записи потеряны, скомпрометированы или заблокированы. Вы потеряете доступ к привилегированной конечной точке и другим ресурсам.

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

  3. После подключения запрос изменится на [IP-адрес или имя виртуальной машины ERCS]: PS> или на [azs-ercs01]: PS>, в зависимости от среды. Теперь запустите командлет Get-Command, чтобы просмотреть список доступных командлетов.

    См. сведения о командлетах в справочнике по привилегированной конечной точке Azure Stack Hub

    Многие из этих командлетов предназначены только для сред интегрированных систем (например, командлеты, относящиеся к интеграции центра обработки данных). В ASDK проверены следующие командлеты:

    • Clear-Host;
    • Close-PrivilegedEndpoint;
    • Exit-PSSession;
    • Get-AzureStackLog;
    • Get-AzureStackStampInformation;
    • Get-Command;
    • Get-FormatData;
    • Get-Help
    • Get-ThirdPartyNotices;
    • Measure-Object;
    • New-CloudAdminUser;
    • Out-Default;
    • Remove-CloudAdminUser;
    • Select-Object;
    • Set-CloudAdminUserPassword;
    • Test-AzureStack
    • Stop-AzureStack;
    • Get-ClusterLog.

Как использовать привилегированную конечную точку

Как упоминалось выше, привилегированная конечная точка — это конечная точка PowerShell JEA. Обеспечивая надежный уровень защиты, конечная точка JEA сокращает некоторые основные возможности PowerShell, например использование сценариев или выполнение нажатием клавиши TAB. При попытке выполнить операцию скрипта любого типа она завершается с ошибкой ScriptsNotAllowed. Такая ошибка считается нормальным поведением.

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

    Get-Command <cmdlet_name> -Syntax

Кроме того, можно использовать командлет Import-PSSession, чтобы импортировать все командлеты привилегированной конечной точки в текущий сеанс на локальном компьютере. Все командлеты и функции привилегированной конечной точки будут доступны на локальном компьютере, включая выполнение нажатием клавиши TAB и, в самых общих чертах, использование скриптов. Кроме того, для просмотра инструкций командлета можете выполнить модуль Get-Help .

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

  1. Установите доверие.

    • В интегрированной системе выполните указанную ниже команду из сеанса Windows PowerShell с повышенными правами, чтобы добавить PEP в качестве доверенного узла на защищенную виртуальную машину, работающую на узле жизненного цикла оборудования, или на рабочую станцию с привилегированным доступом.

      winrm s winrm/config/client '@{TrustedHosts="<IP Address of Privileged Endpoint>"}'
      
    • Если вы используете ASDK, войдите на узел комплекта разработки.

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

    • В интегрированной системе:

      $cred = Get-Credential
      
      $session = New-PSSession -ComputerName <IP_address_of_ERCS> `
         -ConfigurationName PrivilegedEndpoint -Credential $cred `
         -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
      

      Для параметра ComputerName можно указать IP-адрес или DNS-имя одной из виртуальных машин, на которых размещена привилегированная конечная точка.

    • При использовании ASDK:

      $cred = Get-Credential
      
      $session = New-PSSession -ComputerName azs-ercs01 `
         -ConfigurationName PrivilegedEndpoint -Credential $cred `
         -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)
      

    При появлении запроса используйте следующие учетные данные:

    • Имя пользователя. Укажите учетную запись CloudAdmin в формате <домен Azure Stack Hub>\cloudadmin. (При использовании ASDK имя пользователя — azurestack\cloudadmin.)

    • Пароль. Введите пароль, который использовался во время установки учетной записи администратора домена AzureStackAdmin.

  3. Импортируйте сеанс привилегированной конечной точки на локальный компьютер.

    Import-PSSession $session
    
  4. Теперь можно использовать выполнение нажатием клавиши Tab и запускать сценарии обычным образом в локальном сеансе PowerShell, располагая всеми функциями и командлетами привилегированной конечной точки и не снижая уровень безопасности Azure Stack Hub. Вот и все!

Закрытие сеанса привилегированной конечной точки

Как упоминалось ранее, в привилегированной конечной точке регистрируется каждое действие (и его соответствующие выходные данные), которое вы выполняете в сеансе PowerShell. Сеанс необходимо закрыть с помощью командлета Close-PrivilegedEndpoint . Этот командлет закрывает конечную точку надлежащим образом, а также передает файлы журнала во внешнюю общую папку для хранения.

Чтобы закрыть сеанс конечной точки:

  1. Создайте внешний файловый ресурс, доступный из привилегированной конечной точки. В среде комплекта разработки можно просто создать общую папку на узле комплекта разработки.

  2. Выполните следующий командлет:

    Close-PrivilegedEndpoint -TranscriptsPathDestination "\\fileshareIP\SharedFolder" -Credential Get-Credential
    

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

    Параметр Описание Тип Обязательно
    TranscriptsPathDestination Путь к внешней общей папке, который определен как "IP-адрес_общей_папки\имя_общей_папки" Строка Да
    Учетные данные Учетные данные для доступа к общей папке. SecureString Да

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

Примечание

Если завершить сеанс привилегированной конечной точки, используя командлеты Exit-PSSession либо Exit, или просто закрыть консоль PowerShell, журналы расшифровки не будут перенесены в файловый ресурс. Они останутся в привилегированной конечной точке. При следующем запуске командлета Close-PrivilegedEndpoint и добавлении общей папки журналы расшифровки из предыдущих сеансов будут также перенесены. Для закрытия сеанса PEP используйте Close-PrivilegedEndpoint, но не Exit-PSSession или Exit.

Разблокировка привилегированной конечной точки для сценариев поддержки

Во время сценария поддержки специалисту службы технической поддержки Майкрософт, возможно, потребуется повысить привилегии сеанса привилегированной конечной точки PowerShell, чтобы получить доступ к внутренним компонентам инфраструктуры Azure Stack Hub. Иногда неофициально называется "разбить стекло" или "разблокировать PEP". Процесс повышения прав сеанса PEP состоит из двух этапов: два человека, два процесса проверки подлинности организации. Процедура разблокировки инициируется оператором Azure Stack Hub, который сохраняет контроль над своей средой в любое время. Оператор обращается к PEP и выполняет этот командлет:

     Get-SupportSessionToken

Командлет возвращает маркер запроса сеанса поддержки— очень длинную буквенно-цифровую строку. Затем оператор передает маркер запроса инженеру службы поддержки Майкрософт по своему выбору (например, чат, электронная почта). Инженер службы поддержки Майкрософт на основе маркера запроса (при его допустимости) создает маркер авторизации сеанса поддержки и отправляет его обратно оператору Azure Stack Hub. В том же сеансе PEP PowerShell оператор передает маркер авторизации в качестве входных данных для этого командлета:

      unlock-supportsession
      cmdlet Unlock-SupportSession at command pipeline position 1
      Supply values for the following parameters:
      ResponseToken:

Если маркер авторизации допустим, привилегии сеанса PEP PowerShell повышаются за счет предоставления полных возможностей администрирования и полной доступности.

Примечание

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

После завершения сеанса поддержки очень важно закрыть сеанс PEP с повышенными привилегиями с помощью командлета Close-PrivilegedEndpoint, как описано в разделе выше. После завершения сеанса PEP маркер разблокировки становится недействительным и его нельзя использовать повторно для повторной разблокировки сеанса PEP. Сеанс PEP с повышенными привилегиями действителен в течение 8 часов. По истечении этого периода сеанс PEP с повышенными привилегиями автоматически блокируется и снова активируется обычный сеанс PEP.

Содержимое маркеров привилегированной конечной точки

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

Маркер запроса сеанса поддержки

Маркер запроса сеанса поддержки PEP состоит из трех объектов:

  • Идентификатор сеанса, сгенерированный случайным образом.
  • Самозаверяющий сертификат, созданный для создания однократной пары открытого и закрытого ключей. Сертификат не содержит никаких сведений о среде.
  • Метка времени, указывающая срок действия маркера запроса.

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

Поддержка маркера ответа авторизации сеанса

Маркер ответа авторизации поддержки PEP состоит из двух объектов:

  • Случайно созданный идентификатор сеанса, извлеченный из маркера запроса.
  • Метка времени, указывающая срок действия маркера ответа.

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

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