पाठ 18 / 24

CI/CD में Secrets

लंबी उम्र वाली keys की जगह CI secret stores, service accounts और अल्पकालिक credentials उपयोग करें।

मशीन की अपनी पहचान

CI कभी किसी व्यक्ति के credentials न उपयोग करे। एक service account बनाएँ जिसे pipeline के ज़रूरी vaults का ही access हो और उसका token CI system के secret store में रखें। जहाँ आपका cloud समर्थन करे, वहाँ रखी हुई लंबी उम्र की keys की जगह अल्पकालिक credentials (OpenID Connect) चुनें।

GitHub Actions का एक step

Service account token GitHub Secrets में रहता है। यह step job में एक secret लोड करता है और logs में उसे छिपा देता है।

- name: Load secrets
  uses: 1password/load-secrets-action@v2
  with:
    export-env: true
  env:
    OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }}
    DATABASE_URL: op://CI/Postgres/url

CI में कभी print न करें

Secrets वाले jobs में echo या shell tracing (set -x) न चलाएँ। Forks के pull requests में सावधान रहें: अविश्वसनीय कोड को secrets न दिखाएँ।

त्वरित जाँच: CI pipeline किससे authenticate करे?

  • किसी developer का personal login
  • सीमित दायरे वाला service account
  • Master password
  • कोई authentication नहीं
Answer

सीमित दायरे वाला service account — Service account सीमित और रद्द की जा सकती है, बिना किसी व्यक्ति पर असर डाले।