Mae rhedeg cynwysyddion fel root yn un o'r misconfiguriadau mwyaf cyffredin — a'r mwyaf peryglus — mewn amgylcheddau cynhyrchiant. Mae'n lledu'r arwynebedd ymosod yn dawel ond yn ddifrifol ar gyfer pob llwyth gwaith, ac nid yw'r rhan fwyaf o dimau'n sylweddoli hyn nes bod digwyddiad yn gorfodi'r mater.
Beth yn Union Mae "Rhedeg fel Root" yn ei Olygu
Yn ddiofyn, mae llawer o ddelweddau cynwysyddion (yn enwedig rhai minimalist neu hen rai) yn gweithredu eu prif broses fel UID 0 y tu mewn i'r cynwysydd. Oherwydd bod cynwysyddion yn rhannu cnewyllyn yr host â chynwysyddion eraill a'r host ei hun, nid yw root y tu mewn i gynwysydd yr un peth â root ar beiriant rhithwir gwbl ynysu — ond mae'n dal yn llawer mwy pwerus nag y dylai fod. Os yw ymosodwr yn sicrhau gweithrediad cod y tu mewn i gynwysydd perchnogedig gan root, maent yn etifeddu:
- Mynediad darllen/ysgrifennu llawn i unrhyw ffeiliau a osodwyd yn y cynwysydd, ni waeth beth yw'r caniatadau bwriedig
- Yr allu i osod pecyn, addasu deuddegau, neu lygru cyflwr y cymhwysiad
- Llwybr llawer haws tuag at doriad cynwysydd os yw brwydwr cnewyllyn neu rhedeg-amser yn ruthradwy
- Dylanwad cyraeddadwy yn uwch pan gyfunir â leoliad galifau misconfigured, fel soced Docker wedi'i osod neu lwybr systemffeiliau host
Hyd yn oed heb allforiad cnewyllyn, mae mynediad root y tu mewn i'r cynwysydd yn cynyddu'r radiws chwythu yn ddramatig ar gyfer unrhyw frifo ar lefel cymhwysiad (SSRF, difetheuon dadoddio, ysgrifennu ffeil mympwyol, ac ati).
Pam Fod Hyn yn Bwysicach mewn Amgylcheddau Trefnedig
Mewn clystyrau Kubernetes, gall cynwysydd root wedi'i gyfuno â galluoedd Linux gormodol neu gyd-destun diogelwch caniatáol ganiatáu i ymosodwr:
- Addasu
/procneu/sysmewn ffyrdd sy'n effeithio ar yr host - Echelon braint os yw
hostPID,hostNetwork, neuhostIPCyn cael eu galluogi - Camddefnyddio tocyn cyfrif gwasanaeth wedi'i osod i droelli'n ochrol ar draws y clwstwr
- Dianc i'r nod os yw
privileged: trueyn cael ei osod neu os yw galluoedd peryglus felSYS_ADMINyn cael eu caniatáu
Nid y defnyddiwr root ei hun sy'n agwedd amddifryn bob amser — mae'n gyfuniad o root ynghyd â galluoedd cnewyllyn rhy hael, fonsiwn host, neu rannu namespace sy'n troi cympromi cynwysedig yn un ar draws y clwstwr.
Camau Cryfhau Ymarferol
1. Gosod Defnyddiwr Di-Root yn y Ddelwedd
Diffiniwch ddefnyddiwr di-root yn benodol yn eich Dockerfile yn hytrach na dibynnu ar ddiofynion:
FROM node:20-slim
RUN useradd --uid 10001 --shell /usr/sbin/nologin appuser
USER appuser
2. Gorfod Iddi ar Lefel y Trefnydd
Na choeliwch y ddelwedd yn unig — gorfod y polisi adeg rhedeg. Yn Kubernetes, defnyddiwch securityContext:
securityContext:
runAsNonRoot: true
runAsUser: 10001
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]
Mae runAsNonRoot: true yn achosi i'r pod fethu adeg derbyniad os yw'r ddelwedd yn ceisio rhedeg fel UID 0, gan roi gwarantiad caled yn lle confensiwn gorau-ymdrech.
3. Gollwng Galluoedd Diangen
Nid oes angen i'r rhan fwyaf o gymhwysiadau unrhyw rai o'r galluoedd Linux diofyn a roddir i gynwysyddion. Gollwngwch bopeth a ychwanegwch yn ôl dim ond yr hyn sydd yn llym ofynnol (achosion prin fel rhwymo i borthladdoedd isel efallai angen NET_BIND_SERVICE).
4. Osgowch Modd Braint a Rhannu Namespace Host
Dylai privileged: true, hostNetwork: true, a hostPID: true fod yn cael eu cadw ar gyfer llwythau gwaith seilwaith penodol iawn (fel rhai asiantu CNI neu fonitro) — byth ar gyfer cynwysyddion cymhwysiad cyffredinol.
5. Sganio a Gorfod gyda Thoolau Polisi
Defnyddiwch reolyddion derbyn neu enjinau polisi (ee Kyverno, OPA/Gatekeeper) i wrthod datblygiadau sy'n torri'r rheolau hyn yn awtomatig, yn hytrach na dibynnu ar adolygiad cod llaw. Cyfunwch hyn ag sganio delwedd yn CI i ddal delweddau defnyddiwr-root cyn iddynt gyrraedd clwstwr.
Amddiffyniad Haenog, Nid Perffaith
Nid yw rhedeg fel di-root yn dileu risg yn llwyr — mae dianc cynwysydd ar lefel cnewyllyn yn bodoli yn annibynnol ar y defnyddiwr yn-gynwysydd — ond mae'n tynnu dosbarth enfawr o dechnegau echelon braint a symudiad ochrol ar hap-ymdrechion isel. Wedi'i gyfuno â systemffeiliau darllen-yn-unig, galluoedd gollyngedig, a pholisïau rhwydwaith cyfyngol, mae'n ffurfio un o'r haenau rhataaf ac fwyaf effeithiol mewn strategaeth diogelwch cynwysydd amddiffyniad mewn dyfnder.
Eisiau mynd yn ddyfnach ar gryfhau llwythau gwaith cloud-frodorol? Archwilwch segmentau cysylltiedig Korra Studio ar diogelwch Cloud a chryfhau pipelined DevOps i adeiladu gweddill eich strategaeth amddiffyniad mewn dyfnder.