Kā jūs šifrējat mainīgos CI?
sobes.tech AI
Atbilde no AI
Es šifrēju mainīgos, izmantojot CI sistēmas iebūvētās iespējas. Katra CI sistēma, vai tas būtu GitLab CI/CD, GitHub Actions vai Jenkins, ir funkcijas drošai slepeno datu glabāšanai. Šīs mainīgās ir pieejamas tikai noteiktos būvniecības procesa posmos un nav redzamas žurnālos.
Piemēram, GitLab CI:
-
Vides mainīgās: Grupas vai projekta līmenī var saglabāt mainīgās. Tās ir marķētas kā "aizsargātas" un "maskētas". "Aizsargātas" tiek izmantotas tikai aizsargātās zaru un zīmogu gadījumā, "maskētas" slepen vērtību žurnālos, ja tā pilnībā sakrīt.
# .gitlab-ci.yml # Pieeja mainīgajai caur vides mainīgo script: - echo $MY_SECRET_VARIABLE -
HashiCorp Vault: Integrācija ar ārēju slepeno datu glabātuvi, piemēram, HashiCorp Vault. GitLab CI var autentificēties Vault un saņemt slepenos datus izpildes laikā.
# .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 # Mainīgais automātiski ielādēts no Vault
GitHub Actions:
-
Slepenie dati: Repozitārija vai organizācijas līmenī var glabāt slepenos datus. Tie ir pieejami darba plūsmās caur
${{ secrets.MY_SECRET }}. Vērtības nav redzamas žurnālos un pēc saglabāšanas tās nevar iegūt caur API.# .github/workflows/main.yml jobs: build: runs-on: ubuntu-latest steps: - name: Izmantot slepeno run: echo ${{ secrets.MY_SECRET }}
Jenkins:
-
Credentials Plugin: ļauj glabāt dažādu veidu akreditācijas datus (lietotājvārds/parole, slepens teksts, SSH atslēga) šifrētā veidā. Tie ir pieejami Jenkinsfile vai caur grafisko saskarni.
// Jenkinsfile (Deklaratīvs pipeline) pipeline { agent any stages { Darba procesā, kur izmanto mainīgās, tie parasti ir pieejami kā vides mainīgās. stage('Use Secret') { steps { withCredentials([string(credentialsId: 'my-secret-id', variable: 'MY_VAR')]) { sh 'echo $MY_VAR' } } } } }
Vispārējie principi:
- Minimizēt apjomu: Slepenās ir pieejamas tikai tiem posmiem un vidēs, kur tās ir nepieciešamas.
- Žurnālu maskēšana: Slepeno vērtības ir slēptas izpildes žurnālos.
- Lomu atdalīšana: Tikai autorizēti lietotāji vai sistēmas var pievienot/mainīt slepenos datus.
- Izmanto ārējos glabātuves: Sarežģītākiem scenārijiem un centralizētai slepeno datu pārvaldībai tiek izmantoti Vault vai līdzīgi risinājumi.