Hogyan titkosítja a változókat a CI-ben?
sobes.tech MI
Válasz az MI-től
Titkos változókat a CI-rendszer beépített lehetőségeit használva titkosítom. Minden CI-rendszer, legyen az GitLab CI/CD, GitHub Actions vagy Jenkins, rendelkezik biztonságos titkos tárolási funkciókkal. Ezek a változók csak bizonyos build folyamat szakaszában érhetők el, és nem jelennek meg a naplókban.
Például GitLab CI esetén:
-
Környezeti változók: Csoport vagy projekt szinten tárolhatók változók. Ezek "védett" és "maszkolt" címkéket kapnak. A "védett" változók csak védett ágakon és tageken használhatók, a "maszkolt" értékek pedig el vannak rejtve a naplókban, ha teljesen megegyeznek.
# .gitlab-ci.yml # Változó elérése környezeti változóként script: - echo $MY_SECRET_VARIABLE -
HashiCorp Vault: Külső titkos tároló, például HashiCorp Vault integrációja. A GitLab CI autentikálhat a Vault-ba, és a futás során lekérheti a titkokat.
# .gitlab-ci.yml variables: VAULT_SERVER: "https://vault.example.com" VAULT_AUTH_ROLE: "gitlab-ci" VAULT_AUTH_PATH: "auth/kubernetes" VAULT_SECRETS: | MY_SECRET_KEY: vault/path/to/secret:key script: - echo $MY_SECRET_KEY # A változó automatikusan betöltődik a Vault-ból
GitHub Actions esetén:
-
Titkok: Repozitórium vagy szervezet szinten tárolhatók titkok. A
${{ secrets.MY_SECRET }}szintaxissal érhetők el a munkafolyamatokban. Az értékek nem jelennek meg a naplókban, és API-n keresztül sem érhetők el a mentés után.# .github/workflows/main.yml jobs: build: runs-on: ubuntu-latest steps: - name: Use secret run: echo ${{ secrets.MY_SECRET }}
Jenkins esetén:
-
Credentials Plugin: Lehetővé teszi különböző típusú hitelesítési adatok (felhasználónév/jelszó, titkos szöveg, SSH-kulcs) tárolását titkosított formában. Ezekhez hozzáférhet a Jenkinsfile-ból vagy a grafikus felületen keresztül.
// Jenkinsfile (Declarative Pipeline) pipeline { agent any stages { // A build folyamat során a változók általában környezeti változóként érhetők el. stage('Use Secret') { steps { withCredentials([string(credentialsId: 'my-secret-id', variable: 'MY_VAR')]) { sh 'echo $MY_VAR' } } } } }
Általános elvek:
- Korlátozott láthatóság: A titkok csak azokban a szakaszokban és környezetekben érhetők el, ahol szükséges.
- Naplók maszkolása: A titkos értékek el vannak rejtve a build naplókban.
- Szerepkörök szétválasztása: Csak jogosult felhasználók vagy rendszerek adhatnak hozzá vagy módosíthatnak titkokat.
- Külső tárolók használata: Komplexebb forgatókönyvekhez és központosított titokkezeléshez Vault vagy hasonló megoldások használhatók.