ትርፍ፡
- የIaC ፅንሰ-ሀሳብ እና የቴራፎርም የስራ ኡደት (ኢኒት፣ እቅድ፣ ተግባራዊ፣ ግዛት፣ ሞጁል) የመረዳት ችሎታ እና ሰው ሰራሽ የማሰብ ችሎታ ደህንነቱ የተጠበቀ የHCL ረቂቆችን ይፈጥራል።
- ከመተግበሩ በፊት እያንዳንዱን ለውጥ በእቅድ የመፈተሽ ችሎታ እና ያልተጠበቁ የማጥፋት / የመተካት መስመሮችን ይያዙ
- ሚስጥሮችን ከኮዱ ውጭ የመጠበቅ፣ ሁኔታን በአስተማማኝ ሁኔታ የመጠበቅ እና የIAM ፈቃዶችን የመቀነስ መርሆዎችን የመተግበር ችሎታ።
ቀደም ሲል አገልጋይ ማዋቀር በደመና ፓነል በኩል ጠቅ ማድረግ ነበር፡ ቨርቹዋል ማሽን ይፍጠሩ፣ ኔትወርኩን ያዋቅሩ፣ የደህንነት ደንቡን ይጨምሩ። ይህ ዘዴ ቀርፋፋ፣ ለስህተት የተጋለጠ እና ሊደገም የማይችል ነበር - ለሁለተኛ ጊዜ ተመሳሳይ አካባቢን ማዘጋጀት ፈጽሞ የማይቻል ነበር። ዛሬ መሠረተ ልማት የሚተዳደረው እንደ ኮድ ነው። IaC (መሠረተ ልማት እንደ ኮድ) በእጅ ሳይሆን በጽሑፍ ፋይሎች ውስጥ ያሉ እንደ ሰርቨሮች፣ አውታረ መረቦች እና የውሂብ ጎታዎች ያሉ የደመና ሀብቶችን ለመግለጽ የሚደረግ አቀራረብ ነው። እነዚህ ፋይሎች በስሪት ቁጥጥር (ጂት) ውስጥ ይቀመጣሉ; ማን ምን፣ መቼ እና ምን እንደለወጠ ማየት ትችላለህ። ተመሳሳይ መሠረተ ልማትን ብዙ ጊዜ, በትክክል በተመሳሳይ መንገድ, በአንድ ትዕዛዝ ማዘጋጀት ይችላሉ.
በጣም የተለመደው የ IaC መሣሪያ ቴራፎርም ነው። ቴራፎርም የሚጽፏቸውን ፍቺዎች ኤች.ሲ.ኤል. (HashiCorp Configuration Language — Terraform's Configuration Language — Terraform’s Configuration Language) በተባለው ቋንቋ፣ ወደ የደመና አቅራቢው (AWS፣ Azure፣ GCP) ኤፒአይ ይተረጉሟቸዋል እና ሀብቶቹን ይፈጥራል። AI HCLን በደንብ ያውቃል እና ውስብስብ ብሎኮችን በፍጥነት ያመርታል። ነገር ግን በ IaC ውስጥ የስህተት ዋጋ ከፍ ያለ ነው፡ አንድ የተሳሳተ ትርጉም ሙሉውን የምርት ዳታቤዝ ማጥፋት ይችላል። ለዚህም ነው በቴራፎርም ወርቃማው ህግ እያንዳንዱን ለውጥ ከመተግበሩ በፊት 'በእቅድ' ማየት ነው።
የቴራፎርም ሩጫ ጊዜ
ቴራፎርም በሶስት መሰረታዊ ትዕዛዞች ይሰራል - እነዚህን ማወቅ የ AI ውፅዓትን ለመቆጣጠር ቅድመ ሁኔታ ነው፡
- `terraform init`፡ ፕሮጀክቱን ይጀምራል፣ አስፈላጊዎቹን የአቅራቢ ተሰኪዎችን ያወርዳል።
- `የቴራፎርም እቅድ'፡ የአሁኑን ሁኔታ ከተፈለገው ሁኔታ ጋር በማነፃፀር ምን እንደሚጨምር፣ ምን እንደሚቀየር፣ ምን እንደሚሰርዝ ያሳያል። ምንም ነገር አይተገበርም። በጣም ወሳኝ የደህንነት ደረጃ ነው.
- 'terraform apply'፡ በእውነቱ ዕቅዱን ይተገበራል፣ ግብዓቶችን ይፈጥራል/ያስተካክላል።
በተጨማሪም, ሁለት ጽንሰ-ሐሳቦች በጣም አስፈላጊ ናቸው. ግዛት (የግዛት ፋይል)፡- ይህ ቴራፎርም የሚያስተዳድራቸውን ሀብቶች ወቅታዊ ሁኔታ የሚይዝበት ፋይል ነው። ብዙውን ጊዜ በሩቅ እና በተቆለፈ መጋዘን ውስጥ ይከማቻል ስለዚህም ሁለት ሰዎች በአንድ ጊዜ እንዳይቀይሩት ወይም እንዳያጠፉት. ሞጁል: እንደገና ጥቅም ላይ ሊውል የሚችል የውቅር ጥቅል; ለምሳሌ, በብዙ ፕሮጀክቶች ውስጥ "ኔትወርክን አዘጋጅ" የሚለውን ሞጁል መጠቀም ይችላሉ.
ጠቃሚ ምክር: በ Terraform ውፅዓት ውስጥ በጣም አደገኛው ምልክት በእቅድ ውፅዓት ውስጥ መስመሮችን ማጥፋት ወይም -/+ (ተካ) ነው። እነዚህ ማለት ሀብቱ ይሰረዛል ማለት ነው። በእቅድ ውስጥ ያልተጠበቀ ጥፋት ካዩ፣ በጭራሽ አይተገብሩ፣ ለምን እንደታየ መጀመሪያ ይረዱ።
ደረጃ በደረጃ፡ IaCን ከ AI ጋር መፃፍ
- የተፈለገውን መሠረተ ልማት ግልጽ ያድርጉ. ልክ እንደ "አንድ ቪፒሲ፣ ሁለት ንዑስ መረቦች፣ አንድ የደህንነት ቡድን እና አንድ t3.micro EC2 በ eu-central-1" ኮንክሪት ይሁኑ።
- አቅራቢውን እና ሥሪትን ይግለጹ። የትኛው ደመና፣ የትኛው ቴራፎርም እና የአቅራቢው ስሪት? አንድን ስሪት ካልገለጹ፣ AI ጊዜው ያለፈበት/ተኳሃኝ ያልሆነ አገባብ ሊመለስ ይችላል።
- የHCL ረቂቅ እንዲዘጋጅ ያድርጉ። እንዲሁም ተለዋዋጮችን እና ውጤቶችን ይጠይቁ።
- ሚስጥር አውጣ። እንደ የይለፍ ቃሎች እና ቁልፎች ያሉ እሴቶች ወደ ኮዱ ሳይሆን ወደ ተለዋዋጭ እና ሚስጥራዊ ማከማቻ መሄድ አለባቸው።
- `init` + `እቅድ`ን ያሂዱ። የዕቅዱን ውጤት መስመር በመስመር ያንብቡ; ያልተጠበቁ ስረዛዎችን ያረጋግጡ።
- በትንሹ ይጀምሩ, ቀስ በቀስ ይተግብሩ. መጀመሪያ በገለልተኛ የፈተና መለያ/አካባቢ ላይ ያመልክቱ።
ደህንነት፡- IaC-ተኮር አደጋዎች
IaC ኃይለኛ የመሆኑን ያህል አደገኛ ነው። ሶስት ወሳኝ ነጥቦች፡-
- በመንግስት ፋይል ውስጥ አንድ ሚስጥር አለ. የቴራፎርም ግዛት አንዳንድ ጊዜ እንደ ዳታቤዝ የይለፍ ቃሎች ያሉ ሚስጥራዊነት ያላቸው እሴቶችን በግልፅ ጽሑፍ ውስጥ ያስቀምጣል። ግዛትን በሕዝብ ማከማቻ ውስጥ በጭራሽ አታስቀምጡ; የተመሰጠረ፣ የተገደበ መዳረሻ የርቀት ጀርባ ይጠቀሙ።
- በHCL ውስጥ ሚስጥሮችን አታካተት። እንደ የይለፍ ቃል = "prod123" ያሉ መስመሮች በቋሚነት ወደ Git ታሪክ ተጽፈዋል። በምትኩ፣ ተለዋዋጭ ተጠቀም እና እሴቱን በሂደት ከአካባቢው ተለዋዋጭ (TF_VAR_...) ወይም ከሚስጥር ቮልት ስጠው።
- በጣም ሰፊ የ IAM ፍቃድ። AI አንዳንድ ጊዜ እንደ አክሽን ያሉ ብሎኮችን ያወጣል፡ "*" (ሁሉንም ነገር ፍቀድ) "እንዲሰራ"። ይህ ተጋላጭነት ነው; ፈቃዱን ወደሚፈለገው ዝቅተኛ ማጥበብ።
ትኩረት፡ አንዴ ሚስጥር በጂት ታሪክ ውስጥ ከገባ በኋላ ፋይሉን ቢሰርዙትም ሊበላሽ ይችላል። በስህተት ከፈጸሙ, ወዲያውኑ ይሰርዙ እና ምስጢሩን ያሽከርክሩ; መሰረዝ ብቻ በቂ አይደለም።
አደገኛ እቅድ ምልክቶች ሰንጠረዥ
የህትመት እቅድ
ትርጉም
ምን ማድረግ እንዳለበት
+ ፍጠር
አዲስ ምንጭ ይታከላል
በአጠቃላይ ደህንነቱ የተጠበቀ ቢሆንም ይገምግሙ
~ በቦታ ማዘመን
ምንጩ በጣቢያው ላይ ይለወጣል
ተጽዕኖን ያረጋግጡ (መቋረጥ ይኖራል?)
-/+ መተካት
ይሰረዛል እና እንደገና ይፈጠራል።
ጥንቃቄ፡ የውሂብ መጥፋት ሊከሰት ይችላል።
- ማጥፋት
ሀብቱ ይወድማል
አቁም፡ ካልጠበቅሽው በጭራሽ አታመልከት።
ሶስት ጥቃቅን ጉዳዮች
ጉዳይ 1 - በ 3 ሰዓታት ውስጥ የ 2 ቀናት ሥራ። አንድ ቡድን አዲስ የሙከራ አካባቢን (VPC፣ subnets፣ RDS database፣ ECS ክላስተር) ለማዘጋጀት ቴራፎርምን ሊጽፍ ነበር ነገር ግን ገና ወደ HCL ተዛውረዋል። አርክቴክቸርን እና ሥሪቶቹን ለኤአይኤ ገልፀው ሞዱል ንድፍ አወጡ። እያንዳንዱን ሞጁል በእቅዱ አረጋግጠዋል እና በ 3 ሰዓታት ውስጥ እንዲሰራ እና እንዲሰራ አድርገዋል; በእጅ ሙከራ እና ስህተት ሁለት ቀን ሊወስድባቸው ይችላል።
ጉዳይ 2 - እቅዱ ተሰርዟል. አንድ መሐንዲስ በ AI የመነጨ የማሻሻያ ኮድ ሳይተገበር እቅድ አውጥቷል። የተገኘው ውጤት -/+ ለምርት ዳታቤዝ መተካት - AI ሊተካ የማይችል መስክ ለመተካት ሞክሯል ፣ ይህ ማለት የመረጃ ቋቱን መሰረዝ እና እንደገና መፍጠር ማለት ነው። መሐንዲሱ መተግበሩን አቁመው ለውጡን ወደ አስተማማኝ ዘዴ ቀየሩት። የማቀድ ልማድ አደጋን ይከላከላል።
ጉዳይ 3 - የተቀበረ ሚስጥራዊ ፍሳሽ. ጁኒየር፣ YZ የተሰጠ db_password = "S3cret!" መስመሩንም እንዳለ ወስኖ ገፋው። በኮድ ግምገማ ውስጥ ተይዟል; የይለፍ ቃሉ ወዲያውኑ ተሰርዟል እና ተለውጧል, እሴቱ ወደ ተለዋዋጭ ተወስዷል እና ከሚስጥር ቮልት ይመገባል. ትምህርት፡ በHCL ውስጥ ግልጽ የሆኑ ምስጢሮች በጭራሽ የሉም።
አራት ሊገለበጡ የሚችሉ አብነቶች
1) የመሠረተ ልማት ረቂቅ ማመንጨት;
የሚከተለውን መሠረተ ልማት በ[CLOUD: AWS] በ Terraform (ስሪት ~> 1.7) ላይ ይጻፉ፡ [ምንጭ ዝርዝር]። ክልል [X]. ሕጎች፡- ሁሉንም ሚስጥራዊነት ያላቸው እሴቶች እንዲለዋወጡ አድርግ፣ በHCL ውስጥ አታስቀምጣቸው። - የአቅራቢውን ሥሪት (የሚፈለጉ_አቅራቢዎችን) ያስተካክሉ። - የIAM ፍቃዶችን አሳንስ፣ "*" አትጠቀም - [X፣ Y] እንደ ውፅዓት ተመለስ። ኮድ በሞዱል እና ከማብራሪያ ጋር ይስጡ።
2) የዕቅዱን ውጤት መተርጎም;
ከታች ያለውን የ'ቴራፎርም እቅድ' ውጤት ይተንትኑ። ይዘርዝሩኝ፡(1) ምን አይነት ሃብቶች እንደታከሉ/የተቀየሩ/የተሰረዙ፣(2)መረጃ መጥፋት ወይም መቆራረጥ አደጋ ላይ ያሉ ረድፎች፣(3) ከማመልከቴ በፊት ልጠይቃቸው የሚገቡ 3 ጥያቄዎች።እቅድ፡[ውጤት]
3) ያለውን HCL ለደህንነት መርምር፡-
የሚከተለውን የቴራፎርም ኮድ ለደህንነት ያረጋግጡ፡ የተካተተ ሚስጥር፣ ከመጠን በላይ ሰፊ የIAM ፍቃድ፣ የአውታረ መረብ ህግ (0.0.0.0/0) ክፍት፣ ያልተመሰጠረ ማከማቻ? እያንዳንዱን ግኝት እንደ አስፈላጊነት እና እርማት በቅደም ተከተል ይፃፉ። ኮድ፡ [HCL]
4) ተደጋጋሚውን ኮድ ወደ ሞጁሉ ይለውጡ፡
የሚከተለውን ተደጋጋሚ የቴራፎርም ኮድ ወደ ተደጋጋሚ ሞጁል ይለውጡ፡ ምን አይነት እሴቶች ተለዋዋጮች መሆን አለባቸው፣ የሞጁሉ በይነገጽ ምን መሆን አለበት? እንዲሁም የአጠቃቀም ምሳሌን አሳይ። ኮድ፡ [HCL]
ደካማ ጥያቄ / ጠንካራ ጥያቄ
ደካማ፡ "በቴራፎርም የውሂብ ጎታ ፍጠር።"
ውጤት፡ የትኛው ደመና፣ የትኛው ሞተር፣ የትኛው ስሪት፣ እንደተመሳጠረ ወይም እንዳልተመሰጠረ ግልጽ ያልሆነ፤ በቀድሞው አገባብ፣ AI የይለፍ ቃሉን በኮዱ ውስጥ የሚያካትት በይፋ የሚገኝ ምሳሌ ማቅረብ ይችላል።
ጠንካራ፡ "RDS PostgreSQL 15 ምሳሌ በAWS በ Terraform ~> ፍጠር። 1.7 የይለፍ ቃሉን ተለዋዋጭ አድርግ፣ በኮዱ ውስጥ አታስቀምጠው። ማከማቻ የተመሰጠረ ነው፣ ከግል ሳብኔት ብቻ ነው የሚደረስ እንጂ ይፋዊ አይደለም። የአቅራቢውን እትም አስተካክል። እንደ ውፅዓት የመጨረሻ ነጥብ ተመለስ።"
ልዩነት፡ ሁለተኛው ጥያቄ ለኤንጂን፣ ስሪት፣ ምስጠራ፣ የአውታረ መረብ ገደብ እና ሚስጥራዊ ህግ ይሰጣል - ውጤቱ ደህንነቱ የተጠበቀ እና ለምርት ቅርብ ነው።
የተለመዱ ስህተቶች
- 'እቅድ' ሳያደርጉ 'ለማመልከት' በ IaC ውስጥ በጣም ውድ የሆነ ስህተት; ሁልጊዜ መጀመሪያ ያቅዱ።
- በ HCL ውስጥ ምስጢር መክተት። በ Git ታሪክ ውስጥ ዘላቂ መፍሰስን ይፈጥራል።
- ደህንነቱ ያልተጠበቀ ሁኔታን በማከማቸት ላይ። ያልተመሰጠረ፣ የተከፈተ፣ የህዝብ መንግስት አደጋ ነው።
- ስሪቱን አለመስተካከል. አንድን ስሪት ሳይገልጹ አቅራቢን መጠቀም ለወደፊቱ ድንገተኛ ውድቀቶች ያስከትላል።
- *`እርምጃ፡ እንደ "" ያለ ሰፊ ፍቃድ።** የአነስተኛ መብትን መርህ ይጥሳል።
- ያልተጠበቀ 'ማጥፋት'ን ችላ በማለት። በፕላኑ ውስጥ ያለ ምንም ጥያቄ የማጥፋት መስመሮችን መተግበር.
በማጠቃለያው
IaC መሠረተ ልማትን ወደ ተደጋጋሚ፣ ሊታተም የሚችል እና ሊመረመር የሚችል ኮድ ይለውጣል። በጣም የተለመደው መሳሪያ ቴራፎርም ነው. AI በፍጥነት የHCL stubs ያመርታል፣ ነገር ግን ስሪቱን፣ ደመና-ተኮር ዝርዝሮችን እና የደህንነት ደንቦችን ማቅረብ አለቦት። በቴራፎርም ውስጥ ያለው የማይሳሳት ህግ፡ እያንዳንዱን ለውጥ በእቅድ ለማየት፣ ያልተጠበቁ ስረዛዎችን ለመጠየቅ፣ ሚስጥሮችን ከኮዱ ለማራቅ እና መንግስትን በአስተማማኝ ሁኔታ ለመጠበቅ። በእቅድ ውፅዓት ውስጥ ያሉ መስመሮችን ማጥፋት እና መተካት በጣም በጥንቃቄ ሊነበቡ የሚገባቸው ቦታዎች ናቸው።
የመተግበሪያ ተግባር
ከላይ ያለውን "የመሰረተ ልማት ንድፍ ፍጠር" አብነት በመጠቀም AI ትንሽ መሠረተ ልማት (ለምሳሌ የማከማቻ ባልዲ እና የመዳረሻ ፖሊሲ) እንዲያመነጭ ያድርጉ። ከዚያ፡ (1) ምስጢራዊ ወይም * ፈቃዶችን በኮዱ ውስጥ የተከተተ የ"ማጣራት" አብነት ማረጋገጫ ያድርጉ። (2) ከተቻለ init + እቅድን በሙከራ መለያ ውስጥ ያሂዱ እና የዕቅዱን ውጤት በ"ፕላን ትርጓሜ" አብነት ያንብቡ። (3) ያልተጠበቁ ስረዛዎችን/ ለውጦችን አስተውል።
የማረጋገጫ ዝርዝር
- [ ] ደመና፣ ቴራፎርም/የአቅራቢ ሥሪት፣ እና ምስጠራ/የአውታረ መረብ ገደቦችን በጥያቄዬ ላይ አክያለሁ።
- [] በኮዱ ውስጥ ግልጽ የሆነ ሚስጥር የለም; ትክክለኛ እሴቶች ተለዋዋጭ።
- [ ] IAM/ፈቃዶችን በትንሹ ፍቃዶችን ቀነስኩ፣ * አልተጠቀምኩም።
- [ ] ከመተግበሩ በፊት እቅድ አውጥቼ የውጤት መስመሩን በመስመር አነበብኩ።
- [ ] በእቅዱ ውስጥ ያልተጠበቀ ጥፋት/መተካት እንደሌለ አረጋግጫለሁ።
- [ ] እርግጠኛ ነኝ ግዛቱ በተመሰጠረ፣ በተቆለፈ እና በተገደበ የኋላ ክፍል ውስጥ እንደሚቀመጥ እርግጠኛ ነኝ።