Aracılığıyla paylaş


Sık sorulan sorular | Gök mavisi

Uyarı

31 Aralık 2022'den itibaren Microsoft Güvenlik Kodu Analizi (MSCA) uzantısı kullanımdan kaldırılmıştır. MSCA, Microsoft Security DevOps Azure DevOps uzantısıyla değiştirilir. Uzantıyı yüklemek ve yapılandırmak için yapılandırma yönergeleri izleyin.

Genel SSS

Uzantıyı bir Azure DevOps örneği yerine Azure DevOps Server (eski adıyla Visual Studio Team Foundation Server) örneğime yükleyebilir miyim?

Hayır. Uzantı, Azure DevOps Server (eski adıyla Visual Studio Team Foundation Server) için indirilip yüklenemez.

Derlememle Microsoft Güvenlik Kodu Analizi çalıştırmam gerekiyor mu?

Belki. Analiz aracının türüne bağlıdır. Kaynak kod, gereken tek şey olabilir veya derleme çıkışı gerekli olabilir.

Örneğin, Kimlik Bilgisi Tarayıcısı (CredScan), kod deposunun klasör yapısındaki dosyaları analiz eder. Bu analiz nedeniyle, sonuçları almak için CredScan ve Publish Security Analysis Logs derleme görevlerini tek başına bir derlemede çalıştırabilirsiniz.

Derleme sonrası yapıtları analiz eden BinSkim gibi diğer araçlar için önce derleme gereklidir.

Sonuçlar bulunduğunda derlememi bozabilir miyim?

Evet. Herhangi bir araç günlük dosyasında bir sorun veya sorun bildirdiğinde derleme sonu ekleyebilirsiniz. Çözümleme Sonrası derleme görevini ekleyin ve derlemeyi kesmek istediğiniz herhangi bir aracın onay kutusunu seçin.

Çözümleme Sonrası görevinin kullanıcı arabiriminde, herhangi bir araç yalnızca hataları veya hem hataları hem de uyarıları bildirdiğinde derlemeyi kesmeyi seçebilirsiniz.

Azure DevOps'taki komut satırı bağımsız değişkenleri tek başına masaüstü araçlarındaki bu bağımsız değişkenlerden nasıl farklıdır?

Azure DevOps derleme görevleri genellikle güvenlik araçlarının komut satırı bağımsız değişkenleri etrafında doğrudan sarmalayıcılardır. Normalde bir komut satırı aracına geçirdiğiniz her şeyi derleme görevine bağımsız değişken olarak geçirebilirsiniz.

Fark edilebilir farklar:

  • Araçlar, $(Build.SourcesDirectory) aracının kaynak klasöründen veya %BUILD_SOURCESDIRECTORY%. C:\agent_work\1\s örnektir.
  • Bağımsız değişkenlerdeki yollar, daha önce listelenen kaynak dizinin köküne göre olabilir. Yollar da mutlak olabilir. Azure DevOps Derleme Değişkenlerini kullanarak veya yerel kaynakların bilinen dağıtım konumlarına sahip bir şirket içi aracı çalıştırarak mutlak yollar elde edersiniz.
  • Araçlar otomatik olarak bir çıkış dosyası yolu veya klasörü sağlar. Derleme görevi için bir çıkış konumu sağlarsanız, bu konum, derleme aracısı üzerindeki günlüklerin iyi bilinen konumuna giden bir yolla değiştirilir
  • Bazı araçlar için diğer bazı komut satırı bağımsız değişkenleri değiştirilir. Bir örnek, GUI'nin başlatılmamasını sağlayan seçeneklerin eklenmesi veya kaldırılmasıdır.

Azure DevOps Derlemesindeki birden çok depoda Kimlik Bilgisi Tarayıcısı gibi bir derleme görevi çalıştırabilir miyim?

Hayır. Güvenli geliştirme araçlarının tek bir işlem hattında birden çok depoda çalıştırılması desteklenmez.

Belirttiğim çıkış dosyası oluşturulmuyor veya belirttiğim çıkış dosyasını bulamıyorum

Derleme görevleri bazı kullanıcı girişlerini filtreler. Bu soru için özel olarak, oluşturulan çıkış dosyasının konumunu derleme aracısı üzerinde ortak bir konum olacak şekilde güncelleştirir. Bu konum hakkında daha fazla bilgi için aşağıdaki sorulara bakın.

Araçlar tarafından oluşturulan çıkış dosyaları nereye kaydedilir?

Derleme görevleri, derleme aracısı üzerindeki şu iyi bilinen konuma otomatik olarak çıkış yolları ekler: $(Agent.BuildDirectory)_sdt\logs. Bu konumu standartlaştırdığımız için kod analizi günlüklerini üreten veya kullanan tüm ekiplerin çıkışa erişimi olur.

Bu görevleri barındırılan bir derleme aracısında çalıştırmak için bir derlemeyi kuyruğa alabilir miyim?

Evet. Uzantıdaki tüm görevler ve araçlar barındırılan derleme aracısında yürütülebilir.

Uyarı

Kötü Amaçlı Yazılımdan Koruma Tarayıcısı derleme görevi, Windows Defender'ın etkin olduğu bir derleme aracısı gerektirir. Barındırılan Visual Studio 2017 ve üzeri böyle bir aracı sağlar. Derleme görevi Visual Studio 2015 barındırılan aracısında çalışmaz.

İmzalar bu aracılarda güncelleştirilemese de, imzalar her zaman üç saatten kısa olmalıdır.

Bu derleme görevlerini derleme işlem hattı yerine yayın işlem hattının bir parçası olarak çalıştırabilir miyim?

Çoğu durumda, evet.

Ancak Azure DevOps, bu görevler yapıt yayımladığında yayın işlem hatlarında görev çalıştırmayı desteklemez. Bu destek eksikliği, Güvenlik Çözümleme Günlüklerini Yayımla görevinin bir yayın işlem hattında başarıyla çalışmasını engeller. Bunun yerine görev açıklayıcı bir hata iletisiyle başarısız oluyor.

Derleme görevleri araçları nereden indirir?

Derleme görevleri, Azure DevOps Paket Yönetimi akışıaraçların NuGet paketlerini indirebilir. Derleme görevleri, derleme aracısı üzerine önceden yüklenmiş olması gereken Node Paket Yöneticisi'ni de kullanabilir. Bu tür bir yükleme örneği, npm install tslint komutudur.

Uzantıyı yüklemenin Azure DevOps kuruluşumda ne gibi bir etkisi var?

Yüklemelerinin ardından, uzantı tarafından sağlanan güvenlik derleme görevleri kuruluşunuzdaki tüm kullanıcılar tarafından kullanılabilir hale gelir. Bir Azure Pipeline oluşturduğunuzda veya düzenlediğinizde, bu görevler derleme görevi koleksiyonu listesinden kullanılabilir. Aksi takdirde uzantının Azure DevOps kuruluşunuza yüklenmesinin hiçbir etkisi olmaz. Yükleme hiçbir hesap ayarlarını, proje ayarlarını veya işlem hatlarını değiştirmez.

Uzantıyı yüklemek mevcut Azure Pipelines'ımı değiştiriyor mu?

Hayır. Uzantıyı yüklemek, güvenlik derleme görevlerinin işlem hatlarınıza eklenmesini sağlar. Araçların derleme sürecinizle çalışabilmesi için derleme tanımlarını eklemeniz veya güncelleştirmeniz gerekir.

Göreve özgü SSS

Derleme görevlerine özgü sorular bu bölümde listelenmiştir.

Kimlik Bilgisi Tarayıcısı

Yaygın gizleme senaryoları ve örnekleri nelerdir?

Burada en yaygın iki gizleme senaryosunun ayrıntıları yer alır.

Belirtilen yol içinde belirli bir gizli dizinin tüm oluşumlarını gizleme

Aşağıdaki örnekte gösterildiği gibi CredScan çıkış dosyasındaki gizli dizinin karma anahtarı gereklidir.

{
    "tool": "Credential Scanner",
    "suppressions": [
    {
        "hash": "CLgYxl2FcQE8XZgha9/UbKLTkJkUh3Vakkxh2CAdhtY=",
        "_justification": "Secret used by MSDN sample, it is fake."
    }
  ]
}

Uyarı

Karma anahtar, eşleşen değerin veya dosya içeriğinin bir bölümü tarafından oluşturulur. Herhangi bir kaynak kodu düzeltmesi karma anahtarı değiştirebilir ve gizleme kuralını devre dışı bırakabilir.

Belirtilen dosyadaki tüm gizli dizileri gizleme veya gizli dizi dosyasının kendisini gizleme

Dosya ifadesi bir dosya adı olabilir. Tam dosya yolunun temel adı veya dosya adı da olabilir. Joker karakterler desteklenmez.

Aşağıdaki örnekler, InputPath<\src\JS\lib\angular.js >dosyasının nasıl gizleneceğini gösterir

Geçerli gizleme kuralları örnekleri:

  • <InputPath>\src\JS\lib\angular.js - belirtilen yolda dosyayı gizler
  • \src\JS\lib\angular.js
  • \JS\lib\angular.js
  • \lib\angular.js
  • angular.js - Aynı ada sahip tüm dosyaları gizler
{
    "tool": "Credential Scanner",
    "suppressions": [
    {
        "file": "\\files\\AdditonalSearcher.xml", 
        "_justification": "Additional CredScan searcher specific to my team"
    },
    {
        "file": "\\files\\unittest.pfx", 
        "_justification": "Legitimate UT certificate file with private key"
    }
  ]
}

Uyarı

Dosyaya gelecekteki tüm gizli diziler de otomatik olarak gizlenecektir.

Gizli dizileri yönetmek için önerilen yönergeler nelerdir?

Aşağıdaki kaynaklar gizli dizileri güvenli bir şekilde yönetmenize ve uygulamalarınızdan hassas bilgilere erişmenize yardımcı olur:

Daha fazla bilgi için Cloud 'da Gizli Dizileri Güvenli Bir Şekilde Yönetmeblog gönderisine bakın.

Kendi özel aramalarımı yazabilir miyim?

Kimlik Bilgisi Tarayıcısı, buildsearchers.xml dosyasında yaygın olarak tanımlanan bir dizi içerik aramacıya dayanır. Dosya, ContentSearcher nesnesini temsil eden bir XML serileştirilmiş nesneleri dizisi içerir. Program, iyi test edilmiş bir dizi arama ile dağıtılır. Ancak kendi özel aramalarınızı da uygulayabilirsiniz.

İçerik arayan aşağıdaki gibi tanımlanır:

  • Adı: Kimlik Bilgisi Tarayıcısı çıkış dosyalarında kullanılacak açıklayıcı arama aracı adı. Arayan adları için deve örneği adlandırma kuralını kullanmanızı öneririz.

  • RuleId: Arayıcının kararlı opak kimliği:

    • Kimlik Bilgisi Tarayıcısı varsayılan arama aracına CSCAN0010, CSCAN0020 veya CSCAN0030 gibi bir RuleId değeri atanır. Son basamak, arama gruplarını normal ifadeler (regex) aracılığıyla birleştirme veya bölme olasılığı için ayrılmıştır.
    • Özelleştirilmiş bir arayıcının RuleId değeri kendi ad alanına sahip olmalıdır. Örnek olarak CSCAN-<Ad Alanı>0010, CSCAN-<Ad Alanı>0020 ve CSCAN-<Ad Alanı>0030 verilebilir.
    • Tam arayan adı, RuleId değeriyle arayıcı adının birleşimidir. Örnek olarak CSCAN0010 verilebilir. KeyStoreFiles ve CSCAN0020. Base64EncodedCertificate.
  • ResourceMatchPattern: Arayıcıya karşı denetlenecek dosya uzantılarının kayıt defteri.

  • ContentSearchPatterns: Eşleşecek regex deyimlerini içeren dize dizisi. Hiçbir arama deseni tanımlanmadıysa ResourceMatchPattern değeriyle eşleşen tüm dosyalar döndürülür.

  • ContentSearchFilters: Arayıcıya özgü hatalı pozitif sonuçları filtrelemek için regex deyimlerini içeren dize dizisi.

  • MatchDetails: Arayıcının her eşleşmesi için eklenecek açıklayıcı bir ileti, azaltma yönergeleri veya her ikisi de.

  • Öneri: PREfast rapor biçimini kullanan bir eşleşmenin suggestions-field içeriği.

  • Önem Derecesi: Sorunun önem düzeyini yansıtan bir tamsayı. En yüksek önem düzeyi 1 değerine sahiptir.

    Kimlik Bilgisi Tarayıcısı kurulumuXML showing Credential Scanner setupXML showing Credential Scanner setupgösterenXML

Roslyn Çözümleyicileri

Roslyn Çözümleyicileri görevi kullanılırken sık karşılaşılan hatalar nelerdir?

Proje yanlış Microsoft.NETCore.App sürümü kullanılarak geri yüklendi

Tam hata iletisi:

"Hata: Proje, x.x.xMicrosoft.NETCore.App sürümü kullanılarak geri yüklendi, ancak geçerli ayarlarla bunun yerine sürüm y.y.y kullanılacaktı. Bu sorunu çözmek için, geri yükleme ve derleme veya yayımlama gibi sonraki işlemler için aynı ayarların kullanıldığından emin olun. Bu sorun genellikle RuntimeIdentifier özelliği derleme veya yayımlama sırasında ayarlandıysa ancak geri yükleme sırasında ayarlanmadıysa oluşabilir."

Roslyn Çözümleyicileri görevleri derlemenin bir parçası olarak çalıştığından, derleme makinesindeki kaynak ağaç derlenebilir durumda olmalıdır.

Ana derlemeniz ile Roslyn Çözümleyicileri adımları arasındaki bir adım, kaynak ağacı oluşturmayı engelleyen bir duruma getirmiş olabilir. Bu ek adım büyük olasılıkla yayımlamakdotnet.exe. Roslyn Çözümleyicileri adımından hemen önce NuGet geri yükleme işlemi gerçekleştirirken adımı yinelemeyi deneyin. Bu yinelenen adım, kaynak ağacı yeniden derlenebilir duruma döndürebilir.

csc.exe çözümleyici örneği oluşturamıyor

Tam hata iletisi:

"'csc.exe' hata kodu 1 ile çıktı -- C:\BBBB.dll'den AAAA çözümleyici örneği oluşturulamıyor: 'Microsoft.CodeAnalysis dosyası veya derlemesi yüklenemedi, Version=X.X.X.X, Culture=neutral, PublicKeyToken=31bf3856ad364e35' veya bağımlılıklarından biri. Sistem belirtilen dosyayı bulamıyor."

Derleyicinizin Roslyn Çözümleyicileri'ni desteklediğine emin olun. /version csc.exe komutu çalıştırılırken 2.6 veya üzeri bir sürüm değeri bildirilmelidir.

Bazen bir .csproj dosyası, Microsoft.Net.Compilers'ten bir pakete başvurarak derleme makinesinin Visual Studio yüklemesini geçersiz kılabilir. Derleyicinin belirli bir sürümünü kullanmayı düşünmüyorsanız, Microsoft.Net.Compilers başvurularını kaldırın. Aksi takdirde, başvuruda bulunılan paketin sürümünün de 2.6 veya üzeri olduğundan emin olun.

csc.exe /errorlog seçeneğinde belirtilen hata günlüğü yolunu almayı deneyin. Roslyn Çözümleyicileri derleme görevi için seçenek ve yol günlükte görünür. /errorlog:F:\ts-services-123_work\456\s\Some\Project\Code\Code.csproj.sarif

C# derleyici sürümü yeterince yeni değil

C# derleyicisinin en son sürümlerini almak için Microsoft.Net.Compilersadresine gidin. Yüklü sürümünüzü almak için komut isteminde csc.exe /version çalıştırın. Sürüm 2.6 veya sonraki bir Microsoft.Net.Compilers NuGet paketine başvurduğunuzdan emin olun.

MSBuild ve VSBuild günlükleri bulunamadı

Roslyn Çözümleyicileri derleme görevinin MSBuild derleme görevinden MSBuild günlüğü için Azure DevOps'yi sorgulaması gerekir. Çözümleyici görevi MSBuild görevinden hemen sonra çalıştırılırsa günlük henüz kullanılamaz. MSBuild göreviyle Roslyn Çözümleyicileri görevi arasına başka görevler yerleştirin. Diğer görevlere örnek olarak BinSkim ve Kötü Amaçlı Yazılımdan Koruma Tarayıcısı verilebilir.

Sonraki adımlar

Ek yardıma ihtiyacınız varsa Microsoft Güvenlik Kodu Analizi Desteği pazartesiden cumaya 09:00 ile 17:00 Pasifik Standart Saati arasında kullanılabilir.