Gyakori kérdések | Kék

Megjegyzés

2022. december 31-től megszűnik a Microsoft Security Code Analysis (MSCA) bővítmény. Az MSCA helyébe a Microsoft Security DevOps Azure DevOps bővítmény lép. Kövesse a bővítmény telepítéséhez és konfigurálásához konfigurálása című témakörben található utasításokat.

Általános GYIK

Telepíthetem a bővítményt az Azure DevOps Server (korábbi nevén Visual Studio Team Foundation Server) példányomra az Azure DevOps-példány helyett?

Nem. A bővítmény nem érhető el az Azure DevOps Server (korábbi nevén Visual Studio Team Foundation Server) letöltéséhez és telepítéséhez.

Futtatnom kell a Microsoft Biztonsági kódelemzést a buildemmel?

Esetleg. Az elemzési eszköz típusától függ. Lehet, hogy csak a forráskódra van szükség, vagy a build kimenetére lehet szükség.

A Credential Scanner (CredScan) például a kódtár mappastruktúrájában lévő fájlokat elemzi. Az elemzés miatt futtathatja a CredScan és a Publish Security Analysis Logs buildelési feladatait egy különálló buildben az eredmények lekéréséhez.

Az olyan egyéb eszközökhöz, mint a BinSkim, amelyek a build utáni összetevőket elemzik, először a buildre van szükség.

Megszakíthatom a buildet az eredmények megtalálásakor?

Igen. Buildtörést akkor vezethet be, ha bármely eszköz hibát vagy problémát jelez a naplófájlban. Adja hozzá az elemzés utáni buildelési feladatot, és jelölje be annak az eszköznek a jelölőnégyzetét, amelyhez meg szeretné szakítani a buildet.

Az elemzés utáni feladat felhasználói felületén dönthet úgy, hogy megszakítja a buildelést, ha bármely eszköz csak hibákat vagy hibákat és figyelmeztetéseket jelent.

Miben különböznek az Azure DevOps parancssori argumentumai az önálló asztali eszközök argumentumaitól?

Az Azure DevOps buildelési feladatai általában közvetlen burkolók a biztonsági eszközök parancssori argumentumai körül. A buildelési feladatnak argumentumként átadhat mindent, amit általában egy parancssori eszköznek ad át.

Észrevehető különbségek:

  • Az eszközök a $(Build.SourcesDirectory) ügynök forrásmappájából vagy %BUILD_SOURCESDIRECTORY%. Ilyen például a C:\agent_work\1\s.
  • Az argumentumok elérési útjai a korábban felsorolt forráskönyvtár gyökeréhez lehetnek viszonyítva. Az elérési utak abszolútak is lehetnek. Abszolút elérési utakat kaphat az Azure DevOps buildváltozóinak használatával, vagy egy helyi erőforrások ismert üzembehelyezési helyeivel rendelkező helyszíni ügynök futtatásával.
  • Az eszközök automatikusan biztosítanak kimeneti fájl elérési útját vagy mappát. Ha kimeneti helyet ad meg egy buildelési feladathoz, a rendszer ezt a helyet a buildügynökön található naplók jól ismert helyének elérési útjára cseréli.
  • Egyes eszközökhöz más parancssori argumentumok is módosulnak. Ilyen például az olyan beállítások hozzáadása vagy eltávolítása, amelyek biztosítják, hogy a grafikus felhasználói felület nem indul el.

Futtathatok olyan buildelési feladatokat, mint a Credential Scanner egy Azure DevOps Build több adattárában?

Nem. A biztonságos fejlesztési eszközök egyetlen folyamat több adattárában való futtatása nem támogatott.

A megadott kimeneti fájl nem jön létre, vagy nem találom a megadott kimeneti fájlt

A buildelési feladatok szűrnek néhány felhasználói bemenetet. Ebben a kérdésben a generált kimeneti fájl helyét úgy frissítik, hogy az a buildügynök gyakori helye legyen. Erről a helyről az alábbi kérdésekben talál további információt.

Hol vannak mentve az eszközök által létrehozott kimeneti fájlok?

A buildelési feladatok automatikusan hozzáadnak kimeneti útvonalakat ehhez a jól ismert helyhez a buildügynökön: $(Agent.BuildDirectory)_sdt\logs. Mivel ezen a helyen szabványosítunk, a kódelemzési naplókat előállító vagy használó összes csapat hozzáfér a kimenethez.

Várólistára helyezhetek egy buildet, hogy futtathassam ezeket a feladatokat egy üzemeltetett buildügynökön?

Igen. A bővítmény összes feladata és eszköze végrehajtható egy üzemeltetett buildügynökön.

Megjegyzés

A Kártevőirtó scanner buildelési feladatához engedélyezni kell a Windows Defenderrel rendelkező buildügynököt. Az üzemeltetett Visual Studio 2017 és újabb verziók ilyen ügynököt biztosítanak. A buildelési feladat nem fut a Visual Studio 2015 által üzemeltetett ügynökön.

Bár az aláírások nem frissíthetők ezeken az ügynökökön, az aláírásoknak mindig három óránál rövidebbnek kell lenniük.

Futtathatom ezeket a buildelési feladatokat egy kiadási folyamat részeként a buildelési folyamat helyett?

A legtöbb esetben igen.

Az Azure DevOps azonban nem támogatja a tevékenységek kiadási folyamatokon belüli futtatását, amikor ezek a tevékenységek összetevőket tesznek közzé. A támogatás hiánya megakadályozza, hogy a biztonsági elemzési naplók közzététele feladat sikeresen fusson egy kiadási folyamatban. A feladat ehelyett egy leíró hibaüzenettel meghiúsul.

Honnan töltik le a buildelési feladatok az eszközöket?

A buildelési feladatok letölthetik az eszközök NuGet-csomagjait az Azure DevOps Csomagkezelési hírcsatornából. A buildelési feladatok a Node Package Managert is használhatják, amelyet előre kell létrehozni a buildügynökön. Ilyen telepítésre példa a tslint npm telepítése parancs.

Milyen hatással van a bővítmény telepítése az Azure DevOps-szervezetemre?

A telepítéskor a bővítmény által biztosított biztonsági összeállítási feladatok elérhetővé válnak a szervezet összes felhasználója számára. Azure Pipeline létrehozásakor vagy szerkesztésekor ezek a feladatok elérhetők a build-feladat gyűjtemény listájából. Ellenkező esetben a bővítmény telepítése az Azure DevOps-szervezetben nincs hatással. A telepítés nem módosítja a fiókbeállításokat, a projektbeállításokat vagy a folyamatokat.

Módosítja a bővítmény telepítése a meglévő Azure Pipelinest?

Nem. A bővítmény telepítése elérhetővé teszi a biztonsági buildelési feladatokat a folyamatok mellett. Továbbra is hozzá kell adnia vagy frissítenie kell a builddefiníciókat, hogy az eszközök együttműködhessenek a buildelési folyamattal.

Feladatspecifikus gyakori kérdések

A buildelési feladatokkal kapcsolatos kérdéseket ebben a szakaszban találja.

Hitelesítőadat-ellenőrző

Mik a gyakori elnyomási forgatókönyvek és példák?

Az alábbiakban a két leggyakoribb elnyomási forgatókönyv részleteit ismertetjük.

Egy adott titkos kód összes előfordulásának letiltása a megadott elérési úton

A CredScan kimeneti fájlból származó titkos kulcs kivonatkulcsa szükséges az alábbi mintában látható módon.

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

Figyelmeztetés

A kivonatkulcsot az egyező érték vagy fájltartalom egy része hozza létre. Bármely forráskód-változat módosíthatja a kivonatkulcsot, és letilthatja a letiltási szabályt.

A megadott fájlban lévő összes titkos kód elnyomása vagy a titkos kulcsok fájljának letiltása

A fájlkifejezés lehet fájlnév. Ez lehet egy teljes fájl elérési útjának alapneve vagy egy fájlnév is. A helyettesítő karakterek nem támogatottak.

Az alábbi példák bemutatják, hogyan tilthatja le a fájlt <InputPath>\src\JS\lib\angular.js

Példák érvényes letiltási szabályokra:

  • <InputPath>\src\JS\lib\angular.js – letiltja a fájlt a megadott elérési úton
  • \src\JS\lib\angular.js
  • \JS\lib\angular.js
  • \lib\angular.js
  • angular.js – letiltja az azonos nevű fájlokat
{
    "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"
    }
  ]
}

Figyelmeztetés

A fájlhoz hozzáadott összes jövőbeli titkos kód is automatikusan el lesz tiltva.

Mik a titkos kódok kezelésére vonatkozó ajánlott irányelvek?

Az alábbi erőforrások segítségével biztonságosan kezelheti a titkos kulcsokat, és bizalmas információkat érhet el az alkalmazásokból:

További információ: Titkos kódok biztonságos kezelése a Felhőcímű blogbejegyzésben.

Írhatok saját egyéni keresőket?

A Credential Scanner a buildsearchers.xml fájlban gyakran definiált tartalomkeresőkre támaszkodik. A fájl xml szerializált objektumokat tartalmazó tömböt tartalmaz, amelyek egy ContentSearcher objektumot jelölnek. A program számos jól tesztelt keresővel van elosztva. De saját egyéni keresőket is implementálhat.

A tartalomkereső a következőképpen van definiálva:

  • Név: A Credential Scanner kimeneti fájljaiban használandó leíró keresőnév. Azt javasoljuk, hogy használja a teve-eset elnevezési konvenciót a keresőnevekhez.

  • RuleId: A kereső stabil átlátszatlan azonosítója:

    • A Hitelesítőadat-ellenőrző alapértelmezett keresője RuleId értéket rendel hozzá, például CSCAN0010, CSCAN0020 vagy CSCAN0030. Az utolsó számjegy a keresőcsoportok normál kifejezéseken (regex) keresztül történő egyesítésére vagy osztására van fenntartva.
    • A testreszabott keresők RuleId értékének saját névtérrel kell rendelkeznie. Ilyenek például a CSCAN-<Névtér>0010, a CSCAN-<névtér>0020, valamint a CSCAN-<Névtér>0030.
    • A teljes keresőnév egy RuleId érték és egy keresőnév kombinációja. Ilyenek például a CSCAN0010. KeyStoreFiles és CSCAN0020. Base64EncodedCertificate.
  • ResourceMatchPattern: A fájlkiterjesztések regexje, amely ellenőrzi a keresőt.

  • ContentSearchPatterns: Regex utasításokat tartalmazó karakterláncok tömbje. Ha nincsenek definiálva keresési minták, a rendszer minden olyan fájlt visszaad, amely megfelel a ResourceMatchPattern értéknek.

  • ContentSearchFilters: Regex utasításokat tartalmazó karakterláncok tömbje a keresőspecifikus hamis pozitív értékek szűréséhez.

  • MatchDetails: Leíró üzenet, megoldási utasítások vagy mindkettő, amely a kereső minden egyezéséhez hozzáadható.

  • Javaslati: A prEfast jelentésformátumot használó egyezés javaslatmező tartalma.

  • súlyossági: A probléma súlyossági szintjét tükröző egész szám. A legmagasabb súlyossági szint értéke 1.

    Credential Scanner beállítási megjelenítő XML

Roslyn-elemzők

Milyen gyakori hibák vannak a Roslyn Analyzers-feladat használatakor?

A projekt helytelen Microsoft.NETCore.App verzióval lett visszaállítva

A teljes hibaüzenet:

"Hiba: A projekt Microsoft.NETCore.App x.x.x verzióval lett visszaállítva, de az aktuális beállításoknál az y.y.y verziót használná helyette. A probléma megoldásához győződjön meg arról, hogy ugyanazokat a beállításokat használja a visszaállításhoz és az azt követő műveletekhez, például a buildeléshez vagy a közzétételhez. Ez a probléma általában akkor fordulhat elő, ha a RuntimeIdentifier tulajdonság be van állítva a buildelés vagy közzététel során, de a visszaállítás során nem."

Mivel a Roslyn Analyzers-feladatok fordítás részeként futnak, a buildelési gépen lévő forrásfának buildelhető állapotban kell lennie.

Előfordulhat, hogy a fő build és a Roslyn Analyzers lépések közötti lépés a forrásfát olyan állapotba helyezte, amely megakadályozza az építést. Ez a további lépés valószínűleg dotnet.exe közzétételi. Próbálja meg duplikálni azt a lépést, amely a Roslyn Analyzers lépés előtt végez NuGet-helyreállítást. Ez a duplikált lépés visszaállíthatja a forrásfát buildelhető állapotba.

csc.exe nem hozható létre elemzőpéldány

A teljes hibaüzenet:

"'csc.exe' 1-es hibakóddal kilépett - Az AAAA elemző példánya nem hozható létre a C:\BBBB.dll: Nem sikerült betölteni a fájlt vagy a szerelvényt: "Microsoft.CodeAnalysis, Version=X.X.X.X, Culture=neutral, PublicKeyToken=31bf3856ad364e35' vagy annak egyik függősége. A rendszer nem találja a megadott fájlt."

Győződjön meg arról, hogy a fordító támogatja a Roslyn Analyzerst. A /version csc.exe parancs futtatásának 2.6-os vagy újabb verzióértéket kell jelentenie.

Előfordulhat, hogy egy .csproj-fájl felülbírálhatja a buildelési gép Visual Studio-telepítését a Microsoft.Net.Compilers csomagjának hivatkozásával. Ha nem kívánja használni a fordító egy adott verzióját, távolítsa el a Microsoft.Net.Compilersre mutató hivatkozásokat. Ellenkező esetben győződjön meg arról, hogy a hivatkozott csomag verziója szintén 2.6-os vagy újabb.

Próbálja meg lekérni a hibanapló elérési útját, amely a csc.exe /errorlog beállításban van megadva. A beállítás és az elérési út megjelenik a Roslyn Analyzers buildelési feladatának naplójában. A következőhöz hasonlóak lehetnek: /errorlog:F:\ts-services-123_work\456\s\Some\Project\Code\Code.csproj.sarif

A C#-fordító verziója nem elég friss

A C# fordító legújabb verzióinak beszerzéséhez lépjen Microsoft.Net.Compilers. A telepített verzió beszerzéséhez futtassa csc.exe /version parancssorban. Győződjön meg arról, hogy a 2.6-os vagy újabb verziójú Microsoft.Net.Compilers NuGet-csomagra hivatkozik.

Az MSBuild és a VSBuild naplók nem találhatók

A Roslyn Analyzers buildelési feladatának le kell kérdeznie az Azure DevOps-t az MSBuild-naplóhoz az MSBuild buildelési feladatból. Ha az elemző tevékenység közvetlenül az MSBuild tevékenység után fut, a napló még nem lesz elérhető. Helyezzen el más feladatokat az MSBuild és a Roslyn Analyzers tevékenység között. További feladatok például a BinSkim és a Kártevőirtó szkenner.

Következő lépések

Ha további segítségre van szüksége, a Microsoft biztonsági kódelemzési támogatása hétfőtől péntekig 9:00 és 17:00 óra között érhető el csendes-óceáni téli idő szerint.