Vzdálená a zabezpečená konfigurace serverů pomocí příkazu Spustit (Preview)
Spuštění příkazu na serverech s podporou Azure Arc (Public Preview) používá agenta Connected Machine k tomu, abyste mohli vzdáleně a bezpečně spouštět skript na serverech. To může být užitečné pro různé scénáře řešení potíží, obnovení, diagnostiky a údržby.
Podporované prostředí a konfigurace
Prostředí: Spuštění příkazu se v současné době podporuje prostřednictvím Azure CLI a PowerShellu.
Operační systémy: Příkaz spustit podporuje operační systémy Windows i Linux.
Prostředí: Příkaz Spustit podporuje prostředí mimo Azure, včetně místních prostředí, VMware, SCVMM, AWS, GCP a OCI.
Náklady: Spuštění příkazu je bezplatné, ale úložiště skriptů v Azure se může účtovat.
Konfigurace: Spuštění příkazu nevyžaduje další konfiguraci ani nasazení žádných rozšíření. Verze agenta Connected Machine musí být 1.33 nebo vyšší.
Omezení přístupu ke spuštění příkazu pomocí RBAC
Výpis příkazů spuštění nebo zobrazení podrobností příkazu vyžaduje Microsoft.HybridCompute/machines/runCommands/read
oprávnění. Tato oprávnění mají předdefinovaná role Čtenář a vyšší úrovně.
Spuštění příkazu vyžaduje Microsoft.HybridCompute/machines/runCommands/write
oprávnění. Tato oprávnění mají role Správce prostředků připojeného počítače Azure a vyšší úrovně.
Můžete použít některou z předdefinovaných rolí nebo vytvořit vlastní roli pro použití příkazu Spustit.
Blokování příkazů spuštění místně
Agent Connected Machine podporuje místní konfigurace, které umožňují nastavit seznam povolených položek nebo seznam blokovaných položek. Další informace najdete v seznamu povolených rozšíření a seznamu blokovaných položek.
Ve Windows:
azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerwindows"
V Linuxu:
azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerlinux"
Azure CLI
Následující příklady používají příkaz az connectedmachine run-command ke spuštění skriptu prostředí na počítači s Windows Azure.
Spuštění skriptu s počítačem
Tento příkaz doručí skript do počítače, spustí ho a vrátí zachycený výstup.
az connectedmachine run-command create --name "myRunCommand" --machine-name "myMachine" --resource-group "myRG" --script "Write-Host Hello World!"
Výpis všech nasazených prostředků RunCommand na počítači
Tento příkaz vrátí úplný seznam dříve nasazených příkazů spuštění spolu s jejich vlastnostmi.
az connectedmachine run-command list --machine-name "myMachine" --resource-group "myRG"
Získání stavu spuštění a výsledků
Tento příkaz načte aktuální průběh provádění, včetně nejnovějšího výstupu, počátečního a koncového času, ukončovacího kódu a stavu terminálu spuštění.
az connectedmachine run-command show --name "myRunCommand" --machine-name "myMachine" --resource-group "myRG"
Poznámka:
Pole výstupu a chyby jsou instanceView
omezena na posledních 4 kB. Pokud chcete získat přístup k úplnému výstupu a chybě, můžete výstup a data chyb předat objektům blob připojení úložiště pomocí -outputBlobUri
a -errorBlobUri
parametrů při spuštění příkazu Spustit.
Odstranění prostředku RunCommand z počítače
Odeberte dříve nasazený prostředek RunCommand na počítači. Pokud probíhá provádění skriptu, bude provádění ukončeno.
az connectedmachine run-command delete --name "myRunCommand" --machine-name "myMachine" --resource-group "myRG"
PowerShell
Spuštění skriptu s počítačem
New-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -Location "EastUS" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"
Spuštění skriptu na počítači pomocí parametru SourceScriptUri
OutputBlobUri
a ErrorBlobUri
jsou volitelné parametry.
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>”
Výpis všech nasazených prostředků RunCommand na počítači
Tento příkaz vrátí úplný seznam dříve nasazených příkazů Spustit spolu s jejich vlastnostmi.
Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine"
Získání stavu spuštění a výsledků
Tento příkaz načte aktuální průběh provádění, včetně nejnovějšího výstupu, počátečního a koncového času, ukončovacího kódu a stavu terminálu spuštění.
Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" - MachineName "myMachine" -RunCommandName "RunCommandName"
Vytvoření nebo aktualizace příkazu Spustit na počítači pomocí identifikátoru SourceScriptUri (adresa URL SAS objektu blob úložiště)
Vytvořte nebo aktualizujte příkaz Spustit na počítači s Windows pomocí adresy URL SAS objektu blob úložiště, který obsahuje skript PowerShellu. SourceScriptUri
může to být úplná adresa URL SAS objektu blob úložiště nebo veřejná adresa URL.
New-AzConnectedMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Poznámka:
Adresa URL SAS musí poskytovat přístup pro čtení k objektu blob. Pro adresu URL SAS se navrhuje doba vypršení platnosti 24 hodin. Adresy URL SAS je možné vygenerovat na webu Azure Portal pomocí možností objektů blob nebo tokenu SAS pomocí New-AzStorageBlobSASToken
. Pokud generujete token SAS pomocí New-AzStorageBlobSASToken
, vaše adresa URL SAS = "adresa URL základního objektu blob" + "?" + "Token SAS z New-AzStorageBlobSASToken
"
Získání zobrazení instance příkazu Spustit pro počítač po vytvoření nebo aktualizaci příkazu Spustit
Získejte příkaz Spustit pro počítač se zobrazením instance. Zobrazení instance obsahuje stav spuštění příkazu (úspěšné, neúspěšné atd.), ukončovací kód, standardní výstup a standardní chybu vygenerovanou spuštěním skriptu pomocí příkazu Spustit. Ukončovací kód bez nuly označuje neúspěšné spuštění.
Get-AzConnectedMachineRunCommand -ResourceGroupName MyRG -MachineName MyMachine -RunCommandName MyRunCommand
InstanceViewExecutionState
: Stav skriptu příkazu Spustit uživatele. V tomto stavu zjistíte, jestli byl váš skript úspěšný nebo ne.
ProvisioningState
: Stav obecného zřizování rozšíření na konci (jestli platforma rozšíření mohla aktivovat skript spustit příkaz, nebo ne).
Vytvoření nebo aktualizace příkazu Spustit na počítači pomocí SourceScriptu (text skriptu)
Vytvořte nebo aktualizujte příkaz Spustit na počítači, který předává obsah skriptu přímo parametru -SourceScript
. Slouží ;
k oddělení více příkazů.
New-AzConnectedMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand2 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"
Vytvoření nebo aktualizace příkazu Spustit na počítači pomocí outputBlobUri, ErrorBlobUri pro streamování standardního výstupu a standardních chybových zpráv pro výstup a chybu Doplňovací objekty blob
Vytvořte nebo aktualizujte příkaz Spustit na počítači a streamovat standardní výstup a standardní chybové zprávy pro výstup a chybu Doplňovací objekty blob.
New-AzConnectedMachineRunCommand -ResourceGroupName MyRG0 - MachineName MyMachine -RunCommandName MyRunCommand3 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"-OutputBlobUri <OutPutBlobUrI> -ErrorBlobUri <ErrorBlobUri>
Poznámka:
Výstupní a chybové objekty blob musí být typem AppendBlob a jejich adresy URL SAS musí poskytovat přístup ke čtení, připojení, vytvoření, zápisu do objektu blob. Pro adresu URL SAS se navrhuje doba vypršení platnosti 24 hodin. Pokud výstup nebo chyba objekt blob neexistuje, vytvoří se objekt blob typu AppendBlob. Adresy URL SAS je možné vygenerovat na webu Azure Portal pomocí možností objektu blob nebo tokenu SAS z použití New-AzStorageBlobSASToken
.
Vytvoření nebo aktualizace příkazu Spustit na počítači jako jiný uživatel pomocí parametrů RunAsUser a RunAsPassword
Vytvořte nebo aktualizujte příkaz Spustit na počítači jako jiný uživatel s použitím RunAsUser
a RunAsPassword
parametry. Aby služba RunAs fungovala správně, obraťte se na správce počítače a ujistěte se, že je uživatel na počítači přidaný, má uživatel přístup k prostředkům, ke které přistupuje příkaz Spustit (adresáře, soubory, síť atd.) a v případě počítače s Windows je na počítači spuštěná služba Sekundární přihlášení.
New-AzMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScript "id; echo HelloWorld" -RunAsUser myusername -RunAsPassword mypassword
Vytvoření nebo aktualizace příkazu Spustit na prostředku počítače pomocí identifikátoru SourceScriptUri (adresa URL SAS objektu blob úložiště)
Vytvořte nebo aktualizujte příkaz Spustit na prostředku počítače s Windows pomocí adresy URL SAS objektu blob úložiště, který obsahuje skript PowerShellu.
New-AzMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Poznámka:
Adresa URL SAS musí poskytovat přístup pro čtení k objektu blob. Pro adresu URL SAS se navrhuje doba vypršení platnosti 24 hodin. Adresy URL SAS je možné vygenerovat na webu Azure Portal pomocí možností objektu blob nebo tokenu SAS pomocí New-AzStorageBlobSASToken
. Pokud generujete token SAS pomocí New-AzStorageBlobSASToken
, formát ADRESY URL SAS je: adresa URL základního objektu blob + "?" + token SAS z New-AzStorageBlobSASToken
.
Vytvoření nebo aktualizace příkazu Spustit na počítači pomocí SkriptuLocalPath (soubor místního skriptu)
Vytvořte nebo aktualizujte příkaz Spustit na počítači pomocí souboru místního skriptu, který je na klientském počítači, kde se spouští rutina.
New-AzMachineRunCommand -ResourceGroupName MyRG0 -VMName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"
Vytvoření nebo aktualizace příkazu Spustit v instanci počítače pomocí parametrů a parametrů ProtectedParameter (veřejné a chráněné parametry pro skript)
Pomocí protectedParameter předejte jakékoli citlivé vstupy do skriptu, jako jsou hesla, klíče atd.
Windows: Parametry a protectedParameters se předávají skriptu, protože argumenty se předávají skriptu a spustí se takto:
myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value
Linux: Pojmenované parametry a jeho hodnoty jsou nastaveny na konfiguraci prostředí, která by měla být přístupná v rámci skriptu .sh. Pro argumenty bez názvů předejte prázdný řetězec pro zadání názvu. Argumenty bez názvů se předávají skriptu a spustí se takto:
myscript.sh publicParam1value publicParam2value secret1value secret2value
Odstranění prostředku RunCommand z počítače
Odeberte dříve nasazený prostředek RunCommand na počítači. Pokud probíhá provádění skriptu, bude provádění ukončeno.
Remove-AzConnetedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -RunCommandName "RunCommandName"
Spuštění operací příkazů
Spuštění příkazu na serverech s podporou Azure Arc podporuje následující operace:
Operation | Popis |
---|---|
Vytvoření | Operace pro vytvoření příkazu run. Tím se spustí příkaz pro spuštění. |
Odstranění | Operace odstranění příkazu spuštění. Pokud je spuštěný, odstranění také zastaví příkaz run. |
Získat | Operace pro získání příkazu pro spuštění. |
List | Operace pro získání všech příkazů spuštění serveru s podporou Azure Arc. |
Aktualizovat | Operace pro aktualizaci příkazu run. Tím se zastaví předchozí příkaz pro spuštění. |
Poznámka:
Výstup a chybové objekty blob se přepíšou při každém spuštění skriptu příkazu.
Ukázkové scénáře
Předpokládejme, že máte server s podporou Azure Arc s názvem 2012DatacenterServer1 ve skupině prostředků ContosoRG s ID předplatného aaa-a-a-a-aaa. Představte si scénář, ve kterém potřebujete poskytnout vzdálený přístup ke koncovému bodu pro servery s Windows Serverem 2012 nebo R2. Přístup k rozšířeným aktualizacím zabezpečení povoleným službou Azure Arc vyžaduje přístup ke koncovému bodu www.microsoft.com/pkiops/certs
. Potřebujete vzdáleně nakonfigurovat pravidlo brány firewall, které umožňuje přístup k tomuto koncovému bodu. Pomocí příkazu Spustit povolte připojení k tomuto koncovému bodu.
Příklad 1: Přístup ke koncovému bodu pomocí příkazu Spustit
Začněte tím, že pomocí operace PUT vytvoříte skript spustit příkaz, který poskytne koncovému bodu přístup ke koncovému www.microsoft.com/pkiops/certs
bodu na cílovém serveru s podporou arc.
Pokud chcete přímo poskytnout skript na řádku, použijte následující operaci:
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"
}
}
K propojení se souborem skriptu můžete použít možnost ScriptURI operace Spustit příkaz. Předpokládá se, že jste připravili newnetfirewallrule.ps1
soubor obsahující vložený skript a tento skript jste nahráli do úložiště objektů 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"
}
}
Adresa URL SAS musí poskytovat přístup pro čtení k objektu blob. Pro adresu URL SAS se navrhuje doba vypršení platnosti 24 hodin. Adresy URL SAS je možné vygenerovat na webu Azure Portal pomocí možností objektů blob nebo tokenu SAS pomocí New-AzStorageBlobSASToken
. Pokud generujete token SAS pomocí New-AzStorageBlobSASToken
, formát ADRESY URL SAS je: base blob URL + "?"
+ token SAS z New-AzStorageBlobSASToken
.
Výstupní a chybové objekty blob musí být typem AppendBlob a jejich adresy URL SAS musí poskytovat přístup ke čtení, připojení, vytvoření, zápisu do objektu blob. Pro adresu URL SAS se navrhuje doba vypršení platnosti 24 hodin. Adresy URL SAS je možné vygenerovat na webu Azure Portal pomocí možností objektu blob nebo tokenu SAS z použití New-AzStorageBlobSASToken
.
Příklad 2: Získání podrobností příkazu spustit
Pokud chcete ověřit, že jste příkaz Spustit správně zřídili, použijte příkaz GET k načtení podrobností o zřízeném příkazu Spustit:
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
Příklad 3: Aktualizace příkazu Spustit
Předpokládejme, že chcete otevřít přístup k dalšímu koncovému bodu *.waconazure.com
pro připojení k Centru pro správu Windows. Existující příkaz Spustit můžete aktualizovat novými parametry:
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"
}
}
Příklad 4: Výpis příkazů spuštění
Před odstraněním příkazu Spustit pro přístup ke koncovému bodu se ujistěte, že pro server s podporou arc neexistují žádné další příkazy pro spuštění. Pomocí příkazu list můžete získat všechny příkazy spustit:
LIST https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/
Příklad 5: Odstranění příkazu Spustit
Pokud už rozšíření Spustit příkaz nepotřebujete, můžete ho odstranit pomocí následujícího příkazu:
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
Zakázání příkazu Spustit
Pokud chcete zakázat příkaz Spustit na serverech s podporou Azure Arc, otevřete příkazový řádek pro správu a spusťte následující příkazy. Tyto příkazy používají možnosti konfigurace místního agenta pro agenta Connected Machine v seznamu blokovaných rozšíření.
Windows
azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerwindows"
Linux
sudo azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerlinux"