Titkos kódok védelme az Azure Pipelinesban
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Ez a cikk az Azure Pipelines titkos kulcsainak védelmére vonatkozó ajánlott eljárásokat ismerteti. A titkos kód minden olyan dolog, amelyhez szigorúan szabályozni szeretné a hozzáférést, például API-kulcsokat, jelszavakat, tanúsítványokat vagy titkosítási kulcsokat.
Az Azure Pipelines nem hoz létre titkos értékeket. Előfordulhat azonban, hogy titkos kulcsot kell hozzáadnia egy folyamathoz a bizalmas adatok, például egy API-kulcs tárolásához. A titkos változók beállításával kapcsolatos további információkért lásd: Titkos kódváltozók beállítása.
Ne használjon titkos kulcsokat, ha egy másik módszer is elérhető
A legjobb módszer a titkos kódok védelmére, ha nem rendelkezik titkos kóddal. Ellenőrizze, hogy a folyamat használhat-e más módszert, mint titkos kód használata a feladat végrehajtásához.
- Szolgáltatáskapcsolatok használata:
- Amikor az Azure-t vagy más szolgáltatásokat célozza, a változók titkos kulcsainak kezelése helyett használjon szolgáltatáskapcsolatokat.
- A szolgáltatáskapcsolatok lehetővé teszik a külső szolgáltatásokhoz való biztonságos csatlakozást anélkül, hogy bizalmas információkat tárhat fel közvetlenül a folyamatkonfigurációban.
- További információ: Szolgáltatáskapcsolatok kezelése és Csatlakozás a Microsoft Azure-hoz Azure Resource Manager-szolgáltatáskapcsolattal.
Felügyelt identitások használata:
- Fontolja meg a felügyelt identitások használatát a titkos kódok közvetlen kezelése helyett.
- A felügyelt identitások lehetővé teszik, hogy az alkalmazások és szolgáltatások explicit hitelesítő adatok nélkül hitelesítsék a biztonságot az Azure-szolgáltatásokkal.
- A felügyelt identitásokkal más Azure-szolgáltatásokhoz is hozzáférhet.
Azure CLI-feladat:
- Ha az Azure CLI-feladatot használja, a folyamat során fontolja meg a beállítás használatát a
addSpnToEnvironment
szolgáltatásnév részleteinek szkriptben való eléréséhez a titkos kódok explicit átadása nélkül.
- Ha az Azure CLI-feladatot használja, a folyamat során fontolja meg a beállítás használatát a
További információ: Szolgáltatásnevek és felügyelt identitások használata
Titkos változók használata
A bizalmas értékeket soha ne tárolja egyszerű szövegként egy Azure Pipelines -.yml fájlban.
Titkos változók használhatók személyes adatokhoz, például jelszavakhoz, azonosítókhoz és egyéb olyan azonosító adatokhoz, amelyeket nem szeretne felfedni egy folyamatban. Javasoljuk, hogy az Azure Key Vaulttal állítson be titkos változókat . Titkos változókat a felhasználói felületen vagy egy változócsoportban is beállíthat. Nem javasoljuk, hogy naplózási paranccsal állítson be titkos változót. Ha egy naplózási paranccsal állít be egy titkos kulcsot, a folyamathoz hozzáféréssel rendelkezők is láthatják a titkos kódot.
A titkos változók titkosítva vannak, és az értékek felfedése nélkül használhatók folyamatokban. Bár az értékek nincsenek közzétéve, soha ne visszhangozza a titkos kulcsokat kimenetként, és ne adja át a titkos kulcsokat a parancssorban. Ehelyett azt javasoljuk, hogy a titkos kulcsokat környezeti változókra képezheti le.
Titkos kód létrehozásakor kövesse a változó elnevezési irányelveket , és győződjön meg arról, hogy a titkos név nem fedi fel a bizalmas információkat.
Titkos változókhoz való hozzáférés korlátozása
Az Azure DevOps titkos kulcsokhoz való hozzáférésének korlátozásához kövesse az alábbi ajánlott eljárásokat:
- Titkos kulcsait az Azure Key Vaultban tárolhatja. Az Azure Key Vault segítségével ezután az Azure szerepköralapú hozzáférés-vezérlési modelljével korlátozhatja a titkos kódokhoz vagy titkos kulcsok csoportjához való hozzáférést.
- Titkos változók beállítása a folyamat felhasználói felületén. A folyamat folyamatbeállítási felhasználói felületén beállított titkos változók hatóköre arra a folyamatra terjed ki, amelyben be vannak állítva. Így olyan titkos kulcsokkal rendelkezhet, amelyek csak az adott folyamathoz hozzáféréssel rendelkező felhasználók számára láthatók.
- Titkos kulcsok beállítása változócsoportban. A változócsoportok a kódtár biztonsági modelljét követik. Szabályozhatja, hogy ki definiálhat új elemeket egy tárban, és ki használhat meglévő elemet.
Ne írjon titkos kulcsokat a naplókba
Az Azure Pipelines megpróbál titkos kulcsokat súrolni a naplókból, ahol csak lehetséges, de ez nem bolondbiztos. Ne visszhangozza a titkos kulcsokat a konzolon, használja őket parancssori paraméterekben, és ne naplózhassa őket fájlokba. Legyen óvatos, ha bizalmas információkat tartalmazó Azure CLI-parancsokat használ. Használja a None output format
, és ha le kell kérnie egy titkos kulcsot egy Azure CLI-hívásból. Use none output format and retrieve security information to a secret variable
Ne használjon strukturált adatokat titkos kulcsként
Ne használjon strukturált adatformátumokat( például JSON, XML vagy YAML) a titkos értékek beágyazásához, beleértve a vezérlőkarakterek, például a kocsivisszaadás \r
és a vonalcsatorna\n
használatát. Ehelyett hozzon létre egyedi titkos kulcsokat minden bizalmas értékhez. Ez a megközelítés jobb újraírási pontosságot biztosít, és minimalizálja a bizalmas adatok véletlen felfedésének kockázatát.
Titkos kódok kezelésének naplózása
Az Azure Pipelines titkos kulcsainak felhasználásának naplózásához kövesse az alábbi ajánlott eljárásokat:
- Forráskód áttekintése: Vizsgálja meg a folyamatot üzemeltető adattár forráskódját. Annak érdekében, hogy a titkos kulcsok kezelése megfelelően történjen, ellenőrizze a folyamatban használt feladatokat. Ellenőrizze például, hogy a titkos kulcsokat nem véletlenül küldi-e el a rendszer a nem kívánt gazdagépeknek, vagy explicit módon nyomtatja-e ki a napló kimenetére.
- Futtatási naplók vizsgálata: Az érvényes és érvénytelen bemenetek tesztelése után tekintse meg a folyamat futtatási naplóit. Győződjön meg arról, hogy a titkos kulcsok megfelelően vannak kitéve, és ne legyenek felfedve. Előfordulhat, hogy a parancsok vagy eszközök hibái véletlenül titkos kulcsokat szivárogtatnak ki a hibanaplókba. Bár az Azure Pipelines megpróbálja megtisztítani a naplók titkos kulcsait, a manuális felülvizsgálat továbbra is elengedhetetlen.
Titkos kulcsok naplózása és elforgatása
A titkos kódok naplózásához és elforgatásához kövesse az alábbi ajánlott eljárásokat:
- Regisztrált titkos kódok áttekintése: Rendszeresen értékelje a folyamatokban regisztrált titkos kulcsokat. Győződjön meg arról, hogy továbbra is szükség van rájuk, és távolítsa el azokat, amelyekre már nincs szükség, ami segít csökkenteni az átnézetlenséget és a potenciális biztonsági kockázatokat.
- Titkos kulcsok elforgatása: A titkos kulcsok rendszeres elforgatásával minimalizálható az az idő, amely alatt a titkos kulcsok kihasználhatók. A titkos kódok rendszeres módosításával növelheti a biztonságot.
- Válassza ki a megfelelő hitelesítési módszert
- A használt titkos kódok típusai:
- Személyes hozzáférési jogkivonatok (PAT-k): Ezeket a jogkivonatokat használják a hitelesítéshez. A megfelelő hitelesítési módszer kiválasztásakor kövesse a biztonsági ajánlott eljárásokat. A PAT-okat a REST API használatával kezelheti.
- Titkos változók: Titkos változók használatával biztonságosan tárolhat bizalmas információkat, például API-kulcsokat, jelszavakat vagy más hitelesítő adatokat a folyamaton belül.
- Azure Key Vault-titkos kódok: Az Azure Key Vault használatával biztonságosan tárolhatja és kezelheti a titkos kulcsokat.
- Szolgáltatáskapcsolatok: Ezek a szolgáltatáskapcsolatok lehetővé teszik, hogy a folyamat külső szolgáltatásokhoz (például Azure, GitHub, Docker Hub) csatlakozzon. Gondoskodjon a szolgáltatáskapcsolati titkos kódok megfelelő konfigurálásának és biztonságos kezeléséről.
- A használt titkos kódok típusai:
YAML-sablonok használata
Ahelyett, hogy közvetlenül a folyamat YAML-jében titkos paraméterekkel rendelkező beágyazott szkripteket használnál, használjon sablonokat. Ez a megközelítés növeli a biztonságot azáltal, hogy a bizalmas információkat a fő folyamattól távol absztrakcióval távolítja el.
A módszer implementálásához hozzon létre egy külön YAML-fájlt a szkripthez, majd tárolja a szkriptet egy külön, biztonságos adattárban. Ezután hivatkozhat a sablonra, és paraméterként átadhat egy titkos változót a YAML-ben. A biztonságos változónak az Azure Key Vaultból, egy változócsoportból vagy a folyamat felhasználói felületéről kell származnia. A sablonok használatával kapcsolatos további információkért tekintse meg a sablonhasználati referenciát.
Titkos kódok korlátozása ágszabályzatokkal és változócsoport-engedélyekkel
Annak érdekében, hogy a titkos kulcsok az main
ághoz legyenek kötve, és ne legyenek elérhetők a véletlenszerű ágak számára, használhat változócsoport-engedélyeket, feltételes feladatbeszúrást és ágszabályzatokat.
A fiókszabályzatokkal olyan buildérvényesítési szabályzatokat kényszeríthet ki, amelyek csak a fő ágból engedélyezik a buildeket. Ezután változócsoport-engedélyekkel gondoskodhat arról, hogy csak az engedélyezett folyamatok férhessenek hozzá a változócsoportban tárolt titkos kódokhoz. Végül a folyamat egyik feltételével meggyőződhet arról, hogy a változócsoportra csak az main
ágra való leküldéssel lehet hivatkozni.
jobs:
- job: ExampleJob
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
pool:
vmImage: 'ubuntu-latest'
steps:
- script: echo "This runs only for the main branch"
displayName: 'Conditional Step'
variables:
- group: your-variable-group-name