Nejčastější dotazy | Azure

Poznámka

S platností od 31. prosince 2022 je rozšíření Microsoft Security Code Analysis (MSCA) vyřazeno. MSCA se nahrazuje rozšířením Microsoft Security DevOps Azure DevOps. Postupujte podle pokynů v tématu Konfigurace a nainstalujte a nakonfigurujte rozšíření.

Obecné nejčastější dotazy

Můžu rozšíření nainstalovat na instanci Azure DevOps Server (dříve Visual Studio Team Foundation Server) místo na instanci Azure DevOps?

Ne. Rozšíření není k dispozici ke stažení a instalaci pro Azure DevOps Server (dříve Visual Studio Team Foundation Server).

Musím se svým buildem spouštět Analýzu bezpečnostního kódu od Microsoftu?

Podle potřeby. Závisí na typu analytického nástroje. Zdrojový kód může být to jediné, co se vyžaduje, nebo se může vyžadovat výstup sestavení.

Například Skener přihlašovacích údajů (CredScan) analyzuje soubory v rámci struktury složek úložiště kódu. Díky této analýze můžete spustit úlohy sestavení CredScan a Publikovat protokoly analýzy zabezpečení v samostatném sestavení, abyste získali výsledky.

U jiných nástrojů, jako je BinSkim, které analyzují artefakty po sestavení, se sestavení vyžaduje jako první.

Můžu po nalezení výsledků přerušit sestavení?

Ano. Přerušení sestavení můžete zavést, když jakýkoli nástroj hlásí problém nebo problém v souboru protokolu. Přidejte úlohu sestavení po analýze a zaškrtněte políčko u libovolného nástroje, u kterého chcete sestavení přerušit.

V uživatelském rozhraní úlohy Post-Analysis můžete zvolit přerušení sestavení, když jakýkoli nástroj hlásí buď pouze chyby, nebo chyby a upozornění.

Jak se liší argumenty příkazového řádku v Azure DevOps od argumentů v samostatných desktopových nástrojích?

Úlohy sestavení Azure DevOps jsou obvykle přímé obálky kolem argumentů příkazového řádku nástrojů zabezpečení. Jako argumenty do úlohy sestavení můžete předat cokoli, co normálně předáte nástroji příkazového řádku.

Výrazné rozdíly:

  • Nástroje se spouští ze zdrojové složky agenta $(Build.SourcesDirectory) nebo %BUILD_SOURCESDIRECTORY%. Příkladem je C:\agent_work\1\s.
  • Cesty v argumentech můžou být relativní vzhledem ke kořenovému adresáři zdrojového adresáře, který jste dříve uvedli. Cesty můžou být také absolutní. Absolutní cesty získáte buď pomocí proměnných sestavení Azure DevOps, nebo spuštěním místního agenta se známými umístěními nasazení místních prostředků.
  • Nástroje automaticky poskytují cestu k výstupnímu souboru nebo složku. Pokud zadáte výstupní umístění pro úlohu sestavení, nahradí se tímto umístěním cesta k našemu dobře známému umístění protokolů v agentu sestavení.
  • U některých nástrojů se změní některé další argumenty příkazového řádku. Jedním z příkladů je přidání nebo odebrání možností, které zajišťují, že se nespouštějí grafické uživatelské rozhraní.

Můžu ve službě Azure DevOps Build spustit úlohu sestavení, jako je kontrola přihlašovacích údajů, napříč několika úložišti?

Ne. Spouštění zabezpečených vývojových nástrojů napříč několika úložišti v jednom kanálu se nepodporuje.

Zadaný výstupní soubor se nevytvořil nebo nemůžu najít zadaný výstupní soubor.

Úlohy sestavení filtrují určitý uživatelský vstup. Konkrétně pro tuto otázku aktualizují umístění vygenerovaného výstupního souboru tak, aby bylo běžným umístěním v agentu sestavení. Další informace o tomto umístění najdete v následujících dotazech.

Kam se ukládají výstupní soubory vygenerované nástroji?

Úlohy sestavení automaticky přidají výstupní cesty do tohoto dobře známého umístění v agentu sestavení: $(Agent.BuildDirectory)_sdt\logs. Vzhledem k tomu, že v tomto umístění standardizujeme, mají k výstupu přístup všechny týmy, které vytvářejí nebo využívají protokoly analýzy kódu.

Můžu sestavení zařadit do fronty, aby se tyto úlohy spustily v hostovaném agentu sestavení?

Ano. Všechny úlohy a nástroje v rozšíření je možné spouštět na hostovaném agentu sestavení.

Poznámka

Úloha sestavení antimalwarového skeneru vyžaduje agenta sestavení s povoleným Windows Defender. Hostovaná sada Visual Studio 2017 a novější poskytují takového agenta. Úloha sestavení se nespustí na agentovi hostovaném v sadě Visual Studio 2015.

I když u těchto agentů není možné podpisy aktualizovat, měly by být vždy starší než tři hodiny.

Můžu tyto úlohy sestavení spouštět jako součást kanálu verze, ne jako kanál buildu?

Ve většině případů ano.

Azure DevOps ale nepodporuje spouštění úloh v kanálech verze, když tyto úlohy publikují artefakty. Tato nedostatečná podpora brání úspěšnému spuštění úlohy Publikovat protokoly analýzy zabezpečení v kanálu verze. Úloha místo toho selže s popisnou chybovou zprávou.

Odkud úlohy sestavení stahují nástroje?

Úlohy sestavení můžou stáhnout balíčky NuGet nástrojů z kanálu Správy balíčků Azure DevOps. Úlohy sestavení můžou také používat Node Package Manager, který musí být předinstalovaný v agentu sestavení. Příkladem takové instalace je příkaz npm install tslint.

Jaký vliv má instalace rozšíření na moji organizaci Azure DevOps?

Po instalaci budou úlohy sestavení zabezpečení poskytované rozšířením dostupné všem uživatelům ve vaší organizaci. Při vytváření nebo úpravách kanálu Azure jsou tyto úlohy k dispozici v seznamu kolekcí úloh sestavení. Jinak instalace rozšíření ve vaší organizaci Azure DevOps nemá žádný vliv. Instalace neupravuje žádná nastavení účtu, nastavení projektu ani kanály.

Změní instalace rozšíření stávající službu Azure Pipelines?

Ne. Instalací rozšíření zpřístupníte úlohy sestavení zabezpečení pro přidání do vašich kanálů. Stále musíte přidat nebo aktualizovat definice sestavení, aby nástroje mohly pracovat s vaším procesem sestavení.

Nejčastější dotazy ke konkrétním úkolům

V této části jsou uvedeny dotazy týkající se úloh sestavení.

Kontrola přihlašovacích údajů

Jaké jsou běžné scénáře a příklady potlačení?

Tady jsou podrobnosti o dvou nejběžnějších scénářích potlačení.

Potlačení všech výskytů daného tajného kódu v rámci zadané cesty

Klíč hash tajného klíče z výstupního souboru CredScan je povinný, jak je znázorněno v následující ukázce.

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

Upozornění

Klíč hash se generuje částí odpovídající hodnoty nebo obsahu souboru. Jakákoli revize zdrojového kódu může změnit klíč hash a zakázat pravidlo potlačení.

Potlačování všech tajných kódů v zadaném souboru nebo potlačení samotného souboru tajných kódů

Výrazem souboru může být název souboru. Může to být také základní část celé cesty k souboru nebo název souboru. Zástupné znaky se nepodporují.

Následující příklady ukazují, jak potlačit soubor <InputPath>\src\JS\lib\angular.js

Příklady platných pravidel potlačení:

  • <InputPath>\src\JS\lib\angular.js – potlačí soubor v zadané cestě.
  • \src\JS\lib\angular.js
  • \JS\lib\angular.js
  • \lib\angular.js
  • angular.js – potlačí všechny soubory se stejným názvem.
{
    "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"
    }
  ]
}

Upozornění

Všechny budoucí tajné kódy přidané do souboru se také automaticky potlačí.

Jaké jsou doporučené pokyny pro správu tajných kódů?

Následující zdroje informací vám pomůžou bezpečně spravovat tajné kódy a přistupovat k citlivým informacím z vašich aplikací:

Další informace najdete v blogovém příspěvku Správa tajných kódů bezpečně v cloudu.

Můžu si napsat vlastní vyhledávací služby?

Skener přihlašovacích údajů spoléhá na sadu vyhledávacích souborů obsahu, které jsou běžně definovány v souboru buildsearchers.xml. Soubor obsahuje pole serializovaných objektů XML, které představují objekt ContentSearcher . Program je distribuován se sadou dobře otestovaných vyhledávacích programů. Můžete ale také implementovat vlastní vyhledávací nástroje.

Vyhledávací funkce obsahu je definována takto:

  • Název: Popisný název vyhledávacího modulu, který se má použít ve výstupních souborech skeneru přihlašovacích údajů. Doporučujeme použít konvenci pojmenování velbloudích písmen pro názvy vyhledávacích objektů.

  • RuleId: Stabilní neprůshlené ID vyhledávacího modulu:

    • Výchozí vyhledávací nástroj pro kontrolu přihlašovacích údajů má přiřazenou hodnotu RuleId , například CSCAN0010, CSCAN0020 nebo CSCAN0030. Poslední číslice je vyhrazena pro potenciálně slučování nebo dělení skupin vyhledávacích objektů pomocí regulárních výrazů (regex).
    • Hodnota RuleId pro přizpůsobený vyhledávací nástroj by měla mít vlastní obor názvů. Mezi příklady patří CSCAN-Namespace<> 0010, CSCAN-Namespace>< 0020 a CSCAN-Namespace<> 0030.
    • Plně kvalifikovaný název vyhledávacího modulu je kombinace hodnoty RuleId a názvu vyhledávacího pracovníka. Mezi příklady patří CSCAN0010. KeyStoreFiles a CSCAN0020. Base64EncodedCertificate.
  • ResourceMatchPattern: Regex přípon souborů ke kontrole proti vyhledávacímu nástroji.

  • ContentSearchPatterns: Pole řetězců obsahujících příkazy regex, které se mají shodovat. Pokud nejsou definovány žádné vzory hledání, vrátí se všechny soubory odpovídající hodnotě ResourceMatchPattern .

  • ContentSearchFilters: Pole řetězců obsahujících příkazy regex pro filtrování falešně pozitivních výsledků specifických pro vyhledávacího prostředí.

  • MatchDetails: Popisná zpráva, pokyny ke zmírnění rizik nebo obojí, které se mají přidat pro každou shodu vyhledávacího nástroje.

  • Doporučení: Obsah pole návrhů pro shodu s použitím formátu sestavy PREfast

  • Závažnost: Celé číslo, které odráží úroveň závažnosti problému. Nejvyšší úroveň závažnosti má hodnotu 1.

    XML s nastavením skeneru přihlašovacích údajů

Analyzátory Roslyn

Jaké jsou běžné chyby při použití úlohy Roslyn Analyzers?

Projekt byl obnoven pomocí nesprávné verze Microsoft.NETCore.App.

Úplná chybová zpráva:

Chyba: Projekt byl obnoven pomocí Microsoft.NETCore.App verze x.x.x, ale při aktuálním nastavení by se místo toho použila verze y.y.y . Pokud chcete tento problém vyřešit, ujistěte se, že se stejná nastavení používají pro obnovení a pro následné operace, jako je sestavení nebo publikování. K tomuto problému obvykle může dojít, pokud je vlastnost RuntimeIdentifier nastavena během sestavení nebo publikování, ale ne během obnovení.

Vzhledem k tomu, že úlohy Roslyn Analyzers běží jako součást kompilace, zdrojový strom na počítači sestavení musí být v sestavitelném stavu.

Krok mezi hlavním sestavením a kroky Roslyn Analyzers mohl zdrojový strom uvést do stavu, který brání sestavení. Tento dodatečný krok je pravděpodobně dotnet.exe publikování. Zkuste duplikovat krok, který provede obnovení NuGet těsně před krokem Roslyn Analyzers. Tento duplicitní krok může zdrojový strom vrátit zpět do sestavitelného stavu.

csc.exe nejde vytvořit instanci analyzátoru

Úplná chybová zpráva:

"'csc.exe' ukončeno s kódem chyby 1 – Instanci analyzátoru AAAA nelze vytvořit z C:\BBBB.dll: Nelze načíst soubor nebo sestavení Microsoft.CodeAnalysis, Version=X.X.X.X, Culture=neutral, PublicKeyToken=31bf3856ad364e35 nebo některou z jeho závislostí. Systém nemůže najít zadaný soubor."

Ujistěte se, že kompilátor podporuje analyzátory Roslyn. Spuštění příkazu csc.exe /version by mělo hlásit hodnotu verze 2.6 nebo novější.

Někdy může soubor .csproj přepsat instalaci sady Visual Studio na počítači sestavení odkazováním na balíček z Microsoft.Net.Compilers. Pokud nemáte v úmyslu použít konkrétní verzi kompilátoru, odeberte odkazy na Microsoft.Net.Compilers. V opačném případě se ujistěte, že verze odkazovaného balíčku je také 2.6 nebo novější.

Zkuste získat cestu protokolu chyb, která je zadaná v možnosticsc.exe /errorlog . Možnost a cesta se zobrazí v protokolu pro úlohu sestavení Roslyn Analyzers. Můžou vypadat nějak takto : /errorlog:F:\ts-services-123_work\456\s\Some\Project\Code\Code.csproj.sarif

Verze kompilátoru jazyka C# není dostatečně aktuální.

Pokud chcete získat nejnovější verze kompilátoru jazyka C#, přejděte na Microsoft.Net.Compilers. Nainstalovanou verzi získáte spuštěním příkazucsc.exe /version na příkazovém řádku. Ujistěte se, že odkazujete na balíček NuGet Microsoft.Net.Compilers verze 2.6 nebo novější.

Protokoly MSBuild a VSBuild se nenašly.

Úloha sestavení Roslyn Analyzers musí dotazovat Azure DevOps na protokol MSBuild z úlohy sestavení MSBuild. Pokud se úloha analyzátoru spustí hned po dokončení úlohy NÁSTROJE MSBuild, protokol ještě nebude dostupný. Umístěte další úlohy mezi úlohu MSBuild a úlohu Roslyn Analyzers. Mezi příklady dalších úloh patří BinSkim a Antimalwarový skener.

Další kroky

Pokud potřebujete další pomoc, je podpora Analýzy bezpečnostního kódu společnosti Microsoft k dispozici od pondělí do pátku od 9:00 do 17:00 Tichomoří (běžný čas).