Aracılığıyla paylaş


İşlem hattı değişkenlerini ve parametrelerini güvenli bir şekilde kullanma

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)

Eğer önceki bir adımda değişkeni olarak ayarlandıysa, bu betiği çalıştırmak derleme ajanının içeriğini siler ve istenmeyen sonuçlara yol açabilir. Bu örnekte bu tür ayarların olası tehlikesi vurgulanır.

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, ku­yr­uk za­ma­nı 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?

Kuyruk süresi değişkeni tanımlama ekran görüntüsü.

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.

Kuyruk zamanı değişkeninin değerini güncelleştirme işleminin ekran görüntüsü.

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.

İşlem hattını çalıştırmadan hemen önce kuyruk süresi değişkeni ekleme işleminin ekran görüntüsü.

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.

Kuruluş düzeyinde kuyruk zamanında ayarlanabilen değişkenleri sınırlandırma seçeneğinin ekran görüntüsü.

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.

Kuruluş düzeyinde kuyruk zamanında ayarlanabilen değişkenleri sınırlayan etkin seçeneğin ekran görüntüsü.

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.

Proje düzeyinde kullanılamayan kuyruk zamanında ayarlanabilen değişkenleri sınırlayan seçeneğin ekran görüntüsü.

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.

Klasik işlem hattında değişken tanımlamanın ekran görüntüsü.

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.

Ayarı açık olan değişkenler panelinin ekran görüntüsü.

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.

Ayarı açıkken çalışma zamanında değişken ekleyemediğinize ilişkin ekran görüntüsü.

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.