/ február 9, 2018/ docker, linux/ 0 comments

Képességek

A Linux része. Klasszikusan volt a nullás folyamat, aminek nem ellenőrizte a kernel hogy mihez van joga és a nem nullás, aminél voltak ellenőrzések. A 2.2-es változattól megjelentek a képességek, amik szálakhoz kapcsolódnak.

A docker továbbfejlesztette a jogosultságok kezelését annál, hogy a konténer root vagy nem root jogokkal fut-e. Például ha egy webkiszolgálónak 1024 alatti portra van szüksége, meg kell adni neki a net_bind_service képességet és nem szükséges root-ként futtatni. Így elérhető az, hogy a konténerek futtatása nem root felhasználó alatt fut és ha valakinek sikerülne is megtörni a konténert, az azt futtató gépet vagy a többi konténert nem éri el.

Alapértelmezetten ezeket a képességeket kapja meg egy konténer:

  • CAP_AUDIT_WRITE – auditáló naplóba írás
  • CAP_CHOWN – fájl UID és GID megváltoztatása
  • CAP_DAC_OVERRIDE – fájl olvasás, írás, futtatás jogok ellenőrzésének megkerülése
  • CAP_FOWNER – figyelmen kívül hagyja az ellenőrzést, mikor a fájl UID-nek meg kell egyezni a folyamat UID-el; inode állítgatások; ACL; ragadós bit figyelmen kívül hagyása könyvtár törlésénél
  • CAP_FSETID – fájl módosításakor nem törli a SUID és SGID biteket; módosítja a SGID bitet, ha az nem egyezik a fájlrendszerben található a folyamatéval
  • CAP_KILL – jelek küldésekor nem ellenőriz jogosultságokat (kill)
  • CAP_MKNOD – spéci fájlok létrehozása
  • CAP_NET_BIND_SERVICE – 1024 alatti portokhoz csatlakozás
  • CAP_NET_RAW – RAW and PACKET sockets; csatlakozás bármelyik címhez
  • CAP_SETFCAP – fájl képességek
  • CAP_SETGID – folyamat GID módosítása
  • CAP_SETPCAP – ha fa fájl képességek nincsenek támogatva, a szülő képességei közül bármelyiket odaadhatja vagy elveheti egy folyamatnak vagy folyamathoz
  • CAP_SETUID – folyamat UID módosítása
  • CAP_SYS_CHROOT – chroot használata

és ezek vannak még:

  • CAP_AUDIT_CONTROL – auditáló rendszer elérése
  • CAP_AUDIT_READ – auditáló napló olvasása
  • CAP_BLOCK_SUSPEND – rendszer felfüggesztésének megakadályozása
  • CAP_DAC_READ_SEARCH – fájl olvasás, könyvtár olvasás és futtatás jogok ellenőrzésének megkerülése
  • CAP_IPC_LOCK – memória zárolása
  • CAP_IPC_OWNER – System V IPC objektumoknál nem ellenőriz jogosultságot
  • CAP_LEASE – olyan fájl leírókat is használhat, ahol az UID-ok nem egyeznek meg
  • CAP_LINUX_IMMUTABLE – hozzáfűzés és halhatatlan fájl tulajdonság engedélyezése
  • CAP_MAC_ADMIN – MAC (Mandatory Access Control) állítgatása
  • CAP_MAC_OVERRIDE – MAC felülírása
  • CAP_NET_ADMIN – hálózati műveletek: eszköz konfigurálása, IP tűzfal, maszkolás, útvonalválasztás, statisztika törlése, promiscuous mód, multicast
  • CAP_NET_BROADCAST – nem használt
  • CAP_SYS_ADMIN – adminisztrátori képességek zsákszámra
  • CAP_SYS_BOOT – újraindítás
  • CAP_SYS_MODULE – kernel modulok be/ki töltése
  • CAP_SYS_NICE – folyamat nice érték állítása; valós idejű ütemezés; CPU, I/O
  • CAP_SYS_PACCT – acct használata
  • CAP_SYS_PTRACE – folyamat elemzése ptrace-el
  • CAP_SYS_RAWIO – I/O port művelet; /proc/kcore elérése; /dev/mem; /dev/kmem; /proc/bus/pci
  • CAP_SYS_RESOURCE – ext2 fájlrendszer fenntartott helyének használata; ext3 naplózás; lemezkvóták
  • CAP_SYS_TIME – rendszer és hardver óra állítása
  • CAP_SYS_TTY_CONFIG – virtuális terminálok
  • CAP_SYSLOG – magasabb szintű syslog műveletek
  • CAP_WAKE_ALARM – rendszert felébresztő esemény kiváltása

Példa

docker run --cap-add all --cap-drop setgid -ti rhel7 /bin/sh

Ez megad minden jogot és elveszi a setgid jogot a konténertől. Vagy docker compose változatban egy példa:

cap_add:
  - ALL

cap_drop:
  - NET_ADMIN
  - SYS_ADMIN

 

 

Leave a Comment