Aracılığıyla paylaş


Aracıların, projelerin ve kapsayıcıların güvenliğini sağlama

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

Azure Pipelines'ın güvenliğini sağlarken paylaşılan altyapıyı, depoları, projeleri ve daha fazlasını korumayı göz önünde bulundurun.

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 . Azure Pipelines'ın güvenliğini sağlama.

Ö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 üyesi.

Paylaşılan altyapıyı koruma

Azure Pipelines'daki korumalı kaynaklar, gerçek altyapının soyutlamasıdır. Temel alınan altyapıyı korumak için bu önerileri izleyin.

Microsoft tarafından barındırılan havuzları kullanma

Microsoft tarafından barındırılan havuzlar, bir işlem hattının her çalıştırması için yalıtım ve temiz bir sanal makine sağlar. Mümkünse, şirket içinde barındırılan havuzlar yerine Microsoft tarafından barındırılan havuzları kullanın.

Her proje için ayrı aracılar

Bir aracı yalnızca bir havuzla ilişkilendirebilir. Havuzu birden çok projeyle ilişkilendirerek aracıları projeler arasında paylaşabilirsiniz. Uygulamada, birden çok proje aynı aracıyı art arda kullanabilir. Uygun maliyetli olsa da, bu yaklaşım yanal hareket risklerine neden olabilir.

Yanal hareketi azaltmak ve projeler arasında çapraz bulaşmayı ö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 kullanma

Aracıyı Azure DevOps kaynaklarına doğrudan erişimi olan bir kimlik altında çalıştırmak riskli olabilir. Bu risk, Microsoft Entra Id kullanan kuruluşlarda yaygındır.

Bu risk neden önemlidir:

  • Aracıyı Entra Id tarafından yedeklenen bir kimlik altında çalıştırırsanız, işin erişim belirtecini kullanmadan Azure DevOps API'lerine doğrudan erişebilir.
  • Bu derleme aracılarında güvenliği aşılmış bir işlem hattı çalıştıran saldırganlar, azure devops kuruluşunun tamamı üzerinde denetim sahibi olabilir.

Öneri: Ayrıcalıksız bir yerel hesap kullanarak aracıyı çalıştırın:

  • Windows aracıları: Ağ Hizmeti (NT AUTHORITY\NETWORK SERVICE), Yerel Hizmet veya Grup Tarafından Yönetilen Hizmet Hesabı (gMSA) kullanın.
  • Linux aracıları ve macOS aracıları: Ayrılmış bir kök olmayan kullanıcı hesabı oluşturun (örneğin, svc_azuredevops). Bu hesap, maksimum güvenlik için sudo veya sudoers erişimine sahip olmamalıdır.

Önemli

Azure DevOps'ta Proje Koleksiyonu Hizmet Hesapları grubu yanıltıcı olabilir. Devralma yoluyla, Proje Koleksiyonu Hizmet Hesaplarının üyeleri de Proje Koleksiyonu Yöneticilerinin üyeleridir. Bazı müşteriler, derleme aracılarının Entra ID tarafından desteklenen bir kimlik kullanarak çalıştırır ve bu kimlikler Proje Koleksiyonu Hizmet Hesaplarının bir parçası olabilir.

Yüksek ayrıcalıklı aracıların riskleri:

Kendi kendine barındırılan aracılar bazen gizli bilgilere veya üretim ortamlarına erişmek için yüksek ayrıcalıklı hesaplar altında çalışır. Saldırganlar bu derleme aracılarından birinde güvenliği aşılmış bir işlem hattı yürütürse şunları yapabilir:

  • Bu sırlara erişim ele geçirin
  • Bu hesaplar aracılığıyla erişilebilen diğer sistemlerde yatay olarak hareket etme

Aracı güvenliği için en iyi yöntemler:

  • Şirket içinde barındırılan aracıları çalıştırmak için mümkün olan en düşük ayrıcalıklı hesabı kullanın.
  • Makine hesabınızı veya yönetilen hizmet kimliğini kullanmayı göz önünde bulundurun.
  • Azure Pipelines'ın gizli bilgilere ve ortamlara erişimi yönetmesini sağlayın.

Hizmet bağlantılarının kapsamını en aza indirme

Hizmet bağlantıları yalnızca gerekli kaynaklara erişmelidir.

Kimlik doğrulama önerileri:

  • 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 gizli dizilere güvenmeden kimlik doğrulamasını kolaylaştırmak için endüstri standardı bir teknoloji olan Open ID Connect'i (OIDC) kullanır.

Kapsam önerileri:

  • Azure hizmet bağlantınızın kapsamını yalnızca gerekli kaynaklara erişecek şekilde belirleyin.
  • Azure aboneliğinin tümü için katkıda bulunanlara yönelik geniş haklar vermekten kaçının.
  • Yeni bir Azure Resource Manager hizmet bağlantısı oluştururken 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.
  • GitHub uygulamasını yapılandırırken yalnızca derlemek istediğiniz depolara erişim verin.

Projeleri koruma

Tek tek kaynakların ötesinde, Azure DevOps'ta kaynak gruplarını göz önünde bulundurmak çok önemlidir. Kaynaklar ekip projelerine göre düzenlenir ve proje ayarlarına ve kapsama göre işlem hattınızın nelere erişebileceğini anlamanız gerekir.

İşlem hattınızdaki her iş, açık kaynakları okuma izinlerine sahip bir erişim belirteci alır. Bazı durumlarda işlem hatları bu kaynakları da güncelleştirebilir. Bu izin modeli, kullanıcı hesabınızın belirli bir kaynağa doğrudan erişimi olmasa da işlem hattınızda çalışan betiklerin ve görevlerin yine de kaynağa erişebileceği anlamına gelir. Ayrıca Azure DevOps'un güvenlik modeli, kuruluştaki diğer projelerden bu kaynaklara erişim sağlar. İşlem hattı erişimini belirli kaynaklara kısıtlamaya karar verirseniz, bu karar bir projedeki tüm işlem hatları için geçerlidir. Belirli işlem hatlarına açık kaynaklara seçmeli erişim verilemiyor.

Ayrı projeler

Açık kaynakların yapısı göz önünde bulundurulduğunda, her ürünü ve ekibi ayrı projelerde yönetmeyi göz önünde bulundurun. Bunu yaparak, bir ürünün işlem hatlarının yanlışlıkla başka bir üründen açık kaynaklara erişmesini engeller ve böylece yanal maruz kalma en aza indirilir. Ancak birden çok ekip veya ürün bir projeyi paylaştığında kaynaklarının ayrıntılı olarak yalıtılması zorlaşır.

Azure DevOps kuruluşunuz Ağustos 2019'dan önce oluşturulduysa, çalıştırmalar kuruluşunuzun tüm projelerine açık kaynaklara erişmeye devam edebilir. Kuruluş yöneticiniz, Azure Pipelines'da işlem hatları için proje yalıtımını etkinleştiren kritik bir güvenlik ayarını gözden geçirmelidir.

Bu ayarı Kuruluş ayarları>İşlem Hattı>Ayarları'nda veya doğrudan: adresinde bulabilirsiniz. https://dev.azure.com/Organization_Name/_settings/pipelinessettings

İş yetkilendirme kapsamı kullanıcı arabiriminin ekran görüntüsü

Depoları koruma

Sürüm denetimi depolarında kaynak kodunu, işlem hattının YAML dosyasını ve gerekli betikleri ve araçları depolayabilirsiniz. Kod ve işlem hattında güvenli değişiklikler yapmak için izinleri ve dal ilkelerini uygulamak çok önemlidir. Ayrıca, depolara işlem hattı izinleri ve denetimleri eklemeyi de göz önünde bulundurun.

Ayrıca, depolarınız için varsayılan erişim denetimi ayarlarını gözden geçirin.

Git'in tasarımının dal düzeyinde korumanın sınırlamaları olduğu anlamına geldiğini unutmayın. Depoya anında iletme erişimi olan kullanıcılar genellikle yeni dallar oluşturabilir. GitHub açık kaynak projeleriyle çalışıyorsanız GitHub hesabı olan herkes deponuzun çatalını oluşturabilir ve katkıda bulunabilir. İşlem hatları bir depoyla ilişkilendirildiğinden (belirli dallarla ilişkilendirilmediğinden), kod ve YAML dosyalarını güvenilmeyen olarak ele almak önemlidir.

Çatallar

GitHub'dan genel depolarla çalışırken fork işlemlerine yaklaşımınızı dikkatle göz önünde bulundurun. Kuruluşunuzun dışından gelen çatallar belirli riskler oluşturur. Ürünlerinizi güvenilmeyen olası katkıda bulunan kodlardan korumak için bu önerileri izleyin.

Not

Bu öneriler öncelikle GitHub'dan genel depolar oluşturmak için geçerlidir.

Çatal derlemelerine gizli dizi sağlama

Varsayılan olarak, işlem hatlarınız çatalar oluşturur, ancak gizli bilgileri ve korumalı kaynakları bu işlem hatlarındaki işlere otomatik olarak sunmaz. Güvenliği korumak için bu korumayı devre dışı bırakma.

Fork derleme koruma arayüzünün ekran görüntüsü.

Not

Gizli dizilere erişmek için çatal derlemelerini etkinleştirdiğinizde Azure Pipelines varsayılan olarak kullanılan erişim belirtecini kısıtlar. Bu belirtecin açık kaynaklara erişimi normal erişim belirteciyle karşılaştırıldığında sınırlıdır. Çatal derlemelerine normal derlemelerle aynı izinleri vermek için, Çatal derlemelerinin normal derlemelerle aynı izinlere sahip olmasını sağlayın ayarını etkinleştirin.

Çatal derlemelerini el ile tetikleme göz önünde bulundurun

Otomatik çatal derlemelerini kapatın ve bunun yerine bu katkıları el ile oluşturmanın bir yolu olarak çekme isteği açıklamalarını kullanın. Bu ayar, bir derlemeyi tetiklemeden önce kodu gözden geçirme fırsatı sunar.

Çatal derlemeleri için Microsoft tarafından barındırılan aracıları kullanma

Şirket içinde barındırılan aracılarda çatallardan derleme çalıştırmaktan kaçının. Şirket içinde barındırılan aracılar kullanıyorsanız, dış kuruluşlar şirket ağınızdaki makinelerde dış kod çalıştırabilir. Mümkün olduğunda Microsoft tarafından barındırılan aracıları kullanın. Şirket içinde barındırılan aracılar için ağ yalıtımı uygulayın ve aracıların durumları arasında kalıcı olmadığından emin olun.

Kod değişikliklerini gözden geçirme

çatallı çekme isteğinde işlem hattınızı çalıştırmadan önce önerilen değişiklikleri dikkatle gözden geçirin ve rahatça çalıştırdığınızdan emin olun.

Çalıştırdığınız YAML işlem hattının sürümü, çekme isteğinden alınan sürümdür. YAML kodunda ve komut satırı betikleri veya birim testleri gibi işlem hattı çalıştırıldığında çalışan kodda yapılan değişikliklere özellikle dikkat edin.

GitHub belirteç kapsamı sınırlaması

GitHub çatallı çekme isteği oluşturduğunuzda Azure Pipelines, işlem hattının GitHub depo içeriğini değiştiremesini sağlar. Bu kısıtlama yalnızcaAzure Pipelines GitHub uygulamasını GitHub ile tümleştirmek için kullandığınızda geçerlidir. OAuth uygulaması gibi diğer GitHub tümleştirme biçimlerini kullanıyorsanız kısıtlama uygulanmaz.

Kullanıcı dalları

Kuruluşunuzdaki doğru izinlere sahip kullanıcılar yeni veya güncelleştirilmiş kod içeren yeni dallar oluşturabilir. Bu kod, korumalı dallarınızla aynı işlem hattı üzerinden çalıştırılabilir. Yeni daldaki YAML dosyası değiştirilirse, güncelleştirilmiş YAML işlem hattını çalıştırır. Bu tasarım büyük esneklik ve self servis sunsa da, tüm değişiklikler (kötü amaçlı olarak yapılıp yapılmadığı) güvenli değildir.

İşlem hattınız kaynak kodu kullanıyorsa veya Azure Repos'ta tanımlanmışsa Azure Repos izinleri modelini tam olarak anlamanız gerekir. Özellikle, depo düzeyinde Dal Oluşturma iznine sahip bir kullanıcı, katkıda bulunma izni olmasa bile depoya kod ekleyebilir.

Diğer güvenlik konuları

İşlem hatlarının güvenliğini sağlarken aşağıdaki güvenlik özelliklerini göz önünde bulundurun.

PATH'i kullan

Aracının PATH ayarına güvenmek tehlikelidir. Önceki bir betik veya araç potansiyel olarak değiştirdiğinden, bunu düşündüğünüz yere işaret etmeyebilir. Güvenlik açısından kritik betikler ve ikili dosyalar için her zaman programın tam yolunu kullanın.

Günlük gizli dizileri

Azure Pipelines, olabildiğince günlüklerden gizli bilgileri kaldırmaya çalışır. Bu filtreleme en iyi çaba temelindedir ve gizli dizilerin sızdırılabileceği her yolu yakalayamaz. Gizli dizileri konsolda yankılamaktan, komut satırı parametrelerinde kullanmaktan veya dosyalara günlüğe kaydetmekten kaçının.

Kapsayıcıları kilitleme

Kapsayıcılar, konak aracısı ile iletişim kurmak için gereken görevlerde, çalışma alanında ve dış bileşenlerde sistem tarafından sağlanan birkaç birim bağlama eşlemesine sahiptir. Bu birimlerin herhangi birini veya tümünü yalnızca okunabilir olarak işaretleyebilirsiniz.

resources:
  containers:
  - container: example
    image: ubuntu:22.04
    mountReadOnly:
      externals: true
      tasks: true
      tools: true
      work: false  # the default; shown here for completeness

Genellikle, çoğu kişi ilk üç dizini salt okunur olarak ayarlar ve work'yi okuma-yazma olarak bırakır. Belirli bir iş veya adımda dizine work yazmıyorsanız, salt okunur da yapabilirsiniz work . Ancak işlem hattı görevleriniz kendi kendine değişiklik içeriyorsa, okuma-yazma olarak tutmanız tasks gerekebilir.

Kullanılabilir görevleri denetleme

Market'ten görevleri yükleme ve çalıştırma özelliğini devre dışı bırakabilirsiniz. Bu yaklaşım, işlem hattında çalışan kod üzerinde daha fazla denetim sağlar. Ayrıca, aracı üzerinde özel bir eylem olan Kullanıma Alma görevi dışındaki tüm kutu içi görevleri devre dışı bırakabilirsiniz. Çoğu durumda kutu içi görevleri devre dışı bırakmayın.

Doğrudan kullanarak tfx yüklediğiniz görevler her zaman kullanılabilir. Bu özelliklerin ikisini de etkinleştirdiğinizde , yalnızca bu görevler kullanılabilir.

Denetim hizmetini kullanma

Denetleme hizmeti birçok işlem hattı öğesini kaydeder. Kötü amaçlı bir değişikliğin geçmişte kalmadığından emin olmak için denetim günlüğünü düzenli aralıklarla gözden geçirin. Başlamak için https://dev.azure.com/ORG-NAME/_settings/audit adresini ziyaret edin.

Sonraki adımlar