Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Az Azure Pipelinesban lehetővé teheti a felhasználók számára, hogy testre szabják a folyamatok végrehajtását, ha változókkal és paraméterekkel gyűjtik be a bemenetüket. A felhasználói bemenetek elfogadása azonban biztonsági kockázatokat is jelenthet, ha nem megfelelően kezelik. Ebből a cikkből megtudhatja, hogyan használhatja biztonságosan a változókat és paramétereket a folyamatban.
Ez a cikk egy sorozat része, amely segít az Azure Pipelines biztonsági intézkedéseinek megvalósításában. Ha további információra van szüksége, tekintse meg a Biztonságos Azure Pipelines részt.
Előfeltételek
| Kategória | Követelmények |
|---|---|
| Azure DevOps | – Javaslatok megvalósítása az Azure DevOps biztonságossá tételében és az Azure Pipelines biztonságossá tételében. - A YAML és az Azure Pipelines alapszintű ismerete. További információért lásd: Az első pipeline létrehozása. |
| Engedélyek | – Folyamatengedélyek módosítása: A Projektgazdák csoport tagja. – A szervezeti engedélyek módosítása: A Projektcsoportgazdák csoport tagja. |
Változók
A változók kényelmes módja annak, hogy előre összegyűjtsék a felhasználói adatokat, és megkönnyítsék a folyamat lépései közötti adatátvitelt. A YAML-feladatokban vagy szkriptekben definiált változók azonban alapértelmezés szerint írás-olvasást végeznek. A felsőbb rétegbeli lépésekben beállított értékek váratlanul módosíthatják az alsóbb rétegbeli értékeket.
Az alábbi szkriptrészlet például meghív egy úgynevezett MyConfigváltozót.
msbuild.exe myproj.proj -property:Configuration=$(MyConfig)
Ha egy előző lépés a MyConfig változó értékét Debug & deltree /y c:állítja be, a szkript futtatása törli a buildügynök tartalmát, és nem várt következményekkel járhat. Ez a példa kiemeli az ilyen beállítások lehetséges veszélyét.
A rendszerváltozók, mint például Build.SourcesDirectory, és a feladat kimeneti változói mindig írásvédettek. Egy szkriptben vagy YAML-feladatban létrehozott változót írásvédettként is kijelölhet, ha a naplózási parancsban átadja a isReadonly=true jelölőt.
YAML-változódefiníciókban az adott readonly kulccsal megadhat egy írásvédett változót:
variables:
- name: myReadOnlyVar
value: myValue
readonly: true
A titkos változókkal különösen körültekintően járjon el. A titkos változók beállításához ajánlott módszerek közé tartozik a felhasználói felület használata, egy változócsoport létrehozása vagy az Azure Key Vaultból származó változócsoport használata. További információ: Titkos kódváltozók beállítása.
Várólista-idő változók
Amikor meghatároz egy változót az Azure Pipelines felhasználói felületén, megadhatja, hogy a felhasználók felülbírálhatják-e az értéket a folyamat végrehajtása során. Azokat a változókat, amelyek lehetővé teszik a felhasználók számára, hogy az értéküket a queue futásakor állítsák be, queue-time változóknak nevezzük, és csak az Azure Pipelines Változók felületén definiálhatók.
A klasszikus folyamatszerkesztőben a sorbaállítási idejű változót úgy állíthatja be, hogy bejelöli a Settable at queue time jelölőnégyzetet. A YAML-folyamatokban úgy jelölik ki őket, hogy kiválasztják a Felhasználók felülbírálhatják ezt az értéket a folyamat futtatásakor opciót.
Megjegyzés:
A kiadási folyamatban válassza a Settable elemet a kiadás időpontjában. További információ: Hogyan szerkeszthetem a változókat a kiadás időpontjában?
Amikor egy felhasználó manuálisan futtatja a folyamatot, kiválaszthatja az üzenetsor-idő változókat, és módosíthatja az értékeket.
A felhasználóknak várólistához tartozó konfiguráció szerkesztése engedéllyel kell rendelkezniük egy folyamatban ahhoz, hogy futás idején beállított változókat definiálhassák.
Az üzenetsor idején beállítható változók korlátozása
Az Azure Pipelines felhasználói felülete és a folyamatot futtató REST API lehetővé teszi, hogy a felhasználók új változókat vegyenek fel a várólistán. Ez a lehetőség lehetővé teszi a felhasználók számára, hogy olyan változókat hozzanak létre, amelyeket a folyamat szerzője nem definiált, felülbírálják a rendszerváltozókat, és beállíthatják a meglévő változók értékeit a várólistán.
A képességek által okozott problémák elkerülése érdekében korlátozhatja az üzenetsor idején beállítható változókat. Engedélyezheti a korlátozva legyenek a várakozási időben beállítható változók beállítást, így a felhasználók csak a várakozási időben explicit módon beállíthatóként megjelölt változókat állíthatják be, vagy engedélyezzék a felhasználóknak ennek az értéknek a felülbírálását a folyamat futtatásakor a várólistán.
Ez a beállítás a szervezet és a projekt szintjén is alkalmazható.
A projektgyűjtemény rendszergazdái a szervezet szintjén alkalmazhatják ezt a beállítást a Szervezet beállításai>folyamatbeállítások> területen. Ha a beállítás be van kapcsolva, akkor csak azok a változók állíthatók be sorban állási időben, amelyek a szervezet összes projektjének minden folyamatában kifejezetten sorban állási időben beállíthatóként vannak megjelölve.
A projektgazdák a projekt szintjén alkalmazhatják ezt a beállítást a Projektbeállítások>folyamatbeállításai> területen. Ha a beállítás be van kapcsolva, akkor csak azok a változók állíthatók be sorba állításkor, amelyek kifejezetten sorba állításkor beállíthatóként vannak megjelölve a projekt összes folyamatához. Ha a beállítás szervezeti szinten nincs engedélyezve, az egyes projektek esetében engedélyezhető vagy letiltható.
Ha a szervezeti szintű beállítás engedélyezve van, az a szervezet összes projektére vonatkozik, és a projekt szintjén nem kapcsolható ki.
Az alábbi példa egy klasszikus pipeline változóit mutatja be, amelyek közül néhány az ütemezés során beállítható. A BuildPlatform változó beállítható ütemezési időben, de a BuildConfiguration nem állítható be.
A folyamat futtatásakor a kiválasztandó Változók képernyőn csak a Settable üzenetsor-időpontban megjelölt változók láthatók.
Ha az üzenetsor idején beállítható változók korlátozása a projekt vagy a szervezet szintjén engedélyezve van, a Változó hozzáadása gomb nem jelenik meg.
A Builds - Queue vagy a Runs - Run Pipeline API-k használata egy folyamatfuttatás sorba állításához, és megkísérli beállítani egy olyan változó értékét, amely nincs megjelölve Settable at queue time állapotban, az alábbihoz hasonló hibával meghiúsul:
{
"$id": "1",
"innerException": null,
"message": "You can't set the following variables (BuildConfiguration). If you want to be able to set these variables, then edit the pipeline and select Settable at queue time on the variables tab of the pipeline editor.",
"typeName": "Microsoft.Azure.Pipelines.WebApi.PipelineValidationException, Microsoft.Azure.Pipelines.WebApi",
"typeKey": "PipelineValidationException",
"errorCode": 0,
"eventId": 3000
}
Paraméterek
A futó folyamatok nem módosíthatják a folyamat paramétereit, ellentétben a változókkal. A paraméterek olyan adattípusokkal rendelkeznek, mint például number és string, és bizonyos értékrészekre korlátozhatók. Ez a korlátozás akkor hasznos, ha a folyamat felhasználó által konfigurálható aspektusa csak előre definiált listából fogad el értékeket, biztosítva, hogy a folyamat ne fogadjon el tetszőleges adatokat.
Engedélyezze a rendszerhéj-tevékenységek argumentumainak érvényesítését
A munkafolyamatok hivatkozhatnak a munkafolyamaton belül végrehajtott feladatokra. Egyes feladatok olyan paramétert arguments tartalmaznak, amely lehetővé teszi a felhasználók számára, hogy további lehetőségeket adjanak meg a feladathoz.
Rendszerhéj-feladatok argumentumainak érvényesítése engedélyezése beállítás érvényesíti a beépített rendszerhéj-feladatok paramétereit, hogy kiszűrje azokat a bemeneteket, amelyek parancsokat injektálhatnak szkriptekbe. Az ellenőrzés biztosítja, hogy a rendszerhéj megfelelően hajtja végre a karaktereket, például pontosvesszőket, idézőjeleket és zárójeleket a következő folyamatfeladatokban:
- PowerShell
- Batch script
- Bash
- Ssh
- AzureFileCopy
- WindowsMachineFileCopy
Engedélyezze a shell feladatok argumentumainak érvényesítését a szervezet szintjén a Szervezeti beállítások>Pipelines>beállítások vagy a projekt szintjén a Projektbeállítások>Pipelines>beállítások alatt. Ha a szervezeti szintű beállítás engedélyezve van, az a szervezet összes projektére vonatkozik, és a projekt szintjén nem kapcsolható ki.
Ha ez a beállítás engedélyezve van, a paraméterekkel arguments kapcsolatos ellenőrzési problémák a következő hibaüzenetet váltják ki:
Detected characters in arguments that may not be executed correctly by the shell. Please escape special characters using backtick (`).
A probléma megoldásához módosítsa az argumentumot úgy, hogy a hibaüzenetben jelzett speciális karaktereket kódolja.