[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-setevaya-bezopasnost-chto-takoe-networkpolicy-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":16,"progress":17,"seo":18},856,"chto-takoe-networkpolicy-v-kubernetes",24,"setevaya-bezopasnost","Сетевая безопасность","🔒","Что такое NetworkPolicy в Kubernetes?","NetworkPolicy — ресурс Kubernetes, позволяющий контролировать сетевой трафик между подами на уровне IP-адресов и портов. По умолчанию в Kubernetes все поды могут обмениваться трафиком друг с другом — NetworkPolicy ограничивает это поведение.\n\n> Аналогия: NetworkPolicy — это пропускная система на проходной. Без неё (по умолчанию) все двери открыты. Как только появляется хотя бы одна политика, начинает действовать принцип «вход только по пропускам».\n\nNetworkPolicy работает только если в кластере установлен сетевой плагин (CNI), поддерживающий политики: Calico, Cilium, Weave Net. Стандартный Flannel политики не поддерживает.\n\n### Типы политик\n\n- Ingress — контроль входящего трафика к подам\n- Egress — контроль исходящего трафика от подов\n\n### Пример: изоляция пространства имён\n\n```yaml\n# Запретить весь входящий трафик в namespace payment\napiVersion: networking.k8s.io\u002Fv1\nkind: NetworkPolicy\nmetadata:\n  name: deny-all-ingress\n  namespace: payment\nspec:\n  podSelector: {}       # Применяется ко всем подам в namespace\n  policyTypes:\n    - Ingress            # Запрещаем весь входящий трафик\n```\n\n### Пример: разрешить трафик только от конкретного сервиса\n\n\u003Cdetails>\u003Csummary>YAML-манифест NetworkPolicy\u003C\u002Fsummary>\n\n```yaml\napiVersion: networking.k8s.io\u002Fv1\nkind: NetworkPolicy\nmetadata:\n  name: allow-from-gateway\n  namespace: payment\nspec:\n  podSelector:\n    matchLabels:\n      app: payment-service\n  policyTypes:\n    - Ingress\n  ingress:\n    - from:\n        - namespaceSelector:\n            matchLabels:\n              name: gateway\n          podSelector:\n            matchLabels:\n              app: api-gateway\n      ports:\n        - protocol: TCP\n          port: 8080\n```\n\n\u003C\u002Fdetails>\n\n### Пример: ограничение исходящего трафика\n\n\u003Cdetails>\u003Csummary>Egress NetworkPolicy\u003C\u002Fsummary>\n\n```yaml\n# payment-service может обращаться только к PostgreSQL и Kafka\napiVersion: networking.k8s.io\u002Fv1\nkind: NetworkPolicy\nmetadata:\n  name: payment-egress\n  namespace: payment\nspec:\n  podSelector:\n    matchLabels:\n      app: payment-service\n  policyTypes:\n    - Egress\n  egress:\n    - to:\n        - podSelector:\n            matchLabels:\n              app: postgresql\n      ports:\n        - protocol: TCP\n          port: 5432\n    - to:\n        - podSelector:\n            matchLabels:\n              app: kafka\n      ports:\n        - protocol: TCP\n          port: 9092\n    # Разрешить DNS\n    - to: []\n      ports:\n        - protocol: UDP\n          port: 53\n        - protocol: TCP\n          port: 53\n```\n\n\u003C\u002Fdetails>\n\n### Полная изоляция с точечными разрешениями (банковский подход)\n\n\u003Cdetails>\u003Csummary>Deny-all + allow-specific\u003C\u002Fsummary>\n\n```yaml\n# 1. Запретить ВСЁ\napiVersion: networking.k8s.io\u002Fv1\nkind: NetworkPolicy\nmetadata:\n  name: deny-all\n  namespace: payment\nspec:\n  podSelector: {}\n  policyTypes:\n    - Ingress\n    - Egress\n---\n# 2. Разрешить только необходимое\napiVersion: networking.k8s.io\u002Fv1\nkind: NetworkPolicy\nmetadata:\n  name: allow-specific\n  namespace: payment\nspec:\n  podSelector:\n    matchLabels:\n      app: payment-service\n  policyTypes:\n    - Ingress\n    - Egress\n  ingress:\n    - from:\n        - namespaceSelector:\n            matchLabels:\n              name: gateway\n      ports:\n        - port: 8080\n  egress:\n    - to:\n        - namespaceSelector:\n            matchLabels:\n              name: data\n          podSelector:\n            matchLabels:\n              app: postgresql\n      ports:\n        - port: 5432\n```\n\n\u003C\u002Fdetails>\n\nПринцип: «deny all, allow explicit» — запрещено всё, что явно не разрешено.\n\n> **На собеседовании:** интервьюер хочет услышать про принцип deny-all по умолчанию, разницу между Ingress и Egress, и важность не забывать про DNS (port 53) в egress-правилах. Частая ошибка — забыть разрешить DNS и удивляться, почему сервис не может резолвить имена.","","middle",[15],"network-security",[],null,{"title":19,"description":20,"ogTitle":19,"ogDescription":21,"keywords":22,"schemaAnswer":23,"featuredSnippetReady":24},"Что такое NetworkPolicy в Kubernetes? — Gymterview","NetworkPolicy — ресурс Kubernetes, позволяющий контролировать сетевой трафик между подами на уровне IP-адресов и портов. По умолчанию в Kubernetes все поды могу","NetworkPolicy — ресурс Kubernetes, позволяющий контролировать сетевой трафик между подами на уровне IP-адресов и портов.",[15,13],"NetworkPolicy — ресурс Kubernetes, позволяющий контролировать сетевой трафик между подами на уровне IP-адресов и портов. По умолчанию в Kubernetes все поды могут обмениваться трафиком друг с другом — NetworkPolicy ограничивает это поведение.",true]