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 2022 | Azure DevOps Server 2020
Di Azure Pipelines, Anda dapat menggunakan variabel dan parameter untuk mengumpulkan input dari pengguna. Kemampuan ini berguna ketika Anda ingin mengizinkan pengguna untuk menyesuaikan eksekusi alur. 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 berfungsi sebagai metode yang nyaman untuk mengumpulkan input pengguna di muka dan memfasilitasi transfer data di antara langkah-langkah alur. Namun, berhati-hatilah saat bekerja dengan variabel. Secara bawaan, variabel yang baru dibuat, baik yang ditentukan dalam YAML atau skrip, dapat dibaca dan ditulis. Langkah-langkah hilir dapat mengubah nilai variabel secara tak terduga.
Misalnya, pertimbangkan cuplikan skrip berikut:
msbuild.exe myproj.proj -property:Configuration=$(MyConfig)
Jika langkah sebelumnya mengatur MyConfig
ke Debug & deltree /y c:
, hal itu dapat menyebabkan konsekuensi yang tidak diinginkan. Meskipun contoh ini hanya menghapus konten agen build Anda, contoh ini menyoroti potensi bahaya pengaturan tersebut.
Anda dapat menjadikan variabel hanya-baca.
Variabel sistem seperti Build.SourcesDirectory
, variabel output tugas, dan variabel waktu antrean selalu bersifat hanya-baca.
Variabel yang dibuat di YAML atau dibuat pada waktu proses oleh skrip dapat ditetapkan sebagai baca-saja.
Saat skrip atau tugas membuat variabel baru, skrip atau tugas dapat meneruskan isReadonly=true
bendera dalam perintah pengelogannya untuk membuat variabel baca-saja.
Di YAML, Anda dapat menentukan variabel baca-saja dengan menggunakan kunci tertentu berikut:
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 menentukan variabel di editor UI Alur, Anda dapat mengizinkan pengguna untuk mengambil alih nilainya selama eksekusi alur. Variabel ini disebut sebagai variabel waktu antrean dan selalu didefinisikan dalam editor UI Alur.
Variabel waktu antrean diekspos ke pengguna akhir saat mereka menjalankan alur secara manual, dan mereka dapat mengubah nilainya.
Pengguna memerlukan Edit queue build configuration izin pada pipeline untuk menentukan variabel yang ditetapkan pada waktu antrean.
Batasi variabel yang dapat diatur pada waktu antrean
UI dan REST API yang digunakan untuk menjalankan alur menyediakan sarana bagi pengguna untuk menentukan variabel baru pada waktu antrean.
Pada hari-hari awal Azure Pipelines, fungsionalitas ini memiliki masalah berikut:
- Ini memungkinkan pengguna untuk menentukan variabel baru yang belum ditentukan oleh penulis alur dalam definisi.
- Hal ini memungkinkan pengguna untuk mengambil alih variabel sistem.
Untuk mengatasi masalah ini, kami menentukan pengaturan untuk membatasi variabel yang dapat diatur pada waktu antrean. Dengan mengaktifkan pengaturan ini, hanya variabel yang secara eksplisit ditandai sebagai "Dapat diatur pada waktu antrean" yang dapat diatur. Dengan kata lain, Anda dapat mengatur variabel apa pun pada waktu antrean kecuali pengaturan ini diaktifkan.
Pengaturan ini dirancang untuk bekerja di tingkat organisasi dan proyek.
-
Tingkat organisasi:
- Ketika pengaturan aktif, pengaturan memberlakukan bahwa hanya variabel yang secara eksplisit ditandai sebagai "Dapat diatur pada waktu antrean" yang dapat dimodifikasi untuk semua alur di semua proyek dalam organisasi.
- Administrator Koleksi Proyek dapat mengaktifkan atau menonaktifkan pengaturan ini.
- Akses pengaturan ini di bawah Pengaturan Alur>pengaturan>organisasi.
-
Tingkat proyek:
- Mirip dengan tingkat organisasi, mengaktifkan pengaturan ini memastikan bahwa hanya variabel yang ditandai sebagai "Dapat diatur pada waktu antrean" yang dapat dimodifikasi untuk semua alur dalam proyek tertentu.
- Jika pengaturan tingkat organisasi diaktifkan, pengaturan tersebut berlaku untuk semua proyek dan tidak dapat dinonaktifkan.
- Administrator Proyek dapat mengaktifkan atau menonaktifkan pengaturan ini.
- Akses pengaturan ini di bawah pengaturan proyek>alur>pengaturan.
Contoh berikut menunjukkan pengaturan diaktifkan dan alur Anda menentukan variabel bernama my_variable
yang tidak dapat diatur saat waktu antrean.
Selanjutnya, asumsikan Anda ingin menjalankan pipeline. Panel Variabel tidak menampilkan variabel apa pun, dan tombol Tambahkan variabel hilang.
Menggunakan panggilan REST API Builds - Queue dan Runs - Run Pipeline untuk mengantre eksekusi alur dan menetapkan nilai untuk my_variable
atau nilai untuk variabel baru gagal dengan kesalahan yang mirip dengan yang berikut ini.
{
"$id": "1",
"innerException": null,
"message": "You can't set the following variables (my_variable). 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
Tidak seperti variabel, alur yang sedang berjalan tidak dapat memodifikasi parameter alur.
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.
Mengizinkan validasi parameter dari argumen tugas shell
Alur dapat mereferensikan tugas yang dijalankan dalam alur. Beberapa tugas menyertakan arguments
parameter yang memungkinkan Anda menentukan lebih banyak opsi untuk tugas tersebut.
Saat pengaturan Aktifkan validasi parameter argumen tugas shell diaktifkan, parameter argumen ditinjau untuk memastikan bahwa shell menjalankan karakter seperti tanda titik koma, tanda kutip, dan tanda kurung dengan benar. Mirip dengan opsi Batasi variabel yang dapat diatur pada waktu antrean, Anda dapat mengonfigurasi aktifkan validasi parameter argumen tugas shell di tingkat organisasi atau proyek di bawah Pengaturan>Alur>Pengaturan.
Saat fitur ini diaktifkan, masalah validasi apa pun yang terkait dengan arguments
parameter memicu pesan kesalahan seperti berikut ini:
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 seperti yang ditunjukkan dalam pesan kesalahan. Validasi ini berlaku untuk arguments
parameter dalam tugas tertentu berikut:
- PowerShell
- BatchScript
- Bash (sebuah bahasa shell dan bahasa perintah untuk Unix)
- Ssh
- AzureFileCopy
- WindowsMachineFileCopy
Artikel terkait
- Tentukan variabel
- Atur variabel rahasia
- Menggunakan variabel yang telah ditentukan sebelumnya
- Gunakan parameter runtime
- Jenis templat yang digunakan