Security Context — operatsion tizim yoki xavfsizlik tizimi access qarorini chiqarishda subject va objectga bog‘laydigan identity, label, privilege va policy atributlari majmui. Atama umumiy: SELinux context, Windows access tokeni, process credentiali yoki application request identitysi turli security context misollaridir. Kontekst “kim” va “qaysi sharoitda” amal so‘rayotganini ifodalaydi.
Subject konteksti
Process uchun UID/GID, supplementary groups, capability, security label, namespace membership va session identity muhim bo‘lishi mumkin. Thread ayrim credentiallarni process bilan ulashadi, ayrim tizimlarda impersonation orqali vaqtincha boshqa token ishlatadi.
Authentication userni aniqlaydi, security context esa keyingi authorization tekshiruvlari uchun foydalaniladigan konkret atributlarni saqlaydi. Login nomining o‘zi barcha privilege’ni ifodalamaydi.
Object konteksti
Fayl owner/mode/ACL va MAC labelga, socket peer credentialga, kernel obyekt esa owning user namespace yoki cgroupga ega bo‘lishi mumkin. Access qarori subject va object context, operation turi hamda global policy’ni birga solishtiradi.
Object rename qilinganda inode label saqlanishi, yangi fayl esa parent va transition qoidasi bo‘yicha context olishi mumkin. Path nomini identity deb qabul qilish hard link va mount holatlarida xato beradi.
SELinux context
SELinux odatda user:role:type:level shaklidagi contextdan foydalanadi. Type enforcement process domaini va object type’i orasidagi ruxsatni tekshiradi. MLS/MCS level va categorylar qo‘shimcha ma’lumot ajratish siyosatini beradi.
Container runtime har workloadga process va file category kombinatsiyasi berib, bir xil type ichida tenantlarni ajratishi mumkin. Labelni qo‘lda bir xil qilish isolationni yo‘qotadi.
Context o‘tishi
Exec paytida process yangi executable type va policy transitionga ko‘ra boshqa domain’ga o‘tishi mumkin. Setuid yoki file capability credentialning boshqa qismini o‘zgartiradi. Har transition kirish nuqtasi, caller domain va target file labeliga bog‘lanadi.
IPC’da receiver sender contextini kernel peer credential yoki authenticated token orqali oladi. User yuborgan headerdagi X-User qiymati mustaqil ishonch manbai emas. Proxy identityni uzatsa cryptographic yoki trusted-channel chegarasi aniq bo‘ladi.
Saqlash va loglash
Audit hodisasi qaror vaqtida effective contextni saqlaydi. Keyin user groupi yoki policy o‘zgarsa ham tarixiy qaror tushunarli qoladi. Maxfiy token va kalit kontekstning bir qismi bo‘lsa logga xom holatda yozilmaydi.
Distributed tizimda context service chegaralari bo‘ylab kamaytirilgan claimlar bilan uzatiladi. Har service audience, expiry va signature’ni tekshiradi. “Ichki tarmoqdan keldi” avtomatik trusted context emas.
Tashxis
Permission denial tahlilida real/effective ID, groups, capability, MAC label, namespace va object metadata birga ko‘riladi. Faqat whoami natijasi yetarli emas. Contextni vaqtincha kengaytirib muammoni yashirish o‘rniga qaysi aniq atribut va policy rule rad etgani topiladi.
Context cache
Authorization natijasini cache qilishda subject context versioni, object policy versioni va operation cache keyga kiradi. User groupi olib tashlansa eski allow TTL tugaguncha qolmasligi uchun revocation event yoki qisqa muddat ishlatiladi. Distributed service token claimini lokal cache qilsa expiry va key rotationni tekshiradi. Faqat user ID bo‘yicha cache turli tenant yoki resource qarorlarini aralashtiradi.
Impersonation
Server client nomidan filesystem yoki downstream xizmatga murojaat qilish uchun impersonation context ishlatishi mumkin. U faqat request doirasida faol bo‘ladi va finally yo‘lida asl service identityga qaytadi. Thread poolda context tozalanmasa keyingi request oldingi user huquqini meros qiladi. Async task ko‘chishi sabab thread-local identity o‘rniga explicit request context uzatish xavfsizroq.
Bog‘liq tushunchalar
security label, access token, credential, SELinux context, authorization, identity propagation