[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-bezopasnost-konteynerov-chto-takoe-security-context-v-kubernetes":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":21,"progress":22,"seo":23},318,"chto-takoe-security-context-v-kubernetes",9,"bezopasnost-konteynerov","Безопасность контейнеров","🛡️","Что такое Security Context в Kubernetes?","Security Context -- это набор параметров безопасности в манифесте Kubernetes, определяющих привилегии и контроль доступа для пода или отдельного контейнера. Это основной механизм настройки безопасности на уровне рабочей нагрузки.\n\nSecurity Context задаётся на двух уровнях:\n- **Pod-level** (`spec.securityContext`) -- применяется ко всем контейнерам в поде.\n- **Container-level** (`spec.containers[].securityContext`) -- применяется к конкретному контейнеру и **переопределяет** pod-level настройки при конфликте.\n\n### Полный пример Security Context\n\n\u003Cdetails>\n\u003Csummary>Манифест с полным Security Context на обоих уровнях\u003C\u002Fsummary>\n\n```yaml\napiVersion: v1\nkind: Pod\nmetadata:\n  name: secure-banking-pod\nspec:\n  # Pod-level security context\n  securityContext:\n    runAsNonRoot: true\n    runAsUser: 1000\n    runAsGroup: 1000\n    fsGroup: 1000\n    fsGroupChangePolicy: OnRootMismatch\n    seccompProfile:\n      type: RuntimeDefault\n    supplementalGroups: [2000]\n\n  containers:\n  - name: banking-app\n    image: registry.bank.local\u002Fbanking-service:1.0.0\n\n    # Container-level security context\n    securityContext:\n      allowPrivilegeEscalation: false\n      readOnlyRootFilesystem: true\n      privileged: false\n      capabilities:\n        drop:\n          - ALL\n      procMount: Default\n```\n\n\u003C\u002Fdetails>\n\n### Linux Capabilities\n\nCapabilities дробят монолитные root-привилегии на отдельные единицы. Вместо полного root контейнер получает только необходимое:\n\n```yaml\nsecurityContext:\n  capabilities:\n    drop:\n      - ALL           # Удалить ВСЕ capabilities\n    add:\n      - NET_BIND_SERVICE  # Привязка к портам \u003C 1024 (если нужно)\n```\n\n| Capability | Описание | Нужна ли типичному Java-приложению? |\n|-----------|----------|-------------------------------------|\n| `NET_BIND_SERVICE` | Привязка к портам \u003C 1024 | Редко (используйте порты > 1024) |\n| `NET_RAW` | Raw sockets (ping) | Нет |\n| `SYS_ADMIN` | Широкие admin-привилегии | Никогда |\n| `SYS_PTRACE` | Трассировка процессов | Нет (только для отладки) |\n| `CHOWN` | Изменение владельца файлов | Нет |\n\n### Seccomp (Secure Computing)\n\nSeccomp ограничивает набор системных вызовов (syscalls), доступных процессу в контейнере:\n\n```yaml\nsecurityContext:\n  seccompProfile:\n    type: RuntimeDefault  # Профиль container runtime (containerd\u002FCRI-O)\n    # Или кастомный профиль:\n    # type: Localhost\n    # localhostProfile: profiles\u002Fbanking-app.json\n```\n\n\u003Cdetails>\n\u003Csummary>Пример кастомного seccomp-профиля\u003C\u002Fsummary>\n\n```json\n{\n  \"defaultAction\": \"SCMP_ACT_ERRNO\",\n  \"architectures\": [\"SCMP_ARCH_X86_64\"],\n  \"syscalls\": [\n    {\n      \"names\": [\n        \"read\", \"write\", \"open\", \"close\", \"stat\", \"fstat\",\n        \"mmap\", \"mprotect\", \"munmap\", \"brk\",\n        \"socket\", \"connect\", \"accept\", \"bind\", \"listen\",\n        \"clone\", \"execve\", \"exit_group\",\n        \"futex\", \"epoll_wait\", \"epoll_ctl\"\n      ],\n      \"action\": \"SCMP_ACT_ALLOW\"\n    }\n  ]\n}\n```\n\n\u003C\u002Fdetails>\n\n### AppArmor\n\nAppArmor ограничивает доступ контейнера к файлам и операциям на уровне LSM (Linux Security Module):\n\n```yaml\nmetadata:\n  annotations:\n    container.apparmor.security.beta.kubernetes.io\u002Fbanking-app: runtime\u002Fdefault\n```\n\n### SELinux\n\n```yaml\nsecurityContext:\n  seLinuxOptions:\n    level: \"s0:c123,c456\"\n    type: \"container_t\"\n```\n\n### Рекомендуемый минимальный Security Context для production\n\n```yaml\nsecurityContext:\n  runAsNonRoot: true\n  runAsUser: 1000\n  runAsGroup: 1000\n  allowPrivilegeEscalation: false\n  readOnlyRootFilesystem: true\n  privileged: false\n  capabilities:\n    drop: [\"ALL\"]\n  seccompProfile:\n    type: RuntimeDefault\n```\n\n### Вывод\n\nSecurity Context -- центральный механизм безопасности в Kubernetes. Минимальный набор для production: `runAsNonRoot`, `allowPrivilegeEscalation: false`, `readOnlyRootFilesystem: true`, `capabilities.drop: ALL`, `seccompProfile: RuntimeDefault`. Дополнительные уровни защиты (AppArmor, SELinux, кастомный seccomp) применяются для высокочувствительных сервисов.\n\n> **На собеседовании:** перечислите ключевые параметры Security Context, объясните разницу между pod-level и container-level. Упомяните capabilities (drop ALL -- золотое правило) и seccomp. Если знаете AppArmor\u002FSELinux -- это бонус для senior-уровня.","","middle",[15,16,17,18,19,20],"AppArmor","kubernetes","capabilities","seccomp","securityContext","container-security",[],null,{"title":24,"description":25,"ogTitle":26,"ogDescription":27,"keywords":28,"schemaAnswer":34,"featuredSnippetReady":35},"Security Context в Kubernetes — настройка безопасности подов и контейнеров — Gymterview","Security Context задаёт параметры безопасности на уровне пода и контейнера: runAsUser, capabilities, seccomp, AppArmor, readOnlyRootFilesystem, fsGroup.","Security Context в Kubernetes — runAsUser, capabilities, seccomp","Security Context настраивает: runAsUser\u002FrunAsGroup, capabilities (drop ALL), seccomp-профиль, AppArmor, readOnlyRootFilesystem, allowPrivilegeEscalation.",[29,30,31,32,33],"Security Context Kubernetes","securityContext pod","capabilities drop ALL","seccomp profile Kubernetes","AppArmor Kubernetes","Security Context — настройки безопасности на уровне пода (runAsUser, runAsGroup, fsGroup, supplementalGroups) и контейнера (capabilities, seccompProfile, appArmorProfile, readOnlyRootFilesystem, allowPrivilegeEscalation, runAsNonRoot). Позволяет точно контролировать привилегии и изоляцию каждого контейнера в поде.",true]