Share via


Configurar servidores de forma remota e segura usando o comando Executar (Visualização)

Executar Comando em servidores habilitados para Azure Arc (Visualização Pública) usa o agente de Máquina Conectada para permitir que você execute remotamente e com segurança um script dentro de seus servidores. Isso pode ser útil para inúmeros cenários de solução de problemas, recuperação, diagnóstico e manutenção.

Ambiente e configuração suportados

  • Experiências: atualmente há suporte para o Run Command por meio da CLI do Azure e do PowerShell.

  • Sistemas Operacionais: Run Command suporta os sistemas operacionais Windows e Linux.

  • Ambientes: o Run Command suporta ambientes que não são do Azure, incluindo no local, VMware, SCVMM, AWS, GCP e OCI.

  • Custo: o Run Command é gratuito, no entanto, o armazenamento de scripts no Azure pode incorrer em cobrança.

  • Configuração: Executar comando não requer mais configuração ou a implantação de quaisquer extensões. A versão do agente da Máquina Conectada deve ser 1.33 ou superior.

Limitando o acesso ao Run Command usando RBAC

Listar os comandos de execução ou mostrar detalhes de um comando requer a Microsoft.HybridCompute/machines/runCommands/read permissão. A função de leitor interna e os níveis superiores têm essa permissão.

A execução de um comando requer a Microsoft.HybridCompute/machines/runCommands/write permissão. A função Administrador de Recursos de Máquina Conectada do Azure e níveis superiores têm essa permissão.

Você pode usar uma das funções internas ou criar uma função personalizada para usar o Comando Executar.

Bloqueando comandos de execução localmente

O agente Máquina Conectada suporta configurações locais que permitem definir uma lista de permissões ou uma lista de bloqueio. Consulte Listas de permissões e listas de bloqueio de extensões para saber mais.

Para Windows:

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

Para Linux:

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

CLI do Azure

Os exemplos a seguir usam az connectedmachine run-command para executar um shell script em uma máquina Windows do Azure.

Executar um script com a máquina

Este comando entrega o script à máquina, executa-o e devolve a saída capturada.

az connectedmachine run-command create --name "myRunCommand" --machine-name "myMachine" --resource-group "myRG" --script "Write-Host Hello World!"

Listar todos os recursos RunCommand implantados em uma máquina

Este comando retorna uma lista completa de comandos de execução implantados anteriormente, juntamente com suas propriedades.

az connectedmachine run-command list --machine-name "myMachine" --resource-group "myRG"

Obter status e resultados de execução

Este comando recupera o progresso da execução atual, incluindo a saída mais recente, a hora de início/fim, o código de saída e o estado terminal da execução.

az connectedmachine run-command show --name "myRunCommand" --machine-name "myMachine" --resource-group "myRG"

Nota

Os campos de saída e erro estão instanceView limitados aos últimos 4KB. Para acessar a saída completa e o erro, você pode encaminhar os dados de saída e erro para o armazenamento de blobs de acréscimo usando -outputBlobUri e -errorBlobUri parâmetros durante a execução do Run Command.

Excluir o recurso RunCommand da máquina

Remova o recurso RunCommand implantado anteriormente na máquina. Se a execução do script ainda estiver em andamento, a execução será encerrada.

az connectedmachine run-command delete --name "myRunCommand" --machine-name "myMachine" --resource-group "myRG"

PowerShell

Executar um script com a máquina

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

Execute um script na máquina usando o parâmetro SourceScriptUri

OutputBlobUri e ErrorBlobUri são parâmetros opcionais.

New-AzConnectedMachineRunCommand -ResourceGroupName -MachineName -RunCommandName -SourceScriptUri “< SAS URI of a storage blob with read access or public URI>” -OutputBlobUri “< SAS URI of a storage append blob with read, add, create, write access>” -ErrorBlobUri “< SAS URI of a storage append blob with read, add, create, write access>”

Listar todos os recursos RunCommand implantados em uma máquina

Este comando retorna uma lista completa de Comandos de Execução implantados anteriormente, juntamente com suas propriedades.

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

Obter status e resultados de execução

Este comando recupera o progresso da execução atual, incluindo a saída mais recente, a hora de início/fim, o código de saída e o estado terminal da execução.

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

Criar ou atualizar o Run Command em uma máquina usando SourceScriptUri (URL SAS do blob de armazenamento)

Criar ou atualizar o Comando Executar em uma máquina Windows usando uma URL SAS de um blob de armazenamento que contém um script do PowerShell. SourceScriptUri pode ser o URL SAS completo de um blob de armazenamento ou o URL público.

New-AzConnectedMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>

Nota

A URL SAS deve fornecer acesso de leitura ao blob. Um tempo de expiração de 24 horas é sugerido para o URL SAS. As URLs SAS podem ser geradas no portal do Azure usando opções de blob ou token SAS usando New-AzStorageBlobSASToken. Se estiver gerando um token SAS usando New-AzStorageBlobSASTokeno , seu URL SAS = "URL de blob base" + "?" + "Token SAS de New-AzStorageBlobSASToken"

Obter uma exibição de instância de comando de execução para uma máquina depois de criar ou atualizar o comando de execução

Obtenha um comando Run para máquina com visualização de instância. Instance View contém o estado de execução do comando run (Succeeded, Failed, etc.), código de saída, saída padrão e erro padrão gerado pela execução do script usando Run Command. Um ExitCode diferente de zero indica uma execução malsucedida.

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

InstanceViewExecutionState: Status do script Run Command do usuário. Consulte esse estado para saber se o script foi bem-sucedido ou não.

ProvisioningState: Status do provisionamento geral de extensão de ponta a ponta (se a plataforma de extensão foi capaz de acionar o script Run Command ou não).

Criar ou atualizar o Run Command em uma máquina usando SourceScript (texto de script)

Crie ou atualize o Run Command em uma máquina passando o conteúdo do script diretamente para o -SourceScript parâmetro. Use ; para separar vários comandos.

New-AzConnectedMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand2 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"

Criar ou atualizar Executar comando em uma máquina usando OutputBlobUri, ErrorBlobUri para transmitir saída padrão e mensagens de erro padrão para saída e erro Acrescentar blobs

Crie ou atualize o Comando Executar em uma máquina e transmita mensagens de saída padrão e de erro padrão para blobs de Acréscimo de saída e erro.

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

Nota

Os blobs de saída e de erro devem ser do tipo AppendBlob e suas URLs SAS devem fornecer acesso de leitura, acréscimo, criação e gravação ao blob. Um tempo de expiração de 24 horas é sugerido para o URL SAS. Se o blob de saída ou de erro não existir, um blob do tipo AppendBlob será criado. As URLs SAS podem ser geradas no portal do Azure usando as opções do blob ou o token SAS usando New-AzStorageBlobSASTokeno .

Criar ou atualizar Run Command em uma máquina como um usuário diferente usando os parâmetros RunAsUser e RunAsPassword

Crie ou atualize o Run Command em uma máquina como um usuário diferente usando RunAsUser e RunAsPassword parâmetros. Para que o RunAs funcione corretamente, entre em contato com o administrador da máquina e certifique-se de que o usuário seja adicionado à máquina, que o usuário tenha acesso aos recursos acessados pelo Comando Run (diretórios, arquivos, rede, etc.) e, no caso da máquina Windows, o serviço 'Logon Secundário' esteja em execução na máquina.

New-AzMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScript "id; echo HelloWorld" -RunAsUser myusername -RunAsPassword mypassword

Criar ou atualizar o Run Command em um recurso de máquina usando SourceScriptUri (URL SAS do blob de armazenamento)

Criar ou atualizar o Comando Executar em um recurso de máquina Windows usando uma URL SAS de um blob de armazenamento que contém um script do PowerShell.

New-AzMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>

Nota

A URL SAS deve fornecer acesso de leitura ao blob. Sugere-se um tempo de expiração de 24 horas para o URL SAS. As URLs SAS podem ser geradas no portal do Azure usando opções de blob ou token SAS usando New-AzStorageBlobSASToken. Se estiver gerando o token SAS usando New-AzStorageBlobSASTokeno , o formato de URL SAS é: URL de blob base + "?" + o token SAS de New-AzStorageBlobSASToken.

Criar ou atualizar o Run Command em uma máquina usando ScriptLocalPath (arquivo de script local)

Crie ou atualize o Run Command em uma máquina usando um arquivo de script local que está na máquina cliente onde o cmdlet é executado.

New-AzMachineRunCommand -ResourceGroupName MyRG0 -VMName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"

Criar ou atualizar o Run Command em uma instância de máquina usando os parâmetros Parameter e ProtectedParameter (Public and Protected Parameters to script)

Use ProtectedParameter para passar quaisquer entradas confidenciais para o script, como senhas, chaves, etc.

  • Windows: Parameters e ProtectedParameters são passados para o script à medida que os argumentos são passados para o script e são executados da seguinte forma: myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value

  • Linux: Parâmetros nomeados e seus valores são definidos como configuração de ambiente, que deve ser acessível dentro do script .sh. Para argumentos Nameless, passe uma cadeia de caracteres vazia para name input. Os argumentos sem nome são passados para o script e executados da seguinte forma: myscript.sh publicParam1value publicParam2value secret1value secret2value

Excluir o recurso RunCommand da máquina

Remova o recurso RunCommand implantado anteriormente na máquina. Se a execução do script ainda estiver em andamento, a execução será encerrada.

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

Executar operações de comando

Executar comando em servidores habilitados para Azure Arc dá suporte às seguintes operações:

Operation Description
Criar A operação para criar um comando run. Isso executa o comando run.
Eliminar A operação para excluir um comando de execução. Se estiver em execução, delete também interromperá o comando run.
Obter A operação para obter um comando run.
Lista A operação para obter todos os comandos de execução de um servidor habilitado para Azure Arc.
Atualização A operação para atualizar o comando run. Isso interrompe o comando de execução anterior.

Nota

Os blobs de saída e de erro são substituídos sempre que o script de comando run é executado.

Cenários de exemplo

Suponha que você tenha um servidor habilitado para Azure Arc chamado "2012DatacenterServer1" no grupo de recursos "ContosoRG" com ID de Assinatura "aaa-aa-aa-a-aaa Considere um cenário em que você precisa fornecer acesso remoto a um ponto de extremidade para servidores Windows Server 2012 / R2. O acesso às Atualizações de Segurança Estendidas habilitadas pelo Azure Arc requer acesso ao ponto de extremidade www.microsoft.com/pkiops/certs. Você precisa configurar remotamente uma regra de firewall que permita o acesso a esse ponto de extremidade. Use Executar comando para permitir a conectividade com esse ponto de extremidade.

Exemplo 1: Acesso ao ponto de extremidade com o comando Run

Comece criando um script Run Command para fornecer acesso ao endpoint no servidor habilitado para www.microsoft.com/pkiops/certs Arc de destino usando a operação PUT.

Para fornecer diretamente o script na linha, use a seguinte operação:

PUT https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2023-10-03-preview
{
  "location": "eastus2",
  "properties": {
    "source": {
      "script": "New-NetFirewallRule -DisplayName $ruleName -Direction Outbound -Action Allow -RemoteAddress $endpoint -RemotePort $port -Protocol $protocol"
    },
    "parameters": [
      {
        "name": "ruleName",
        "value": "Allow access to www.microsoft.com/pkiops/certs"
      },
      {
        "name": "endpoint",
        "value": "www.microsoft.com/pkiops/certs"
      },
      {
        "name": "port",
        "value": 433
      },
      {
        "name": "protocol",
        "value": "TCP"
      }

    ],
    "asyncExecution": false,
    "runAsUser": "contoso-user1",
    "runAsPassword": "Contoso123!"
    "timeoutInSeconds": 3600,
    "outputBlobUri": "https://mystorageaccount.blob.core.windows.net/myscriptoutputcontainer/MyScriptoutput.txt",
    "errorBlobUri": "https://mystorageaccount.blob.core.windows.net/mycontainer/MyScriptError.txt"
  }
}

Para vincular ao arquivo de script, você pode usar a opção ScriptURI da operação Executar comando. Para isso, supõe-se que você tenha preparado um newnetfirewallrule.ps1 arquivo contendo o script in-line e carregado esse script para o armazenamento de blobs.

PUT https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2023-10-03-preview
{
  "location": "eastus2",
  "properties": {
    "source": {
      "scriptUri": "https://mystorageaccount.blob.core.windows.net/myscriptoutputcontainer/newnetfirewallrule.ps1"
    },
    "parameters": [
      {
        "name": "ruleName",
        "value": " Allow access to www.microsoft.com/pkiops/certs"
      },
      {
        "name": "endpoint",
        "value": "www.microsoft.com/pkiops/certs"
      },
      {
        "name": "port",
        "value": 433
      },
      {
        "name": "protocol",
        "value": "TCP"
      }

    ],
    "asyncExecution": false,
    "runAsUser": "contoso-user1",
    "runAsPassword": "Contoso123!"
    "timeoutInSeconds": 3600,
    "outputBlobUri": "https://mystorageaccount.blob.core.windows.net/myscriptoutputcontainer/MyScriptoutput.txt",
    "errorBlobUri": "https://mystorageaccount.blob.core.windows.net/mycontainer/MyScriptError.txt"
  }
}

A URL SAS deve fornecer acesso de leitura ao blob. Sugere-se um tempo de expiração de 24 horas para o URL SAS. As URLs SAS podem ser geradas no portal do Azure usando opções de blobs ou token SAS usando New-AzStorageBlobSASToken. Se estiver gerando um token SAS usando New-AzStorageBlobSASToken, o formato de URL SAS é: base blob URL + "?" + o token SAS de New-AzStorageBlobSASToken.

Os blobs de saída e de erro devem ser do tipo AppendBlob e suas URLs SAS devem fornecer acesso de leitura, acréscimo, criação e gravação ao blob. Um tempo de expiração de 24 horas é sugerido para o URL SAS. As URLs SAS podem ser geradas no portal do Azure usando as opções do blob ou o token SAS usando New-AzStorageBlobSASTokeno .

Exemplo 2: Obter detalhes do comando de execução

Para verificar se você provisionou corretamente o Comando Executar, use o comando GET para recuperar detalhes sobre o Comando Executar provisionado:

GET https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2023-10-03-preview

Exemplo 3: Atualizar o comando Executar

Vamos supor que você queira abrir o acesso a um ponto de extremidade *.waconazure.com adicional para conectividade com o Windows Admin Center. Você pode atualizar o Run Command existente com novos parâmetros:

PATCH https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2023-10-03-preview
{
  "location": "eastus2",
  "properties": {
    "source": {
      "script": "New-NetFirewallRule -DisplayName $ruleName -Direction Outbound -Action Allow -RemoteAddress $endpoint -RemotePort $port -Protocol $protocol"
    },
    "parameters": [
      {
        "name": "ruleName",
        "value": "Allow access to WAC endpoint"
      },
      {
        "name": "endpoint",
        "value": "*.waconazure.com"
      },
      {
        "name": "port",
        "value": 433
      },
      {
        "name": "protocol",
        "value": "TCP"
      }
    ],
    "asyncExecution": false,
    "runAsUser": "contoso-user1",
    "runAsPassword": "Contoso123!",
    "timeoutInSeconds": 3600,
    "outputBlobUri": "https://mystorageaccount.blob.core.windows.net/myscriptoutputcontainer/MyScriptoutput.txt",
    "errorBlobUri": "https://mystorageaccount.blob.core.windows.net/mycontainer/MyScriptError.txt"
  }
}

Exemplo 4: Listar comandos de execução

Antes de excluir o Comando Executar para Acesso ao Ponto de Extremidade, verifique se não há outros Comandos de Execução para o servidor habilitado para Arc. Você pode usar o comando list para obter todos os comandos Executar:

LIST https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/

Exemplo 5: Excluir um comando Executar

Se você não precisar mais da extensão Executar comando, poderá excluí-la usando o seguinte comando:

DELETE https://management.azure.com/subscriptions/ aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/EndpointAccessCommand?api-version=2023-10-03-preview

Desativando o comando Executar

Para desabilitar o Executar Comando em servidores habilitados para ArcGIS do Azure, abra um prompt de comando administrativo e execute os seguintes comandos. Esses comandos usam os recursos de configuração do agente local para o agente de Máquina Conectada na lista de bloqueio de extensão.

Windows

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

Linux

sudo azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerlinux"