Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:ffit:3-jahr:cicd:learningunits:lu12:a [2026/05/14 17:37] – apeter | de:modul:ffit:3-jahr:cicd:learningunits:lu12:a [2026/05/18 23:27] (aktuell) – apeter | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== LU12a - Jenkins Secrets ====== | ====== LU12a - Jenkins Secrets ====== | ||
| + | Lokal werden Secrets oft in privaten '' | ||
| - | Anstatt Secrets direkt in die Jenkinsfile-Datei zu schreiben, wo es für alle mit Lesezugriff auf das Code-Repository lesbar wäre, können auf Jenkins | + | Die verschiedenen Typen von " |
| - | '' | + | ^ Typ ^ Zweck ^ Beispiele ^ Verwendung in Pipeline ^ |
| + | | Secret text | Einzelner String-Wert | API Keys, Tokens | <code groovy> | ||
| + | | Username/ | ||
| + | | SSH Key | SSH Zugriff | Server Deploy, Git SSH | <code groovy> | ||
| + | | Secret file | Datei als Secret | kubeconfig, JSON Keys, Zertifikate | <code groovy> | ||
| + | | Certificate | X.509 Zertifikate | mTLS, interne APIs | Zertifikatsbasierte Auth (zum Beispiel für Webhooks) | | ||
| - | ^ Unsicher | + | Nachfolgend ist die Verwendung in einem Jenkinsfile zu sehen. Die separate Helper-Function sorgt dafür, dass bei mehreren Stages nicht die Secret-ID mehrfach angegeben werden muss. |
| + | |||
| + | ^ Jenkinsfile mit Passwort-Leak | ||
| | < | | < | ||
| <code groovy> | <code groovy> | ||
| - | ... | + | environment { |
| + | DB_USER | ||
| + | DB_PASSWORD | ||
| + | } | ||
| + | | ||
| + | steps { | ||
| + | sh """ | ||
| + | docker run -d \ | ||
| + | --name $DB_CONTAINER \ | ||
| + | --restart unless-stopped \ | ||
| + | --network infra-net \ | ||
| + | -e POSTGRES_USER=$DB_USER \ | ||
| + | -e POSTGRES_PASSWORD=$DB_PASSWORD \ | ||
| + | -e POSTGRES_DB=$DB_NAME \ | ||
| + | -v $DB_VOLUME:/ | ||
| + | -v $WORKSPACE/ | ||
| + | postgres: | ||
| + | """ | ||
| + | } | ||
| </ | </ | ||
| </ | </ | ||
| <code groovy> | <code groovy> | ||
| + | def withDbCredentials(body) { | ||
| + | withCredentials([ | ||
| + | usernamePassword( | ||
| + | credentialsId: | ||
| + | usernameVariable: | ||
| + | passwordVariable: | ||
| + | ) | ||
| + | ]) { | ||
| + | body() | ||
| + | } | ||
| + | } | ||
| ... | ... | ||
| + | steps { | ||
| + | withDbCredentials { | ||
| + | sh """ | ||
| + | docker run -d \ | ||
| + | --name $DB_CONTAINER \ | ||
| + | --restart unless-stopped \ | ||
| + | --network infra-net \ | ||
| + | -e POSTGRES_USER=$DB_USER \ | ||
| + | -e POSTGRES_PASSWORD=$DB_PASSWORD \ | ||
| + | -e POSTGRES_DB=$DB_NAME \ | ||
| + | -v $DB_VOLUME:/ | ||
| + | -v $WORKSPACE/ | ||
| + | postgres:17 | ||
| + | """ | ||
| + | } | ||
| + | } | ||
| </ | </ | ||
| </ | </ | ||
| - | * Aktueller Stand | + | Ein wichtiger Grundsatz bezüglich der Sicherheit von Jenkins-Secrets |
| - | * .env-Files | + | |
| - | * Secrets in Github | + | |
| - | * Secrets | + | |
| - | * Sonar-Token | + | |
| - | * Webhook? | + | |
| - | '' | ||