Docker-ի անվտանգության հիմունքներ փոքր թիմերի համար

Կոնտեյներները ինքնաբերաբար անվտանգ չեն։ Հրապարակված պորտերը, root-ը և հին պատկերները սովորական խնդիրներ են, և ահա թե ինչպես ուղղել դրանք։

Docker-ը հեշտացնում է հավելվածների տեղադրումը, և հենց այդ պատճառով ոչ անվտանգ լռելյայն կարգավորումներն այդքան արագ են տարածվում։ Root-ով աշխատող, ամբողջ ինտերնետին բաց պորտով և երկու տարվա վաղեմության պատկերով կոնտեյները հաճախակի պատկեր է։ Այս քայլերը ուղղում են ամենատարածված խնդիրները։

Նախքան սկսելը: օրինակներում օգտագործվում է Docker Compose։ Հաշվի առեք, որ Linux-ում Docker-ի հրապարակած պորտերը շրջանցում են ufw-ի կանոնները, քանի որ Docker-ը ստեղծում է firewall-ի իր կանոնները․ կոնտեյներների պաշտպանության համար մի ապավինեք միայն ufw-ին։

Քայլ 1. Հրապարակեք միայն անհրաժեշտը, ցանկալի է՝ localhost-ում

Հավելվածների պորտերը կապեք 127.0.0.1-ին և դրանց առջև տեղադրեք reverse proxy (nginx, Traefik)՝ HTTPS-ով։ Տվյալների բազաները և կառավարման գործիքներն ընդհանրապես մի հրապարակեք։

# docker-compose.yml – publish only on localhost, behind the reverse proxy
services:
  app:
    image: myapp:1.4.2
    ports:
      - "127.0.0.1:8080:80"

Քայլ 2. Մի գործարկեք root-ով

Պատկերում օգտագործեք առանց root իրավունքների օգտատեր։ Շատ պաշտոնական պատկերներ այն արդեն պարունակում են։

# Dockerfile
FROM node:22-slim
WORKDIR /app
COPY . .
RUN npm ci --omit=dev
USER node
CMD ["node", "server.js"]

Քայլ 3. Սահմանափակեք կոնտեյների հնարավորությունները

Միայն կարդալու ֆայլային համակարգը, Linux capabilities-ի բացակայությունը և իրավունքների բարձրացման արգելքը սահմանափակում են վնասը հավելվածի կոտրման դեպքում։ Գաղտնիքները պահեք .env ֆայլերում կամ գաղտնիքների պահոցներում, ոչ թե պատկերում, և երբեք մի միացրեք Docker socket-ը այն կոնտեյներներին, որոնց լիովին չեք վստահում։

services:
  app:
    image: myapp:1.4.2
    read_only: true
    cap_drop: [ALL]
    security_opt: ["no-new-privileges:true"]
    env_file: .env

Քայլ 4. Պարբերաբար թարմացրեք պատկերները

Օգտագործեք տարբերակների կոնկրետ թեգեր, ըստ ժամանակացույցի վերակառուցեք և ներբեռնեք թարմացված պատկերները և ջնջեք հինները։ Կառուցման ժամանակ սկանավորեք պատկերները հայտնի խոցելիությունների համար։

docker compose pull
docker compose up -d
docker image prune -f

Կոնտեյները տուփ է, ոչ թե սեյֆ։ Կարևորն այն է, թե ինչ կա ներսում և ով կարող է այն բացել։

Օգնության կարիք ունե՞ք։ Կապվեք CySec-ի հետ՝ անվճար խորհրդատվության համար։


Բոլոր հոդվածները

Օգնության կարի՞ք ունեք

Մեր ինժեներները կուսումնասիրեն ձեր ներկայիս համակարգը և կառաջարկեն կոնկրետ բարելավումներ։