Aracılığıyla paylaş


| sık sorulan sorular Azure

Not

31 Aralık 2022'den itibaren Microsoft Güvenlik Kodu Analizi (MSCA) uzantısı kullanımdan kaldırıldı. 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 bölümündeki 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ı içindeki 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. Analiz Sonrası derleme görevini ekleyin ve derlemeyi bozmak istediğiniz herhangi bir aracın onay kutusunu seçin.

Analiz 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ında 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 çevresinde 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 farklılıklar:

  • Araçlar , $(Build.SourcesDirectory) aracısının kaynak klasöründen veya %BUILD_SOURCESDIRECTORY% öğesinden çalıştırılır. 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 yol ile 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ılmadığından emin olan seçeneklerin eklenmesi veya kaldırılmasıdır.

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

Hayır. Tek bir işlem hattında birden çok depoda güvenli geliştirme araçlarının ç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ının ortak konumu 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ının bu iyi bilinen konumuna 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.

Not

Kötü Amaçlı Yazılımdan Koruma Tarayıcısı derleme görevi, Windows Defender etkin 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 bir yayın işlem hattının 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örevlerin çalıştırılmasını 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ışından araçların NuGet paketlerini indirebilir. Derleme görevleri, derleme aracısı üzerinde önceden yüklenmiş olması gereken Node Paket Yöneticisi'ni de kullanabilir. Bu tür bir yüklemeye örnek olarak npm install tslint komutu verilmiştir.

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ştirir mi?

Hayır. Uzantının yüklenmesi, güvenlik derleme görevlerinin işlem hatlarınıza ek olarak kullanılabilir olmasını 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?

En yaygın iki gizleme senaryosunun ayrıntıları aşağıdadır.

Belirtilen yol içindeki 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 bir dosyadaki tüm gizli dizileri gizleme veya gizli dizi dosyasının kendisini gizleme

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

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

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?

Kendi özel aramalarımı yazabilir miyim?

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

İçerik arayıcı 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 camel-case adlandırma kuralını kullanmanızı öneririz.

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

    • Kimlik Bilgileri 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 aramacının RuleId değerinin kendi ad alanı olmalıdır. Örnek olarak CSCAN-Namespace>< 0010, CSCAN-Namespace<> 0020 ve CSCAN-Namespace<> 0030 verilebilir.
    • Tam arama adı, RuleId değeri ile aramacı adının birleşimidir. CsCAN0010 buna örnek olarak 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ımlanmamışsa 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: Aramanın her eşleşmesi için eklenecek açıklayıcı bir ileti, risk azaltma yönergeleri veya her ikisi de.

  • Öneri: PREfast rapor biçimini kullanan bir eşleşme için 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ı kurulumunu gösteren XML

Roslyn Çözümleyicileri

Roslyn Çözümleyicileri görevini kullanı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 Microsoft.NETCore.App x.x.x sürümü kullanılarak geri yüklendi, ancak geçerli ayarlarla bunun yerine y.y.y sürümü 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ımlamadotnet.exe. Roslyn Çözümleyicileri adımından hemen önce NuGet geri yükleme işlemine sahip olan 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: 'Microsoft.CodeAnalysis, Version=X.X.X.X, Culture=neutral, PublicKeyToken=31bf3856ad364e35' veya bağımlılıklarından biri dosya veya derleme yüklenemiyor. Sistem belirtilen dosyayı bulamıyor."

Derleyicinizin Roslyn Çözümleyicileri'ni desteklediğini doğrulayın. /versioncsc.exe komutu çalıştırılırken 2.6 veya üzeri bir sürüm değeri bildirilmelidir.

Bazen bir .csproj dosyası, Microsoft.Net.Derleyicileri'nden 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 gibi görünebilirler

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

C# derleyicisinin en son sürümlerini almak için Microsoft.Net.Compilers'e gidin. Yüklü sürümünüzü almak için komut isteminde csc.exe /version komutunu çalıştırın. 2.6 veya üzeri 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.