Változók és paraméterek biztonságos használata a folyamatban
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Ez a cikk azt ismerteti, hogyan használhatja biztonságosan a változókat és paramétereket a folyamat felhasználóitól származó bemenetek gyűjtéséhez. Ha szeretne többet megtudni a változók és paraméterek használatáról, tekintse meg a következőt:
- Változók definiálása
- Titkos változók beállítása
- Előre definiált változók használata
- Futtatókörnyezeti paraméterek használata
- Sablontípusok > használat
Körültekintően használja a titkos változókat. A titkos változók beállításának ajánlott módjai a felhasználói felületen, egy változócsoportban és az Azure Key Vault változócsoportjában találhatók. További információ: titkos kódváltozók beállítása.
Változók
A változók kényelmesen gyűjthetnek információkat a felhasználó elől. Változókkal is továbbíthat adatokat lépésről lépésre a folyamaton belül.
De körültekintően használja a változókat. Az újonnan létrehozott változók, függetlenül attól, hogy YAML-ben vannak definiálva vagy szkripttel vannak megírva, alapértelmezés szerint írás-olvasás. Az alsóbb rétegbeli lépések nem várt módon módosíthatják a változók értékét.
A szkript például a következőt olvassa:
msbuild.exe myproj.proj -property:Configuration=$(MyConfig)
Az előző lépés a következőre állítható be MyConfig
Debug & deltree /y c:
: .
Bár ez a példa csak a buildügynök tartalmát törli, el tudja képzelni, hogyan válhat ez a beállítás sokkal veszélyesebbé.
A változókat írásvédetté teheti.
A rendszerváltozók, például Build.SourcesDirectory
a feladatkimeneti változók és az üzenetsor-idő változók mindig írásvédettek.
A YAML-ben létrehozott vagy szkript által futtatott időben létrehozott változók írásvédettként jelölhetők ki.
Amikor egy szkript vagy feladat létrehoz egy új változót, a naplózási parancsban átadhatja a isReadonly=true
jelölőt, hogy a változó írásvédett legyen.
A YAML-ben megadhat írásvédett változókat egy adott kulccsal:
variables:
- name: myReadOnlyVar
value: myValue
readonly: true
Várólista-idő változók
Amikor változót határoz meg a Pipelines felhasználói felület szerkesztőjében, engedélyezheti, hogy a felhasználók felülbírálják annak értékét a folyamat futtatásakor. Az ilyen változót üzenetsor-idő változónak nevezzük. Az üzenetsor-idő változók mindig a Pipelines felhasználói felület szerkesztőjében vannak definiálva.
Az üzenetsor-idő változók a folyamat manuális futtatásakor jelennek meg a végfelhasználó számára, és módosíthatják az értékeiket.
A felhasználóknak szerkesztési várólista-összeállítási konfigurációs engedélyre van szükségük a folyamaton a várólistán beállított változók megadásához.
Az üzenetsor idején beállítható változók korlátozása
A folyamat futtatásához használt felhasználói felület és REST API azt jelenti, hogy a felhasználók új változókat definiálhatnak az üzenetsorok idején.
Az Azure Pipelines korai időszakában ezzel a funkcióval adódtak problémák:
- Lehetővé tette, hogy a felhasználók olyan új változókat definiáljanak, amelyeket a folyamat szerzője nem definiál explicit módon a definícióban.
- A felhasználók felülírhatták a rendszerváltozókat.
A problémák megoldásához meghatároztunk egy beállítást, amely megszabja, mely változók állíthatók be várakozási időben. Ha ez a beállítás engedélyezve van, csak azok a változók állíthatók be, amelyeknél kifejezetten meg van jelölve a „Beállítható várakozási időben” beállítás. Más szóval, ha ez a beállítás nincs engedélyezve, minden változó beállítható várakozási időben.
A beállítás úgy lett kialakítva, hogy szervezeti és projektszinten is működjön.
- Szervezeti szint. Ha a beállítás be van kapcsolva, kényszeríti, hogy a szervezet összes projektjének összes folyamatához csak azok a változók állíthatók be, amelyek explicit módon "Settable at queue time". Ha a beállítás ki van kapcsolva, minden projekt eldöntheti, hogy korlátozza-e a várólistán beállított változókat. A beállítás egy kapcsoló a Szervezeti Gépház – Folyamatok –>> Gépház alatt. Csak a Project Collection Rendszergazda istratorok engedélyezhetik vagy tilthatják le.
- Projektszint. Ha a beállítás be van kapcsolva, a projekt összes folyamatához csak azok a változók állíthatók be, amelyek explicit módon "Settable at queue time". Ha a beállítás szervezeti szinten van bekapcsolva, akkor minden projektnél be van kapcsolva, és nem kapcsolható ki. A beállítás a Project Gépház - Pipelines ->> Gépház alatt található kapcsoló. Csak a Project Rendszergazda istratorok engedélyezhetik vagy tilthatják le.
Tekintsünk meg egy példát. Tegyük fel, hogy a beállítás be van kapcsolva, és a folyamat egy olyan változót my_variable
határoz meg, amely nem állítható be az üzenetsor idején.
Ezután tegyük fel, hogy futtatni szeretné a folyamatot. A Változók panelen nem jelennek meg változók, és hiányzik a Változó hozzáadása gomb.
A Buildek – Üzenetsor és a Futtatások – Folyamat REST API-hívásainak futtatása a folyamatfuttatás várólistára helyezéséhez és egy új változó értékének my_variable
beállításához az alábbihoz hasonló hibával meghiúsul.
{
"$id": "1",
"innerException": null,
"message": "You can't set the following variables (my_variable). 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 változókkal ellentétben a folyamatparaméterek futás közben nem módosíthatók.
A paraméterek olyan adattípusokkal rendelkeznek, mint az number
és string
, és az értékek egy részhalmazára korlátozhatók.
A paraméterek korlátozása akkor hasznos, ha a folyamat felhasználó által konfigurálható része csak korlátozott listából vehet fel értéket. A beállítás biztosítja, hogy a folyamat ne vegyen fel tetszőleges adatokat.
A rendszerhéj-tevékenységek argumentumainak paraméterérvényesítésének engedélyezése
A folyamatok hivatkozhatnak a folyamatban végrehajtott tevékenységekre. Az Azure DevOps számos tevékenységének argumentumparamétere lehetővé teszi, hogy további lehetőségeket adjon meg a feladathoz.
Ha engedélyezve van a rendszerhéj-feladatok argumentumainak paraméterérvényesítése beállítás, a rendszer minden olyan karakternél áttekinti az argumentumparamétert, amelyet a rendszerhéj nem hajt végre megfelelően. A példakarakterek közé tartoznak a pontosvesszők, az idézőjelek és a zárójelek.
Az üzenetsor-időpontban beállítható Korlát változókhoz hasonlóan a rendszerhéj-tevékenységek engedélyezése argumentumok paraméterérvényesítése szervezeti szinten is konfigurálható Gépház> Pipelines> Gépház vagy projektszinten Gépház> Pipelines> Gépház.
Ha engedélyezve van, észlelt érvényesítési probléma lépett fel, a rendszer az alábbihoz hasonló hibaüzenetet naplóz: 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 argumentumokat úgy, hogy a hibaüzenetben jelzett speciális karaktereket menekül.
Ha engedélyezve van a rendszerhéj-tevékenységek argumentumainak paraméterérvényesítése , az ellenőrzés az alábbi tevékenységek argumentumparaméterére lesz alkalmazva.
- PowerShell
- BatchScript
- Bash
- Ssh
- AzureFileCopy
- WindowsMachineFileCopy
Következő lépések
A bemenetek védelme után a megosztott infrastruktúrát is biztonságossá kell tenni.