Чӣ тавр тағйирёбандаҳоро дар CI рамзгузорӣ мекунед?
sobes.tech AI
Ҷавоб аз AI
Мен кодирую айнымалыларды CI жүйесінің кіріктірілген мүмкіндіктерін пайдалана отырып. Әрбір CI жүйесі, ол GitLab CI/CD, GitHub Actions немесе Jenkins болсын, қауіпсіз құпияларды сақтау функцияларына ие. Бұл айнымалылар тек құрастыру процесінің белгілі бір кезеңдерінде қол жетімді және журналдарда көрсетілмейді.
Мысалы, GitLab CI-де:
-
Қоршаған орта айнымалылары: Топ немесе жоба деңгейінде айнымалыларды сақтауға болады. Олар "қорғалған" және "маскировкаланған" деп белгіленеді. "Қорғалған" тек қорғалған тармақтар мен тегтерде пайдаланылады, "маскировкаланған" мәні журналдарда толық сәйкес келсе жасырын болады.
# .gitlab-ci.yml # Айнымалыға қоршаған орта арқылы қол жеткізу script: - echo $MY_SECRET_VARIABLE -
HashiCorp Vault: Сыртқы құпия сақтау қоймасымен интеграция, мысалы HashiCorp Vault. GitLab CI Vault-қа аутентификациялана алады және орындалу кезінде құпияларды ала алады.
# .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 # Айнымалы автоматты түрде Vault-тан жүктеледі
GitHub Actions-те:
-
Құпия сөздер: Репозиторий немесе ұйым деңгейінде құпия сөздерді сақтауға болады. Олар
${{ secrets.MY_SECRET }}арқылы жұмыс процесінде қол жетімді. Мәндер журналдарда көрсетілмейді және сақтау кейін API арқылы алуға болмайды.# .github/workflows/main.yml jobs: build: runs-on: ubuntu-latest steps: - name: Құпия сөзді пайдалану run: echo ${{ secrets.MY_SECRET }}
Jenkins-те:
-
Credentials Plugin: Әр түрлі типтегі куәліктерді (қолданушы аты/құпия сөз, құпия мәтін, SSH кілті) шифрланған түрде сақтауға мүмкіндік береді. Оларға Jenkinsfile-да немесе графикалық интерфейсте қол жеткізуге болады.
// Jenkinsfile (Декларативті Pipeline) pipeline { agent any stages { Құрастыру процесінде қолданылатын айнымалылар әдетте орта айнымалылары ретінде қол жетімді. stage('Use Secret') { steps { withCredentials([string(credentialsId: 'my-secret-id', variable: 'MY_VAR')]) { sh 'echo $MY_VAR' } } } } }
Жалпы принциптер:
- Ауқымды шектеу: Құпиялар тек қажетті кезеңдерде және ортада қол жетімді.
- Журналдарды маскалау: Құпия мәндер орындалу журналдарында жасырын.
- Рөлдерді бөлу: Тек рұқсат етілген пайдаланушылар немесе жүйелер құпияларды қосуға/өзгертуге мүмкіндік береді.
- Сыртқы сақтау қоймаларын пайдалану: Күрделі сценарийлер мен орталықтандырылған құпия басқару үшін Vault немесе ұқсас шешімдер пайдаланылады.