Bosh sahifa Wiki Drift

Drift

Drift — Infrastructure as Code konfiguratsiyasida ifodalangan desired state bilan real infratuzilmaning joriy holati orasidagi farq. U console orqali qo‘lda tahrir, boshqa automation, provider defaulti, emergency o‘zgarish yoki tashqi tizim ta’siri sabab paydo bo‘ladi. Drift har doim nosozlik emas, lekin boshqaruv manbai noaniqlashganini ko‘rsatadi.

Kelib chiqishi

Operator incident vaqtida firewall qoidasini qo‘lda ochishi va keyin kodga kiritishni unutishi mumkin. Autoscaler instance sonini dinamik o‘zgartiradi; agar IaC bu fieldni ham qat’iy boshqarsa, har plan uni eski qiymatga qaytaradi. Cloud platforma computed atribut yoki defaultni o‘zgartirishi ham diff keltiradi.

Drift manbasi Misol
Manual change Console’da security group tahriri
Parallel tool Ikkinchi pipeline bir resource’ni boshqaradi
Platform controller Autoscaler replica sonini o‘zgartiradi
Provider/API Default yoki normalization o‘zgaradi
Tashqi hodisa Sertifikat rotationi, IP almashishi

Computed qiymatning o‘zgarishi har doim boshqarilishi kerak bo‘lgan drift emas. Ownership chegarasi qaysi atribut kimga tegishli ekanini belgilaydi.

Aniqlash

Refresh provider API’dan real atributlarni o‘qib state’ni yangilaydi. Keyingi plan konfiguratsiya bilan farqni ko‘rsatadi. Ayrim vositalar refresh-only plan yoki scheduled drift detection taqdim etadi. “No changes” natijasi faqat provider o‘qiy olgan va schema qamragan atributlarga tegishli.

Credential yetarli bo‘lmasa ayrim resource o‘qilmaydi. Provider unmanaged property’ni schema’ga kiritmagan bo‘lsa drift ko‘rinmaydi. Platforma-native policy va config inventory IaC planini to‘ldiradi.

Turlari

Resource drift mavjud obyekt atributi o‘zgarganda yuz beradi. Resource deletion driftida konfiguratsiyadagi obyekt tashqarida o‘chirilgan bo‘ladi. Unmanaged resource esa cloud’da mavjud, ammo kod va state’da yo‘q. IaC plan odatda oxirgi turdagi barcha “shadow IT”ni avtomatik topmaydi.

State drift state yozuvi real obyektga noto‘g‘ri bog‘langanda yoki state manual tahrir bilan buzilganda paydo bo‘ladi. Bu konfiguratsiya driftidan xavfliroq, chunki keyingi apply boshqa obyektni o‘zgartirishi mumkin.

Tuzatish yo‘llari

Real holat noto‘g‘ri bo‘lsa apply uni desired konfiguratsiyaga qaytaradi. Emergency o‘zgarish to‘g‘ri bo‘lsa kod shu holatga mos yangilanadi. Tashqi controller fieldning qonuniy egasi bo‘lsa IaC ownershipi undan olinadi yoki aniq ignore qoidasiga o‘tkaziladi.

Driftni ko‘r-ko‘rona avtomatik qaytarish incident fixini bekor qilishi mumkin. Diff risk bo‘yicha tasniflanadi: public access yoki encryption kabi security drift darhol, harmless tag farqi esa oddiy workflow orqali ko‘riladi.

Oldini olish

Production console’da to‘g‘ridan-to‘g‘ri write access minimal bo‘ladi. O‘zgarish pull request va pipeline orqali bajariladi. Break-glass huquqi qisqa muddatli, auditli va keyin kodga reconciliation talab qiladigan jarayon bilan beriladi.

Resource ownership tag, account va state boundary’da aniq ko‘rsatiladi. Ikki controller bitta fieldni boshqarmaydi. Policy as Code IaC tashqarisidagi public bucket yoki noto‘g‘ri encryptionni ham aniqlashi mumkin.

Monitoring va audit

Scheduled plan natijasi change turi, resource owner va muhit bo‘yicha event yaratadi. Har drift paging talab qilmaydi; kritik policy buzilishi va resource deletion yuqori ustuvorlik oladi. Takroriy “perpetual diffprovider yoki normalization muammosiga ishora qiladi.

Audit log kim qachon control-plane API’da o‘zgarish qilganini ko‘rsatadi. Drift timestampi deployment, ticket va user identity bilan bog‘lanadi. Bu farqning sababi hamda qonuniyligini aniqlashni tezlashtiradi.

Dynamic atributlar

Autoscaler boshqaradigan desired capacity, platforma yangilaydigan certificate expiry yoki service-generated endpoint kabi qiymatlar IaC’da qaysi darajada kuzatilishi aniqlanadi. Ignore-changes butun resource’ga emas, zarur fieldga tor qo‘llanadi. Aks holda xavfli farqlar ham yashirinadi.

Bog‘liq tushunchalar

Infrastructure as Code, Desired state, Plan, Apply, Remote state, Configuration management, Policy as Code