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łączenie ed Machine, 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 maszyny Połączenie musi być w wersji 1.33 lub nowszej.

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. Ta uprawnienie ma rola Administracja istratora zasobów maszyny Połączenie ed platformy Azure i wyższe poziomy.

Możesz użyć jednej z wbudowanych ról lub utworzyć rolę niestandardową, aby użyć polecenia Uruchom.

Blokowanie poleceń uruchamiania lokalnie

Agent Połączenie ed 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-AzStorageBlobSASTokenURL 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-AzStorageBlobSASTokenprogramu 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.
Usuń Operacja usuwania polecenia uruchamiania. Jeśli jest uruchomiona, usunięcie spowoduje również zatrzymanie uruchomienia polecenia.
Pobierz Operacja pobierania polecenia uruchamiania.
Lista Operacja pobierania wszystkich poleceń uruchamiania serwera z obsługą usługi Azure Arc.
Update 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 Aktualizacje zabezpieczeń włączony 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-AzStorageBlobSASTokenprogramu 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 Administracja 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 Połączenie ed Agent maszyny na liście bloków Rozszerzenia.

Windows

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

Linux

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