Azure-adattárakhoz való biztonságos hozzáférés folyamatokból
Az adattárak kritikus fontosságú erőforrást jelentenek az üzleti sikerhez, mivel tartalmazzák a vállalkozását irányító kódot. Az adattárakhoz való hozzáférést nem szabad könnyen biztosítani.
Ez a cikk bemutatja, hogyan javíthatja az Azure-adattárakhoz hozzáférő folyamatok biztonságát annak érdekében, hogy korlátozza a forráskód rossz kezekbe kerülésének kockázatát.
Ahhoz, hogy a folyamatok biztonságosan hozzáférjenek az Azure-adattárakhoz, a Feladat engedélyezési hatókörének aktuális projektre való korlátozása nem kibocsátási folyamatok esetén, a Feladat engedélyezési hatókörének aktuális projektre való korlátozása kibocsátási folyamatok esetén és az Adattárakhoz való hozzáférés védelme a YAML-folyamatokban beállításokat engedélyezni kell.
A buildelési folyamatokat és a klasszikus kiadási folyamatokat egyaránt lefedjük:
Alapszintű folyamat
A lépések az összes folyamathoz hasonlóak:
Határozza meg azon Azure-adattárak listáját, amelyekhez a folyamatnak hozzáférésre van szüksége, amelyek ugyanahhoz a szervezethez tartoznak, de különböző projektekben találhatók.
Az adattárak listáját a folyamat vizsgálatával állíthatja össze. Vagy bekapcsolhatja a Feladat engedélyezési hatókörének korlátozása funkciót a (nem)kiadási folyamatok aktuális projektjéhez, és megfigyelheti, hogy a folyamat mely tárházait nem tudja kivenni. Előfordulhat, hogy az almodul-adattárak nem jelennek meg az első sikertelen futtatás során.
Minden olyan Azure DevOps-projekt esetében, amely tartalmaz egy adattárat, amelyhez a folyamatnak hozzá kell férnie, kövesse azokat a lépéseket, amelyekkel hozzáférést biztosíthat a folyamat buildidentitás-hozzáféréséhez a projekthez.
Minden Azure-adattár esetében, amelyet a folyamat kivesz, kövesse azokat a lépéseket, amelyekkel olvasási hozzáférést adhat a folyamat buildidentitásának olvasási hozzáféréséhez az adattárhoz.
Minden olyan adattár esetében, amelyet egy adattár almodulként használ, a folyamat kijelentkezik, és ugyanabban a projektben van, kövesse azokat a lépéseket, amelyekkel hozzáférést adhat a folyamat buildidentitásának olvasási hozzáféréséhez az adattárhoz.
Kapcsolja be a feladatengedélyezési hatókör korlátozását az aktuális projektre a nem kiadási folyamatok esetében, a feladat engedélyezési hatókörének korlátozása az aktuális projektre a kiadási folyamatok esetében, és a YAML-folyamatok adattáraihoz való hozzáférés védelme kapcsoló.
Folyamatok létrehozása
Az Azure-adattárak elérésekor a folyamatok biztonságának javításához szükséges lépéseket egy futó példán keresztül mutatjuk be.
Tegyük fel, hogy a SpaceGameWeb
fabrikam-tailspin/SpaceGameWeb
projektben, az SpaceGameWeb
Azure-adattárban üzemeltetett folyamaton dolgozik. Tegyük fel, hogy a SpaceGameWeb
folyamat kiveszi az adattárat ugyanabban a SpaceGameWebReact
projektben, valamint a FabrikamFiber
projektben lévő fabrikam-tailspin/FabrikamFiber
adattárakat.FabrikamChat
Végül tegyük fel, hogy az FabrikamFiber
adattár az FabrikamFiberLib
adattárat almodulként használja, amely ugyanabban a projektben fut. További információ az almodulok megtekintéséről.
A SpaceGameWeb
projekt adattárstruktúrái az alábbi képernyőképen láthatóhoz hasonlóan néznek ki.
A FabrikamFiber
projekt adattárstruktúrái az alábbi képernyőképen láthatóhoz hasonlóan néznek ki.
Tegyük fel, hogy a projekt nincs beállítva projektalapú buildidentitás használatára vagy a YAML-folyamatok adattáraihoz való hozzáférés védelmére. Tegyük fel, hogy már sikeresen futtatta a folyamatot.
Project-alapú buildidentitás használata buildelési folyamatokhoz
Egy folyamat végrehajtásakor identitással fér hozzá különböző erőforrásokhoz, például adattárakhoz, szolgáltatáskapcsolatokhoz, változócsoportokhoz. A folyamat kétféle identitást használhat: egy projektszintű és egy gyűjteményszintű identitást. Az előbbi nagyobb biztonságot nyújt, az utóbbi könnyű használatot biztosít. További információ a hatókörön belüli build-identitásokról és a feladat-engedélyezési hatókörről.
Javasoljuk, hogy projektszintű identitásokat használjon a folyamatok futtatásához. Alapértelmezés szerint a projektszintű identitások csak abban a projektben férhetnek hozzá erőforrásokhoz, amelynek a tagja. Az identitás használata javítja a biztonságot, mivel csökkenti a rosszindulatú személyek hozzáférését a folyamat eltérítésekor.
Ha azt szeretné, hogy a folyamat projektszintű identitást használjon, kapcsolja be a Feladat engedélyezési hatókörének korlátozása beállítást a jelenlegi projektre a nem kiadási folyamatok beállításához.
A futó példában, amikor ez a kapcsoló ki van kapcsolva, a SpaceGameWeb
folyamat minden projekt összes adattárához hozzáférhet. Ha a kapcsoló be van kapcsolva, SpaceGameWeb
csak a fabrikam-tailspin/SpaceGameWeb
projekt erőforrásaihoz férhet hozzá, így csak az és SpaceGameWebReact
az SpaceGameWeb
adattárakhoz.
Ha futtatja a példafolyamatot, amikor bekapcsolja a kapcsolót, a folyamat sikertelen lesz, és a hibanaplók közlik, remote: TF401019: The Git repository with name or identifier FabrikamChat does not exist or you do not have permissions for the operation you are attempting.
és remote: TF401019: The Git repository with name or identifier FabrikamFiber does not exist or you do not have permissions for the operation you are attempting.
A kivételekkel kapcsolatos problémák megoldásához kövesse az Alapszintű folyamat lépéseit.
Emellett explicit módon ki kell vennie az almodul-adattárakat az őket használó adattárak előtt . A példánkban ez az adattárat FabrikamFiberLib
jelenti.
Ha most futtatja a példafolyamatot, az sikeres lesz.
További konfiguráció
Az Azure-adattárak elérésekor a biztonság további javítása érdekében érdemes bekapcsolni a YAML-folyamatokban az adattárakhoz való hozzáférés védelmét.
Tegyük fel, hogy a SpaceGameWeb
folyamat EGY YAML-folyamat, és a YAML-forráskódja az alábbi kódhoz hasonlóan néz ki.
trigger:
- main
pool:
vmImage: ubuntu-latest
resources:
repositories:
- repository: SpaceGameWebReact
name: SpaceGameWeb/SpaceGameWebReact
type: git
- repository: FabrikamFiber
name: FabrikamFiber/FabrikamFiber
type: git
- repository: FabrikamChat
name: FabrikamFiber/FabrikamChat
type: git
steps:
- script: echo "Building SpaceGameWeb"
- checkout: SpaceGameWebReact
- checkout: FabrikamChat
condition: always()
- checkout: FabrikamFiber
submodules: true
condition: always()
- script: |
cd FabrikamFiber
git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" submodule update --recursive --remote
- script: cat $(Build.Repository.LocalPath)/FabrikamFiber/FabrikamFiberLib/README.md
- ...
Adattárakhoz való hozzáférés védelme YAML-folyamatokban
Az Azure DevOps részletes engedélyezési mechanizmust biztosít az Azure-adattárakhoz a YAML-folyamatok adattáraihoz való hozzáférés védelme beállítás formájában. Ezzel a beállítással egy YAML-folyamat kifejezetten engedélyt kér az összes Azure-adattár eléréséhez, függetlenül attól, hogy melyik projekthez tartoznak. További információ erről a beállításról. Ez a beállítás nem befolyásolja más típusú adattárak, például a GitHub által üzemeltetett tárházak megtekintését.
A futó példában, amikor ez a kapcsoló be van kapcsolva, a SpaceGameWeb
folyamat engedélyt kér a SpaceGameWebReact
projekt adattárának fabrikam-tailspin/SpaceGameWeb
és a FabrikamFiber
FabrikamChat
projekt adattárainak fabrikam-tailspin/FabrikamFiber
eléréséhez.
A példafolyamat futtatásakor az alábbi képernyőképhez hasonló build jelenik meg.
A rendszer kérni fogja, hogy adjon engedélyt a folyamat által kijelentkezett vagy erőforrásként definiált adattáraknak.
Ha így tesz, a folyamat futni fog, de sikertelen lesz, mert nem tudja kivenni az adattárat almodulként FabrikamFiberLib
FabrikamFiber
. A probléma megoldásához explicit módon tekintse meg például a FabrikamFiberLib
lépés hozzáadását - checkout: git://FabrikamFiber/FabrikamFiberLib
a -checkout: FabrikamFiber
lépés előtt.
Ha most futtatja a példafolyamatot, az sikeres lesz.
Az utolsó YAML-folyamat forráskódja az alábbi kódrészlethez hasonlóan néz ki.
trigger:
- main
pool:
vmImage: ubuntu-latest
resources:
repositories:
- repository: SpaceGameWebReact
name: SpaceGameWeb/SpaceGameWebReact
type: git
- repository: FabrikamFiber
name: FabrikamFiber/FabrikamFiber
type: git
- repository: FabrikamChat
name: FabrikamFiber/FabrikamChat
type: git
steps:
- script: echo "Building SpaceGameWeb"
- checkout: SpaceGameWebReact
- checkout: FabrikamChat
condition: always()
- checkout: git://FabrikamFiber/FabrikamFiberLib
- checkout: FabrikamFiber
submodules: true
condition: always()
- script: |
cd FabrikamFiber
git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" submodule update --recursive --remote
- script: cat $(Build.Repository.LocalPath)/FabrikamFiber/FabrikamFiberLib/README.md
Hibaelhárítás
Íme néhány problémás helyzet, és hogyan kezelhetők.
A git parancssori használatával ellenőrizheti az ugyanabban a szervezetben lévő adattárakat
Használja például a .. parancsot - script: git clone https://$(System.AccessToken)@dev.azure.com/fabrikam-tailspin/FabrikamFiber/_git/OtherRepo/
. A parancs sikertelen lesz, ha be van kapcsolva a YAML-folyamatok adattáraihoz való hozzáférés védelme.
A probléma megoldásához tekintse meg az OtherRepo
adattárat például a checkout
paranccsal - checkout: git://FabrikamFiber/OtherRepo
.
Az adattár egy másik adattárat használ almodulként
Tegyük fel, hogy a folyamat által kivetett adattárak egyike egy másik adattárat használ (ugyanabban a projektben) az almoduléval, ahogyan a példánkban az és FabrikamFiberLib
az FabrikamFiber
adattárak esetében is. További információ az almodulok megtekintéséről.
Tegyük fel továbbá, hogy olvasási hozzáférést adott a SpaceGame
build identitásának ehhez az adattárhoz, de az FabrikamFiber
adattár kivétele továbbra is meghiúsul az FabrikamFiberLib
almodul kivételekor.
A probléma megoldásához explicit módon tekintse meg FabrikamFiberLib
a következőt, például adjon hozzá egy - checkout: git://FabrikamFiber/FabrikamFiberLib
lépést az -checkout: FabrikamFiber
egyik előtt.
Klasszikus kiadási folyamatok
A kiadási folyamatok adattáraihoz való hozzáférés biztosításának folyamata hasonló a buildelési folyamatokhoz.
A szükséges lépések szemléltetéséhez egy futó példát használunk. A példánkban egy kiadási folyamat van elnevezve FabrikamFiberDocRelease
a fabrikam-tailspin/FabrikamFiberDocRelease
projektben. Tegyük fel, hogy a folyamat ellenőrzi a FabrikamFiber
projekt adattárát fabrikam-tailspin/FabrikamFiber
, futtat egy parancsot a nyilvános dokumentáció létrehozásához, majd közzéteszi azt egy webhelyen. Tegyük fel továbbá, hogy az FabrikamFiber
adattár az FabrikamFiberLib
adattárat használja (ugyanabban a projektben), mint egy almodul
Project-alapú buildidentitás használata klasszikus kiadási folyamatokhoz
Egy folyamat végrehajtásakor identitással fér hozzá különböző erőforrásokhoz, például adattárakhoz, szolgáltatáskapcsolatokhoz, változócsoportokhoz. A folyamat kétféle identitást használhat: egy projektszintű és egy gyűjteményszintű identitást. Az előbbi nagyobb biztonságot nyújt, az utóbbi könnyű használatot biztosít. További információ a hatókörön belüli build-identitásokról és a feladat-engedélyezési hatókörről.
Javasoljuk, hogy projektszintű identitásokat használjon a folyamatok futtatásához. Alapértelmezés szerint a projektszintű identitások csak abban a projektben férhetnek hozzá erőforrásokhoz, amelynek a tagja. Az identitás használata javítja a biztonságot, mivel csökkenti a rosszindulatú személyek hozzáférését a folyamat eltérítésekor.
Ha azt szeretné, hogy a folyamat projektszintű identitást használjon, kapcsolja be a Feladat engedélyezési hatókörének korlátozását az aktuális projektre a kiadási folyamatok beállításához.
A futó példában, amikor ez a kapcsoló ki van kapcsolva, a FabrikamFiberDocRelease
kiadási folyamat minden projekt összes adattárához hozzáférhet, beleértve az FabrikamFiber
adattárat is. Ha a kapcsoló be van kapcsolva, FabrikamFiberDocRelease
csak a fabrikam-tailspin/FabrikamFiberDocRelease
projekt erőforrásaihoz férhet hozzá, így az FabrikamFiber
adattár elérhetetlenné válik.
Ha futtatja a példafolyamatot, amikor bekapcsolja a kapcsolót, a folyamat sikertelen lesz, és a naplók közlik remote: TF401019: The Git repository with name or identifier FabrikamFiber does not exist or you do not have permissions for the operation you are attempting.
A problémák megoldásához kövesse az alapszintű folyamat lépéseit.
Ha most futtatja a példafolyamatot, az sikeres lesz.
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: