Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El comando Ejecutar en servidores habilitados para Azure Arc (versión preliminar) le permite ejecutar scripts o comandos de forma remota y segura en máquinas virtuales (VM) conectadas a Azure Arc, sin necesidad de una conexión directa a través del Protocolo de Escritorio remoto o SSH.
Dado que no tiene que iniciar sesión en cada máquina virtual individualmente, ejecutar comando reduce la sobrecarga y el esfuerzo para realizar tareas administrativas como instalar o actualizar software, configurar reglas de firewall, ejecutar comprobaciones de estado o solucionar problemas.
Un caso de uso clave es usar el comando Ejecutar para mejorar la posición de seguridad. Puede usar el comando Ejecutar para aplicar revisiones de seguridad de forma remota, aplicar directivas de cumplimiento o corregir vulnerabilidades en los servidores habilitados para Azure Arc. También puede automatizar tareas comunes de seguridad, como la rotación de contraseñas, el cifrado de datos o los registros de auditoría. A través de Azure Arc, puede realizar estas tareas de forma coherente en los entornos híbridos, multinube y perimetrales, lo que ayuda a reducir la sobrecarga operativa y el tiempo de respuesta.
Nota:
Aunque hay algunas diferencias, el comando Ejecutar en servidores habilitados con Azure Arc es similar a la funcionalidad del comando Ejecutar que puede usar en VMs de Azure, incluidas las restricciones descritas. Como ejemplo de las diferencias, el comando Ejecutar en servidores habilitados para Azure Arc no está disponible actualmente en Azure Portal.
Cómo funciona
El comando Run está integrado en el agente de Connected Machine (a partir de la versión 1.33) y admite la capacidad de ejecutar scripts y centralizar la administración de scripts en las operaciones de creación, actualización, eliminación, secuenciación y enumeración.
Cuando se usa el comando Ejecutar para ejecutar un script o comando desde la CLI de Azure, PowerShell o la API REST, Azure dirige al agente de Connected Machine instalado en la máquina virtual para completar la acción especificada. No tiene que instalar ninguna otra extensión en la máquina virtual.
Aunque el comando Ejecutar en servidores habilitados para Azure Arc es gratuito, los scripts que se almacenan en Azure incurren en cargos de facturación.
Importante
El comando "Run command" en servidores habilitados para Azure Arc no admite actualmente la autenticación de blobs mediante identidades administradas.
Configuraciones admitidas
El comando Ejecutar está disponible en muchas configuraciones:
- Experiencias: CLI de Azure, PowerShell y API REST
- Sistemas operativos: Windows y Linux
- Entornos: Entornos que no son de Azure conectados a Azure Arc, incluidos el entorno local, VMware, SCVMM, AWS, GCP y OCI
Nota:
En Linux, el comando Ejecutar no acepta nombres de más de 36 caracteres.
Uso del comando Ejecutar
Para usar el comando Ejecutar, cree un script que contenga los comandos que desea ejecutar en la máquina virtual. A continuación, ejecute el script mediante Azure PowerShell, la CLI de Azure o la API REST. En esta sección se incluyen ejemplos de cómo usar el comando Ejecutar con cada experiencia.
En los ejemplos siguientes se usa el módulo Az.ConnectedMachine para Azure PowerShell para ejecutar scripts o comandos en un servidor habilitado para Arc.
Ejecución de un script en una máquina
Este comando envía el script a la máquina, lo ejecuta y devuelve la salida capturada.
New-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -Location "eastus" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"
Nota:
Puede agregar varios comandos en el -SourceScript parámetro . Use ; para separar cada comando. Por ejemplo: –SourceScript "id; echo Hello World!"
Ejecución de un script en la máquina mediante un archivo de script en el almacenamiento
Este comando dirige el agente de Connected Machine a un URI de firma de acceso compartido (SAS) para un blob de almacenamiento donde se cargó un script. A continuación, dirige al agente para ejecutar el script y devolver la salida capturada.
New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScriptUri “< SAS URI of a storage blob with read access or public URI>”
Nota:
scriptUri es un URI de firma de acceso compartido (SAS) para el blob de almacenamiento y debe proporcionar acceso de lectura al blob. Se recomienda un tiempo de expiración de 24 horas para el URI de SAS. Puede generar un URI de SAS en Azure Portal mediante opciones de blobs o generar un token de SAS mediante New-AzStorageBlobSASToken. Si genera un token de SAS mediante New-AzStorageBlobSASToken, el formato de URI de SAS es: base blob URL + "?" + el token de SAS de New-AzStorageBlobSASToken.
Enumerar todos los recursos de comando Run implementados en una máquina
Este comando devuelve una lista completa de los comandos de ejecución implementados anteriormente junto con sus propiedades.
Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine"
Obtención del estado de ejecución y los resultados
Este comando recupera el progreso de ejecución actual de un comando Ejecutar, incluida la salida más reciente, la hora de inicio y finalización, el código de salida y el estado terminal de la ejecución.
Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -RunCommandName "RunCommandName"
Obtención de información de estado de un comando Run a través de la vista de instancia
Este comando obtiene información de estado para un comando de ejecución en una máquina con vista de instancia. La vista de instancia contiene el estado de ejecución del comando Ejecutar (correcto, erróneo, etc.), código de salida, salida estándar y error estándar generado mediante la ejecución del script. Un código de salida distinto de cero indica una ejecución incorrecta.
Get-AzConnectedMachineRunCommand -ResourceGroupName "MyRG" -MachineName "MyMachine" -RunCommandName "MyRunCommand"
Junto con otra información, la respuesta devuelve estos campos:
-
InstanceViewExecutionState: indica si el script se realizó correctamente o no. -
ProvisioningState: indica si la plataforma de extensión pudo desencadenar o no el script del comando Run.
Creación o actualización del comando Ejecutar en una máquina
Este comando crea o actualiza un comando Run en una máquina y transmite la salida estándar y los mensajes de error estándar a AppendBlobs de salida y error.
New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand3" -Location "eastus" -SourceScript "id; echo HelloWorld" -OutputBlobUri <OutPutBlobUrI> -ErrorBlobUri <ErrorBlobUri>
Nota:
Los blobs de salida y error deben ser el tipo AppendBlob y sus URI de SAS deben proporcionar acceso de lectura, anexión, creación y escritura al blob. Se recomienda un tiempo de expiración de 24 horas para el URI de SAS. Si la salida o el blob de error no existen, se crea un blob de tipo AppendBlob. Puede generar un URI de SAS en Azure Portal mediante las opciones del blob o generar un token de SAS mediante New-AzStorageBlobSASToken.
Cree o actualice Ejecutar comando en un equipo como un usuario diferente
Este comando crea o actualiza un comando de ejecución en una máquina como un usuario diferente mediante los parámetros RunAsUser y RunAsPassword.
Antes de usar este comando:
- Póngase en contacto con el administrador del equipo y asegúrese de que el usuario tiene acceso a la máquina.
- Asegúrese de que el usuario tiene acceso a los recursos a los que accede el comando Ejecutar, como directorios, archivos y recursos de red.
- En un equipo Windows, asegúrese de que se está ejecutando "Inicio de sesión secundario".
New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScript "id; echo HelloWorld" -RunAsUser myusername -RunAsPassword mypassword
Creación o actualización del comando Run en un equipo con un archivo de script local
Este comando crea o actualiza un comando de ejecución en un equipo utilizando un archivo de script local en el equipo cliente donde cmdlet se ejecuta.
New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"
Cree o actualice Ejecutar comando en una máquina mientras se pasan entradas confidenciales al script
Este comando crea o actualiza el comando Ejecutar con ProtectedParameter especificado para pasar entradas confidenciales a un script, como contraseñas o claves.
$privateParametersArray = @{name='inputText';value='privateParam1value'}
New-AzConnectedMachineRunCommand -MachineName "MyMachine" -ResourceGroupName "MyRG0" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScriptUri <SourceScriptUri> -ProtectedParameter $privateParametersArray
Script de ejemplo para capturar texto de entrada.
param ([string]$inputText)
Write-Output $inputText
También puede pasar parámetros públicos de forma similar mediante Parameter.
Para Windows: Parameter y ProtectedParameter se pasan a un script similar al ejemplo siguiente:
myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2valuePara Linux: un nombre
Parametery sus valores se establecen en la configuración del entorno, que debe ser accesible dentro del script de PowerShell. Para los argumentos sin nombre, pase una cadena vacía a la entrada de nombre. Los argumentos sin nombre se pasan al script similar al ejemplo siguiente:myscript.sh publicParam1value publicParam2value secret1value secret2value
Eliminar el recurso de comando Ejecutar de la máquina
Este comando quita el recurso del comando 'Run' previamente desplegado en la máquina. Si la ejecución del script todavía está en curso, la ejecución finaliza.
Remove-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -RunCommandName "RunCommandName"
Limitar el acceso al comando Ejecutar (versión preliminar)
Aunque el comando Ejecutar habilita el acceso remoto reduce la sobrecarga para realizar determinadas tareas en una máquina virtual (VM), también puede limitar el acceso remoto.
Administrar el acceso al comando Ejecutar mediante el control de acceso basado en roles de Azure (Azure RBAC)
Use Azure RBAC para controlar qué usuarios pueden ejecutar comandos y scripts mediante el comando Ejecutar.
En la tabla siguiente se describe una acción de comando 'Ejecutar', el permiso necesario para realizar la acción y el rol RBAC que concede el permiso.
| Acción | Permiso | RBAC con permiso |
|---|---|---|
| Enumerar comandos de ejecución o mostrar detalles del comando | Microsoft.HybridCompute/machines/runCommands/read |
Rol de Lector integrado y versiones posteriores |
| Ejecución de un comando | Microsoft.HybridCompute/machines/runCommands/write |
Rol de administrador de recursos de máquina conectada de Azure y versiones posteriores |
Para controlar el acceso a la funcionalidad Ejecutar comando, use uno de los roles integrados o cree un rol personalizado que conceda permiso ejecutar comando.
Bloquear comandos de ejecución localmente
Puede controlar si el agente de Connected Machine permite el acceso a la VM a través de comandos Run agregando la extensión Run command a una lista de permitidos (inclusiva) o una lista de bloqueo (exclusiva).
Para obtener más información, consulte Extension allow lists and block lists(Listas de extensiones permitidas y listas de bloques).
En el ejemplo siguiente se agrega la extensión ejecutar comando a una lista de bloqueos en una máquina virtual Windows:
azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerwindows"
En este ejemplo se agregan las extensiones del comando Run a una lista de permisos en una máquina virtual Linux.
azcmagent config set extensions.allowlist "microsoft.cplat.core/runcommandhandlerlinux"
Pasos siguientes
Para obtener información sobre cómo usar el comando Ejecutar, consulte los siguientes recursos: