Zdalne i bezpieczne konfigurowanie serwerów przy użyciu polecenia Uruchom (wersja zapoznawcza)
Uruchom polecenie na serwerach z obsługą usługi Azure Arc (publiczna wersja zapoznawcza) używa agenta połączonej maszyny, aby umożliwić zdalne i bezpieczne uruchamianie skryptu na serwerach. Może to być przydatne w przypadku niezliczonych scenariuszy rozwiązywania problemów, odzyskiwania, diagnostyki i konserwacji.
Obsługiwane środowisko i konfiguracja
Środowiska: Uruchamianie polecenia jest obecnie obsługiwane za pośrednictwem interfejsu wiersza polecenia platformy Azure i programu PowerShell.
Systemy operacyjne: polecenie Uruchom obsługuje systemy operacyjne Windows i Linux.
Środowiska: polecenie Uruchom obsługuje środowiska spoza platformy Azure, w tym środowiska lokalne, VMware, SCVMM, AWS, GCP i OCI.
Koszt: Uruchamianie polecenia jest bezpłatne, jednak przechowywanie skryptów na platformie Azure może spowodować naliczanie opłat.
Konfiguracja: Uruchomienie polecenia nie wymaga większej liczby konfiguracji ani wdrożenia żadnych rozszerzeń. Wersja agenta Connected Machine musi być 1.33 lub nowsza.
Ograniczanie dostępu do uruchamiania polecenia przy użyciu kontroli dostępu opartej na rolach
Wyświetlenie listy poleceń uruchamiania lub wyświetlenie szczegółów polecenia wymaga Microsoft.HybridCompute/machines/runCommands/read
uprawnienia. Wbudowana rola Czytelnik i wyższe poziomy mają to uprawnienie.
Uruchomienie polecenia wymaga Microsoft.HybridCompute/machines/runCommands/write
uprawnienia. Rola Administratora zasobów połączonej maszyny platformy Azure i wyższe poziomy mają to uprawnienie.
Możesz użyć jednej z wbudowanych ról lub utworzyć rolę niestandardową, aby użyć polecenia Uruchom.
Blokowanie poleceń uruchamiania lokalnie
Agent Connected Machine obsługuje konfiguracje lokalne, które umożliwiają ustawienie listy dozwolonych lub listy zablokowanych. Aby dowiedzieć się więcej, zobacz Listy dozwolonych rozszerzeń i listy zablokowanych .
W przypadku systemu Windows:
azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerwindows"
W przypadku systemu Linux:
azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerlinux"
Interfejs wiersza polecenia platformy Azure
W poniższych przykładach użyto polecenia az connectedmachine run-command , aby uruchomić skrypt powłoki na maszynie z systemem Windows platformy Azure.
Wykonywanie skryptu za pomocą maszyny
To polecenie dostarcza skrypt do maszyny, wykonuje go i zwraca przechwycone dane wyjściowe.
az connectedmachine run-command create --name "myRunCommand" --machine-name "myMachine" --resource-group "myRG" --script "Write-Host Hello World!"
Wyświetlanie listy wszystkich wdrożonych zasobów RunCommand na maszynie
To polecenie zwraca pełną listę wcześniej wdrożonych poleceń uruchamiania wraz z ich właściwościami.
az connectedmachine run-command list --machine-name "myMachine" --resource-group "myRG"
Uzyskiwanie stanu wykonania i wyników
To polecenie pobiera bieżący postęp wykonywania, w tym najnowsze dane wyjściowe, czas rozpoczęcia/zakończenia, kod zakończenia i stan terminalu wykonania.
az connectedmachine run-command show --name "myRunCommand" --machine-name "myMachine" --resource-group "myRG"
Uwaga
Pola danych wyjściowych i błędów w pliku instanceView
są ograniczone do ostatnich 4 KB. Aby uzyskać dostęp do pełnych danych wyjściowych i błędów, możesz przekazać dane wyjściowe i dane błędów do uzupełnialnych obiektów blob magazynu przy użyciu parametrów -outputBlobUri
i -errorBlobUri
podczas wykonywania polecenia Uruchom.
Usuń zasób RunCommand z maszyny
Usuń zasób RunCommand wdrożony wcześniej na maszynie. Jeśli wykonywanie skryptu jest nadal w toku, wykonanie zostanie zakończone.
az connectedmachine run-command delete --name "myRunCommand" --machine-name "myMachine" --resource-group "myRG"
PowerShell
Wykonywanie skryptu za pomocą maszyny
New-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -Location "EastUS" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"
Wykonywanie skryptu na maszynie przy użyciu parametru SourceScriptUri
OutputBlobUri
i ErrorBlobUri
są parametrami opcjonalnymi.
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>”
Wyświetlanie listy wszystkich wdrożonych zasobów RunCommand na maszynie
To polecenie zwraca pełną listę wcześniej wdrożonych poleceń uruchamiania wraz z ich właściwościami.
Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine"
Uzyskiwanie stanu wykonania i wyników
To polecenie pobiera bieżący postęp wykonywania, w tym najnowsze dane wyjściowe, czas rozpoczęcia/zakończenia, kod zakończenia i stan terminalu wykonania.
Get-AzConnectedMachineRunCommand -ResourceGroupName "myRG" - MachineName "myMachine" -RunCommandName "RunCommandName"
Tworzenie lub aktualizowanie polecenia uruchamiania na maszynie przy użyciu identyfikatora SourceScriptUri (adres URL sygnatury dostępu współdzielonego obiektu blob magazynu)
Utwórz lub zaktualizuj polecenie Uruchom na maszynie z systemem Windows przy użyciu adresu URL sygnatury dostępu współdzielonego obiektu blob magazynu zawierającego skrypt programu PowerShell. SourceScriptUri
może to być pełny adres URL sygnatury dostępu współdzielonego lub publiczny adres URL obiektu blob magazynu.
New-AzConnectedMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Uwaga
Adres URL sygnatury dostępu współdzielonego musi zapewnić dostęp do odczytu do obiektu blob. Sugerowany jest czas wygaśnięcia 24 godzin dla adresu URL sygnatury dostępu współdzielonego. Adresy URL sygnatur dostępu współdzielonego można wygenerować w witrynie Azure Portal przy użyciu opcji obiektów blob lub tokenu SAS przy użyciu polecenia New-AzStorageBlobSASToken
. W przypadku generowania tokenu SAS przy użyciu adresu New-AzStorageBlobSASToken
URL sygnatury dostępu współdzielonego = "podstawowy adres URL obiektu blob" + "?" + "Token SAS z New-AzStorageBlobSASToken
"
Pobieranie widoku wystąpienia polecenia uruchamiania dla maszyny po utworzeniu lub zaktualizowaniu polecenia przebiegu
Pobierz polecenie uruchamiania dla maszyny z widokiem wystąpienia. Widok wystąpienia zawiera stan wykonywania polecenia uruchomienia (powodzenie, niepowodzenie itp.), kod zakończenia, standardowe dane wyjściowe i standardowy błąd wygenerowany przez wykonanie skryptu przy użyciu polecenia Uruchom. Kod exitCode inny niż zero wskazuje nieudane wykonanie.
Get-AzConnectedMachineRunCommand -ResourceGroupName MyRG -MachineName MyMachine -RunCommandName MyRunCommand
InstanceViewExecutionState
: stan skryptu uruchom polecenie użytkownika. Zapoznaj się z tym stanem, aby dowiedzieć się, czy skrypt zakończył się pomyślnie, czy nie.
ProvisioningState
: Stan ogólnego zakończenia inicjowania obsługi administracyjnej rozszerzeń (czy platforma rozszerzenia mogła wyzwolić skrypt uruchom polecenie, czy nie).
Tworzenie lub aktualizowanie polecenia uruchamiania na maszynie przy użyciu skryptu SourceScript (tekst skryptu)
Utwórz lub zaktualizuj polecenie Uruchom na maszynie przekazującej zawartość skryptu bezpośrednio do -SourceScript
parametru. Użyj ;
polecenia , aby oddzielić wiele poleceń.
New-AzConnectedMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand2 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"
Tworzenie lub aktualizowanie polecenia uruchamiania na maszynie przy użyciu parametru OutputBlobUri, ErrorBlobUri w celu przesyłania strumieniowego standardowych danych wyjściowych i standardowych komunikatów o błędach do danych wyjściowych i błędów uzupełnialnych obiektów blob
Utwórz lub zaktualizuj polecenie Uruchom na maszynie i przesyłaj strumieniowo standardowe komunikaty o błędach i komunikaty o błędach do danych wyjściowych i uzupełnialnych obiektów blob.
New-AzConnectedMachineRunCommand -ResourceGroupName MyRG0 - MachineName MyMachine -RunCommandName MyRunCommand3 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"-OutputBlobUri <OutPutBlobUrI> -ErrorBlobUri <ErrorBlobUri>
Uwaga
Obiekty blob danych wyjściowych i błędów muszą być typem AppendBlob, a ich adresy URL sygnatur dostępu współdzielonego muszą zapewniać dostęp do odczytu, dołączania, tworzenia, zapisu do obiektu blob. Sugerowany jest czas wygaśnięcia 24 godzin dla adresu URL sygnatury dostępu współdzielonego. Jeśli obiekt blob danych wyjściowych lub błąd nie istnieje, zostanie utworzony obiekt blob typu AppendBlob. Adresy URL sygnatury dostępu współdzielonego można wygenerować w witrynie Azure Portal przy użyciu opcji obiektu blob lub tokenu SAS z programu .New-AzStorageBlobSASToken
Tworzenie lub aktualizowanie polecenia uruchamiania na maszynie jako inny użytkownik przy użyciu parametrów RunAsUser i RunAsPassword
Utwórz lub zaktualizuj polecenie Uruchom na maszynie jako inny użytkownik przy użyciu parametrów RunAsUser
i .RunAsPassword
Aby uruchom jako działały prawidłowo, skontaktuj się z administratorem komputera i upewnij się, że użytkownik został dodany na maszynie, użytkownik ma dostęp do zasobów, do których uzyskuje dostęp za pomocą polecenia uruchom (katalogi, pliki, sieć itp.), a w przypadku maszyny z systemem Windows usługa "Logowanie pomocnicze" jest uruchomiona na maszynie.
New-AzMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScript "id; echo HelloWorld" -RunAsUser myusername -RunAsPassword mypassword
Tworzenie lub aktualizowanie polecenia uruchamiania w zasobie maszyny przy użyciu identyfikatora SourceScriptUri (adresu URL sygnatury dostępu współdzielonego obiektu blob magazynu)
Utwórz lub zaktualizuj polecenie Uruchom w zasobie maszyny z systemem Windows przy użyciu adresu URL sygnatury dostępu współdzielonego obiektu blob magazynu zawierającego skrypt programu PowerShell.
New-AzMachineRunCommand -ResourceGroupName MyRG0 -MachineName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Uwaga
Adres URL sygnatury dostępu współdzielonego musi zapewnić dostęp do odczytu do obiektu blob. Sugerowany jest czas wygaśnięcia 24 godzin dla adresu URL sygnatury dostępu współdzielonego. Adresy URL sygnatur dostępu współdzielonego można wygenerować w witrynie Azure Portal przy użyciu opcji obiektów blob lub tokenu SAS przy użyciu polecenia New-AzStorageBlobSASToken
. W przypadku generowania tokenu SAS przy użyciu New-AzStorageBlobSASToken
programu format adresu URL sygnatury dostępu współdzielonego to: podstawowy adres URL obiektu blob + "?" + token SAS z .New-AzStorageBlobSASToken
Tworzenie lub aktualizowanie polecenia uruchamiania na maszynie przy użyciu skryptu ScriptLocalPath (plik skryptu lokalnego)
Utwórz lub zaktualizuj polecenie Uruchom na maszynie przy użyciu lokalnego pliku skryptu, który znajduje się na komputerze klienckim, na którym jest wykonywane polecenie cmdlet.
New-AzMachineRunCommand -ResourceGroupName MyRG0 -VMName MyMachine -RunCommandName MyRunCommand -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"
Tworzenie lub aktualizowanie polecenia uruchamiania w wystąpieniu maszyny przy użyciu parametrów i parametrów ProtectedParameter (parametry publiczne i chronione do skryptu)
Użyj parametru ProtectedParameter, aby przekazać wszelkie poufne dane wejściowe do skryptu, takiego jak hasła, klucze itp.
Windows: Parametry i chronioneparametry są przekazywane do skryptu, ponieważ argumenty są przekazywane do skryptu i uruchamiane w następujący sposób:
myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value
Linux: nazwane parametry i jego wartości są ustawione na konfigurację środowiska, która powinna być dostępna w skryscie .sh. W przypadku argumentów bez nazw przekaż pusty ciąg do nazwy wejściowej. Argumenty bez nazw są przekazywane do skryptu i uruchamiane w następujący sposób:
myscript.sh publicParam1value publicParam2value secret1value secret2value
Usuń zasób RunCommand z maszyny
Usuń zasób RunCommand wdrożony wcześniej na maszynie. Jeśli wykonywanie skryptu jest nadal w toku, wykonanie zostanie zakończone.
Remove-AzConnetedMachineRunCommand -ResourceGroupName "myRG" -MachineName "myMachine" -RunCommandName "RunCommandName"
Uruchamianie operacji poleceń
Uruchom polecenie na serwerach z obsługą usługi Azure Arc obsługuje następujące operacje:
Działanie | opis |
---|---|
Utworzenie | Operacja tworzenia polecenia uruchamiania. Spowoduje to uruchomienie polecenia run. |
Delete | Operacja usuwania polecenia uruchamiania. Jeśli jest uruchomiona, usunięcie spowoduje również zatrzymanie uruchomienia polecenia. |
Get | Operacja pobierania polecenia uruchamiania. |
List | Operacja pobierania wszystkich poleceń uruchamiania serwera z obsługą usługi Azure Arc. |
Zaktualizuj | Operacja aktualizowania polecenia uruchamiania. Spowoduje to zatrzymanie poprzedniego polecenia uruchomienia. |
Uwaga
Obiekty blob danych wyjściowych i błędów są zastępowane za każdym razem, gdy skrypt polecenia uruchamiania jest wykonywany.
Przykładowe scenariusze
Załóżmy, że masz serwer z obsługą usługi Azure Arc o nazwie "2012DatacenterServer1" w grupie zasobów "ContosoRG" z identyfikatorem subskrypcji "a-a-a-a". Rozważmy scenariusz, w którym należy zapewnić zdalny dostęp do punktu końcowego dla serwerów z systemem Windows Server 2012/R2. Dostęp do rozszerzonych aktualizacji zabezpieczeń włączonych przez usługę Azure Arc wymaga dostępu do punktu końcowego www.microsoft.com/pkiops/certs
. Należy zdalnie skonfigurować regułę zapory, która zezwala na dostęp do tego punktu końcowego. Użyj polecenia Uruchom, aby zezwolić na łączność z tym punktem końcowym.
Przykład 1. Dostęp do punktu końcowego za pomocą polecenia Uruchom
Rozpocznij od utworzenia skryptu Uruchom polecenie w celu zapewnienia dostępu punktu końcowego do www.microsoft.com/pkiops/certs
punktu końcowego na docelowym serwerze z obsługą usługi Arc przy użyciu operacji PUT.
Aby bezpośrednio podać skrypt w wierszu, użyj następującej operacji:
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"
}
}
Aby zamiast tego połączyć się z plikiem skryptu, możesz użyć opcji ScriptURI operacji Uruchom polecenie. W tym celu zakłada się, że przygotowano newnetfirewallrule.ps1
plik zawierający skrypt wbudowany i przekazano ten skrypt do magazynu obiektów 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"
}
}
Adres URL sygnatury dostępu współdzielonego musi zapewnić dostęp do odczytu do obiektu blob. Sugerowany jest czas wygaśnięcia 24 godzin dla adresu URL sygnatury dostępu współdzielonego. Adresy URL sygnatur dostępu współdzielonego można wygenerować w witrynie Azure Portal przy użyciu opcji obiektów blob lub tokenu SAS przy użyciu polecenia New-AzStorageBlobSASToken
. W przypadku generowania tokenu SAS przy użyciu New-AzStorageBlobSASToken
programu format adresu URL sygnatury dostępu współdzielonego to: base blob URL + "?"
+ token SAS z .New-AzStorageBlobSASToken
Obiekty blob danych wyjściowych i błędów muszą być typem AppendBlob, a ich adresy URL sygnatur dostępu współdzielonego muszą zapewniać dostęp do odczytu, dołączania, tworzenia, zapisu do obiektu blob. Sugerowany jest czas wygaśnięcia 24 godzin dla adresu URL sygnatury dostępu współdzielonego. Adresy URL sygnatury dostępu współdzielonego można wygenerować w witrynie Azure Portal przy użyciu opcji obiektu blob lub tokenu SAS z programu .New-AzStorageBlobSASToken
Przykład 2. Pobieranie szczegółów polecenia uruchamiania
Aby sprawdzić, czy poprawnie zainicjowano obsługę administracyjną polecenia Uruchom, użyj polecenia GET, aby pobrać szczegółowe informacje na temat aprowizowanego polecenia uruchamiania:
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
Przykład 3. Aktualizowanie polecenia uruchamiania
Załóżmy, że chcesz otworzyć dostęp do dodatkowego punktu końcowego *.waconazure.com
na potrzeby łączności z centrum administracyjnym systemu Windows. Istniejące polecenie uruchamiania można zaktualizować przy użyciu nowych parametrów:
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"
}
}
Przykład 4. Wyświetlanie listy uruchomień poleceń
Przed usunięciem polecenia Uruchom dla dostępu do punktu końcowego upewnij się, że nie ma żadnych innych poleceń uruchamiania dla serwera z obsługą usługi Arc. Możesz użyć polecenia listy, aby pobrać wszystkie polecenia Uruchom:
LIST https://management.azure.com/subscriptions/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/resourceGroups/ContosoRG/providers/Microsoft.HybridCompute/machines/2012DatacenterServer1/runCommands/
Przykład 5. Usuwanie polecenia uruchamiania
Jeśli rozszerzenie Uruchom polecenie nie jest już potrzebne, możesz go usunąć przy użyciu następującego polecenia:
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
Wyłączanie polecenia Uruchom
Aby wyłączyć polecenie Uruchom na serwerach z obsługą usługi Azure Arc, otwórz wiersz polecenia administracyjnego i uruchom następujące polecenia. Te polecenia korzystają z funkcji konfiguracji agenta lokalnego dla agenta połączonej maszyny na liście zablokowanych rozszerzeń.
Windows
azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerwindows"
Linux
sudo azcmagent config set extensions.blocklist "microsoft.cplat.core/runcommandhandlerlinux"