CIda o'zgaruvchilarni qanday shifrlaysiz?
sobes.tech AI
AIdan javob
CI tizimining o'rnatilgan imkoniyatlaridan foydalanib, o'zgaruvchilarni shifrlayman. GitLab CI/CD, GitHub Actions yoki Jenkins bo'lsin, har bir CI tizimida maxfiy ma'lumotlarni xavfsiz saqlash uchun funksiyalar mavjud. Bu o'zgaruvchilar faqat qurilish jarayonining ma'lum bosqichlarida mavjud bo'lib, loglarda ko'rsatilmaydi.
Masalan, GitLab CI da:
-
Atrof-muhit o'zgaruvchilari: Guruh yoki loyiha darajasida o'zgaruvchilar saqlanishi mumkin. Ular "himoyalangan" va "maskalangan" sifatida belgilangan. "Himoyalangan" faqat himoyalangan tarmoqlar va teglar uchun ishlatiladi, "maskalangan" qiymat loglarda to'liq mos kelganda yashiriladi.
# .gitlab-ci.yml # Atrof-muhit orqali o'zgaruvchiga kirish script: - echo $MY_SECRET_VARIABLE -
HashiCorp Vault: HashiCorp Vault kabi tashqi maxfiy saqlash joyi bilan integratsiya. GitLab CI Vault ga autentifikatsiya qilishi va jarayon davomida maxfiy ma'lumotlarni olishi mumkin.
# .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 # Maxfiy ma'lumot Vault dan avtomatik yuklanadi
GitHub Actions da:
-
Secrets: Repozitoriya yoki tashkilot darajasida maxfiy ma'lumotlar saqlanishi mumkin. Ular
${{ secrets.MY_SECRET }}orqali ish jarayonlarida mavjud. Qiymatlar loglarda ko'rsatilmaydi va saqlangandan so'ng API orqali olinmaydi.# .github/workflows/main.yml jobs: build: runs-on: ubuntu-latest steps: - name: Maxfiy ma'lumotdan foydalanish run: echo ${{ secrets.MY_SECRET }}
Jenkins da:
-
Credentials Plugin: Turli xil identifikatsiya ma'lumotlarini (foydalanuvchi nomi/parol, maxfiy matn, SSH kalit) shifrlangan holda saqlash imkonini beradi. Jenkinsfile yoki grafik interfeys orqali kirish mumkin.
// Jenkinsfile (Deklarativ pipeline) pipeline { agent any stages { Qurilish jarayonida, o'zgaruvchilar ishlatilganda, ular odatda atrof-muhit o'zgaruvchilari sifatida mavjud bo'ladi. stage('Maxfiy ma'lumotdan foydalanish') { steps { withCredentials([string(credentialsId: 'my-secret-id', variable: 'MY_VAR')]) { sh 'echo $MY_VAR' } } } } }
Umumiy prinsiplari:
- Doirani minimallashtirish: Maxfiy ma'lumotlar faqat kerakli bosqichlar va muhitlarda mavjud bo'lishi kerak.
- Loglarni yashirish: Maxfiy ma'lumotlarning qiymatlari pipeline bajarilishining loglarida yashiriladi.
- Rollarni ajratish: Faqat ruxsat etilgan foydalanuvchilar yoki tizimlar maxfiy ma'lumotlarni qo'shishi/ o'zgartirishi mumkin.
- Tashqi saqlash joylaridan foydalanish: Murakkabroq ssenariylar va markaziy maxfiy ma'lumotlarni boshqarish uchun Vault yoki shunga o'xshash yechimlar qo'llaniladi.