Поделиться через


Выполните команду на серверах с поддержкой Azure Arc (предварительная версия)

Команда Run на серверах с поддержкой Azure Arc (предварительная версия) позволяет удаленно и безопасно выполнять сценарии или команды на виртуальных машинах (виртуальных машинах), подключенных к Azure Arc, без прямого подключения через протокол удаленного рабочего стола или SSH.

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

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

Примечание.

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

Принцип работы

Команда Run встроена в агент подключенного компьютера (начиная с версии 1.33) и поддерживает возможность запуска скриптов и централизованного управления сценариями при создании, обновлении, удалении, последовательности и перечислении операций.

При использовании команды Run для выполнения скрипта или команды из Azure CLI, PowerShell или REST API Azure направляет агент подключенного компьютера, установленный на виртуальной машине, для выполнения указанного действия. Вам не нужно устанавливать другие расширения на виртуальную машину.

Хотя команда Run на серверах с поддержкой Azure Arc доступна бесплатно, за скрипты, которые хранятся в Azure, взимается плата.

Это важно

Команда выполнения на серверах с поддержкой Azure Arc в настоящее время не поддерживает аутентификацию Blob с помощью управляемых удостоверений.

Поддерживаемые конфигурации

Команда Run доступна во многих конфигурациях:

  • Опыт: Azure CLI, PowerShell и REST API
  • Операционные системы: Windows и Linux
  • Среды: Подключенные к Azure Arc среды, включая локальные среды, VMware, SCVMM, AWS, GCP и OCI

Примечание.

В Linux команда Run не принимает имена дольше 36 символов.

Использование команды Run

Чтобы использовать команду Run, создайте сценарий, содержащий команды, которые необходимо выполнить на виртуальной машине. Затем выполните скрипт с помощью Azure PowerShell, Azure CLI или REST API. В этом разделе приведены примеры использования команды Run с каждым интерфейсом.

В следующих примерах модуль Az.ConnectedMachine для Azure PowerShell используется для выполнения скриптов или команд на сервере с поддержкой Arc.

Выполнение скрипта на компьютере

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

New-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -Location "eastus" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"

Примечание.

В параметр можно добавить несколько команд -SourceScript . Используйте ; для разделения каждой команды. Например: –SourceScript "id; echo Hello World!"

Выполнение скрипта на компьютере с помощью файла скрипта в хранилище

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

New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScriptUri “< SAS URI of a storage blob with read access or public URI>”

Примечание.

Это scriptUri унифицированный указатель ресурса (URI) подписанного URL-адреса с общим доступом (SAS) для объекта BLOB хранилища, и он должен предоставлять доступ для чтения к этому объекту. Для URI SAS предлагается срок действия 24 часа. Вы можете создать URI SAS на портале Azure с помощью параметров больших двоичных объектов или создать маркер SAS с помощью New-AzStorageBlobSASToken. Если вы создаете маркер SAS с помощью New-AzStorageBlobSASToken, формат URI SAS: base blob URL + "?" + маркер SAS из New-AzStorageBlobSASToken.

Перечисление всех развернутых ресурсов команды Run на компьютере

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

Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine"

Получение состояния выполнения и результатов

Эта команда извлекает текущий ход выполнения для команды Run, включая последние выходные данные, время начала и окончания, код выхода и состояние терминала выполнения.

Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -RunCommandName "RunCommandName"

Получение сведений о состоянии команды Run через Просмотр экземпляра

Эта команда получает сведения о состоянии команды 'Run' на компьютере с видом экземпляра. Представление экземпляра содержит состояние выполнения команды Run (успешно, неудачно и т. д.), код выхода, стандартный вывод и стандартные ошибки, созданные при выполнении скрипта. Код выхода, отличный от нуля, указывает на неудачное выполнение.

Get-AzConnectedMachineRunCommand -ResourceGroupName "MyRG" -MachineName "MyMachine" -RunCommandName "MyRunCommand"

Наряду с другими сведениями ответ возвращает следующие поля:

  • InstanceViewExecutionState: указывает, был ли ваш скрипт успешным или нет.
  • ProvisioningState: указывает, удалось ли платформе расширений активировать скрипт команды Run или нет.

Создание или обновление команды запуска на компьютере

Эта команда создает или обновляет команду Run на компьютере и передает стандартные выходные и стандартные сообщения об ошибках для вывода и ошибки AppendBlobs.

New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand3" -Location "eastus" -SourceScript "id; echo HelloWorld" -OutputBlobUri <OutPutBlobUrI> -ErrorBlobUri <ErrorBlobUri>

Примечание.

Вывод и ошибки должны быть двоичными блобами типа AppendBlob, а их SAS URI должны обеспечивать доступ на чтение, добавление, создание и запись. Для URI SAS предлагается срок действия 24 часа. Если выходные данные или объект ошибки в виде блоба не существует, создается блоб типа AppendBlob. Вы можете создать SAS URI на портале Azure с помощью параметров BLOB или сгенерировать маркер SAS с помощью New-AzStorageBlobSASToken.

Создание или обновление команды запуска на компьютере в качестве другого пользователя

Эта команда создает или обновляет команду выполнения на компьютере от имени другого пользователя, используя параметры RunAsUser и RunAsPassword.

Перед использованием этой команды:

  • Обратитесь к администратору компьютера и убедитесь, что пользователь имеет доступ к компьютеру.
  • Убедитесь, что пользователь имеет доступ к ресурсам, к которым обращается команда Run, например каталоги, файлы и сетевые ресурсы.
  • На компьютере с Windows удостоверьтесь, что запущен служба 'Secondary Logon'.
New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScript "id; echo HelloWorld" -RunAsUser myusername -RunAsPassword mypassword

Создание или обновление команды run на компьютере с помощью локального файла скрипта

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

New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"

Создание или обновление команды Run на компьютере при передаче конфиденциальных входных данных в скрипт

Эта команда создает или обновляет команду Run с указанным ProtectedParameter для передачи конфиденциальных входных данных в скрипт, например, паролей или ключей.

$privateParametersArray = @{name='inputText';value='privateParam1value'}

New-AzConnectedMachineRunCommand -MachineName "MyMachine" -ResourceGroupName "MyRG0" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScriptUri <SourceScriptUri> -ProtectedParameter $privateParametersArray 

Пример скрипта для получения inputText:

param ([string]$inputText)
Write-Output $inputText

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

  • Для Windows: параметр и ProtectedParameter передаются в скрипт, аналогичный следующему примеру: myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value

  • Для Linux: именованный Parameter и его значения задаются в конфигурации среды, которая должна быть доступна в скрипте PowerShell. Для безымянных аргументов передайте пустую строку в поле имени. Безымянные аргументы передаются в скрипт, подобный следующему примеру: myscript.sh publicParam1value publicParam2value secret1value secret2value

Удаление ресурса команды Run с компьютера

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

Remove-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -RunCommandName "RunCommandName"

Ограничение доступа к команде Run (предварительная версия)

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

Управление доступом к команде Run с помощью управления доступом на основе ролей Azure (Azure RBAC)

Используйте Azure RBAC для управления тем, какие пользователи могут выполнять команды и скрипты с помощью команды Run.

В следующей таблице описано действие команды Run, разрешение, необходимое для выполнения действия, и роль RBAC, которая предоставляет разрешение.

Действие Разрешение RBAC с разрешением
Вывод списка команд запуска или отображение сведений о команде Microsoft.HybridCompute/machines/runCommands/read Встроенная роль Reader и выше
Выполнение команды Microsoft.HybridCompute/machines/runCommands/write Роль администратора ресурсов подключенного компьютера Azure и выше

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

Блокировка команд выполнения локально

Агент подключенного компьютера может управлять доступом к виртуальной машине с помощью команд Run, добавив расширение команды Run в список разрешений (включительно) или список блокировок (эксклюзивный).

Дополнительные сведения см. в разделе "Списки разрешений расширения" и списки блокировок.

В следующем примере расширение команды Run добавляется в список блокировок на виртуальной машине Windows:

azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerwindows"

В этом примере расширения команд Run добавляются в список разрешений на виртуальной машине Linux:

azcmagent config set extensions.allowlist "microsoft.cplat.core/runcommandhandlerlinux"

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

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