Openshift - SCC

Reading time: 2 minutes

Оригінальний автор цієї сторінки Guillaume

Визначення

У контексті OpenShift, SCC означає Security Context Constraints. Security Context Constraints - це політики, які контролюють дозволи для подів, що працюють на кластерах OpenShift. Вони визначають параметри безпеки, за якими под може працювати, включаючи дії, які він може виконувати, і ресурси, до яких він може отримати доступ.

SCC допомагають адміністраторам забезпечувати дотримання політик безпеки в кластері, гарантуючи, що поди працюють з відповідними дозволами та дотримуються організаційних стандартів безпеки. Ці обмеження можуть вказувати на різні аспекти безпеки подів, такі як:

  1. Linux capabilities: Обмеження можливостей, доступних контейнерам, таких як можливість виконувати привілейовані дії.
  2. SELinux context: Застосування контекстів SELinux для контейнерів, які визначають, як процеси взаємодіють з ресурсами в системі.
  3. Read-only root filesystem: Запобігання змінам файлів у певних каталогах контейнерами.
  4. Allowed host directories and volumes: Вказування, які каталоги та томи хоста може монтувати под.
  5. Run as UID/GID: Вказування ідентифікаторів користувача та групи, під якими працює процес контейнера.
  6. Network policies: Контроль мережевого доступу для подів, наприклад, обмеження вихідного трафіку.

Налаштувавши SCC, адміністратори можуть забезпечити, щоб поди працювали з відповідним рівнем ізоляції безпеки та контролю доступу, зменшуючи ризик вразливостей безпеки або несанкціонованого доступу в кластері.

В основному, щоразу, коли запитується розгортання пода, виконується процес прийому, як показано нижче:

Цей додатковий рівень безпеки за замовчуванням забороняє створення привілейованих подів, монтування файлової системи хоста або встановлення будь-яких атрибутів, які можуть призвести до ескалації привілеїв.

Pod Escape Privileges

Список SCC

Щоб перерахувати всі SCC за допомогою Openshift Client:

bash
$ oc get scc #List all the SCCs

$ oc auth can-i --list | grep securitycontextconstraints #Which scc user can use

$ oc describe scc $SCC #Check SCC definitions

Всі користувачі мають доступ до стандартних SCC "restricted" та "restricted-v2", які є найсуворішими SCC.

Використання SCC

SCC, що використовується для поду, визначається всередині анотації:

bash
$ oc get pod MYPOD -o yaml | grep scc
openshift.io/scc: privileged

Коли користувач має доступ до кількох SCC, система використовуватиме той, який відповідає значенням контексту безпеки. В іншому випадку виникне помилка заборони.

bash
$ oc apply -f evilpod.yaml #Deploy a privileged pod
Error from server (Forbidden): error when creating "evilpod.yaml": pods "evilpod" is forbidden: unable to validate against any security context constrain

SCC Bypass

OpenShift - SCC bypass

References