İş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:
- Değişkenleri tanımlama
- Gizli dizi değişkenlerini ayarlama
- Önceden tanımlanmış değişken kullanma
- Çalışma zamanı parametrelerini kullanma
- Şablon türleri ve kullanımı
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.SourcesDirectory
sistem 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şkenleri, bir işlem hattını el ile çalıştırdığında son kullanıcıya sunulur ve değerlerini değiştirebilir.
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.
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.
- 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.
- 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.
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.
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.
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 string
gibi 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.