[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-bezopasnost-konteynerov-chto-takoe-printsip-naimenshikh-privilegiy-i-kak-on-primenyaetsya-v-konteynerakh":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":20,"progress":21,"seo":22},308,"chto-takoe-printsip-naimenshikh-privilegiy-i-kak-on-primenyaetsya-v-konteynerakh",9,"bezopasnost-konteynerov","Безопасность контейнеров","🛡️","Что такое принцип наименьших привилегий и как он применяется в контейнерах?","Принцип наименьших привилегий (Principle of Least Privilege, PoLP) -- это фундаментальный принцип информационной безопасности, согласно которому каждый субъект (пользователь, процесс, контейнер) должен иметь только те права и ресурсы, которые минимально необходимы для выполнения его задачи.\n\nПредставьте кассира в банке: ему дают ключ только от своей кассы, а не от хранилища. Контейнеру точно так же нужно давать только те привилегии, без которых он не может работать.\n\n### Применение в Docker\n\n**Запуск процессов не от root** -- указание непривилегированного пользователя через инструкцию `USER` в Dockerfile:\n\n```dockerfile\nFROM eclipse-temurin:21-jre-alpine\nRUN addgroup -S appgroup && adduser -S appuser -G appgroup\nUSER appuser\n```\n\n**Удаление лишних capabilities** -- Linux capabilities позволяют дробить монолитные root-привилегии на отдельные единицы:\n\n```bash\n# Запуск с удалением всех capabilities и добавлением только нужных\ndocker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE my-java-app\n```\n\n**Запрет привилегированного режима и эскалации привилегий:**\n\n```bash\n# Никогда не использовать в production:\ndocker run --privileged my-app  # ОПАСНО!\n\n# Правильно:\ndocker run --security-opt=no-new-privileges my-app\n```\n\n**Read-only файловая система:**\n\n```bash\ndocker run --read-only --tmpfs \u002Ftmp my-java-app\n```\n\n### Применение в Kubernetes\n\n\u003Cdetails>\n\u003Csummary>Полный манифест пода с минимальными привилегиями\u003C\u002Fsummary>\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: secure-java-app\nspec:\n  containers:\n  - name: app\n    image: my-registry\u002Fjava-app:1.0.0\n    securityContext:\n      runAsNonRoot: true\n      runAsUser: 1000\n      runAsGroup: 1000\n      readOnlyRootFilesystem: true\n      allowPrivilegeEscalation: false\n      capabilities:\n        drop:\n          - ALL\n      seccompProfile:\n        type: RuntimeDefault\n    volumeMounts:\n    - name: tmp\n      mountPath: \u002Ftmp\n  volumes:\n  - name: tmp\n    emptyDir:\n      sizeLimit: 100Mi\n  automountServiceAccountToken: false\n```\n\n\u003C\u002Fdetails>\n\n### Ключевые параметры\n\n| Параметр | Назначение |\n|----------|------------|\n| `runAsNonRoot: true` | Запрещает запуск от root |\n| `allowPrivilegeEscalation: false` | Блокирует `setuid`-бинарники и получение дополнительных привилегий дочерними процессами |\n| `capabilities.drop: [ALL]` | Удаляет все Linux capabilities |\n| `readOnlyRootFilesystem: true` | Запрещает запись в файловую систему контейнера |\n| `automountServiceAccountToken: false` | Отключает монтирование токена сервисного аккаунта, если поду не нужен доступ к Kubernetes API |\n| `seccompProfile.type: RuntimeDefault` | Ограничивает набор доступных системных вызовов |\n\n### Вывод\n\nПринцип наименьших привилегий -- это не одна настройка, а комплекс мер: отказ от root, удаление capabilities, read-only ФС, запрет эскалации и отключение ненужных токенов. Регуляторные требования (PCI DSS Requirement 7) прямо требуют ограничения доступа к данным по принципу need-to-know.\n\n> **На собеседовании:** покажите, что знаете не только определение, но и конкретные механизмы реализации. Перечислите `runAsNonRoot`, `cap-drop=ALL`, `readOnlyRootFilesystem`, `allowPrivilegeEscalation: false` -- это набор, который ожидают услышать.","","junior",[15,16,17,18,19],"kubernetes","least-privilege","securityContext","container-security","docker",[],null,{"title":23,"description":24,"ogTitle":25,"ogDescription":26,"keywords":27,"schemaAnswer":33,"featuredSnippetReady":34},"Принцип наименьших привилегий в контейнерах — Docker и Kubernetes — Gymterview","Принцип наименьших привилегий (PoLP) в контейнерах: удаление capabilities, запрет привилегированного режима, read-only FS, securityContext в Kubernetes.","Принцип наименьших привилегий в Docker и Kubernetes","PoLP в контейнерах: запуск не от root, удаление capabilities (--cap-drop=ALL), запрет привилегированного режима, securityContext в Kubernetes.",[28,29,30,31,32],"принцип наименьших привилегий","Least Privilege контейнеры","capabilities Docker","securityContext Kubernetes","allowPrivilegeEscalation","Принцип наименьших привилегий (Principle of Least Privilege) — каждый субъект должен иметь только минимально необходимые права. В контейнерах: запуск не от root (USER в Dockerfile), удаление capabilities (--cap-drop=ALL), запрет привилегированного режима, read-only FS, allowPrivilegeEscalation: false в Kubernetes securityContext.",true]