Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Azure Pipelines'da, kullanıcıların girdilerini değişkenler ve parametrelerle toplayarak işlem hattı yürütmesini özelleştirmesine izin vekleyebilirsiniz. Ancak, kullanıcı girişini kabul etmek, düzgün işlenmediği takdirde güvenlik risklerine de neden olabilir. Bu makalede, işlem hattınızda değişkenleri ve parametreleri güvenli bir şekilde kullanmayı öğreneceksiniz.
Bu makale, Azure Pipelines için güvenlik önlemleri uygulamanıza yardımcı olan bir serinin parçasıdır. Daha fazla bilgi için bkz. Güvenli Azure Pipelines.
Önkoşullar
| Kategori | Gereksinimler |
|---|---|
| Azure DevOps | - Azure DevOps'unuzu güvenli hale getirme ve Azure Pipelines'ı güvenli hale getirme bölümünde öneriler uygulayın. - YAML ve Azure Pipelines hakkında temel bilgiler. Daha fazla bilgi için bkz. İlk işlem hattınızı oluşturma. |
| İzinler | - İşlem hattı izinlerini değiştirmek için: Proje Yöneticileri grubununÜyesi. - Kuruluş izinlerini değiştirmek için: Proje Koleksiyonu Yöneticileri grubunun bir üyesiolun. |
Değişkenler
Değişkenler, kullanıcı girişini önceden toplamak ve işlem hattı adımları arasında veri aktarımını kolaylaştırmak için kullanışlı bir yoldur. Ancak YAML görevlerinde veya betiklerinde tanımlanan değişkenler varsayılan olarak okuma-yazmadır. Yukarı akış adımlarında ayarlanan değerler, aşağı akış değerlerini beklenmedik şekilde değiştirebilir.
Örneğin, aşağıdaki betik kod parçacığı adlı MyConfigbir değişkeni çağırır.
msbuild.exe myproj.proj -property:Configuration=$(MyConfig)
Build.SourcesDirectory gibi sistem değişkenleri ve görev çıkış değişkenleri her zaman salt okunur olur. Ayrıca, bir betikte veya YAML görevinde oluşturulan bir değişkeni, günlük komutunda isReadonly=true bayrağını geçirerek salt okunur olarak tanımlayabilirsiniz.
YAML değişken tanımında, belirli readonly bir anahtarı kullanarak salt okunur bir değişken belirtebilirsiniz:
variables:
- name: myReadOnlyVar
value: myValue
readonly: true
Gizli değişkenlerde özellikle dikkatli olun. Gizli dizi değişkenlerini ayarlamak için önerilen yöntemler arasında kullanıcı arabirimini kullanma, değişken grubu oluşturma veya Azure Key Vault'tan alınan bir değişken grubu kullanma sayılabilir. Daha fazla bilgi için bkz. Gizli dizi değişkenlerini ayarlama.
Kuyruk süresi değişkenleri
Azure Pipelines kullanıcı arabiriminde bir değişken tanımladığınızda, kullanıcıların işlem hattı yürütmesi sırasında değeri geçersiz kılmasına izin verip vermeyeceğinizi seçebilirsiniz. Kullanıcıların kuyruk zamanında değerlerini ayarlamasına izin veren değişkenler kuyruk zamanı değişkenleri olarak adlandırılır ve yalnızca Azure Pipelines Değişkenleri kullanıcı arabiriminde tanımlanabilir.
Klasik işlem hattı düzenleyicisinde, kuyruk zamanı değişkenini tanımlamak için 'Kuyruk zamanında ayarlanabilir olarak işaretleyin' seçeneğini işaretlersiniz. YAML işlem hatlarında, kullanıcıların bu işlem hattını çalıştırırken bu değeri geçersiz kılmasına izin ver'i seçerek bunları belirleyebilirsiniz.
Uyarı
Yayın işlem hattında Yayın zamanında ayarlanabilir'i seçin. Daha fazla bilgi için bkz. Yayın zamanında değişkenleri nasıl düzenleyebilirim?
Kullanıcı işlem hattını el ile çalıştırdığında kuyruk zamanı değişkenlerini seçebilir ve değerleri değiştirebilir.
Kullanıcıların kuyruk zamanında ayarlanan değişkenleri tanımlayabilmeleri için bir işlem hattında derleme kuyruğu yapılandırmasını düzenleme iznine sahip olmaları gerekir.
Kuyruk zamanında ayarlanabilen değişkenleri sınırlama
Azure Pipelines kullanıcı arabirimi ve işlem hattı çalıştıran REST API, kullanıcıların kuyruk zamanında yeni değişkenler eklemesi için yollar sağlar. Bu özellik, kullanıcıların işlem hattı yazarının tanımlamamış olduğu değişkenleri oluşturmasına, sistem değişkenlerini geçersiz kılmasına ve kuyruk zamanında mevcut değişkenlerin değerlerini ayarlamasına olanak tanır.
Bu yeteneklerin neden olduğu sorunları önlemek için kuyruk zamanında ayarlanabilen değişkenleri sınırlayabilirsiniz. Kullanıcıların yalnızca kuyruk zamanında Açıkça Ayarlanabilir olarak işaretlenmiş değişkenleri ayarlayabilmesi için Kuyruk zamanında ayarlanabilen değişkenleri sınırla ayarını etkinleştirebilir veya Kullanıcıların kuyruk zamanında bu işlem hattını çalıştırırken bu değeri geçersiz kılabilmesini sağlayabilirsiniz.
Bu ayar kuruluş ve proje düzeylerinde uygulanabilir.
Proje Koleksiyonu Yöneticileri bu ayarı Kuruluş ayarları>İşlem Hatları>Ayarları'nda kuruluş düzeyinde uygulayabilir. Ayar Açık olduğunda, kuruluştaki tüm projelerdeki tüm işlem hatları için yalnızca kuyruk zamanında Açıkça Ayarlanabilir olarak işaretlenen değişkenler kuyruk zamanında ayarlanabilir.
Proje Yöneticileri bu ayarı Proje ayarları>İşlem Hatları>Ayarları'nda proje düzeyinde uygulayabilir. Ayar Açık olduğunda, bu projedeki tüm işlem hatları için yalnızca kuyruk zamanında Açıkça Ayarlanabilir olarak işaretlenmiş değişkenler kuyruk zamanında ayarlanabilir. Ayar kuruluş düzeyinde etkinleştirilmediyse, tek tek projeler için etkinleştirilebilir veya devre dışı bırakılabilir.
Kuruluş düzeyi ayarı etkinse, kuruluştaki tüm projeler için geçerlidir ve proje düzeyinde kapatılamaz.
Aşağıdaki örnekte, bazıları kuyruk zamanında Ayarlanabilir olarak işaretlenmiş klasik bir işlem hattının değişkenleri gösterilmektedir. Değişken BuildPlatform kuyruk zamanında ayarlanabilir, ancak BuildConfiguration ayarlanamaz.
Bu işlem hattını çalıştırdığınızda, seçilecek Değişkenler ekranında yalnızca kuyruk zamanında Ayarlanabilir olarak işaretlenen değişkenler görünür.
Kuyruk zamanında ayarlanabilen değişkenleri sınırla özelliği proje veya kuruluş düzeyinde etkinleştirilirse Değişken ekle düğmesi görünmez.
Bir işlem hattı çalışmasını kuyruğa almak için Derlemeler - Kuyruk veya Çalıştırmalar - İşlem Hattı Çalıştırma API'lerini kullanmak ve kuyruk zamanında Ayarlanabilir olarak işaretlenmemiş bir değişkenin değerini ayarlamaya çalışmak, aşağıdakine benzer bir hatayla başarısız olur:
{
"$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
}
Parametreler
Çalışan bir işlem hattı, değişkenlerden farklı olarak işlem hattı parametrelerini değiştiremez. Parametreler ve numbergibi string veri türlerine sahiptir ve belirli değer alt kümeleriyle sınırlandırılabilir. İşlem hattının kullanıcı tarafından yapılandırılabilir bir yönü yalnızca önceden tanımlanmış bir listeden değerleri kabul ettiğinde ve işlem hattının rastgele verileri kabul etmediğinden emin olması gerektiğinde bu kısıtlama değerlidir.
Shell görevleri bağımsız değişken doğrulamasını etkinleştirme
İşlem hatları, işlem hattı içinde yürütülen görevlere başvurabilir. Bazı görevler, kullanıcıların görev için daha fazla seçenek belirtmesine olanak tanıyan bir arguments parametre içerir.
Kabuk görevleri bağımsız değişkenlerini etkinleştir doğrulama ayarının uygulanması, komut dosyalarına komut ekleyebilen girişleri denetlemek için yerleşik kabuk görevleri için parametreleri doğrularargument. Denetim, kabuğun aşağıdaki işlem hattı görevlerinde noktalı virgül, tırnak işareti ve parantez gibi karakterleri doğru şekilde yürütmesini sağlar:
- PowerShell
- Toplu İş Komut Dosyası
- Bash
- Şş
- AzureFileCopy
- WindowsMachineFileCopy
Kuruluş Ayarlarıİşlem Hatları Ayarları altında kuruluş düzeyinde veya Proje> ayarları >Ayarları altında proje düzeyinde >> etkinleştir doğrulamasını uygulayabilirsiniz. Kuruluş düzeyi ayarı etkinse, kuruluştaki tüm projeler için geçerlidir ve proje düzeyinde kapatılamaz.
Bu ayar etkinleştirildiğinde, bir arguments parametreyle ilgili tüm doğrulama sorunları aşağıdaki hata iletisini tetikler:
Detected characters in arguments that may not be executed correctly by the shell. Please escape special characters using backtick (`).
Hata iletisinde gösterildiği gibi özel karakterleri yok sayarak argümanı ayarlayın.