Middle+
Ինչպե՞ս եք կառավարում զգայուն տվյալները GitLab CI-ում: Ինչպե՞ս է տեղի ունենում դրանց փոխանցումը։
sobes.tech AI
Պատասխան AI-ից
Կառավարում եմ զգայուն տվյալներով GitLab CI-ում հիմնականում օգտագործելով նախապես սահմանված շրջակա միջավայրի փոփոխականներ, CI/CD խմբերի փոփոխականներ և Kubernetes գաղտնիքներ:
Տրանսմիսիան տեղի է ունենում հետևյալ կերպ՝
- Նախապես սահմանված փոփոխականներ: Ավտոմատ տրամադրվում են GitLab Runner-ով՝ պայլայնի կատարման ժամանակ: Դրանք ներառում են նախագծի ID, ճյուղի անուն, կառուցման կարգավիճակ և այլն: Որոշները կարող են լինել զգայուն (օրինակ՝ ծառայողական տոքեններ, եթե դրանք կարգավորել են): Դասական հասանելիությունը սահմանափակ է առաջադրանքի կոնտեքստով:
- CI/CD փոփոխականներ: Դրանք սահմանվում են GitLab նախագծի կամ խմբի կարգավորումներում և կարող են նշվել որպես "Protected" (միայն հասանելի են պաշտպանված ճյուղերում և տեգերում) և "Masked" (թողարկման ժամանակ թաքնված են լոգերում): Դրանք կարող են պարունակել գաղտնաբառեր, API բանալիներ և այլն: Թույլատրվում է փոխանցել ծածկագրված տեսքով:
- Կազմի CI/CD խմբեր: Դրանք թույլ են տալիս կենտրոնական կառավարում փոփոխականների՝ մի քանի նախագծերի համար խմբում: Հարմար է ընդհանուր գաղտնիքների համար: Աշխատում են նույն կերպ՝ փոխանցման և պաշտպանության տեսանկյունից:
- Kubernetes գաղտնիքներ: Եթե նախագիծը տեղակայված է Kubernetes կլաստերում, զգայուն տվյալները կարող են պահվել K8s Secrets-ում: GitLab CI-ն կարող է կարգավորվել այդ գաղտնիքներին մուտք ունենալու համար՝
.gitlab-ci.ymlֆայլում նշելով:
variables:
MY_SECRET_VAR: $MY_SECRET_VARIABLE_FROM_SETTINGS # Նախագծի կարգավորումներից փոփոխական
# Օրինակ՝ փոփոխականների օգտագործում սցրիպտում
script:
- echo $MY_SECRET_VAR # Փոփոխականը փոխանցվում է կոնտեյների շրջակա միջավայրին
test_job:
image: ubuntu:latest
variables:
MY_PROTECTED_VAR: "this is a protected secret"
rules:
- if: '$CI_COMMIT_BRANCH == "master"' # Օրինակ՝ կանոն օգտագործելու համար պաշտպանված փոփոխականի
script:
- echo "Running on branch: $CI_COMMIT_BRANCH"
- echo "My protected variable: $MY_PROTECTED_VAR" # Փոփոխականը հասանելի է
Այս բոլոր փոփոխականների փոխանցումը կատարվում է ծածկագրված ձևով՝ GitLab Runner-ից կատարման միջավայր՝ կոնտեյներ կամ վիրտուալ մեքենա: Դրանք հասանելի են որպես շրջակա միջավայրի փոփոխականներ՝ ներսում կատարման միջավայրում: Կարևոր է նվազեցնել դրանց արտածումը լոգերում և օգտագործել մասկեր։ Անհրաժեշտ է նաև կանոնավոր կերպով կատարել մուտքի վերահսկում՝ այս փոփոխականների և գաղտնիքների նկատմամբ։