Delen via


Opdracht uitvoeren op servers met Azure Arc (preview)

Met de opdracht Uitvoeren op servers met Azure Arc (preview) kunt u op afstand en veilig scripts of opdrachten uitvoeren op virtuele machines (VM's) die zijn verbonden met Azure Arc, zonder dat hiervoor een directe verbinding is vereist via Remote Desktop Protocol of SSH.

Omdat u zich niet afzonderlijk hoeft aan te melden bij elke virtuele machine, verlaagt u de overhead en moeite om beheertaken uit te voeren, zoals het installeren of bijwerken van software, het configureren van firewallregels, het uitvoeren van statuscontroles of het oplossen van problemen.

Een belangrijke use case is het gebruik van de opdracht Uitvoeren om uw beveiligingspostuur te verbeteren. U kunt de opdracht Uitvoeren gebruiken om beveiligingspatches op afstand toe te passen, nalevingsbeleid af te dwingen of beveiligingsproblemen op uw servers met Azure Arc op te heffen. U kunt ook algemene beveiligingstaken automatiseren, zoals het roteren van wachtwoorden, het versleutelen van gegevens of controlelogboeken. Via Azure Arc kunt u deze taken consistent uitvoeren in uw hybride, multicloud- en edge-omgevingen, waardoor de operationele overhead en reactietijd worden verminderd.

Notitie

Hoewel er enkele verschillen zijn, is de opdracht Uitvoeren op servers met Azure Arc vergelijkbaar met de functionaliteit van de opdracht Uitvoeren die u kunt gebruiken op Azure-VM's, inclusief de beperkingen die worden beschreven. Als voorbeeld van de verschillen is de opdracht Uitvoeren op servers met Azure Arc momenteel niet beschikbaar in Azure Portal.

Hoe het werkt

De opdracht Uitvoeren is ingebouwd in de Connected Machine-agent (vanaf versie 1.33) en ondersteunt de mogelijkheid om scripts uit te voeren en scriptbeheer te centraliseren bij het maken, bijwerken, verwijderen, sequentiëren en weergeven van bewerkingen.

Wanneer u de opdracht Uitvoeren gebruikt om een script of opdracht uit te voeren vanuit de Azure CLI, PowerShell of REST API, stuurt Azure de Connected Machine-agent, die op de virtuele machine is geïnstalleerd, aan om de opgegeven actie te voltooien. U hoeft geen andere extensies op de virtuele machine te installeren.

Hoewel de opdracht Uitvoeren op servers met Azure Arc gratis kan worden gebruikt, worden er kosten in rekening gebracht voor scripts die u opslaat in Azure.

Belangrijk

De opdracht Uitvoeren op servers met Azure Arc biedt momenteel geen ondersteuning voor het verifiëren van blobs met behulp van beheerde identiteiten.

Ondersteunde configuraties

De opdracht Uitvoeren is beschikbaar in veel configuraties:

  • Ervaringen: Azure CLI, PowerShell en REST API
  • Besturingssystemen: Windows en Linux
  • Omgevingen: Niet-Azure-omgevingen die zijn verbonden met Azure Arc, waaronder on-premises, VMware, SCVMM, AWS, GCP en OCI

Notitie

In Linux accepteert de opdracht Uitvoeren geen namen die langer zijn dan 36 tekens.

De opdracht Uitvoeren gebruiken

Als u de opdracht Uitvoeren wilt gebruiken, maakt u een script met de opdrachten die u wilt uitvoeren op de virtuele machine. Voer vervolgens het script uit met behulp van Azure PowerShell, de Azure CLI of REST API. Deze sectie bevat voorbeelden van het gebruik van de opdracht Uitvoeren met elke ervaring.

In de volgende voorbeelden wordt de Az.ConnectedMachine-module voor Azure PowerShell gebruikt om scripts of opdrachten uit te voeren op een server met Arc.

Een script uitvoeren op een computer

Met deze opdracht wordt het script naar de computer verzonden, uitgevoerd en wordt de vastgelegde uitvoer geretourneerd.

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

Notitie

U kunt meerdere opdrachten toevoegen in de -SourceScript parameter. Gebruik ; om elke opdracht te scheiden. Bijvoorbeeld: –SourceScript "id; echo Hello World!"

Een script uitvoeren op de computer met behulp van een scriptbestand in de opslag

Met deze opdracht wordt de Connected Machine-agent omgeschakeld naar een SAS-URI (Shared Access Signature) voor een opslagblob waarop een script is geüpload. Vervolgens wordt de agent opgedragen om het script uit te voeren en de vastgelegde uitvoer terug te sturen.

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

Notitie

Het scriptUri is een SAS-URI (Shared Access Signature) voor de opslagblob en moet leestoegang tot de blob bieden. Er wordt een verlooptijd van 24 uur voorgesteld voor de SAS-URI. U kunt een SAS-URI genereren in Azure Portal met behulp van blobs-opties of een SAS-token genereren met behulp van New-AzStorageBlobSASToken. Als u een SAS-token genereert met behulp van New-AzStorageBlobSASToken, is de SAS-URI-indeling: base blob URL + "?" + het SAS-token van New-AzStorageBlobSASToken.

Een lijst weergeven van alle geïmplementeerde run-opdrachtbronnen op een computer

Met deze opdracht wordt een volledige lijst met eerder geïmplementeerde run-opdrachten geretourneerd, samen met de bijbehorende eigenschappen.

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

Uitvoeringsstatus en -resultaten ophalen

Met deze opdracht wordt de huidige uitvoeringsvoortgang opgehaald voor een opdracht Uitvoeren, inclusief de meest recente uitvoer, begin- en eindtijd, afsluitcode en terminalstatus van de uitvoering.

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

Statusinformatie ophalen voor een uitvoeropdracht door middel van de exemplaarweergave

Met deze opdracht wordt statusinformatie opgehaald voor een Run-opdracht op een machine met een exemplaarweergave. De exemplaarweergave bevat de uitvoeringsstatus van de opdracht Uitvoeren (geslaagd, mislukt, enzovoort), afsluitcode, standaarduitvoer en standaardfout die wordt gegenereerd door het uitvoeren van het script. een afsluitcode die niet nul is, duidt op een mislukte uitvoering.

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

Samen met andere informatie retourneert het antwoord deze velden:

  • InstanceViewExecutionState: Geeft aan of uw script al dan niet is geslaagd.
  • ProvisioningState: Geeft aan of het extensieplatform het opdrachtscript Uitvoeren kan activeren of niet.

Run Command maken of bijwerken op een machine

Met deze opdracht maakt of werkt u een Uitvoeren-opdracht op een computer bij en streamt de standaarduitvoer en standaardfoutberichten naar uitvoer- en fout-AppendBlobs.

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

Notitie

Uitvoer- en fout-blobs moeten het type AppendBlob zijn en hun SAS-URI's moeten lees-, toevoeg-, maak- en schrijftoegang bieden tot de blob. Er wordt een verlooptijd van 24 uur voorgesteld voor sas-URI. Als de uitvoer of fout-blob niet bestaat, wordt er een blob van het type AppendBlob gemaakt. U kunt een SAS-URI's genereren in Azure Portal met behulp van de opties van blob of een SAS-token genereren met behulp van New-AzStorageBlobSASToken.

Run-opdracht op een computer maken of bijwerken als een andere gebruiker

Met deze opdracht wordt een Run-opdracht op een computer aangemaakt of bijgewerkt als gebruiker met een andere identiteit, met behulp van de RunAsUser en RunAsPassword parameters.

Voordat u deze opdracht gebruikt:

  • Neem contact op met de beheerder van de computer en zorg ervoor dat de gebruiker toegang heeft tot de computer.
  • Zorg ervoor dat de gebruiker toegang heeft tot de resources die worden geopend met de opdracht Uitvoeren, zoals mappen, bestanden en netwerkbronnen.
  • Zorg ervoor dat 'Secundaire aanmelding' wordt uitgevoerd op een Windows-computer.
New-AzConnectedMachineRunCommand -ResourceGroupName "MyRG0" -MachineName "MyMachine" -RunCommandName "MyRunCommand" -Location "eastus" -SourceScript "id; echo HelloWorld" -RunAsUser myusername -RunAsPassword mypassword

Run-opdracht maken of bijwerken op een apparaat met een lokaal scriptbestand

Met deze opdracht wordt een "Run"-opdracht op een computer gecreëerd of bijgewerkt door middel van een lokaal scriptbestand op de clientcomputer waarop het cmdlet wordt uitgevoerd.

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

Een Uitvoeren-opdracht maken of bijwerken op een machine terwijl gevoelige invoer aan het script wordt doorgegeven

Met deze opdracht maakt of werkt u de Run-opdracht bij zoals opgegeven door ProtectedParameter om gevoelige invoer door te geven aan een script, zoals wachtwoorden of sleutels.

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

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

Voorbeeldscript voor het vastleggen van inputText:

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

U kunt ook openbare parameters op een vergelijkbare manier doorgeven met behulp van Parameter.

  • Voor Windows: Parameter en ProtectedParameter worden doorgegeven aan een script dat vergelijkbaar is met het volgende voorbeeld: myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value

  • Voor Linux: Een benoemde Parameter en de bijbehorende waarden worden ingesteld op de omgevingsconfiguratie, die toegankelijk moet zijn binnen het PowerShell-script. Geef voor naamloze argumenten een lege tekenreeks door om de invoer een naam te geven. Naamloze argumenten worden doorgegeven aan scripts die vergelijkbaar zijn met het volgende voorbeeld: myscript.sh publicParam1value publicParam2value secret1value secret2value

Opdrachtresource Uitvoeren van de machine verwijderen

Met deze opdracht verwijdert u de opdrachtresource Uitvoeren die eerder op de computer is geïmplementeerd. Als de uitvoering van het script nog bezig is, wordt deze beëindigd.

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

Toegang tot Run-opdracht Beperken (Preview)

Hoewel externe toegang met de opdracht Uitvoeren de overhead voor het uitvoeren van bepaalde taken op een virtuele machine (VM) verlaagt, kunt u ook externe toegang beperken.

Toegang tot de opdracht Uitvoeren beheren met behulp van op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC)

Gebruik Azure RBAC om te bepalen welke gebruikers opdrachten en scripts kunnen uitvoeren met behulp van de opdracht Uitvoeren.

In de volgende tabel wordt een opdrachtactie Uitvoeren beschreven, de machtiging die nodig is om de actie uit te voeren en de RBAC-rol die de machtiging verleent.

Handeling Toestemming RBAC met toestemming
Lijst uitvoerbare opdrachten of geef details van de opdracht weer Microsoft.HybridCompute/machines/runCommands/read Ingebouwde Reader-rol en hoger
Een opdracht uitvoeren Microsoft.HybridCompute/machines/runCommands/write Azure Connected Machine Resource Administrator-rol en hoger

Als u de toegang tot de opdrachtFunctie Uitvoeren wilt beheren, gebruikt u een van de ingebouwde rollen of maakt u een aangepaste rol die een opdrachtmachtiging uitvoeren verleent.

Uitvoeropdrachten lokaal blokkeren

U kunt bepalen of de Connected Machine-agent toegang tot de virtuele machine toestaat via Run-opdrachten door de opdrachtextensie Uitvoeren toe te voegen aan een toegestane lijst (inclusief) of een bloklijst (exclusief).

Zie Acceptatielijsten en blokkeringslijsten voor extensies voor meer informatie.

In het volgende voorbeeld wordt de opdrachtextensie Uitvoeren toegevoegd aan een blokkeringslijst op een Windows-VM:

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

In dit voorbeeld worden de Run-opdrachtextensies toegevoegd aan een acceptatielijst op een Linux VM.

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

Volgende stappen

Zie de volgende bronnen voor meer informatie over het gebruik van de opdracht Uitvoeren: