Condividi tramite


Configurare i server da remoto e in modo sicuro con esegui comando (anteprima)

Esegui comando nei server abilitati per Azure Arc (anteprima pubblica) usa l'agente di Connected Machine per consentire l'esecuzione remota e sicura di uno script all'interno dei propri server. Ciò può essere utile in numerosi scenari per la risoluzione dei problemi, il ripristino, la diagnostica e la manutenzione.

Ambiente e configurazione supportati

  • Esperienze: esegui comando è al momento supportato tramite l'interfaccia della riga di comando di Azure e PowerShell.

  • Sistemi operativi: esegui comando supporta sia i sistemi operativi Windows che i sistemi operativi Linux.

  • Ambienti: esegui comando supporta ambienti non Azure, tra cui locale, VMware, SCVMM, AWS, GCP e OCI.

  • Costo: esegui comando è gratuito, tuttavia l'archiviazione degli script in Azure potrebbe essere fatturata.

  • Configurazione: esegui comando non richiede più la configurazione o la distribuzione di estensioni. La versione dell'agente Connected Machine deve essere 1.33 o successiva.

Limitazione dell'accesso a esegui comando con il controllo degli accessi in base al ruolo

Per elencare i comandi di esecuzione o visualizzare i dettagli di un comando è necessaria l'autorizzazione Microsoft.HybridCompute/machines/runCommands/read. Il ruolo predefinito Lettore e i livelli superiori hanno questa autorizzazione.

L'esecuzione di un comando richiede l'autorizzazione Microsoft.HybridCompute/machines/runCommands/write. Il ruolo Amministratore delle risorse di Azure Connected Machine e i livelli superiori dispongono di questa autorizzazione.

È possibile usare uno dei ruoli predefiniti o creare un ruolo personalizzato per usare Esegui comando.

Blocco dei comandi di esecuzione locali

L'agente Connected Machine supporta configurazioni locali che consentono di impostare un elenco di elementi consentiti o un elenco di elementi bloccati. Per altre informazioni, vedere Elenchi di estensioni consentite ed elenchi di estensioni bloccate.

Per Windows:

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

Per Linux:

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

Interfaccia della riga di comando di Azure

Gli esempi seguenti usano az connectedmachine run-command per eseguire uno script di shell in un computer Windows in Azure.

Eseguire uno script con il computer

Questo comando recapita lo script al computer, lo esegue e restituisce l'output acquisito.

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

Elencare tutte le risorse RunCommand distribuite in un computer

Questo comando restituisce un elenco completo dei comandi di esecuzione distribuiti in precedenza con le relative proprietà.

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

Ottenere lo stato e i risultati dell'esecuzione

Questo comando recupera lo stato dell'esecuzione corrente, inclusi l'output più recente, l'ora di inizio/fine, il codice di uscita e lo stato terminale dell'esecuzione.

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

Nota

I campi di output e di errore in instanceView sono limitati agli ultimi 4 KB. Per accedere all'output e all'errore completi, è possibile inoltrare i dati di output e di errore ai BLOB di accodamento dell'archiviazione usando i parametri -outputBlobUri e -errorBlobUri durante l'esecuzione di esegui comando.

Eliminare la risorsa RunCommand dal computer

Rimuovere la risorsa RunCommand distribuita in precedenza nel computer. Se l'esecuzione dello script è ancora in corso, l'esecuzione verrà terminata.

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

PowerShell

Eseguire uno script con il computer

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

Eseguire uno script nel computer usando il parametro SourceScriptUri

OutputBlobUri e ErrorBlobUri sono parametri facoltativi.

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>”

Elencare tutte le risorse RunCommand distribuite in un computer

Questo comando restituisce un elenco completo di esegui comando distribuiti in precedenza con le relative proprietà.

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

Ottenere lo stato e i risultati dell'esecuzione

Questo comando recupera lo stato dell'esecuzione corrente, inclusi l'output più recente, l'ora di inizio/fine, il codice di uscita e lo stato terminale dell'esecuzione.

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

Creare o aggiornare esegui comando in un computer usando SourceScriptUri (URL della firma di accesso condiviso del BLOB di archiviazione)

Creare o aggiornare esegui comando in un computer Windows con un URL della firma di accesso condiviso di un BLOB di archiviazione che contiene uno script di PowerShell. SourceScriptUri può essere un URL della firma di accesso condiviso completo di un BLOB di archiviazione o un URL pubblico.

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

Nota

L'URL della firma di accesso condiviso deve fornire l'accesso in lettura al BLOB. Viene suggerita una scadenza di 24 ore per l'URL della firma di accesso condiviso. Gli URL della firma di accesso condiviso possono essere generati nel portale di Azure con opzioni BLOB o token di firma di accesso condiviso usando New-AzStorageBlobSASToken. Se si genera un token di firma di accesso condiviso usando New-AzStorageBlobSASToken, il proprio URL della firma di accesso condiviso = "URL BLOB di base" + "?" + "Token di firma di accesso condiviso da New-AzStorageBlobSASToken"

Ottenere una visualizzazione dell'istanza di esegui comando per un computer dopo la creazione o l'aggiornamento di esegui comando

Ottenere esegui comando per il computer con visualizzazione dell'istanza. La visualizzazione dell'istanza contiene lo stato di esecuzione di Esegui comando (Completato, Con errori e così via), il codice di uscita, l'output standard e l'errore standard generato eseguendo lo script con Esegui comando. Un codice ExitCode diverso da zero indica un'esecuzione non riuscita.

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

InstanceViewExecutionState: stato dello script Esegui comando dell'utente. Fare riferimento a questo stato per sapere se lo script ha avuto esito positivo o negativo.

ProvisioningState: stato del provisioning dell'estensione generale end-to-end (se la piattaforma dell'estensione ha attivato o meno lo script Esegui comando).

Creare o aggiornare Esegui comando in un computer con SourceScript (testo script)

Creare o aggiornare Esegui comando in un computer che passa il contenuto dello script direttamente al parametro -SourceScript. Usare ; per separare più comandi.

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

Creare o aggiornare Esegui comando in un computer con OutputBlobUri, ErrorBlobUri per trasmettere l'output standard e i messaggi di errore standard all'output e al BLOB di accodamento dell'errore

Creare o aggiornare Esegui comando in un computer e trasmettere l'output standard e i messaggi di errore standard all'output e al BLOB di accodamento dell'errore.

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

Nota

I BLOB di output e di errore devono essere di tipo BLOB di accodamento e gli URL di firma di accesso condiviso devono fornire l'accesso in lettura, accodamento, creazione e scrittura al BLOB. Viene suggerita una scadenza di 24 ore per l'URL della firma di accesso condiviso. Se il BLOB di output o di errore non esiste, verrà creato un BLOB di tipo BLOB di accodamento. Gli URL della firma di accesso condiviso possono essere generati nel portale di Azure con le opzioni del BLOB o il token di firma di accesso condiviso usando New-AzStorageBlobSASToken.

Creare o aggiornare Esegui comando in un computer come utente diverso usando i parametri RunAsUser e RunAsPassword

Creare o aggiornare Esegui comando in un computer come utente diverso usando i parametri RunAsUser e RunAsPassword . Affinché RunAs funzioni correttamente, contattare l'amministratore del computer e assicurarsi che l'utente venga aggiunto al computer, che abbia accesso alle risorse a cui accede Esegui comando (directory, file, rete e così via) e, nel caso di computer Windows, che il servizio "Accesso secondario" sia in esecuzione nel computer.

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

Creare o aggiornare Esegui comando in una risorsa del computer usando SourceScriptUri (URL della firma di accesso condiviso del BLOB di archiviazione)

Creare o aggiornare Esegui comando in una risorsa del computer Windows con un URL della firma di accesso condiviso di un BLOB di archiviazione che contiene uno script di PowerShell.

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

Nota

L'URL della firma di accesso condiviso deve fornire l'accesso in lettura al BLOB. Per l'URL della firma di accesso condiviso è consigliata una scadenza di 24 ore. Gli URL della firma di accesso condiviso possono essere generati nel portale di Azure con le opzioni del BLOB o il token di firma di accesso condiviso usando New-AzStorageBlobSASToken. Se si genera un token di firma di accesso condiviso usando New-AzStorageBlobSASToken, il formato dell'URL della firma di accesso condiviso è: URL BLOB di base + "?" + token di firma di accesso condiviso da New-AzStorageBlobSASToken.

Creare o aggiornare Esegui comando in un computer usando ScriptLocalPath (file di script locale)

Creare o aggiornare Esegui comando in un computer usando un file di script locale presente nel computer client in cui viene eseguito il cmdlet.

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

Creare o aggiornare Esegui comando in un'istanza del computer usando i parametri Parameter e ProtectedParameter (parametri pubblici e protetti per lo script)

Usare ProtectedParameter per passare qualsiasi input sensibile allo script, ad esempio password, chiavi e così via.

  • Windows: i parametri Parameters e ProtectedParameters vengono passati allo script come argomenti e vengono eseguiti in questo modo: myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value

  • Linux: i parametri denominati e i relativi valori sono impostati sulla configurazione dell'ambiente, che deve essere accessibile all'interno dello script .sh. Per gli argomenti senza nome, passare una stringa vuota per assegnare un nome all'input. Gli argomenti senza nome vengono passati allo script ed eseguiti in questo modo: myscript.sh publicParam1value publicParam2value secret1value secret2value

Eliminare la risorsa RunCommand dal computer

Rimuovere la risorsa RunCommand distribuita in precedenza nel computer. Se l'esecuzione dello script è ancora in corso, l'esecuzione verrà terminata.

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

Operazioni esegui comando

Esegui comando nei server abilitati per Azure Arc supporta le operazioni seguenti:

Operazione Descrizione
Creazione Operazione per creare un comando di esecuzione. Questo esegue un comando di esecuzione.
Elimina Operazione per eliminare un comando di esecuzione. Se è in esecuzione, l'eliminazione arresterà anche il comando di esecuzione.
Recupero Operazione per ottenere un comando di esecuzione.
List Operazione per ottenere tutti i comandi di esecuzione di un server abilitato per Azure Arc.
Update Operazione per aggiornare il comando di esecuzione. In questo modo viene arrestato il comando di esecuzione precedente.

Nota

I BLOB di output e di errore vengono sovrascritti ogni volta che viene eseguito lo script del comando di esecuzione.

Scenari di esempio

Si supponga di avere un server abilitato per Azure Arc denominato "2012DatacenterServer1" nel gruppo di risorse "ContosoRG" con ID “sottoscrizione "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa". Si consideri uno scenario in cui è necessario fornire l'accesso remoto a un endpoint per i server Windows Server 2012/R2. L'accesso agli aggiornamenti della sicurezza estesi abilitati da Azure Arc richiede l'accesso all'endpoint www.microsoft.com/pkiops/certs. È necessario configurare in remoto una regola del firewall che consenta l'accesso a questo endpoint. Usare Esegui comando per consentire la connettività a tale endpoint.

Esempio 1: accesso all'endpoint con Esegui comando

Iniziare creando uno script Esegui comando per fornire all'endpoint l'accesso all'endpoint www.microsoft.com/pkiops/certs nel server abilitato per Arc di destinazione con l'operazione PUT.

Per fornire direttamente lo script in linea, usare l'operazione seguente:

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"
  }
}

Per eseguire invece il collegamento al file di script, è possibile usare l'opzione ScriptURI dell'operazione Esegui comando. Per questo si presuppone che sia stato preparato un file newnetfirewallrule.ps1 contenente lo script inline e caricato questo script nell'archivio BLOB.

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"
  }
}

L'URL della firma di accesso condiviso deve fornire l'accesso in lettura al BLOB. Per l'URL della firma di accesso condiviso è consigliata una scadenza di 24 ore. Gli URL della firma di accesso condiviso possono essere generati nel portale di Azure con le opzioni dei BLOB o il token di firma di accesso condiviso usando New-AzStorageBlobSASToken. Se si genera un token di firma di accesso condiviso usando New-AzStorageBlobSASToken, il formato dell'URL della firma di accesso condiviso è: base blob URL + "?" + il token di firma di accesso condiviso da New-AzStorageBlobSASToken.

I BLOB di output e di errore devono essere di tipo BLOB di accodamento e gli URL di firma di accesso condiviso devono fornire l'accesso in lettura, accodamento, creazione e scrittura al BLOB. Viene suggerita una scadenza di 24 ore per l'URL della firma di accesso condiviso. Gli URL della firma di accesso condiviso possono essere generati nel portale di Azure con le opzioni del BLOB o il token di firma di accesso condiviso usando New-AzStorageBlobSASToken.

Esempio 2: ottenere i dettagli di Esegui comando

Per verificare di aver eseguito correttamente il provisioning di Esegui comando, usare il comando GET per recuperare i dettagli di Esegui comando di cui è stato effettuato il provisioning:

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

Esempio 3: aggiornare Esegui comando

Si supponga di voler aprire l'accesso a un endpoint aggiuntivo *.waconazure.com per la connettività a Windows Admin Center. È possibile aggiornare Esegui comando esistente con nuovi parametri:

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"
  }
}

Esempio 4: elencare gli esegui comando

Prima di eliminare esegui comando per l'accesso all'endpoint, assicurarsi che non siano presenti altri esegui comando per il server abilitato per Arc. È possibile usare il comando elenco per ottenere tutti gli esegui comando:

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

Esempio 5: eliminare un esegui comando

Se non è più necessaria l'estensione esegui comando, è possibile eliminarla usando il comando seguente:

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

Disabilitazione di esegui comando

Per disabilitare l'estensione esegui comando nei server abilitati per Azure Arc, aprire un prompt dei comandi amministrativo ed eseguire i comandi seguenti. Questi comandi usano le funzionalità di configurazione dell'agente locale per l'agente Connected Machine nell'elenco di blocchi Estensione.

Windows

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

Linux

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