Bagikan melalui


Mengonfigurasi server dari jarak jauh dan aman menggunakan perintah Jalankan (Pratinjau)

Jalankan Perintah di server yang didukung Azure Arc (Pratinjau Umum) menggunakan agen Connected Machine untuk memungkinkan Anda menjalankan skrip dari jarak jauh dan aman di dalam server Anda. Ini dapat membantu untuk berbagai skenario di seluruh pemecahan masalah, pemulihan, diagnostik, dan pemeliharaan.

Lingkungan dan konfigurasi yang didukung

  • Pengalaman: Jalankan Perintah saat ini didukung melalui Azure CLI dan PowerShell.

  • Sistem Operasi: Jalankan Perintah mendukung sistem operasi Windows dan Linux.

  • Lingkungan: Run Command mendukung lingkungan non-Azure termasuk lokal, VMware, SCVMM, AWS, GCP, dan OCI.

  • Biaya: Jalankan Perintah tidak dikenai biaya, namun penyimpanan skrip di Azure dapat dikenakan penagihan.

  • Konfigurasi: Jalankan Perintah tidak memerlukan lebih banyak konfigurasi atau penyebaran ekstensi apa pun. Versi agen Connected Machine harus 1.33 atau lebih tinggi.

Membatasi akses ke Jalankan Perintah menggunakan RBAC

Mencantumkan perintah eksekusi atau memperlihatkan detail perintah memerlukan Microsoft.HybridCompute/machines/runCommands/read izin. Peran Pembaca bawaan dan tingkat yang lebih tinggi memiliki izin ini.

Menjalankan perintah memerlukan izin Microsoft.HybridCompute/machines/runCommands/write. Peran Administrator Sumber Daya Azure Connected Machine dan tingkat yang lebih tinggi memiliki izin ini.

Anda dapat menggunakan salah satu peran bawaan atau membuat peran kustom untuk menggunakan Run Command.

Memblokir perintah eksekusi secara lokal

Agen Connected Machine mendukung konfigurasi lokal yang memungkinkan Anda mengatur daftar yang diizinkan atau daftar blokir. Lihat Daftar izin ekstensi dan daftar blokir untuk mempelajari selengkapnya.

Untuk Windows:

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

Untuk Linux:

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

Azure CLI

Contoh berikut menggunakan az connectedmachine run-command untuk menjalankan skrip shell pada komputer Azure Windows.

Menjalankan skrip dengan komputer

Perintah ini mengirimkan skrip ke komputer, menjalankannya, dan mengembalikan output yang ditangkap.

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

Mencantumkan semua sumber daya RunCommand yang disebarkan pada komputer

Perintah ini mengembalikan daftar lengkap perintah eksekusi yang disebarkan sebelumnya bersama dengan propertinya.

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

Dapatkan status eksekusi dan hasil

Perintah ini mengambil kemajuan eksekusi saat ini, termasuk output terbaru, waktu mulai/selesai, kode keluar, dan status terminal eksekusi.

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

Catatan

Bidang output dan kesalahan di instanceView terbatas pada 4KB terakhir. Untuk mengakses output dan kesalahan lengkap, Anda dapat meneruskan data output dan kesalahan ke blob penambahan penyimpanan menggunakan -outputBlobUri parameter dan -errorBlobUri saat menjalankan Perintah Jalankan.

Menghapus sumber daya RunCommand dari komputer

Hapus sumber daya RunCommand yang sebelumnya disebarkan pada komputer. Jika eksekusi skrip masih berlangsung, eksekusi akan dihentikan.

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

PowerShell

Menjalankan skrip dengan komputer

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

Menjalankan skrip pada komputer menggunakan parameter SourceScriptUri

OutputBlobUri dan ErrorBlobUri adalah parameter opsional.

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

Mencantumkan semua sumber daya RunCommand yang disebarkan pada komputer

Perintah ini mengembalikan daftar lengkap Perintah Jalankan yang disebarkan sebelumnya bersama dengan propertinya.

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

Dapatkan status eksekusi dan hasil

Perintah ini mengambil kemajuan eksekusi saat ini, termasuk output terbaru, waktu mulai/selesai, kode keluar, dan status terminal eksekusi.

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

Membuat atau memperbarui Jalankan Perintah pada komputer menggunakan SourceScriptUri (URL SAS blob penyimpanan)

Buat atau perbarui Jalankan Perintah pada komputer Windows menggunakan URL SAS blob penyimpanan yang berisi skrip PowerShell. SourceScriptUri dapat menjadi URL SAS lengkap blob penyimpanan atau URL publik.

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

Catatan

URL SAS harus menyediakan akses baca ke blob. Waktu kedaluwarsa 24 jam disarankan untuk URL SAS. URL SAS dapat dihasilkan pada portal Azure menggunakan opsi blob, atau token SAS menggunakan New-AzStorageBlobSASToken. Jika menghasilkan token SAS menggunakan New-AzStorageBlobSASToken, URL SAS Anda = "URL blob dasar" + "?" + "token SAS dari New-AzStorageBlobSASToken"

Mendapatkan Tampilan Instans Perintah Jalankan untuk komputer setelah membuat atau memperbarui Perintah Jalankan

Dapatkan Perintah Jalankan untuk komputer dengan Tampilan Instans. Tampilan Instans berisi status eksekusi perintah jalankan (Berhasil, Gagal, dll.), kode keluar, output standar, dan kesalahan standar yang dihasilkan dengan menjalankan skrip menggunakan Perintah Jalankan. ExitCode bukan nol menunjukkan eksekusi yang gagal.

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

InstanceViewExecutionState: Status skrip Jalankan Perintah pengguna. Lihat status ini untuk mengetahui apakah skrip Anda berhasil atau tidak.

ProvisioningState: Status provisi ekstensi umum secara end to end (apakah platform ekstensi dapat memicu Jalankan skrip Perintah atau tidak).

Membuat atau memperbarui Jalankan Perintah pada komputer menggunakan SourceScript (teks skrip)

Buat atau perbarui Jalankan Perintah pada komputer yang meneruskan konten skrip langsung ke -SourceScript parameter. Gunakan ; untuk memisahkan beberapa perintah.

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

Membuat atau memperbarui Jalankan Perintah pada komputer menggunakan OutputBlobUri, ErrorBlobUri untuk mengalirkan output standar dan pesan kesalahan standar untuk output dan kesalahan Tambahkan blob

Buat atau perbarui Jalankan Perintah pada komputer dan streaming output standar dan pesan kesalahan standar untuk output dan kesalahan Tambahkan blob.

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

Catatan

Blob output dan kesalahan harus jenis AppendBlob dan URL SAS-nya harus menyediakan akses baca, tambahkan, buat, tulis ke blob. Waktu kedaluwarsa 24 jam disarankan untuk URL SAS. Jika output atau blob kesalahan tidak ada, blob jenis AppendBlob akan dibuat. URL SAS dapat dihasilkan pada portal Azure menggunakan opsi blob, atau token SAS dari menggunakan New-AzStorageBlobSASToken.

Membuat atau memperbarui Jalankan Perintah pada komputer sebagai pengguna yang berbeda menggunakan parameter RunAsUser dan RunAsPassword

Membuat atau memperbarui Jalankan Perintah pada komputer sebagai pengguna yang berbeda menggunakan RunAsUser parameter dan RunAsPassword . Agar RunAs berfungsi dengan baik, hubungi administrator komputer dan pastikan pengguna ditambahkan pada komputer, pengguna memiliki akses ke sumber daya yang diakses oleh Perintah Jalankan (direktori, file, jaringan, dll.), dan jika komputer Windows, layanan 'Masuk Sekunder' berjalan di komputer.

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

Membuat atau memperbarui Jalankan Perintah pada sumber daya komputer menggunakan SourceScriptUri (URL SAS blob penyimpanan)

Membuat atau memperbarui Jalankan Perintah pada sumber daya komputer Windows menggunakan URL SAS blob penyimpanan yang berisi skrip PowerShell.

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

Catatan

URL SAS harus menyediakan akses baca ke blob. Waktu kedaluwarsa 24 jam disarankan untuk URL SAS. URL SAS dapat dihasilkan pada portal Azure menggunakan opsi blob atau token SAS menggunakan New-AzStorageBlobSASToken. Jika menghasilkan token SAS menggunakan New-AzStorageBlobSASToken, format URL SAS adalah: URL blob dasar + "?" + token SAS dari New-AzStorageBlobSASToken.

Membuat atau memperbarui Jalankan Perintah pada komputer menggunakan ScriptLocalPath (file skrip lokal)

Buat atau perbarui Jalankan Perintah pada komputer menggunakan file skrip lokal yang ada di komputer klien tempat cmdlet dijalankan.

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

Membuat atau memperbarui Jalankan Perintah pada instans komputer menggunakan parameter Parameter dan ProtectedParameter (Parameter Publik dan Terlindungi ke skrip)

Gunakan ProtectedParameter untuk meneruskan input sensitif apa pun ke skrip seperti kata sandi, kunci, dll.

  • Windows: Parameter dan ProtectedParameters diteruskan ke skrip karena argumen diteruskan ke skrip dan berjalan seperti ini: myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value

  • Linux: Parameter Bernama dan nilainya diatur ke konfigurasi lingkungan, yang harus dapat diakses dalam skrip .sh. Untuk argumen Nameless, teruskan string kosong ke input nama. Argumen tanpa nama diteruskan ke skrip dan berjalan seperti ini: myscript.sh publicParam1value publicParam2value secret1value secret2value

Menghapus sumber daya RunCommand dari komputer

Hapus sumber daya RunCommand yang sebelumnya disebarkan pada komputer. Jika eksekusi skrip masih berlangsung, eksekusi akan dihentikan.

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

Jalankan operasi Perintah

Jalankan Perintah di server dengan dukungan Azure Arc mendukung operasi berikut:

Operasi Deskripsi
Buat Operasi untuk membuat perintah jalankan. Ini menjalankan perintah jalankan.
Hapus Operasi untuk menghapus perintah jalankan. Jika sedang berjalan, hapus juga akan menghentikan perintah jalankan.
Dapatkan Operasi untuk mendapatkan perintah jalankan.
List Operasi untuk mendapatkan semua perintah eksekusi server dengan dukungan Azure Arc.
Pembaruan Operasi untuk memperbarui perintah jalankan. Ini menghentikan perintah jalankan sebelumnya.

Catatan

Blob output dan kesalahan ditimpa setiap kali skrip perintah eksekusi.

Skenario contoh

Misalkan Anda memiliki server berkemampuan Azure Arc yang disebut "2012DatacenterServer1" di grup sumber daya "ContosoRG" dengan ID Langganan "aaaaaaaa-aaa-aaaaa-aaa". Pertimbangkan skenario di mana Anda perlu menyediakan akses jarak jauh ke titik akhir untuk server Windows Server 2012 / R2. Akses ke Pembaruan Keamanan Diperpanjang yang diaktifkan oleh Azure Arc memerlukan akses ke titik www.microsoft.com/pkiops/certsakhir . Anda perlu mengonfigurasi aturan firewall dari jarak jauh yang memungkinkan akses ke titik akhir ini. Gunakan Jalankan Perintah untuk mengizinkan konektivitas ke titik akhir ini.

Contoh 1: Akses titik akhir dengan Jalankan Perintah

Mulailah dengan membuat skrip Jalankan Perintah untuk menyediakan akses titik akhir ke www.microsoft.com/pkiops/certs titik akhir di server yang diaktifkan Arc target Anda menggunakan operasi PUT.

Untuk memberikan skrip secara langsung, gunakan operasi berikut:

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

Untuk menautkan ke file skrip, Anda dapat menggunakan opsi Jalankan SkripURI operasi Perintah. Untuk ini, diasumsikan Anda telah menyiapkan file yang newnetfirewallrule.ps1 berisi skrip in-line dan mengunggah skrip ini ke penyimpanan 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"
  }
}

URL SAS harus menyediakan akses baca ke blob. Waktu kedaluwarsa 24 jam disarankan untuk URL SAS. URL SAS dapat dihasilkan pada portal Azure menggunakan opsi blob atau token SAS menggunakan New-AzStorageBlobSASToken. Jika menghasilkan token SAS menggunakan New-AzStorageBlobSASToken, format URL SAS adalah: base blob URL + "?" + token SAS dari New-AzStorageBlobSASToken.

Blob output dan kesalahan harus jenis AppendBlob dan URL SAS-nya harus menyediakan akses baca, tambahkan, buat, tulis ke blob. Waktu kedaluwarsa 24 jam disarankan untuk URL SAS. URL SAS dapat dihasilkan pada portal Azure menggunakan opsi blob, atau token SAS dari menggunakan New-AzStorageBlobSASToken.

Contoh 2: Dapatkan detail Perintah Jalankan

Untuk memverifikasi bahwa Anda telah menyediakan Perintah Jalankan dengan benar, gunakan perintah GET untuk mengambil detail tentang Perintah Jalankan yang disediakan:

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

Contoh 3: Memperbarui Perintah Jalankan

Misalkan Anda ingin membuka akses ke titik *.waconazure.com akhir tambahan untuk konektivitas ke Pusat Admin Windows. Anda dapat memperbarui Perintah Jalankan yang ada dengan parameter baru:

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

Contoh 4: Perintah Jalankan Daftar

Sebelum menghapus Jalankan Perintah untuk Akses Titik Akhir, pastikan tidak ada Perintah Jalankan lainnya untuk server yang diaktifkan Arc. Anda bisa menggunakan perintah daftar untuk mendapatkan semua Perintah Jalankan:

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

Contoh 5: Menghapus Perintah Jalankan

Jika Anda tidak lagi memerlukan ekstensi Jalankan Perintah, Anda dapat menghapusnya menggunakan perintah berikut:

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

Menonaktifkan Perintah Jalankan

Untuk menonaktifkan Perintah Jalankan di server dengan dukungan Azure Arc, buka perintah administratif dan jalankan perintah berikut. Perintah ini menggunakan kemampuan konfigurasi agen lokal untuk agen Connected Machine di daftar blokir Ekstensi.

Windows

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

Linux

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