Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Layanan Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022
Di Azure Pipelines, Anda dapat mengizinkan pengguna untuk menyesuaikan eksekusi alur dengan mengumpulkan input mereka dengan variabel dan parameter. Namun, menerima input pengguna juga dapat menimbulkan risiko keamanan jika tidak ditangani dengan benar. Dalam artikel ini, Anda mempelajari cara menggunakan variabel dan parameter dengan aman di alur Anda.
Artikel ini adalah bagian dari seri yang membantu Anda menerapkan langkah-langkah keamanan untuk Azure Pipelines. Untuk informasi selengkapnya, lihat Mengamankan Azure Pipelines.
Prasyarat
| Kategori | Persyaratan |
|---|---|
| Azure DevOps | - Terapkan rekomendasi di Membuat Azure DevOps Anda aman dan Alur Azure Aman. - Pengetahuan dasar tentang YAML dan Azure Pipelines. Untuk informasi selengkapnya, lihat Buat pipa pertama Anda. |
| Izin | - Untuk mengubah izin alur: Anggota grup Administrator Proyek. - Untuk mengubah izin organisasi: Anggota grup Administrator Koleksi Proyek. |
Variabel
Variabel adalah sebagai cara mudah untuk mengumpulkan input pengguna terlebih dahulu dan memfasilitasi transfer data di antara langkah-langkah alur. Namun, variabel yang didefinisikan dalam tugas atau skrip YAML adalah baca-tulis secara default. Nilai yang diatur dalam langkah-langkah upstream dapat memodifikasi nilai hilir secara tak terduga.
Misalnya, cuplikan skrip berikut memanggil variabel yang disebut MyConfig.
msbuild.exe myproj.proj -property:Configuration=$(MyConfig)
Jika langkah sebelumnya mengatur MyConfig nilai variabel ke Debug & deltree /y c:, menjalankan skrip ini akan menghapus konten agen build dan dapat menyebabkan konsekuensi yang tidak diinginkan. Contoh ini menyoroti potensi bahaya pengaturan tersebut.
Variabel sistem seperti Build.SourcesDirectory dan variabel output tugas selalu bersifat baca-saja. Anda juga dapat menetapkan variabel yang dibuat dalam tugas skrip atau YAML sebagai baca-saja dengan meneruskan flag isReadonly=true dalam perintah pencatatannya.
Dalam definisi variabel YAML, Anda dapat menentukan variabel baca-saja dengan menggunakan kunci tertentu readonly :
variables:
- name: myReadOnlyVar
value: myValue
readonly: true
Berhati-hatilah dengan variabel rahasia. Metode yang direkomendasikan untuk mengatur variabel rahasia termasuk menggunakan UI, membuat grup variabel, atau menggunakan grup variabel yang bersumber dari Azure Key Vault. Untuk informasi selengkapnya, lihat Mengatur variabel rahasia.
Variabel waktu antrean
Saat Anda menentukan variabel di antarmuka pengguna Azure Pipelines, Anda dapat memilih apakah akan mengizinkan pengguna mengambil alih nilai selama eksekusi alur. Variabel yang memungkinkan pengguna mengatur nilainya pada waktu antrean disebut sebagai variabel waktu antrean dan hanya dapat didefinisikan di bagian UI Variabel dalam Azure Pipelines.
Di editor alur Klasik, Anda menentukan variabel waktu antrean dengan memilih kotak centang untuk Dapat Diatur pada waktu antrean. Di alur YAML, Anda menunjuknya dengan memilih Izinkan pengguna mengambil alih nilai ini saat menjalankan alur ini.
Nota
Dalam alur Rilis, pilih Tetapkan pada waktu rilis. Untuk informasi selengkapnya, lihat Bagaimana cara mengedit variabel pada waktu rilis?
Saat pengguna menjalankan alur secara manual, mereka dapat memilih variabel waktu antrean dan mengubah nilai.
Pengguna harus memiliki izin Edit konfigurasi build antrean pada alur untuk dapat menentukan variabel yang ditetapkan pada waktu antrean.
Batasi variabel yang dapat diatur pada waktu antrean
Antarmuka pengguna Azure Pipelines dan REST API yang menjalankan alur menyediakan cara bagi pengguna untuk menambahkan variabel baru pada waktu antrean. Kemampuan ini memungkinkan pengguna untuk membuat variabel yang tidak ditentukan penulis pipeline, untuk menggantikan variabel sistem, dan mengatur nilai untuk variabel yang ada saat antrean.
Untuk menghindari masalah yang disebabkan oleh kemampuan ini, Anda dapat membatasi variabel yang dapat diatur pada waktu antrean. Anda dapat mengaktifkan variabel Batas yang dapat diatur pada pengaturan waktu antrean sehingga pengguna hanya dapat mengatur variabel yang secara eksplisit ditandai sebagai Dapat Diatur pada waktu antrean atau Biarkan pengguna mengambil alih nilai ini saat menjalankan alur ini pada waktu antrean.
Pengaturan ini dapat diterapkan di tingkat organisasi dan proyek.
Administrator Koleksi Proyek dapat menerapkan pengaturan ini di tingkat organisasi di Pengaturan Organisasi>Alur>Pengaturan. Saat pengaturan Aktif, hanya variabel yang secara eksplisit ditandai sebagai Dapat Diatur pada waktu antrean yang dapat diatur pada waktu antrean untuk semua alur di semua proyek di organisasi.
Administrator Proyek dapat menerapkan pengaturan ini pada tingkat proyek diPengaturan>> Proyek. Saat pengaturan Aktif, hanya variabel yang secara eksplisit ditandai sebagai Dapat Diatur pada waktu antrean yang dapat diatur pada waktu antrean untuk semua alur dalam proyek ini. Jika pengaturan tidak diaktifkan di tingkat organisasi, pengaturan tersebut dapat diaktifkan atau dinonaktifkan untuk masing-masing proyek.
Jika pengaturan tingkat organisasi diaktifkan, pengaturan tersebut berlaku untuk semua proyek di organisasi dan tidak dapat dinonaktifkan di tingkat proyek.
Contoh berikut menunjukkan variabel untuk alur Klasik, dengan beberapa di antaranya ditandai Dapat diatur saat waktu antrean. Variabel BuildPlatform dapat diatur pada waktu antrean, tetapi BuildConfiguration tidak dapat.
Saat Anda menjalankan pipelin ini, hanya variabel yang bertanda Dapat Diatur saat antre yang terlihat pada layar Variabel untuk dipilih.
Jika Variabel batas yang dapat diatur pada waktu antrean diaktifkan di tingkat proyek atau organisasi, tombol Tambahkan variabel tidak muncul.
Menggunakan Builds - Queue atau Runs - Run Pipeline API untuk mengantrekan eksekusi alur dan mencoba mengatur nilai variabel yang tidak ditandai Settable pada waktu antrean gagal dengan kesalahan yang mirip dengan yang berikut ini:
{
"$id": "1",
"innerException": null,
"message": "You can't set the following variables (BuildConfiguration). If you want to be able to set these variables, then edit the pipeline and select Settable at queue time on the variables tab of the pipeline editor.",
"typeName": "Microsoft.Azure.Pipelines.WebApi.PipelineValidationException, Microsoft.Azure.Pipelines.WebApi",
"typeKey": "PipelineValidationException",
"errorCode": 0,
"eventId": 3000
}
Parameter
Alur yang sedang berjalan tidak dapat memodifikasi parameter alur, tidak seperti variabel. Parameter memiliki jenis data seperti number dan string, dan dapat dibatasi untuk subset nilai tertentu. Pembatasan ini berharga ketika aspek alur yang dapat dikonfigurasi pengguna hanya boleh menerima nilai dari daftar yang telah ditentukan sebelumnya, memastikan bahwa alur tidak menerima data arbitrer.
Mengaktifkan validasi argumen perintah shell
Alur dapat mereferensikan tugas yang dijalankan dalam alur. Beberapa tugas menyertakan arguments parameter yang memungkinkan pengguna menentukan lebih banyak opsi untuk tugas tersebut.
Menerapkan pengaturan Aktifkan validasi argumen tugas shell memvalidasi parameter untuk tugas shell bawaan guna memeriksa input yang dapat menyuntikkan perintah ke dalam skrip. Pemeriksaan memastikan bahwa shell mengeksekusi karakter seperti titik koma, tanda kutip, dan tanda kurung dengan benar dalam tugas pipeline berikut:
- PowerShell
- BatchScript
- Bash (sebuah bahasa shell dan bahasa perintah untuk Unix)
- Ssh
- AzureFileCopy
- WindowsMachineFileCopy
Anda dapat menerapkan Aktifkan validasi argumen tugas shell di tingkat organisasi di bawah Pengaturan Organisasi>Alur>Pengaturan atau di tingkat proyek di bawah Pengaturan Proyek>Alur>Pengaturan. Jika pengaturan tingkat organisasi diaktifkan, pengaturan tersebut berlaku untuk semua proyek di organisasi dan tidak dapat dinonaktifkan di tingkat proyek.
Ketika pengaturan ini diaktifkan, masalah validasi apa pun yang arguments terkait dengan parameter memicu pesan kesalahan berikut:
Detected characters in arguments that may not be executed correctly by the shell. Please escape special characters using backtick (`).
Untuk mengatasi masalah ini, sesuaikan argumen dengan menghindari karakter khusus menggunakan tanda penghindar sebagaimana ditunjukkan dalam pesan kesalahan.
Konten terkait
- Tentukan variabel
- Atur variabel rahasia
- Menggunakan variabel yang telah ditentukan sebelumnya
- Gunakan parameter runtime
- Jenis templat yang digunakan