İşlem hattınızda değişkenleri ve parametreleri güvenli bir şekilde kullanma

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Bu makalede, işlem hattı kullanıcılarından giriş toplamak için değişkenlerin ve parametrelerin nasıl güvenli bir şekilde kullanılacağı açıklanır. Değişkenleri ve parametreleri kullanma hakkında daha fazla bilgi edinmek isterseniz bkz:

Gizli dizi değişkenleriyle dikkatli olun. Gizli dizi değişkenlerini ayarlamanın önerilen yolları kullanıcı arabiriminde, değişken grubunda ve Azure Key Vault'taki bir değişken grubunda yer alır. Daha fazla bilgi için bkz . Gizli dizi değişkenlerini ayarlama.

Değişkenler

Değişkenler, kullanıcıdan önden bilgi toplamanın kullanışlı bir yolu olabilir. İşlem hattı içindeki adım adım verileri geçirmek için değişkenleri de kullanabilirsiniz.

Ancak değişkenleri dikkatli kullanın. İster YAML'de tanımlansın ister bir betik tarafından yazılsın, yeni oluşturulan değişkenler varsayılan olarak okuma-yazmadır. Aşağı akış adımı, bir değişkenin değerini beklemediğiniz bir şekilde değiştirebilir.

Örneğin, betiğiniz şunları okur:

msbuild.exe myproj.proj -property:Configuration=$(MyConfig)

Önceki bir adım olarak Debug & deltree /y c:ayarlanabilirMyConfig. Bu örnek yalnızca derleme aracınızın içeriğini silecek olsa da, bu ayarın nasıl kolayca çok daha tehlikeli hale gelebileceğini hayal edebilirsiniz.

Değişkenleri salt okunur yapabilirsiniz. gibi Build.SourcesDirectorysistem değişkenleri, görev çıktı değişkenleri ve kuyruk zamanı değişkenleri her zaman salt okunur olur. YAML'de oluşturulan veya bir betik tarafından çalışma zamanında oluşturulan değişkenler salt okunur olarak belirlenebilir. Bir betik veya görev yeni bir değişken oluşturduğunda, değişkeni salt okunur yapmak için bayrağını günlük komutuna geçirebilir isReadonly=true .

YAML'de, belirli bir anahtarı kullanarak salt okunur değişkenler belirtebilirsiniz:

variables:
- name: myReadOnlyVar
  value: myValue
  readonly: true

Kuyruk süresi değişkenleri

İşlem Hatları kullanıcı arabirimi düzenleyicisinde bir değişken tanımlarken, kullanıcıların işlem hattını çalıştırırken değerini geçersiz kılmasına izin vermeyi seçebilirsiniz. Böyle bir değişkene kuyruk süresi değişkeni diyoruz. Kuyruk süresi değişkenleri her zaman İşlem Hatları kullanıcı arabirimi düzenleyicisinde tanımlanır.

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

Kuyruk süresi değişkenleri, bir işlem hattını el ile çalıştırdığında son kullanıcıya sunulur ve değerlerini 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 belirtmek için işlem hattında Kuyruk derleme yapılandırması düzenleme iznine sahip olması gerekir.

Kuyruk zamanında ayarlanabilen değişkenleri sınırlama

İşlem hattını çalıştırmak için kullanılan kullanıcı arabirimi ve REST API, kullanıcıların kuyruk zamanında yeni değişkenler tanımlamasına olanak sağlar.

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

Azure Pipelines'ın ilk günlerinde bu işlevde bazı sorunlar vardı:

  • Kullanıcıların tanımda işlem hattı yazarı tarafından açıkça tanımlanmayan yeni değişkenler tanımlamasına izin verdi.
  • Kullanıcıların sistem değişkenlerini geçersiz kılmasına izin veriyordu.

Bu sorunları düzeltmek için, kuyruk zamanında ayarlanabilen değişkenleri sınırlamak üzre bir ayar tanımladık. Bu ayar etkinleştirildiğinde, yalnızca açıkça "Kuyruk zamanında ayarlanabilir" olarak işaretlenmiş değişkenler ayarlanabilir. Başka bir deyişle, bu ayar etkinleştirilmediği sürece, kuyruk zamanında herhangi bir değişken ayarlayabilirsiniz.

Ayar, kuruluş düzeyinde ve proje düzeyinde çalışacak şekilde tasarlanmıştır.

  1. Kuruluş düzeyi. Ayar açık olduğunda, kuruluştaki tüm projelerdeki tüm işlem hatları için yalnızca açıkça "Kuyruk zamanında ayarlanabilir" olarak işaretlenen değişkenlerin ayarlanabilmesini zorunlu tutar. Ayar kapalı olduğunda, her proje kuyruk zamanında ayarlanan değişkenlerin kısıtlanıp kısıtlanmayacağını seçebilir. Bu ayar, Kuruluş Ayarlar - İşlem Hatları ->> Ayarlar altında bir geçiştir. Yalnızca Proje Koleksiyonu Yönetici istrator'lar bunu etkinleştirebilir veya devre dışı bırakabilir. Kuruluş düzeyinde kuyruk zamanında ayarlanabilen değişkenleri sınırlama işleminin ekran görüntüsü.
  2. Proje düzeyi. Ayar açık olduğunda, projedeki tüm işlem hatları için yalnızca açıkça "Kuyruk zamanında ayarlanabilir" olarak işaretlenen değişkenlerin ayarlanabilmesini zorunlu tutar. Ayar kuruluş düzeyinde açıksa, tüm projeler için açıktır ve kapatılamaz. Bu ayar, Project Ayarlar - pipelines ->> Ayarlar altında bir geçiştir. Yalnızca Project Yönetici istrator'lar etkinleştirebilir veya devre dışı bırakabilir. Proje düzeyinde kuyruk zamanında ayarlanabilen değişkenleri sınırlama işleminin ekran görüntüsü.

Bir örneğe bakalım. Ayarın açık olduğunu ve işlem hattınızın kuyruk zamanında ayarlanamaz adlı my_variable bir değişken tanımladığını varsayalım. Klasik işlem hattında değişken tanımlama ekran görüntüsü.

Ardından işlem hattını çalıştırmak istediğinizi varsayalım. Değişkenler panelinde değişken gösterilmez ve Değişken ekle düğmesi eksiktir.

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

Bir işlem hattı çalıştırmasını kuyruğa almak ve yeni bir değişkenin veya değerini ayarlamak için Derlemeler - Kuyruk ve Çalıştırmalar - İşlem Hattı Çalıştır REST API çağrılarını my_variable kullanmak aşağıdakine benzer bir hatayla başarısız olur.

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

Parametreler

Değişkenlerden farklı olarak, işlem hattı parametreleri çalışırken işlem hattı tarafından değiştirilemez. Parametreler ve stringgibi number veri türlerine sahiptir ve değerlerin bir alt kümesiyle sınırlandırılabilir. İşlem hattının kullanıcı tarafından yapılandırılabilir bir parçasının yalnızca kısıtlanmış bir listeden değer alması gerektiğinde parametreleri kısıtlamak yararlı olur. Kurulum, işlem hattının rastgele veriler almamasını sağlar.

Kabuk görevleri bağımsız değişkenleri parametre doğrulamasını etkinleştirme

İşlem hatları, işlem hattında yürütülen görevlere başvurabilir. Azure DevOps'a dahil edilen çeşitli görevlerin, görev için daha fazla seçenek belirtmenize olanak tanıyan bir bağımsız değişken parametresi vardır.

Kabuk görevleri bağımsız değişkenlerini etkinleştir parametre doğrulaması etkinleştir ayarı etkinleştirildiğinde, kabuk tarafından doğru yürütülmeyebilecek karakterler için arguments parametresi gözden geçirilir. Örnek karakterler noktalı virgül, tırnak işareti ve ayraçtır.

Kuyruk zamanında ayarlanabilen değişkenleri sınırla seçeneğine benzer şekilde, Kabuk görevleri bağımsız değişkenlerini etkinleştir parametre doğrulaması, kuruluş düzeyinde Ayarlar> Pipelines> Ayarlar veya Ayarlar> Pipelines> Ayarlar proje düzeyinde yapılandırılabilir.

Etkinleştirildiğinde, algılanan bir doğrulama sorunu vardır, aşağıdaki gibi bir hata iletisi günlüğe kaydedilir: Detected characters in arguments that may not be executed correctly by the shell. Please escape special characters using backtick (`).

Sorunu çözmek için, hata iletisinde belirtildiği gibi özel karakterlerden kaçarak bağımsız değişkenleri ayarlayın.

Kabuk görevleri bağımsız değişkenlerini etkinleştir parametre doğrulaması etkinleştirildiğinde, doğrulama aşağıdaki görevlerde bağımsız değişkenler parametresine uygulanır.

  • PowerShell
  • BatchScript
  • Bash
  • Ssh
  • AzureFileCopy
  • WindowsMachineFileCopy

Sonraki adımlar

Girişlerinizin güvenliğini sağladıktan sonra paylaşılan altyapınızın güvenliğini de sağlamanız gerekir.