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
İşlem hatları betikleri yürütmek ve üretim ortamlarına kod dağıtmak için güçlü özellikler sunar, ancak bu gücü güvenlikle dengelemek çok önemlidir. bir işlem hattının kötü amaçlı kod için bir kanal olmasını asla istemezsiniz. Güvenliği geliştirme ekiplerinin ihtiyaç duyduğu esneklik ve güçle dengelemek çok önemlidir.
Bu makalede, işlem hatlarınızı tehditlere ve güvenlik açıklarına karşı korumak için güvenlikle ilgili gerekli yapılandırmalara genel bir bakış sağlanmaktadır.
Önkoşullar
| Kategori | Gereksinimler |
|---|---|
| Azure DevOps | - Azure DevOps'unuzu 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 üyesi. |
Proje, depo ve hizmet bağlantısı erişimini kısıtlama
Güvenliği artırmak için projelerinizi ayırmayı, dal ilkelerini kullanmayı ve çatallar için daha fazla güvenlik önlemi eklemeyi göz önünde bulundurun. Hizmet bağlantılarının kapsamını en aza indirin ve en güvenli kimlik doğrulama yöntemlerini kullanın.
- Ayrı projeler: Her ürünü ve ekibi ayrı projelerde yönetin. Bu, bir üründeki işlem hatlarının yanlışlıkla başka bir üründen açık kaynaklara erişmesini önleyerek yanal maruz kalma durumunu en aza indirir.
- Proje düzeyinde kimlikleri kullanma: Koleksiyon düzeyi kimlik yerine işlem hatları için proje tabanlı derleme kimliği kullanın. Proje düzeyinde kimlikler yalnızca ilişkili projelerindeki kaynaklara erişebilir ve kötü amaçlı aktörlerin yetkisiz erişim riskini en aza indirir. Daha fazla bilgi için bkz. kapsamlı derleme kimlikleri ve iş yetkilendirme kapsamı.
- Dal ilkelerini kullanma: Kod ve işlem hattında güvenli değişiklikler yapmak için izinleri ve dal ilkelerini uygulayın. Ayrıca, depolara işlem hattı izinleri ve denetimleri eklemeyi de göz önünde bulundurun.
-
Fork’lar için ek güvenlik ekleyin: GitHub'dan genel depolarla çalışırken, fork oluşturma yaklaşımınızı dikkatle göz önünde bulundurun. Kuruluşunuzun dışından gelen çatallar belirli riskler oluşturur.
- Çatal derlemelerine gizli bilgiler sağlamayın: Varsayılan olarak, işlem hatları çatal oluşturmak üzere yapılandırılır, ancak gizli bilgiler ve korumalı kaynaklar bu işlem hatlarındaki işlerde otomatik olarak sağlanmaz. Güvenliği korumak için bu korumayı devre dışı bırakmamak önemlidir.
- Çatal derlemelerini elle tetiklemeyi düşünün: Otomatik çatal derlemelerini kapatın ve bu katkıları elle derlemek için çekme isteği yorumlarını kullanın. Bu ayar, bir derlemeyi tetiklemeden önce kodu gözden geçirme fırsatı sunar. Daha fazla bilgi için bkz. Otomatik çatal derlemelerini kapatma.
- Çatallama yapıları için gizli bilgileri paylaşmayın: Varsayılan olarak, işlem hattınızla ilişkili gizli bilgiler, çatallardaki çekme isteği doğrulamaları için kullanılamaz. Gizli bilgileri çatal yapıların derlemelerinde kullanılabilir hale getirme seçeneğini etkinleştirmeyin. Bu ayarın nasıl bulunup doğrulanacağı talimatları için bkz. Çatallardan yapılan katkılar.
- Çatal derlemelerini elle tetiklemeyi düşünün: Otomatik çatal derlemelerini kapatın ve bu katkıları elle derlemek için çekme isteği yorumlarını kullanın. Bu ayar, bir derlemeyi tetiklemeden önce kodu gözden geçirme fırsatı sunar. Bu işlemin nasıl yapılacağını öğrenmek için bkz. Otomatik çatal oluşturma işlemlerini kapatma.
- Fork derlemeleri için Microsoft tarafından barındırılan aracıları kullanma: Şirket içinde barındırılan aracılarda fork'lar üzerinden derleme çalıştırmaktan kaçının. Bunun yapılması, dış kuruluşların şirket ağınızdaki makinelerde dış kod yürütmesine olanak tanıyabilir. Mümkün olduğunda Microsoft tarafından barındırılan aracıları kullanın.
- Belirteç kapsamı sınırlaması için Azure Pipelines GitHub uygulamasını kullanın: GitHub üzerinde bir fork edilmiş çekme isteği oluşturduğunuzda, Azure Pipelines işlem hattının GitHub depo içeriğini değiştirememesini sağlar. Bu kısıtlama yalnızcaAzure Pipelines GitHub uygulamasını GitHub ile tümleştirmek için kullandığınızda geçerlidir.
Güvenli hizmet bağlantıları
- Hizmet bağlantılarının kapsamını en aza indirin: Hizmet bağlantılarının yalnızca gerekli kaynaklara erişimi olmalıdır. Yeni bir Azure Resource Manager hizmet bağlantısı oluşturduğunuzda her zaman belirli bir kaynak grubunu seçin. Kaynak grubunun yalnızca derleme için gerekli VM'leri veya kaynakları içerdiğinden emin olun. Hizmet bağlantılarını ayarlama yönergeleri için bkz. Azure Resource Manager hizmet bağlantısını kullanma.
- Kimlik doğrulaması için iş yükü kimlik federasyonu kullanma: Mümkün olduğunda Azure hizmet bağlantınız için hizmet sorumlusu yerine iş yükü kimlik federasyonu kullanın. İş yükü kimlik federasyonu, Azure ile Azure DevOps arasında sırları kullanmadan kimlik doğrulamasını sağlamak için endüstri standardı bir teknoloji olan Open ID Connect'i (OIDC) kullanır. Bunun nasıl yapılacağını açıklayan yönergeler için bkz. İş yükü kimlik federasyonu (otomatik) ile hizmet bağlantısı oluşturma.
- GitHub Uygulaması erişimini en aza indirin: GitHub uygulamasını Azure DevOps'a yapılandırdığınızda, yalnızca işlem hatlarını kullanarak oluşturmayı planladığınız depolara erişim verin.
- Hizmet bağlantılarını belirli dallarla kısıtlama: Hizmet bağlantınızı hangi dalların kullanabileceğini sınırlandırmak için dal denetimi denetimi kullanın. Dal denetimi denetimine sahip olmak, hizmet bağlantılarının yalnızca yetkili dallarda çalışmasını ve tüm bağlı işlem hattı kaynaklarının izin verilen dallardan derlenmesini sağlar.
Klasik işlem hatları yerine YAML işlem hatlarını kullanma
Ek güvenlik sağlamak ve yanlışlıkla yanlış yapılandırma riskini azaltmak için Klasik işlem hatları yerine YAML işlem hatlarını kullanın. Bu önlem, YAML ve hizmet bağlantıları gibi aynı kaynakları paylaşan klasik işlem hatlarından kaynaklanan bir güvenlik endişesini önler. Kuruluşunuz Klasik işlem hatlarını kullanıyorsa işlem hatlarını YAML'ye geçirin.
- YAML, kod olarak altyapının avantajlarını sunar: Adımlar ve bağımlılıklar kodda tanımlandığından YAML işlem hatlarına diğer kodlar gibi davranın. İşlem hattı yapılandırmalarında net bir görünürlük vardır ve kazara yanlış yapılandırma riskinin azalması sağlanmıştır.
- YAML işlem hatları gelişmiş güvenlik önlemleriyle birleştirilebilir: Kod incelemeleri ve çekme istekleri aracılığıyla, hatalı birleştirmeleri önlemek amacıyla çekme istekleri için bir gözden geçirme işlemi ayarlamak üzere dal ilkelerini kullanın.
-
Kaynak erişim yönetimi: Kaynak sahipleri, YAML işlem hattının belirli kaynaklara erişip erişemeyeceğini denetler. Bu güvenlik özelliği, başka bir depo çalmak gibi saldırıları önler. Her bir boru hattı çalıştırması için erişim denetimi sağlamak amacıyla Onaylar ve denetimler'i kullanın.
- Korumalı dal denetimi: Belirli dallar için el ile kod gözden geçirme işlemleriniz varsa, bu korumayı işlem hatlarına genişletebilirsiniz. Bir kaynağın korumalı dal denetimi, işlem hatlarının yetkisiz dallarda otomatik olarak çalışmasını engeller.
- El ile onay denetimi: İşlem hattı isteklerinin korumalı kaynak kullanmasını, belirtilen kullanıcılar veya gruplar tarafından el ile onaylanana kadar engellemek için el ile onay denetimi kullanın.
- İş saatleri denetimi: İşlem hattı dağıtımının belirtilen gün ve saat penceresinde başladığından emin olmak için bu denetimi kullanın.
- Klasik işlem hatları oluşturmayı devre dışı bırakma: Klasik derleme işlem hatlarının ve klasik yayın işlem hatlarının oluşturulmasını bağımsız olarak devre dışı bırakın. Her ikisi de devre dışı bırakıldığında, kullanıcı arabirimi veya REST API aracılığıyla klasik derleme işlem hattı, klasik yayın işlem hattı, görev grupları veya dağıtım grupları oluşturulamaz. Daha fazla bilgi için bkz. Klasik işlem hatlarının oluşturulmasını devre dışı bırakma.
Güvenli aracılar
Kapsayıcıları güvence altına almak için, birimleri salt okunur olarak işaretleyin, kaynak sınırları belirleyin, güvenilir görüntüler kullanın, güvenlik açıklarını tarayın ve güvenlik ilkelerini uygulayın.
- Kendi barındırdığı aracılar yerine Microsoft tarafından barındırılan aracıları kullanın: Microsoft tarafından barındırılan aracılar, bir işlem hattının her çalıştırması için izole edilmiş ve temiz bir sanal makine sunar. Şirket içinde barındırılan aracılar yerine Microsoft tarafından barındırılan aracıları kullanın. Daha fazla bilgi için bkz. Microsoft tarafından barındırılan aracılar.
- Her proje için ayrı aracılar: Yanal hareketi azaltmak ve projeler arasında çapraz kontaminasyonu önlemek için, her biri belirli bir projeye ayrılmış ayrı aracı havuzları koruyun.
- Aracıları çalıştırmak için düşük ayrıcalıklı hesaplar kullanın: Sistem güvenliğini geliştirmek için şirket içinde barındırılan aracıları çalıştırmak için en düşük ayrıcalıklı hesabı kullanın. Örneğin, makine hesabınızı veya yönetilen hizmet kimliğini kullanmayı göz önünde bulundurun. Azure DevOps kaynaklarına doğrudan erişimi olan bir kimlik altında aracı çalıştırmayın.
-
Üretim yapıtlarını ve hassas aracı havuzlarını yalıtın: Güvenlik sorunlarını önlemek için farklı aracı havuzları kullanın.
- Üretim yapıtları için ayrı bir aracı havuzu kullanın: Üretim yapıtlarını ayrı bir aracı havuzu kullanarak yalıtarak üretim dışı dallardan yapılan yanlışlıkla dağıtımları önleyin.
- Hassas havuzları segmente alın: Hassas ve duyarsız iş yükleri için ayrı havuzlar oluşturun. Yalnızca uygun havuzla ilişkili derleme tanımlarında kimlik bilgilerine izin verin.
- Şirket içinde barındırılan aracılar için kısıtlayıcı güvenlik duvarlarını yapılandırma: Güvenlik duvarlarını mümkün olduğunca kısıtlayıcı olacak şekilde ayarlarken, aracıların çalışmasına izin verir, güvenliği ve kullanılabilirliği dengeler.
- Şirket içinde barındırılan aracı havuzlarını düzenli olarak güncelleştirin: Güvenlik açığı bulunan kodun çalışmadığından emin olmak için şirket içinde barındırılan aracılarınızı düzenli güncelleştirmelerle güncel tutun ve bu da kötüye kullanım riskini azaltır.
Değişkenleri ve parametreleri güvenli bir şekilde kullanma
En iyi yöntemleri izleyerek gizli bilgileri ayarlamak suretiyle iş akışlarınızda değişkenleri ve parametreleri güvenli bir şekilde kullanın. En iyi uygulamalar arasında gizli kullanımını kısıtlama, kuyruk süresi değişkenlerini kullanma ve işlem hattınızı tehditler ve güvenlik açıklarından korumak için kabuk görevi argüman doğrulamasını etkinleştirme bulunur.
- Gizli dizilere erişimi kısıtlama: İşlem hatlarında görünmeyen gizli dizileri veya anahtarları kaldırın. İş yükü kimlik federasyonu gibi gizli olmayan kimlik doğrulama yöntemlerine geçin veya kullanıcı arabiriminde gizli dizileri, bir değişken grubunu veya Azure Key Vault'tan alınan bir değişken grubunu ayarlayın.
- Kabuk parametresi doğrulamasını etkinleştir: Kabuk görevleri bağımsız değişkenlerini etkinleştir parametre doğrulama ayarı etkinleştirildiğinde, noktalı virgül, tırnak işareti ve ayraç gibi karakterler için bir denetim eklenir. Kuruluş veya proje düzeyinde Kabuk görevleri için bağımsız değişkenler parametre doğrulamasını etkinleştirmek üzere Ayarlar>İşlem Hatları>Ayarlar'ın altında etkinleştirin.
- Kuyruk zamanında ayarlanabilen değişkenleri sınırla: Kuruluş ayarları İşlem Hatları> kuyruk zamanında ayarlanabilen ayar sınırı değişkenlerini etkinleştirerek kullanıcıların kuyruk zamanında yeni değişkenler> engelleyin.
-
Değişkenler yerine parametreleri kullanın: Değişkenlerden farklı olarak, çalışan bir işlem hattı işlem hattı parametrelerini değiştiremez. Parametreler ve
numbergibistringveri 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. - Şablonlardan gizli dizilere başvuru: Gizli dizi parametrelerine sahip satır içi betikleri doğrudan işlem hattı YAML'nize eklemek yerine şablonları kullanarak hassas bilgileri ana işlem hattından uzağa soyutlayın. Bu yaklaşımı uygulamak için betiğiniz için ayrı bir YAML dosyası oluşturun ve ardından bu betiği ayrı, güvenli bir depoda depolayın. Daha sonra şablona referans verebilir ve YAML'nizde parametre olarak bir gizli değişkeni geçirebilirsiniz. Güvenli değişken Azure Key Vault'tan, değişken grubundan veya işlem hattı kullanıcı arabiriminden gelmelidir. Daha fazla bilgi için bkz. Şablonları kullanma.
-
Dal ilkeleri ve değişken grubu izinleri ile gizli dizileri sınırlayın: Gizli dizilerin dala bağlı olduğundan emin olmak için değişken grup izinlerinin, koşullu iş eklemenin ve dal ilkelerinin bir bileşimini
mainkullanabilirsiniz. Daha fazla bilgi için bkz. Sırları koruma. -
Ayar değişkenlerini sınırlamak için setvariable kullanın: İşlem hattı yazarlarının işlem hattında ayarlamasına izin verilen değişkenleri yapılandırmak için özniteliğini kullanın
settableVariables. İşlem hattı yazarları, bu ayar olmadansetvariablegünlük komutunu kullanarak sınırsız sayıda yeni değişken bildirebilir. Boş bir listewith settableVariablesbelirttiğinizde, tüm değişken ayarına izin verilmez. Daha fazla bilgi için YAML Şemasındaki özniteliğine bakınsettableVariables.
Bir gizli diziyi korumanın en iyi yöntemi, ilk etapta gizli dizi olmamasıdır. Gizli bilgileri mümkün olduğunda kullanmaktan kaçının, bunları asla YAML dosyalarında depolamayın ve güvenliği sağlamak için günlüğe kaydedilmediklerinden veya yazdırılmadıklarından emin olun.
- Mümkün olduğunda gizli dizi kullanmaktan kaçının: İş yükü kimlik federasyonu veya yönetilen kimlik ile hizmet bağlantısı gibi bir görevi gerçekleştirmek için işlem hattınızın gizli dizi kullanmaktan farklı bir yöntem kullanıp kullanamadığını denetleyin. Yönetilen kimlikler, uygulamalarınızın ve hizmetlerinizin açık kimlik bilgilerine gerek kalmadan Azure'da kimlik doğrulamasına olanak tanır. Daha fazla bilgi için bkz. Hizmet sorumlularını ve yönetilen kimlikleri kullanma. GIZLI dizileri YAML'ye koymayın: Azure Pipelines .yml dosyasında hassas değerleri hiçbir zaman düz metin olarak depolamayın .
- Gizli dizileri günlüğe kaydetmeyin veya yazdırmayın: Gizli dizileri konsolda yankılamaktan, komut satırı parametrelerinde kullanmaktan veya dosyaları günlüğe kaydetmekten kaçının. Azure Pipelines, mümkün olan her yerde günlüklerden gizli bilgileri silmeye çalışır, ancak gizli bilgilerin açığa çıkabileceği her yolu yakalayamaz.
- Gizli diziler olarak JSON gibi yapılandırılmış verileri kullanmayın: Her hassas değer için tek tek gizli diziler oluşturun. Bu yaklaşım, redaksiyon doğruluğunun daha iyi olmasını sağlar ve hassas verileri yanlışlıkla ortaya çıkarma riskini en aza indirir.
Gizli bilgileri denetleme ve yenileme
İş hatlarınızın güvenliğini sağlamak için görevlerde ve günlüklerde gizli bilgilerin işlenmesini düzenli olarak denetleyin, gereksiz gizli bilgileri gözden geçirip kaldırın ve güvenlik risklerini en aza indirmek için gizli bilgilerin yenilenmesini sağlayın.
- Görevlerde ve günlüklerde gizli bilgilerin yönetimini denetleme: Gizli bilgilerin konaklara gönderilmediğinden veya günlüklere yazdırılmadığından emin olmak için görevleri kontrol eder. Herhangi bir hata günlüğü dahil hiçbir günlük dosyasında gizli bilgi bulunmadığını doğrulayın.
- Kayıtlı gizli dizileri gözden geçirin: İşlem hattınızdaki gizli dizilerin hala gerekli olduğunu onaylayın ve dağınıklığı ve olası güvenlik risklerini azaltmak için artık gerekli olmayanları kaldırın.
- Gizli bilgileri döndürme: Gizliliği tehlikeye girmiş bir bilgiden yararlanma süresini en aza indirmek için gizli bilgileri düzenli olarak güncelleyin.
Kötü amaçlı kod yürütmeyi engelleme
İşlem hattınızda yalnızca test edilmiş ve temizlenmiş kodun çalıştığından emin olmak için sık karşılaşılan sorunlar için işlem hatlarınızı düzenli olarak gözden geçirin.
- Kod tarama: Kabuk komutu eklemesini önlemek için bağımsız değişkenlerdeki özel karakterlerin kaçışı. Kod taramayı otomatikleştirmek için Azure DevOps için GitHub Gelişmiş Güvenlik'i kullanabilirsiniz.
- Girişleri doğrulama ve parametreleri kullanma: İstenmeyen davranışı önlemek için giriş parametrelerini ve bağımsız değişkenlerini doğrulayın. SQL eklemesini önlemek için betiklerde parametreli sorgular kullanın. Çalışma zamanı parametreleri , Bağımsız Değişken Ekleme gibi değişkenlerle ilgili güvenlik sorunlarını önlemeye yardımcı olur.
-
Betiklerde PATH kullanmayın: Aracının
PATHayarına güvenmek tehlikelidir çünkü önceki bir betik veya araç tarafından değiştirilebilir. Bunun yerine her zaman tam nitelikli yol kullanın. - Kullanılabilir görevleri denetleme: İşlem hattında yürütülen kod üzerinde daha fazla denetim sağlayan Market'ten görev yükleme ve çalıştırma özelliğini devre dışı bırakın.
Güvenli kapsayıcılar
Yapılandırma değişiklikleri, tarama ve ilkeler aracılığıyla kapsayıcıların güvenliğini sağlamayı öğrenin.
-
Birimleri salt okunur olarak işaretleme: Kapsayıcılar, host ajanı ile çalışmak için gereken görevler, araçlar ve dış bileşenler için sistem tarafından sağlanan hacim bağlamalarını içerir.
externals,tasksvetoolsöğelerini ek güvenlik için salt okunur olarak ayarlayın. - Kapsayıcıya özgü kaynak sınırlarını ayarlama: Kapsayıcıların aşırı kaynak kullanmasını önlemek için CPU ve bellek sınırlarını ayarlayın; bu durum hizmet reddine veya güvenlik açıklarına yol açabilir.
-
Güvenilen görüntüleri kullanma: Azure Container Registry veya Docker Hub gibi saygın kaynaklardan resmi ve doğrulanmış görüntüleri kullanın. tutarlılığı ve güvenilirliği korumak için her zaman
latestetiketine güvenmek yerine belirli bir sürüm veya etiket belirtin. Temel görüntüleri en son güvenlik düzeltme eklerini ve hata düzeltmelerini içerecek şekilde düzenli olarak güncelleştirin. - Kapsayıcıları güvenlik açıklarına karşı tarayın ve çalışma zamanı tehdit koruması uygulayın: Güvenlik risklerini izlemek ve algılamak için Bulut için Microsoft Defender gibi araçları kullanın. Ayrıca Azure Container Registry, dağıtımdan önce kapsayıcı görüntülerinin güvenli olduğundan emin olmak için tümleşik güvenlik açığı taraması sunar. Ayrıca, ek güvenlik denetimleri için Azure DevOps uzantıları aracılığıyla üçüncü taraf tarama araçlarını tümleştirebilirsiniz.
- Ayrıcalık yükseltmesini önlemek ve kapsayıcıların en az sayıda ayrıcalıkla çalıştığından emin olmak için güvenlik ilkeleri uygulayın: Örneğin, Azure Kubernetes Service (AKS), rol tabanlı erişim denetimi ve Pod Güvenlik Erişimi kapsayıcı ayrıcalıklarını kısıtlayan ilkeleri zorunlu kılmanıza, kök olmayan yürütmeyi güvence altına almanıza ve kritik kaynaklara erişimi sınırlamanıza olanak sağlar.
- Ağ İlkelerini kullanma: Ağ İlkeleri , kapsayıcılar arasındaki iletişimi kısıtlamak için kullanılabilir ve ağınızdaki hassas kaynaklara yalnızca yetkili kapsayıcıların erişebilmesini sağlar. AKS için Azure İlkesi, yalnızca güvenilen kapsayıcı görüntülerinin dağıtıldığından emin olmak gibi kapsayıcı güvenliği için en iyi uygulamaları zorlamak amacıyla uygulanabilir.
En iyi yöntemleri uygulamak için şablonları kullanma
En az şablonla başlayın ve uzantıları aşamalı olarak zorunlu kılın. Bu yaklaşım, güvenlik uygulamalarını uygularken tüm işlem hatlarını kapsayan merkezi bir başlangıç noktanız olmasını sağlar.
- Extends şablonlarını kullanma: Genişletilen şablonlar dış yapıyı tanımlar ve hedeflenen özelleştirmeler için belirli noktalar sunar. Extends şablonlarının kullanılması , kötü amaçlı kodun bir işlem hattına sızmasını engelleyebilir.
- Erişimi şu adımlarla kısıtlayın: Paketleri indirme gibi adımların konak yerine bir kapsayıcıda çalıştırılmasını sağlayarak ağ erişimini sınırlayın. Adımlar kapsayıcıda çalıştırıldığında, kötü bir aktörün aracı yapılandırmasını değiştirmesini veya daha sonra yürütülmesi için kötü amaçlı kod bırakmasını engellersiniz.