નફો:
- સંકુચિત પરવાનગીઓ અને સલામત ડિફોલ્ટ્સ સાથે આર્ટિફિશિયલ ઇન્ટેલિજન્સ સાથે IaC (ટેરાફોર્મ, એન્સિબલ) કોડ બનાવવાની ક્ષમતા અને ઘોષણાત્મક અભિગમને સમજવાની ક્ષમતા
- પ્લાન/ચેક આઉટપુટ લાગુ કરતાં પહેલાં ડિલીટ અને ફોર્સ રિપ્લેસમેન્ટ લાઇન વાંચીને કેપ્ચર કરીને ડેટા નુકશાન અટકાવવાની ક્ષમતા
- સ્ટેટ ફાઇલને રિમોટ બેકએન્ડમાં એન્ક્રિપ્ટેડ, લૉક કરીને અને નાના, ઉલટાવી શકાય તેવા પગલાઓમાં ફેરફારોને તોડીને ગુપ્ત લિકેજને રોકવાની ક્ષમતા
કોડ (IaC) તરીકે ઈન્ફ્રાસ્ટ્રક્ચરનું સંચાલન: AI સાથે ટેરાફોર્મ, એન્સિબલ અને પ્લાન કંટ્રોલ
ભૂતકાળમાં, સર્વરનું સેટઅપ મેન્યુઅલ ક્લિક્સ, આદેશો અને વ્યક્તિગત નોંધો સાથે કરવામાં આવતું હતું; પરિણામ પુનઃઉત્પાદન ન કરી શકાય તેવા "સ્નોવફ્લેક" સર્વર્સ હતા કે જે કેવી રીતે સેટ કરવું તે કોઈને બરાબર ખબર ન હતી. ઇન્ફ્રાસ્ટ્રક્ચર એઝ કોડ (IaC) એ અભિગમ છે જે આ અરાજકતાને સમાપ્ત કરે છે: સર્વર્સ, નેટવર્ક્સ, સુરક્ષા નિયમો હાથ દ્વારા નહીં, પરંતુ વર્ઝનેબલ ટેક્સ્ટ ફાઇલો (કોડ) દ્વારા વ્યાખ્યાયિત કરવામાં આવે છે. જ્યારે તમે આ કોડ ચલાવો છો, ત્યારે ઈન્ફ્રાસ્ટ્રક્ચર બરાબર સેટ થઈ જાય છે જે રીતે તમે તેને લખ્યું હતું — સમાન, દસ્તાવેજીકૃત અને દરેક વખતે પુનરાવર્તિત થઈ શકે છે. ક્લાઉડ ઈન્ફ્રાસ્ટ્રક્ચર માટે ટેરાફોર્મ અને ક્લાઉડફોર્મેશન અને સર્વર રૂપરેખાંકન માટે જવાબદાર સૌથી સામાન્ય સાધનો છે. અહીં AI આ IaC કોડ લખવામાં, સમજાવવામાં અને સમીક્ષા કરવામાં ખૂબ જ કુશળ છે. પરંતુ IaC ની શક્તિ પણ તેનો ભય છે: એક ખોટી લાઇન સમગ્ર ઇન્ફ્રાસ્ટ્રક્ચરને નષ્ટ કરી શકે છે; તેથી AI કોડ લખે છે, તમે "પ્લાન" વાંચો, તેને મંજૂર કરો અને તેને એક્ઝિક્યુટ કરો.
આ એકમમાં, અમે ઘોષણાત્મક અભિગમ, યોજના/લાગુ તફાવત, રાજ્યની સુરક્ષા અને આડેધડતા વિશે ચર્ચા કરીશું; તમે AI સાથે IaC જનરેશન અને સૌથી જટિલ કૌશલ્ય, "યોજના નિયંત્રણ" શીખી શકશો.
ઘોષણાત્મક રીતે વિચારવું: "શું જો", નહીં "કેવી રીતે કરવું"
મોટાભાગના IaC ટૂલ્સ ઘોષણાત્મક હોય છે: તમે સિસ્ટમની અંતિમ સ્થિતિનું વર્ણન કરો છો ("ચાલો કહીએ કે 3 વેબ સર્વર્સ, 1 લોડ બેલેન્સર"), ટૂલ પોતે તે સ્થિતિમાં કેવી રીતે પહોંચવું તેની ગણતરી કરે છે. આ સ્ક્રિપ્ટ લખવાથી અલગ છે ("આ કરો, પછી તે કરો" સ્ટેપ બાય સ્ટેપ). ઘોષણાત્મક અભિગમનો મોટો ફાયદો એ છે કે તમે દસ વખત કોડ ચલાવો છો, તો પણ પરિણામ એ જ છે, કારણ કે સાધન એ જોવા માટે તપાસે છે કે ઇચ્છિત સ્થિતિ પહેલેથી અસ્તિત્વમાં છે કે કેમ, અને જો તે કરે છે, તો તે તેને સ્પર્શતું નથી. જ્યારે તમે AI પર IaC લખો છો ત્યારે આ તફાવત યાદ રાખો: તમે તેને "આ ઇન્ફ્રાસ્ટ્રક્ચરને સ્ટેટ કરવા દો" કહેશો, "આ આદેશો ચલાવો" નહીં.
યોજના/લાગુ કરો: સૌથી મહત્વપૂર્ણ સલામતી રેલિંગ
IaC ની જીવનરક્ષક વિશેષતા એ યોજનાનું પગલું છે. ટેરાફોર્મ, ટેરાફોર્મ પ્લાનમાં, જવાબી માં, --ચેક મોડ કોડ ચલાવતા પહેલા "જો હું તેને લાગુ કરું તો શું બદલાશે" નું પૂર્વાવલોકન ઉત્પન્ન કરે છે: "2 સંસાધનો ઉમેરવામાં આવશે, 1 બદલાશે, 0 કાઢી નાખવામાં આવશે". અમલીકરણ પહેલાં તમારા ઇરાદાને વાસ્તવિકતા સાથે સરખાવવાનો આ એકમાત્ર રસ્તો છે. જટિલ નિયમ: યોજના વાંચ્યા વિના ક્યારેય અરજી કરશો નહીં. ખાસ કરીને "નાશ" રેખાઓ માટે જુઓ; જો તમે ટાઈપોને કારણે "1 બદલવામાં આવશે" ને બદલે "12 કાઢી નાખવામાં આવશે" જુઓ છો, તો યોજનાએ તમને આપત્તિમાંથી બચાવ્યા છે. AI માં કોડ પ્રિન્ટ કર્યા પછી, તેને "મારી સાથે લાઇન દ્વારા પ્લાન આઉટપુટ લાઇનની તપાસ કરો, કાઢી નાખવા/મનોરંજન સમાવિષ્ટ દરેક લાઇનને ચિહ્નિત કરો."
સાવધાન: ટેરાફોર્મમાં કેટલાક ફેરફારો "જગ્યાએ અપડેટ કરવા"ને બદલે સંસાધનને "નષ્ટ કરો અને ફરીથી બનાવો". આનો અર્થ એ છે કે ડેટાબેઝ માટે ડેટા નુકશાન. પ્લાન આઉટપુટમાં -/+ અથવા "ફોર્સ રિપ્લેસમેન્ટ" ને અવગણવું એ સૌથી મોંઘી ભૂલોમાંની એક છે.
સ્ટેટ ફાઇલ: રહસ્યો અને સત્યનો રેકોર્ડ
ટેરાફોર્મ જેવા સાધનો સ્ટેટ ફાઇલમાં તેઓ જે ઇન્ફ્રાસ્ટ્રક્ચરનું સંચાલન કરે છે તેની વર્તમાન સ્થિતિ રાખે છે. આ ફાઇલ બે કારણોસર જટિલ છે. પ્રથમ, તેમાં રહસ્યો હોઈ શકે છે (ડેટાબેઝ પાસવર્ડ્સ, કી સાદા ટેક્સ્ટમાં રાજ્યમાં આવી શકે છે); તેથી, રાજ્યને સાર્વજનિક ભંડાર અથવા AI માં ક્યારેય પેસ્ટ કરશો નહીં, તેને એન્ક્રિપ્ટેડ અને ઍક્સેસ-પ્રતિબંધિત રિમોટ બેકએન્ડમાં રાખો. બીજું, જો રાજ્ય દૂષિત અથવા ખોવાઈ ગયું હોય, તો વાહન વાસ્તવિક ઈન્ફ્રાસ્ટ્રક્ચર અને કાલ્પનિક ઈન્ફ્રાસ્ટ્રક્ચર વચ્ચેની કડી ગુમાવે છે; તેથી, રાજ્યનું બેકઅપ અને લોક મિકેનિઝમ (લોક જે એક જ સમયે બે લોકોને તેને તોડતા અટકાવે છે) આવશ્યક છે.
સ્ટેપ બાય સ્ટેપ: AI સાથે IaC ને સુરક્ષિત કરો
- રાજ્યનો હેતુ અને પ્રદાતા. "AWS પર 2 સર્વર્સ, ટેરાફોર્મ સાથે, આ પ્રદેશમાં, આ કદ અને સુરક્ષા જૂથ." જો ક્લાઉડ, ટૂલ અને વર્ઝન સ્પષ્ટ છે, તો AI યોગ્ય સિન્ટેક્સ બનાવે છે.
- સુરક્ષા ડિફોલ્ટની વિનંતી કરો. "સુરક્ષા જૂથ ખોલો, એન્ક્રિપ્શન સક્ષમ કરો, વેરીએબલમાં રહસ્યો કાઢો, જાહેર ઍક્સેસ આપો." AI મૂળભૂત રીતે છૂટક નમૂનાઓ જનરેટ કરી શકે છે.
- કોડ વાંચો અને સમજો. દરેક સંસાધન, દરેક પરવાનગી, લાઇન બાય લાઇન સમજો. તમને સમજાતી ન હોય તેવી પરવાનગી લાગુ કરશો નહીં.
- એક યોજના મેળવો અને તેનું ઓડિટ કરો. પ્લાન ચલાવો/--તપાસો, AI વડે આઉટપુટની તપાસ કરો, ડિલીટ અને રીબિલ્ડ લાઈનોને માર્ક કરો.
- નાના અને ઉલટાવી શકાય તેવું લાગુ કરો. નાના ટુકડાઓમાં મોટો ફેરફાર લાગુ કરો, એક જ સમયે નહીં. દરેક પગલે પાછા જવાનો રસ્તો જાણો.
- રાજ્યનું રક્ષણ કરો. રીમોટ, એન્ક્રિપ્ટેડ બેકએન્ડ અને લોકનો ઉપયોગ કરો; લીક રાજ્ય ક્યારેય.
ત્રણ નાના કેસો
કેસ 1 - યોજનાએ ડેટાબેઝ પુનઃપ્રાપ્ત કર્યો. એક ઇજનેર AI સાથે બનાવેલ ટેરાફોર્મ કોડ સાથે ડેટાબેઝનું કદ વધારવા માંગતો હતો. જ્યારે તે ટેરાફોર્મ પ્લાન આઉટપુટમાં "1 બદલાશે" ની અપેક્ષા રાખતો હતો, ત્યારે તેણે "નષ્ટ કરવા માટે 1, ઉમેરવા માટે 1" જોયું — તેણે પસંદ કરેલ પરિમાણ પુનઃનિર્માણને ટ્રિગર કરી રહ્યું હતું, ઇન-પ્લેસ અપડેટ નહીં, એટલે કે તમામ ડેટા કાઢી નાખવામાં આવશે. પ્લાન કંટ્રોલ અમલમાં આવે તે પહેલા તેને ઉલટાવી શકાય તેવું ડેટા નુકશાન અટકાવ્યું.
કેસ 2 - છૂટક ડિફોલ્ટથી પરત. એક ટીમે AI પાસે ફાયરવોલ કોડ માંગ્યો. ઉદાહરણ ચલાવવા માટે, AI એ 0.0.0.0/0 નો સરળ નિયમ જનરેટ કર્યો છે, જેનો અર્થ થાય છે "ઇન્ટરનેટ પર જાહેર". કોડ વાંચતી વખતે એન્જિનિયરે આ નોંધ્યું અને માત્ર એન્ટરપ્રાઇઝ IP રેન્જની ઍક્સેસને સંકુચિત કરી. જો તેને ઓડિટ કર્યા વિના અમલમાં મૂકવામાં આવે, તો ડેટાબેઝ સમગ્ર ઇન્ટરનેટ માટે ખુલ્લો રહેશે.
કેસ 3 - રાજ્ય લીક અટકાવવામાં આવ્યું. એક જુનિયર સભ્ય ટેરાફોર્મ સમસ્યાને ઉકેલવા માટે સાર્વજનિક સાધનમાં terraform.tfstate ફાઇલને અકબંધ પેસ્ટ કરવા જઈ રહ્યો હતો. વરિષ્ઠ ઈજનેર અટકી ગયા: રાજ્યમાં સાદો ટેક્સ્ટ ડેટાબેઝ પાસવર્ડ છે. તેના બદલે, સમસ્યાનું વર્ણન કરતો ડિક્રિપ્ટેડ સારાંશ શેર કરવામાં આવ્યો હતો અને રાજ્યને રિમોટ એન્ક્રિપ્ટેડ બેકએન્ડ પર ખસેડવામાં આવ્યું હતું.
ચાર નકલ કરી શકાય તેવા નમૂનાઓ
1) IaC રિસોર્સ જનરેશન (સુરક્ષિત ડિફોલ્ટ):
તમારી ભૂમિકા: વરિષ્ઠ ક્લાઉડ ઇન્ફ્રાસ્ટ્રક્ચર એન્જિનિયર. [મેઘ, દા.ત. AWS] માટે[ટૂલ, દા.ત. ટેરાફોર્મ] કોડ જનરેટ કરો. હેતુ: [હેતુ].સુરક્ષા નિયમો: સાર્વજનિક (0.0.0.0/0) ઍક્સેસ OPEN; સૌથી સાંકડી પરવાનગી સાથે પ્રારંભ કરો; એન્ક્રિપ્શન ચાલુ કરો; ચલોમાં રહસ્યો કાઢો, તેમને કોડમાં એમ્બેડ કરશો નહીં; સેટિંગ્સને તપાસો જે કાઢી નાખવા/મનોરંજન તરફ દોરી શકે છે. સંક્ષિપ્ત ટિપ્પણી સાથે દરેક સ્ત્રોત સમજાવો.
2) પ્લાન આઉટપુટ ઓડિટ:
નીચે [ટેરાફોર્મ પ્લાન/જવાબદાર ચેક] આઉટપુટ છે. મને કહો: (1) કેટલા સંસાધનો ઉમેરવામાં આવશે/બદલવામાં આવશે/કાઢી નાખવામાં આવશે, (2) "નાશ" અથવા "ફોર્સ રિપ્લેસમેન્ટ" રેખાઓને પણ ચિહ્નિત કરો જે ડેટાના નુકશાનનું જોખમ ઊભું કરે છે, (3) કોઈપણ ફેરફારોની સૂચિ બનાવો જે અણધાર્યા અથવા જોખમી લાગે. આઉટપુટ: [યોજના]
3) IaC કોડ સુરક્ષા સમીક્ષા:
સુરક્ષા માટે નીચેના IaC કોડની તપાસ કરો: (1) શું ત્યાં વધુ પડતી વ્યાપક ઍક્સેસ/પરમિશન છે, (2) એન્ક્રિપ્શન બંધ છે, (3) શું કોડમાં રહસ્યો એમ્બેડ કરેલા છે, (4) શું સાર્વજનિક રીતે ઉપલબ્ધ સંસાધનો છે? દરેક શોધ માટે કરેક્શન સૂચવો. કોડ: [માસ્ક્ડ કોડ]
4) ફેરફારને સુરક્ષિત ભાગોમાં વિભાજીત કરો:
હું આ મોટા ઇન્ફ્રાસ્ટ્રક્ચર ફેરફાર [સમજણ] એક જ સમયે અમલમાં મૂકવા માંગતો નથી. તેને નાના, સ્વતંત્ર પગલાઓમાં વિભાજીત કરો કે જેના પર પાછા આવવું સરળ છે. દરેક પગલા માટે: શું ફેરફારો, મારે યોજનામાં શું ધ્યાન આપવું જોઈએ, જો સમસ્યાઓ હોય તો હું તેને કેવી રીતે પૂર્વવત્ કરી શકું?
નબળા પ્રોમ્પ્ટ / મજબૂત પ્રોમ્પ્ટ
નબળા પ્રોમ્પ્ટ:
ટેરાફોર્મ કોડ લખો જે AWS પર સર્વર બનાવે છે.
પ્રદેશ, કદ, સુરક્ષા, નેટવર્ક, એન્ક્રિપ્શન અસ્પષ્ટ છે. AI કામ કરવા માટે સૌથી ઢીલા, સૌથી વધુ સ્પષ્ટ ડિફોલ્ટ્સ ઉત્પન્ન કરે છે - જો ઉત્પાદનમાં મૂકવામાં આવે, તો તે નબળાઈ હશે.
શક્તિશાળી પ્રોમ્પ્ટ:
તમારી ભૂમિકા: વરિષ્ઠ ક્લાઉડ ઇન્ફ્રાસ્ટ્રક્ચર એન્જિનિયર. AWS eu-central-1: t3.small પર ટેરાફોર્મ સાથે વેબ સર્વરને વ્યાખ્યાયિત કરો, ફક્ત કોર્પોરેટ IP શ્રેણીમાંથી (હું તેને ચલ સાથે આપીશ), પોર્ટ 443 ખુલ્લું છે, ડિસ્ક એન્ક્રિપ્ટેડ છે, કોઈ જાહેર ઍક્સેસ નથી, લેબલ ફરજિયાત છે. ચલને રહસ્યો જાહેર કરવામાં આવે છે. કોડ પછી: તેને અમલમાં મૂકતા પહેલા, મને પ્લાનમાં ધ્યાન આપવું જોઈએ તે 3 લાઇન પ્રકારો જણાવો અને પરત ફરવાનો માર્ગ સમજાવો.
સ્ટેજ
જોખમ
સલામતી રેલિંગ
લેખન કોડ
લૂઝ ડિફોલ્ટ (જાહેર)
સૌથી સાંકડી પરવાનગી + વાંચો
યોજના/તપાસ
તેને સમજ્યા વિના કાઢી નાખવું
નિરીક્ષણની યોજના બનાવો, માર્કિંગનો નાશ કરો
અરજી કરો
મુખ્ય એક સમયનો ફેરફાર
નાના, ઉલટાવી શકાય તેવા પગલાં
રાજ્ય વહીવટ
ગ્લેઝ લિકેજ, વિકૃતિ
રીમોટ એન્ક્રિપ્ટેડ બેકએન્ડ + લોક
સામાન્ય ભૂલો
- યોજના વાંચ્યા વિના અરજી કરવી. યોજના કાઢી નાખવા અને પુનઃનિર્માણની પૂર્વદર્શન આપે છે; જો તે છોડવામાં આવે છે, તો ડેટા નુકશાન અનિવાર્ય છે.
- છૂટક ડિફોલ્ટની નોંધ લેતા નથી. AI દાખલાઓ વારંવાર 0.0.0.0/0 ઉત્પન્ન કરે છે; જો તેને ઉત્પાદનમાં ખસેડવામાં આવે છે, તો તેનો અર્થ સમગ્ર ઇન્ટરનેટ માટે ઓપન સોર્સ છે.
- લીકીંગ સ્ટેટ. સ્ટેટ ફાઇલને AI અથવા ઓપન રિપોઝીટરીમાં નિકાસ કરવાથી પ્લેનટેક્સ્ટ રહસ્યો છતી થાય છે.
- કોડમાં રહસ્યો એમ્બેડ કરવું. IaC કોડમાં પાસવર્ડ લખવો એ કોડ સંસ્કરણ ઇતિહાસમાં સતત લીક છે.
- અપડેટ માટે પુનઃનિર્માણની ભૂલ. ફોર્સ રિપ્લેસમેન્ટ લાઇનને અવગણવાથી ડેટાબેઝમાં ડેટા ખોવાઈ જશે.
ટિપ: સમીક્ષા કરવા માટે AI ને પ્લાન આઉટપુટ આપતી વખતે પણ, અંતિમ નિર્ણય તમારા પોતાના જ્ઞાનના આધારે લો, પ્લાન ટેક્સ્ટને નહીં. AI યોજનાનો સારાંશ આપે છે અને જોખમી લીટીઓને ફ્લેગ કરે છે; પરંતુ પ્રશ્નનો જવાબ "શું આ કાઢી નાખવું સ્વીકાર્ય છે" તમારા વ્યવસાય સંદર્ભ પર આધારિત છે.
સારાંશમાં
IaC મેન્યુઅલ ક્લિક્સને બદલે વર્ઝનેબલ કોડ સાથે ઇન્ફ્રાસ્ટ્રક્ચરનું સંચાલન કરીને પુનરાવર્તિતતા અને દસ્તાવેજીકરણ લાવે છે. AI આ કોડ લખવામાં, તેનું વર્ણન કરવામાં અને સુરક્ષા માટે તેની સમીક્ષા કરવામાં એક શક્તિશાળી ભાગીદાર છે. પરંતુ IaC ની શક્તિ તેનો ભય છે: એક લાઇન સમગ્ર ઇન્ફ્રાસ્ટ્રક્ચરનો નાશ કરી શકે છે. ઘોષણાત્મક વિચારો, સૌથી સાંકડી પરવાનગી સાથે પ્રારંભ કરો, છૂટક ડિફોલ્ટ્સને ઠીક કરો, રહસ્યોને કોડ અને રાજ્યની બહાર રાખો. સૌથી મહત્વપૂર્ણ રેલી એ પ્લાન/ચેક સ્ટેપ છે: ડિલીટ અને રીબિલ્ડ લાઈનો વાંચ્યા વિના ક્યારેય એક્ઝિક્યુટ કરશો નહીં. સ્ટેટને એન્ક્રિપ્ટેડ, લૉક કરેલ અને રિમોટ રાખો. કોડ એઆઈનો છે, નિર્ણય તમારો છે.
એપ્લિકેશન કાર્ય
એક નાનું ઇન્ફ્રાસ્ટ્રક્ચર લક્ષ્ય પસંદ કરો (ઉદાહરણ તરીકે, એક વર્ચ્યુઅલ મશીન અને સુરક્ષા નિયમ). ઉપરના "IaC રિસોર્સ જનરેશન" ટેમ્પલેટ સાથે, AI ને સલામત ડિફોલ્ટ્સ સાથે કોડ માટે પૂછો. "IaC કોડ સુરક્ષા સમીક્ષા" નમૂના સાથે કોડને બે વાર તપાસો અને ઓછામાં ઓછી એક છૂટક સેટિંગ શોધવાનો પ્રયાસ કરો. જો શક્ય હોય તો, ટેસ્ટ એકાઉન્ટ પર પ્લાન/--ચેક ચલાવો અને "પ્લાન આઉટપુટ ચેક" ટેમ્પલેટ સાથે આઉટપુટની સમીક્ષા કરો; ડિલીટ અથવા રીક્રિએટ લાઇન છે કે કેમ તે જુઓ. તમારા તારણો લખો અને તમે 6 પોઈન્ટ્સમાં રાજ્યને કેવી રીતે સુરક્ષિત કરશો.
ચેકલિસ્ટ
- [ ] શું મેં AI માટે ક્લાઉડ, ટૂલ અને વર્ઝનનો ઉલ્લેખ કર્યો છે અને સૌથી સાંકડી પરવાનગીઓ સાથે કોડની વિનંતી કરી છે?
- [ ] શું મેં છૂટક ડિફોલ્ટ્સ (0.0.0.0/0, બંધ એન્ક્રિપ્શન) માટે કોડ તપાસ્યો છે?
- [ ] શું મેં વેરીએબલના રહસ્યોને કોડમાં એમ્બેડ કરવાને બદલે બહાર કાઢ્યા છે?
- શું મેં અરજી કરતા પહેલા પ્લાન/ચેક આઉટપુટ વાંચી અને ડિલીટ લાઈનોને માર્ક કરી?
- [ ] શું મેં "ફોર્સ રિપ્લેસમેન્ટ" / રીબિલ્ડ લાઇન્સની ડેટા નુકશાન અસરનું મૂલ્યાંકન કર્યું છે?
- શું મેં [ ] સ્ટેટ ફાઇલને રિમોટ બેકએન્ડમાં એન્ક્રિપ્ટેડ, લૉક કરીને રાખી નથી અને તેને લીક કરી નથી?