Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°. ΠΏΡ€Π΅Π²ΠΎΠ΄: ΠΠ²Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π° статията, Reuven Harrison, ΠΈΠΌΠ° Π½Π°Π΄ 20 Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΎΠΏΠΈΡ‚ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° софтуСр, Π° днСс Π΅ CTO ΠΈ ΡΡŠΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π» Π½Π° Tufin, компания, която създава Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π·Π° сигурност. Π”ΠΎΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠΉ Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes ΠΊΠ°Ρ‚ΠΎ доста ΠΌΠΎΡ‰Π΅Π½ инструмСнт Π·Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΎ сСгмСнтиранС Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€, Ρ‚ΠΎΠΉ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° вярва, Ρ‡Π΅ Ρ‚Π΅ Π½Π΅ са Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° лСсни Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°. Π’ΠΎΠ·ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» (доста ΠΎΠ±Π΅ΠΌΠ΅Π½) ΠΈΠΌΠ° Π·Π° Ρ†Π΅Π» Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ информираността Π½Π° спСциалиститС ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π²ΡŠΠΏΡ€ΠΎΡ ΠΈ Π΄Π° ΠΈΠΌ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π°Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

ДнСс ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ всС ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚ Kubernetes Π·Π° изпълнСниС Π½Π° своитС прилоТСния. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΡŠΡ‚ към Ρ‚ΠΎΠ·ΠΈ софтуСр Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° голям, Ρ‡Π΅ някои Π½Π°Ρ€ΠΈΡ‡Π°Ρ‚ ​​Kubernetes β€žΠ½ΠΎΠ²Π°Ρ‚Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма Π·Π° Ρ†Π΅Π½Ρ‚ΡŠΡ€Π° Π·Π° Π΄Π°Π½Π½ΠΈβ€œ. ΠŸΠΎΡΡ‚Π΅ΠΏΠ΅Π½Π½ΠΎ Kubernetes (ΠΈΠ»ΠΈ k8s) Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° сС Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΊΠ°Ρ‚ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° част ΠΎΡ‚ бизнСса, която изисква ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π·Ρ€Π΅Π»ΠΈ бизнСс процСси, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΌΡ€Π΅ΠΆΠΎΠ²Π° сигурност.

Π—Π° спСциалиститС ΠΏΠΎ сигурността, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΎΠ·Π°Π΄Π°Ρ‡Π΅Π½ΠΈ ΠΎΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с Kubernetes, истинското ΠΎΡ‚ΠΊΡ€ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°: Ρ€Π°Π·Ρ€Π΅ΡˆΠΈ всичко.

Π’ΠΎΠ²Π° Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° структура Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ; Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π°Ρ‚ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚Π½ΠΈ стСни. Π’ΠΎΠΉ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ‰Π΅ ΠΎΠ±Ρ…Π²Π°Π½Π΅ някои ΠΊΠ»ΠΎΠΏΠΊΠΈ ΠΈ Ρ‰Π΅ прСдостави ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠΈ Π·Π° ΠΏΠΎΠ΄ΠΏΠΎΠΌΠ°Π³Π°Π½Π΅ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π°Ρ‚Π° Π½Π° прилоТСнията Π² Kubernetes.

ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π·Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π° Kubernetes Π²ΠΈ позволява Π΄Π° управляватС взаимодСйствиСто Π½Π° прилоТСнията, Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° мрСТовия слой (трСтият Π² OSI ΠΌΠΎΠ΄Π΅Π»Π°). ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ нямат някои ΠΎΡ‚ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚Π½ΠΈ стСни, ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° OSI Layer 7 ΠΈ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° Π·Π°ΠΏΠ»Π°Ρ…ΠΈ, Π½ΠΎ Ρ‚Π΅ осигуряват основно Π½ΠΈΠ²ΠΎ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π° сигурност, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π΄ΠΎΠ±Ρ€Π° ΠΎΡ‚ΠΏΡ€Π°Π²Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°.

ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚ ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ подс

Π Π°Π±ΠΎΡ‚Π½ΠΈΡ‚Π΅ натоварвания Π² Kubernetes сС разпрСдСлят ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΡΡŠΡΡ‚ΠΎΡΡ‚ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π·Π°Π΅Π΄Π½ΠΎ. Kubernetes присвоява Π½Π° всСки ΠΏΠΎΠ΄ IP адрСс, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅. ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π°Π΄Π°Π²Π°Ρ‚ ΠΏΡ€Π°Π²Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π·Π° Π³Ρ€ΡƒΠΏΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΏΠΎ ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ Π³Ρ€ΡƒΠΏΠΈΡ‚Π΅ Π·Π° сигурност Π² ΠΎΠ±Π»Π°ΠΊΠ° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ СкзСмпляри Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина.

Π”Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ

Подобно Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ рСсурси Π½Π° Kubernetes, ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ са посочСни Π² YAML. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ balance Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ postgres:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: balance
  policyTypes:
  - Ingress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

(Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°. ΠΏΡ€Π΅Π²ΠΎΠ΄: Ρ‚Π°Π·ΠΈ Π΅ΠΊΡ€Π°Π½Π½Π° снимка, ΠΊΠ°ΠΊΡ‚ΠΎ всички слСдващи ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ, Π΅ създадСна Π½Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ€ΠΎΠ΄Π½ΠΈ инструмСнти Π½Π° Kubernetes, Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° инструмСнта Tufin Orca, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΎΡ‚ компанията Π½Π° Π°Π²Ρ‚ΠΎΡ€Π° Π½Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π½Π°Ρ‚Π° статия ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ Π΅ спомСнат Π² края Π½Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°.)

Π—Π° Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ своя собствСна ΠΌΡ€Π΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, Ρ‰Π΅ Π²ΠΈ трябват основни познания ΠΏΠΎ YAML. Π’ΠΎΠ·ΠΈ Π΅Π·ΠΈΠΊ сС основава Π½Π° ΠΎΡ‚ΡΡ‚ΡŠΠΏ (посочСн ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ, Π° Π½Π΅ ΠΎΡ‚ Ρ€Π°Π·Π΄Π΅Π»ΠΈ). Π•Π»Π΅ΠΌΠ΅Π½Ρ‚ΡŠΡ‚ с ΠΎΡ‚ΡΡ‚ΡŠΠΏ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈ Π½Π° Π½Π°ΠΉ-близкия Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ с ΠΎΡ‚ΡΡ‚ΡŠΠΏ Π½Π°Π΄ Π½Π΅Π³ΠΎ. Нов Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ списъка Π·Π°ΠΏΠΎΡ‡Π²Π° с Ρ‚ΠΈΡ€Π΅, всички останали Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ ΠΈΠΌΠ°Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° ΠΊΠ»ΡŽΡ‡-стойност.

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ стС описали ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π² YAML, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ kubectlΠ·Π° Π΄Π° Π³ΠΎ ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°:

kubectl create -f policy.yaml

БпСцификация Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°

БпСцификацията Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π½Π° Kubernetes Π²ΠΊΠ»ΡŽΡ‡Π²Π° Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π°:

  1. podSelector: Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° Π³Ρ€ΡƒΠΏΠΈΡ‚Π΅, засСгнати ΠΎΡ‚ Ρ‚Π°Π·ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° (Ρ†Π΅Π»ΠΈ) - Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ;
  2. policyTypes: ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊΠ²ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ са Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π² Ρ‚ΠΎΠ²Π°: Π²Ρ…ΠΎΠ΄ ΠΈ/ΠΈΠ»ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄ - ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ€, Π½ΠΎ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ Π΄Π° сС посочи във всички случаи;
  3. ingress: опрСдСля ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ входящ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ към Ρ†Π΅Π»Π΅Π²ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ - ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ€;
  4. egress: опрСдСля ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ изходящ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΡŠΡ‚ ΠΎΡ‚ Ρ†Π΅Π»Π΅Π²ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π½Π΅ Π΅ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π΅Π½.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€, Π²Π·Π΅Ρ‚ ΠΎΡ‚ уСбсайта Π½Π° Kubernetes (Π·Π°ΠΌΠ΅Π½ΠΈΡ… role Π½Π° app), ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΈ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈΡ‚Π΅ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π°:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:    # <<<
    matchLabels:
      app: db
  policyTypes:    # <<<
  - Ingress
  - Egress
  ingress:        # <<<
  - from:
    - ipBlock:
        cidr: 172.17.0.0/16
        except:
        - 172.17.1.0/24
    - namespaceSelector:
        matchLabels:
          project: myproject
    - podSelector:
        matchLabels:
          role: frontend
    ports:
    - protocol: TCP
      port: 6379
  egress:         # <<<
  - to:
    - ipBlock:
        cidr: 10.0.0.0/24
    ports:
    - protocol: TCP
      port: 5978

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността
Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

Моля, ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ ΠΈ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈΡ‚Π΅ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π°. Π’ΠΎ Π΅ само Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ podSelector, Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅.

Ако пропуснСтС policyTypes, ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Ρ‰Π΅ сС Ρ‚ΡŠΠ»ΠΊΡƒΠ²Π°, ΠΊΠ°ΠΊΡ‚ΠΎ слСдва:

  • По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ сС ΠΏΡ€ΠΈΠ΅ΠΌΠ°, Ρ‡Π΅ Ρ‚ΠΎΠΉ опрСдСля Π²Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° страна. Ако ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π½Π΅ посочва ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ Ρ‚ΠΎΠ²Π°, систСмата Ρ‰Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ΅, Ρ‡Π΅ цСлият Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π΅ Π·Π°Π±Ρ€Π°Π½Π΅Π½.
  • ΠŸΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΎΡ‚ ΠΈΠ·Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° страна Ρ‰Π΅ сС опрСдСля ΠΎΡ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ ΠΈΠ»ΠΈ ΠΎΡ‚ΡΡŠΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ изходящ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€.

Π—Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π²ΠΈΠ½Π°Π³ΠΈ Π³ΠΎ ΠΏΡ€Π°Π²Π΅Ρ‚Π΅ ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ policyTypes.

Π‘ΠΏΠΎΡ€Π΅Π΄ Π³ΠΎΡ€Π½Π°Ρ‚Π° Π»ΠΎΠ³ΠΈΠΊΠ°, Π°ΠΊΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ ingress ΠΈ / ΠΈΠ»ΠΈ egress пропуснат, ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Ρ‰Π΅ ΠΎΡ‚ΠΊΠ°ΠΆΠ΅ цСлия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ (Π²ΠΈΠΆΡ‚Π΅ β€žΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅β€œ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ).

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ Π Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅

Ако Π½Π΅ са Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Kubernetes позволява цСлия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅. Всички ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠ³Π°Ρ‚ свободно Π΄Π° обмСнят информация ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρƒ си. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π½Π΅Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° сигурността, Π½ΠΎ Π½Π΅ забравяйтС, Ρ‡Π΅ Kubernetes ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅, Π·Π° Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ Π½Π° прилоТСнията. ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° бяха Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΏΠΎ-късно.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π° ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²Π°Ρ‚Π° ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° са ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π·Π° ΡΡŠΡ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π½Π° Kubernetes. Π’Π΅ са ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π΄Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Ρ‚ логичСскитС срСди Π΅Π΄Π½Π° ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ комуникацията ΠΌΠ΅ΠΆΠ΄Ρƒ пространствата Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

Подобно Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° Kubernetes, ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ТивСят Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°. Π’ Π±Π»ΠΎΠΊΠ° metadata ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС към ΠΊΠΎΠ΅ пространство ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π°:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: my-namespace  # <<<
spec:
...

Ако пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° Π½Π΅ Π΅ ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈΡ‚Π΅, систСмата Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² kubectl (ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ namespace=default):

kubectl apply -n my-namespace -f namespace.yaml

Аз ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ посочСтС ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ пространството Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π°, освСн Π°ΠΊΠΎ Π½Π΅ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, която Π΅ насочСна към мноТСство пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° навСднъТ.

ΠŸΡŠΡ€Π²ΠΈΡ‡Π΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ podSelector Π² ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Ρ‰Π΅ ΠΈΠ·Π±Π΅Ρ€Π΅ pods ΠΎΡ‚ пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, към ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ (ΠΈΠΌΠ° ΠΎΡ‚ΠΊΠ°Π· Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ pods ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°).

По ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½, podSelectors във Π²Ρ…ΠΎΠ΄Π½ΠΈ ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚ ΠΏΠΎΠ΄ΠΎΠ²Π΅ само ΠΎΡ‚ тяхното собствСно пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, освСн Π°ΠΊΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π° сС Π½Π΅ Π³ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ с namespaceSelector (Ρ‚ΠΎΠ²Π° Ρ‰Π΅ бъдС обсъдСно Π² Ρ€Π°Π·Π΄Π΅Π»Π° β€žΠ€ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ ΠΏΠΎ пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ΠΈ Π³Ρ€ΡƒΠΏΠΈβ€œ).

ΠŸΡ€Π°Π²ΠΈΠ»Π° Π·Π° ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ

Π˜ΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° са ΡƒΠ½ΠΈΠΊΠ°Π»Π½ΠΈ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π΅Π΄Π½ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°. НС ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Π΄Π²Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ с Π΅Π΄Π½ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ ΠΈΠΌΠ΅ Π² Π΅Π΄Π½ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ пространство, Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ с Π΅Π΄Π½ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ ΠΈΠΌΠ΅ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ пространства. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ искатС Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚Π΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΡΡŠΡ‰Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π² мноТСство пространства.

ОсобСно ΠΌΠΈ харСсва Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½Π΅. Π‘ΡŠΡΡ‚ΠΎΠΈ сС ΠΎΡ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° с Ρ†Π΅Π»Π΅Π²ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ²Π΅. НапримСр:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres  # <<<
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: admin
  policyTypes:
  - Ingress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

Π•Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΈΠΊΠ°Ρ‡ΠΈΡ‚Π΅ пСрсонализирани Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ към ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π½Π° Kubernetes, ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΈ пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°. Π•Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ (Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ - Ρ‚Π°Π³ΠΎΠ²Π΅) са Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚ Π½Π° Ρ‚Π°Π³ΠΎΠ²Π΅ Π² ΠΎΠ±Π»Π°ΠΊΠ°. ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ Π·Π° ΠΈΠ·Π±ΠΎΡ€ подсза ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚:

podSelector:
  matchLabels:
    role: db

… ΠΈΠ»ΠΈ пространства ΠΎΡ‚ имСнакъм ΠΊΠΎΠΈΡ‚ΠΎ сС отнасят. Π’ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ·Π±ΠΈΡ€Π° всички ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π² пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° със ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ:

namespaceSelector:
  matchLabels:
    project: myproject

Π•Π΄Π½ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ namespaceSelector ΡƒΠ²Π΅Ρ€Π΅Ρ‚Π΅ сС, Ρ‡Π΅ ΠΈΠ·Π±Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΎΡ‚ вас пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ правилния Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚. Π˜ΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈΡ‚Π΅ пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ΠΊΠ°Ρ‚ΠΎ default ΠΈ kube-system, ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ към пространство ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ²Π°:

kubectl label namespace default namespace=default

Π’ ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ пространството Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π² Ρ€Π°Π·Π΄Π΅Π»Π° metadata трябва Π΄Π° сС отнася Π΄ΠΎ дСйствитСлното ΠΈΠΌΠ΅ Π½Π° пространството, Π° Π½Π΅ към Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π°:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default   # <<<
spec:
...

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ ΠΈ дСстинация

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π½Π°Ρ‚Π° стСна сС ΡΡŠΡΡ‚ΠΎΡΡ‚ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° с ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ ΠΈ дСстинации. ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes сС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚ Π·Π° Ρ†Π΅Π» - Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ²Π΅, към ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ - ΠΈ слСд Ρ‚ΠΎΠ²Π° сС Π·Π°Π΄Π°Π²Π°Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° входящ ΠΈ/ΠΈΠ»ΠΈ изходящ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. Π’ нашия ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ†Π΅Π»Ρ‚Π° Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ всички ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π² пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° default с Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ с ΠΊΠ»ΡŽΡ‡ app ΠΈ смисъл db:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: db   # <<<
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - ipBlock:
        cidr: 172.17.0.0/16
        except:
        - 172.17.1.0/24
    - namespaceSelector:
        matchLabels:
          project: myproject
    - podSelector:
        matchLabels:
          role: frontend
    ports:
    - protocol: TCP
      port: 6379
  egress:
  - to:
    - ipBlock:
        cidr: 10.0.0.0/24
    ports:
    - protocol: TCP
      port: 5978

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността
Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

ΠŸΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π» ingress Π² Ρ‚Π°Π·ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° отваря входящия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ към Ρ†Π΅Π»Π΅Π²ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ²Π΅. Π‘ Π΄Ρ€ΡƒΠ³ΠΈ Π΄ΡƒΠΌΠΈ, Π²Ρ…ΠΎΠ΄ΡŠΡ‚ Π΅ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊΡŠΡ‚, Π° Ρ†Π΅Π»Ρ‚Π° Π΅ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° дСстинация. По ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½ ΠΈΠ·Ρ…ΠΎΠ΄ΡŠΡ‚ Π΅ дСстинацията, Π° Ρ†Π΅Π»Ρ‚Π° Π΅ нСйният ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ.

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

Π’ΠΎΠ²Π° Π΅ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎ Π½Π° Π΄Π²Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π½Π°Ρ‚Π° стСна: Ingress β†’ Target; Π¦Π΅Π» β†’ ИзлизанС.

Π˜Π·Ρ…ΠΎΠ΄ ΠΈ DNS (Π²Π°ΠΆΠ½ΠΎ!)

Π§Ρ€Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° изходящия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ спСциално Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° DNS - Kubernetes ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ‚Π°Π·ΠΈ услуга Π·Π° ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€Π°Π½Π΅ Π½Π° услуги към IP адрСси. НапримСр, слСдната ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° няма Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½Π΅ стС Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ balance Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ DNS:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres
  policyTypes:
  - Egress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚Π΅, ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ DNS услугата:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres
  - to:               # <<<
    ports:            # <<<
    - protocol: UDP   # <<<
      port: 53        # <<<
  policyTypes:
  - Egress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

ПослСдСн Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ to Π΅ ΠΏΡ€Π°Π·Π΅Π½ ΠΈ слСдоватСлно ΠΈΠ½Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ·Π±ΠΈΡ€Π° всички ΠΏΠΎΠ΄ΠΎΠ²Π΅ във всички пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, позволявайки balance ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° DNS заявки към ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½Π°Ρ‚Π° услуга Π½Π° Kubernetes (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰Π° Π² пространството kube-system).

Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΠ±Π°Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΡ€Π΅ΠΊΠ°Π»Π΅Π½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅Π»Π½ΠΈ ΠΈ нСсигурни, Π·Π°Ρ‰ΠΎΡ‚ΠΎ позволява DNS заявкитС Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ насочвани извън ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅ Π² Ρ‚Ρ€ΠΈ послСдоватСлни ΡΡ‚ΡŠΠΏΠΊΠΈ.

1. Π Π°Π·Ρ€Π΅ΡˆΠ΅Ρ‚Π΅ само DNS заявки Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Ρ‡Ρ€Π΅Π· добавянС namespaceSelector:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres
  - to:
    - namespaceSelector: {} # <<<
    ports:
    - protocol: UDP
      port: 53
  policyTypes:
  - Egress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

2. Π Π°Π·Ρ€Π΅ΡˆΠ΅Ρ‚Π΅ DNS заявки само Π² пространството Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° kube-system.

Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, трябва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ към пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° kube-system: kubectl label namespace kube-system namespace=kube-system - ΠΈ Π³ΠΎ Π·Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Π² ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ namespaceSelector:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: postgres
  - to:
    - namespaceSelector:         # <<<
        matchLabels:             # <<<
          namespace: kube-system # <<<
    ports:
    - protocol: UDP
      port: 53
  policyTypes:
  - Egress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

3. ΠŸΠ°Ρ€Π°Π½ΠΎΠΈΡ‡Π½ΠΈΡ‚Π΅ Ρ…ΠΎΡ€Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΎΡ‚ΠΈΠ΄Π°Ρ‚ Π΄ΠΎΡ€ΠΈ ΠΏΠΎ-Π΄Π°Π»Π΅Ρ‡ ΠΈ Π΄Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Ρ‚ DNS заявкитС Π΄ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° DNS услуга kube-system. Π Π°Π·Π΄Π΅Π»ΡŠΡ‚ β€žΠ€ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ ΠΏΠΎ пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° И ΠΏΠΎΠ΄ΠΎΠ²Π΅β€œ Ρ‰Π΅ Π²ΠΈ ΠΊΠ°ΠΆΠ΅ ΠΊΠ°ΠΊ Π΄Π° постигнСтС Ρ‚ΠΎΠ²Π°.

Π”Ρ€ΡƒΠ³ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π΅ Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ DNS Π½Π° Π½ΠΈΠ²ΠΎ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°. Π’ Ρ‚ΠΎΠ·ΠΈ случай няма Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС отваря Π·Π° всяка услуга:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.dns
  namespace: default
spec:
  podSelector: {} # <<<
  egress:
  - to:
    - namespaceSelector: {}
    ports:
    - protocol: UDP
      port: 53
  policyTypes:
  - Egress

ΠŸΡ€Π°Π·Π½ΠΎ podSelector ΠΈΠ·Π±ΠΈΡ€Π° всички ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π² пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°.

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

ΠŸΡŠΡ€Π²ΠΈ ΠΌΠ°Ρ‡ ΠΈ Ρ€Π΅Π΄ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π°

Π’ ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΎΠ½Π°Π»Π½ΠΈΡ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚Π½ΠΈ стСни дСйствиСто (Π Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ ΠΈΠ»ΠΈ ΠžΡ‚ΠΊΠ°Π·) Π²ΡŠΡ€Ρ…Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚ сС опрСдСля ΠΎΡ‚ ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π° ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‚ΠΎΠΉ отговаря. Π’ Kubernetes Ρ€Π΅Π΄ΡŠΡ‚ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ няма Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π΅ са Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ са Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ свободно Π΄Π° обмСнят информация. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, всяка Π³Ρ€ΡƒΠΏΠ°, засСгната ΠΎΡ‚ ΠΏΠΎΠ½Π΅ Π΅Π΄Π½Π° ΠΎΡ‚ тях, сС ΠΈΠ·ΠΎΠ»ΠΈΡ€Π° спорСд Π΄ΠΈΠ·ΡŽΠ½ΠΊΡ†ΠΈΡΡ‚Π° (логичСско Π˜Π›Π˜) Π½Π° всички ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са Π³ΠΎ ΠΈΠ·Π±Ρ€Π°Π»ΠΈ. ΠŸΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са засСгнати ΠΎΡ‚ Π½ΠΈΠΊΠ°ΠΊΠ²Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, остават ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° отстраняванС.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° отстраняванС (β€žΠžΡ‚ΠΊΠ°Π·β€œ)

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π½Π°Ρ‚Π° стСна ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π²Π°Ρ‚ всСки Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ Π΅ ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½.

Π’ Kubernetes няма дСйствиС Π·Π° ΠΎΡ‚ΠΊΠ°Π·, ΠΎΠ±Π°Ρ‡Π΅, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π΅Ρ„Π΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС постигнС с ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½Π° (Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅Π»Π½Π°) ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Ρ‡Ρ€Π΅Π· ΠΈΠ·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€Π°Π·Π½Π° Π³Ρ€ΡƒΠΏΠ° ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ (ingress):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Ingress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

Π’Π°Π·ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΈΠ·Π±ΠΈΡ€Π° всички ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π² пространството Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° ΠΈ оставя Π²Ρ…ΠΎΠ΄Π° Π½Π΅Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½, ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π²Π° цСлия входящ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.

По ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅ цСлия изходящ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΎΡ‚ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all-egress
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Egress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

Моля, ΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Ρ‚ΠΎΠ²Π° всички Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, позволяващи Ρ‚Ρ€Π°Ρ„ΠΈΠΊ към pods Π² пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, Ρ‰Π΅ ΠΈΠΌΠ°Ρ‚ прСдимство ΠΏΡ€Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° добавянС Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ ΠΏΡ€Π΅Π΄ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° ΠΎΡ‚ΠΊΠ°Π· Π² конфигурация Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π½Π° стСна).

Π Π°Π·Ρ€Π΅ΡˆΠ΅Ρ‚Π΅ всичко (Any-Any-Any-Allow)

Π—Π° Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° всички, трябва Π΄Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ Π·Π° ΠΎΡ‚ΠΊΠ°Π· ΠΏΠΎ-Π³ΠΎΡ€Π΅ с ΠΏΡ€Π°Π·Π΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ ingress:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-all
  namespace: default
spec:
  podSelector: {}
  ingress: # <<<
  - {}     # <<<
  policyTypes:
  - Ingress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

Позволява Π΄ΠΎΡΡ‚ΡŠΠΏ ΠΎΡ‚ всички ΠΏΠΎΠ΄ΠΎΠ²Π΅ във всички пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° (ΠΈ всички IP) към всСки ΠΏΠΎΠ΄ Π² пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° default. Π’ΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΅ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ. Понякога ΠΎΠ±Π°Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ някои ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π·Π° Π΄Π° диагностициратС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС стСснСно, Π·Π° Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ само Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ подс (app:balance) Π² пространството Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° default:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-all-to-balance
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: balance
  ingress: 
  - {}
  policyTypes:
  - Ingress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

Π‘Π»Π΅Π΄Π½Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° позволява цСлия входящ ΠΈ изходящ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ всСки IP извън ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-all
spec:
  podSelector: {}
  ingress:
  - {}
  egress:
  - {}
  policyTypes:
  - Ingress
  - Egress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността
Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° мноТСство ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ

ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° логичСско Π˜Π›Π˜ Π½Π° Ρ‚Ρ€ΠΈ Π½ΠΈΠ²Π°; Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ‚Π° Π½Π° всСки pod са Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° всички ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π³ΠΎ засягат:

1. Π’ ΠΏΠΎΠ»Π΅Ρ‚Π°Ρ‚Π° from ΠΈ to ΠœΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ (всички ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ с Π˜Π›Π˜):

  • namespaceSelector β€” ΠΈΠ·Π±ΠΈΡ€Π° цялото пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°;
  • podSelector β€” ΠΈΠ·Π±ΠΈΡ€Π° ΡˆΡƒΡˆΡƒΠ»ΠΊΠΈ;
  • ipBlock β€” ΠΈΠ·Π±ΠΈΡ€Π° ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ°.

ОсвСн Ρ‚ΠΎΠ²Π° броят Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ (Π΄ΠΎΡ€ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈ) Π² подсСкциитС from/to Π½Π΅ Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ. Всички Ρ‚Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Ρ‡Ρ€Π΅Π· логичСско Π˜Π›Π˜.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: indexer
    - podSelector:
        matchLabels:
          app: admin
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
  - Ingress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

2. Π’ Ρ€Π°Π·Π΄Π΅Π»Π° Π·Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ingress ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ from (ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ логичСско Π˜Π›Π˜). По ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½ Ρ€Π°Π·Π΄Π΅Π» egress ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ to (ΡΡŠΡ‰ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ΠΎ Ρ‡Ρ€Π΅Π· Π΄ΠΈΠ·ΡŽΠ½ΠΊΡ†ΠΈΡ):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: indexer
  - from:
    - podSelector:
        matchLabels:
          app: admin
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
  - Ingress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

3. Π Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΡΡŠΡ‰ΠΎ сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ с логичСско Π˜Π›Π˜

Но ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΈΠΌ ΠΈΠΌΠ° Π΅Π΄Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΠ΅Ρ‚ΠΎ посочи ΠšΡ€ΠΈΡ ΠšΡƒΠ½ΠΈ: Kubernetes ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ само с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ policyTypes (Ingress ΠΈΠ»ΠΈ Egress). ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅, Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‰ΠΈ Π²Ρ…ΠΎΠ΄Π° (ΠΈΠ»ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄Π°), Ρ‰Π΅ сС замСнят Π²Π·Π°ΠΈΠΌΠ½ΠΎ.

Π’Ρ€ΡŠΠ·ΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°

По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ сподСлянСто Π½Π° информация ΠΌΠ΅ΠΆΠ΄Ρƒ пространствата ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Ρ‡Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° ΠΎΡ‚ΠΊΠ°Π·, която Ρ‰Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈ изходящия ΠΈ/ΠΈΠ»ΠΈ входящия Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π² пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° (Π²ΠΈΠΆΡ‚Π΅ β€žΠŸΡ€Π°Π²ΠΈΠ»ΠΎ Π·Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅β€œ ΠΏΠΎ-Π³ΠΎΡ€Π΅).

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ стС Π±Π»ΠΎΠΊΠΈΡ€Π°Π»ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° (Π²ΠΈΠΆΡ‚Π΅ β€žΠŸΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ Π·Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅β€œ ΠΏΠΎ-Π³ΠΎΡ€Π΅), ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° ΠΎΡ‚ΠΊΠ°Π·, ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠΈ ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ namespaceSelector:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: database.postgres
  namespace: database
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - namespaceSelector: # <<<
        matchLabels:
          namespace: default
  policyTypes:
  - Ingress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° всички pods Π² пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° default Ρ‰Π΅ ΠΈΠΌΠ° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ подс postgres Π² пространството Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° database. Но ΠΊΠ°ΠΊΠ²ΠΎ, Π°ΠΊΠΎ искатС Π΄Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ postgres само ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π² пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° default?

Π€ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΏΠΎ пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° ΠΈ Π³Ρ€ΡƒΠΏΠΈ

Kubernetes вСрсия 1.11 ΠΈ ΠΏΠΎ-Π½ΠΎΠ²Π° Π²ΠΈ позволява Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ namespaceSelector ΠΈ podSelector ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ логичСско И. ИзглСТда Ρ‚Π°ΠΊΠ°:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: database.postgres
  namespace: database
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          namespace: default
      podSelector: # <<<
        matchLabels:
          app: admin
  policyTypes:
  - Ingress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

Π—Π°Ρ‰ΠΎ Ρ‚ΠΎΠ²Π° сС Ρ‚ΡŠΠ»ΠΊΡƒΠ²Π° ΠΊΠ°Ρ‚ΠΎ И вмСсто ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΎΡ‚ΠΎ Π˜Π›Π˜?

Моля, ΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ podSelector Π½Π΅ Π·Π°ΠΏΠΎΡ‡Π²Π° с Ρ‚ΠΈΡ€Π΅. Π’ YAML Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ podSelector ΠΈ стои ΠΏΡ€Π΅Π΄ Π½Π΅Π³ΠΎ namespaceSelector ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‰Π° към ΡΡŠΡ‰ΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ списъка. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ Ρ‚Π΅ сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ с логичСско И.

ДобавянС Π½Π° Ρ‚ΠΈΡ€Π΅ ΠΏΡ€Π΅Π΄ΠΈ podSelector Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ появата Π½Π° Π½ΠΎΠ² Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ списъка, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ бъдС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ с ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ namespaceSelector ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ логичСско Π˜Π›Π˜.

Π—Π° Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ капсули със спСцифичСн Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ във всички пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°, Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ ΠΏΡ€Π°Π·Π½ΠΎ namespaceSelector:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: database.postgres
  namespace: database
spec:
  podSelector:
    matchLabels:
      app: postgres
  ingress:
  - from:
    - namespaceSelector: {}
      podSelector:
        matchLabels:
          app: admin
  policyTypes:
  - Ingress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ сС обСдиняват с I

ΠŸΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π½Π° стСна с мноТСство ΠΎΠ±Π΅ΠΊΡ‚ΠΈ (хостовС, ΠΌΡ€Π΅ΠΆΠΈ, Π³Ρ€ΡƒΠΏΠΈ) сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ Ρ‡Ρ€Π΅Π· логичСско Π˜Π›Π˜. Π‘Π»Π΅Π΄Π½ΠΎΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ, Π°ΠΊΠΎ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊΡŠΡ‚ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° съвпада Host_1 Π˜Π›Π˜ Host_2:

| Source | Destination | Service | Action |
| ----------------------------------------|
| Host_1 | Subnet_A    | HTTPS   | Allow  |
| Host_2 |             |         |        |
| ----------------------------------------|

Напротив, Π² Kubernetes Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ Π² podSelector ΠΈΠ»ΠΈ namespaceSelector сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ с логичСско И. НапримСр слСдното ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ‰Π΅ ΠΈΠ·Π±Π΅Ρ€Π΅ ΠΏΠΎΠ΄ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚ ΠΈ Π΄Π²Π°Ρ‚Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π°, role=db И version=v2:

podSelector:
  matchLabels:
    role: db
    version: v2

Π‘ΡŠΡ‰Π°Ρ‚Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π²Π°ΠΆΠΈ Π·Π° всички Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ: сСлСктори Π½Π° Ρ†Π΅Π»Π΅Π²ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, сСлСктори Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΈ сСлСктори Π½Π° пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°.

ΠŸΠΎΠ΄ΠΌΡ€Π΅ΠΆΠΈ ΠΈ IP адрСси (IPBlocks)

Π—Π°Ρ‰ΠΈΡ‚Π½ΠΈΡ‚Π΅ стСни ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ VLAN, IP адрСси ΠΈ ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠΈ, Π·Π° Π΄Π° сСгмСнтират ΠΌΡ€Π΅ΠΆΠ°.

Π’ Kubernetes IP адрСситС сС присвояват Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС промСнят чСсто, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° ΠΈΠ·Π±ΠΎΡ€ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΈ пространства ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ.

ΠŸΠΎΠ΄ΠΌΡ€Π΅ΠΆΠΈ (ipBlocks) сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΏΡ€ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° входящи (входящи) ΠΈΠ»ΠΈ изходящи (изходящи) външни (сСвСр-юг) Π²Ρ€ΡŠΠ·ΠΊΠΈ. НапримСр Ρ‚Π°Π·ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° сС отваря Π·Π° всички ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΠΎΡ‚ пространството Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° default Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Google DNS услуга:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: egress-dns
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Egress
  egress:
  - to:
    - ipBlock:
        cidr: 8.8.8.8/32
    ports:
    - protocol: UDP
      port: 53

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

ΠŸΡ€Π°Π·Π½ΠΈΡΡ‚ сСлСктор Π½Π° ΠΏΠΎΠ΄ Π² Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° β€žΠΈΠ·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° всички ΠΏΠΎΠ΄ Π² пространството ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°β€œ.

Π’Π°Π·ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° позволява Π΄ΠΎΡΡ‚ΡŠΠΏ само Π΄ΠΎ 8.8.8.8; Π΄ΠΎΡΡ‚ΡŠΠΏΡŠΡ‚ Π΄ΠΎ всСки Π΄Ρ€ΡƒΠ³ IP Π΅ Π·Π°Π±Ρ€Π°Π½Π΅Π½. Π’Π°ΠΊΠ° Ρ‡Π΅ ΠΏΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ стС Π±Π»ΠΎΠΊΠΈΡ€Π°Π»ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° DNS услуга Π½Π° Kubernetes. Ако всС ΠΏΠ°ΠΊ искатС Π΄Π° Π³ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅, посочСтС Ρ‚ΠΎΠ²Π° ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ.

ОбикновСно ipBlocks ΠΈ podSelectors са Π²Π·Π°ΠΈΠΌΠ½ΠΎ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰ΠΈ сС, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ‚Π΅ IP адрСси Π½Π° подс Π½Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² ipBlocks. Π§Ρ€Π΅Π· посочванС Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ IP подс, Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‰Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠΈ към/ΠΎΡ‚ pods с Ρ‚Π΅Π·ΠΈ адрСси. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° няма Π΄Π° Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠΎΠΉ IP адрСс Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅, ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‚Π΅ Π½Π΅ трябва Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° ΠΈΠ·Π±ΠΎΡ€ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅.

ΠšΠ°Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‚Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, слСдната ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π²ΠΊΠ»ΡŽΡ‡Π²Π° всички IP адрСси ΠΈ слСдоватСлно позволява Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ всички Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: egress-any
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Egress
  egress:
  - to:
    - ipBlock:
        cidr: 0.0.0.0/0

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏ само Π΄ΠΎ външни IP адрСси, с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ‚Π΅ IP адрСси Π½Π° подс. НапримСр, Π°ΠΊΠΎ ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Π½Π° вашия pod Π΅ 10.16.0.0/14:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: egress-any
  namespace: default
spec:
  podSelector: {}
  policyTypes:
  - Egress
  egress:
  - to:
    - ipBlock:
        cidr: 0.0.0.0/0
        except:
        - 10.16.0.0/14

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

ΠŸΠΎΡ€Ρ‚ΠΎΠ²Π΅ ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ

ОбикновСно капсулитС ΡΠ»ΡƒΡˆΠ°Ρ‚ Π΅Π΄ΠΈΠ½ ΠΏΠΎΡ€Ρ‚. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π΄Π° Π½Π΅ посочитС Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ Π² ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° ΠΈ Π΄Π° оставитС всичко ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π° сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈΡ‚Π΅ възмоТно Π½Π°ΠΉ-рСстриктивни, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π² някои случаи всС ΠΎΡ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: indexer
    - podSelector:
        matchLabels:
          app: admin
    ports:             # <<<
      - port: 443      # <<<
        protocol: TCP  # <<<
      - port: 80       # <<<
        protocol: TCP  # <<<
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
  - Ingress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

Π˜ΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ ΡΠ΅Π»Π΅ΠΊΡ‚ΠΎΡ€ΡŠΡ‚ ports Π²Π°ΠΆΠΈ Π·Π° всички Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π² Π±Π»ΠΎΠΊΠ° to ΠΈΠ»ΠΈ from, ΠΊΠΎΠ΅Ρ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°. Π—Π° Π΄Π° посочитС Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ, Ρ€Π°Π·Π΄Π΅Π»Π΅Ρ‚Π΅ ingress ΠΈΠ»ΠΈ egress Π½Π° няколко ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π° с to ΠΈΠ»ΠΈ from ΠΈ във всСки Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π²Π°ΡˆΠΈΡ‚Π΅ ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default.postgres
  namespace: default
spec:
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: indexer
    ports:             # <<<
     - port: 443       # <<<
       protocol: TCP   # <<<
  - from:
    - podSelector:
        matchLabels:
          app: admin
    ports:             # <<<
     - port: 80        # <<<
       protocol: TCP   # <<<
  podSelector:
    matchLabels:
      app: postgres
  policyTypes:
  - Ingress

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes Π·Π° спСциалисти ΠΏΠΎ сигурността

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ Π½Π° ΠΏΠΎΡ€Ρ‚Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅:

  • Ако пропуснСтС напълно дСфиницията Π½Π° ΠΏΠΎΡ€Ρ‚ (ports), Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° всички ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ ΠΈ всички ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅;
  • Ако пропуснСтС дСфиницията Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° (protocol), Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° TCP;
  • Ако пропуснСтС дСфиницията Π½Π° ΠΏΠΎΡ€Ρ‚ (port), Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° всички ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅.

Най-Π΄ΠΎΠ±Ρ€Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°: НС Ρ€Π°Π·Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π½Π° стойности ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, посочСтС ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Π²ΠΈ трябва.

Моля, ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ трябва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ Π½Π° pod, Π° Π½Π΅ сСрвизни ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ (ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Ρ‚ΠΎΠ²Π° Π² слСдващия ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„).

Π”Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Π»ΠΈ са ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΈΠ»ΠΈ услуги?

ОбикновСно ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅ Π² Kubernetes ΠΈΠΌΠ°Ρ‚ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΅Π΄ΠΈΠ½ Π΄ΠΎ Π΄Ρ€ΡƒΠ³ Ρ‡Ρ€Π΅Π· услуга – Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ Π±Π°Π»Π°Π½ΡΡŒΠΎΡ€ Π½Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ, ΠΊΠΎΠΉΡ‚ΠΎ прСнасочва Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° към ΠΏΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ внСдряват услугата. МоТС Π±ΠΈ си мислитС, Ρ‡Π΅ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚ Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ услугитС, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Ρ‚Π°ΠΊΠ°. ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes работят Π½Π° ΠΏΠΎΠ΄ ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅, Π° Π½Π΅ Π½Π° сСрвизни ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅.

НапримСр, Π°ΠΊΠΎ Π΄Π°Π΄Π΅Π½Π° услуга ΡΠ»ΡƒΡˆΠ° ΠΏΠΎΡ€Ρ‚ 80, Π½ΠΎ прСнасочва Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° към ΠΏΠΎΡ€Ρ‚ 8080 Π½Π° своитС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, трябва Π΄Π° посочитС Ρ‚ΠΎΡ‡Π½ΠΎ 8080 Π² ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°.

Вакъв ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ трябва Π΄Π° сС счита Π·Π° Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½: Π°ΠΊΠΎ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° структура Π½Π° услугата (ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅Ρ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ΄ΡΠ»ΡƒΡˆΠ²Π°Ρ‚) сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Ρ‰Π΅ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ.

Нов Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ Service Mesh (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²ΠΈΠΆΡ‚Π΅ Π·Π° Istio ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ - ΠΏΡ€ΠΈΠ±Π». ΠΏΡ€Π΅Π².) Π²ΠΈ позволява Π΄Π° сС справитС с Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

НСобходимо Π»ΠΈ Π΅ Π΄Π° рСгистриратС Ingress ΠΈ Egress?

ΠšΡ€Π°Ρ‚ΠΊΠΈΡΡ‚ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π΅ Π΄Π°, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΠΏΠΎΠ΄ A Π΄Π° ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π° с pod B, трябва Π΄Π° ΠΌΡƒ бъдС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π΄Π° създадС изходяща Π²Ρ€ΡŠΠ·ΠΊΠ° (Π·Π° Ρ‚ΠΎΠ²Π° трябва Π΄Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ‚Π΅ изходяща ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°), Π° pod B трябва Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ входяща Π²Ρ€ΡŠΠ·ΠΊΠ° ( Π·Π° Ρ‚ΠΎΠ²Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚Π΅ ΠΎΡ‚ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° Π²Ρ…ΠΎΠ΄).

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° ΠΎΠ±Π°Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·Ρ‡ΠΈΡ‚Π°Ρ‚Π΅ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Π·Π° Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠΈ Π² Π΅Π΄Π½Π°Ρ‚Π° ΠΈΠ»ΠΈ Π΄Π²Π΅Ρ‚Π΅ посоки.

Ако някои ΠΏΠΎΠ΄-ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·Π±Ρ€Π°Π½ΠΈ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅-ΠΏΠΎΠ»ΠΈΡ‚ΠΈΡ†ΠΈ, Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΡ‚Π΅ ΠΌΡƒ ограничСния Ρ‰Π΅ сС опрСдСлят ΠΎΡ‚ тяхната Π΄ΠΈΠ·ΡŽΠ½ΠΊΡ†ΠΈΡ. Π’ Ρ‚ΠΎΠ·ΠΈ случай Ρ‰Π΅ трябва ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ към Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° -към адрСсата. Ако Π³Ρ€ΡƒΠΏΠ° Π½Π΅ Π΅ ΠΈΠ·Π±Ρ€Π°Π½Π° ΠΎΡ‚ никоя ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, изходящият (изходящ) Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

По ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½ Π΅ ΡΡŠΠ΄Π±Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Π΄Ρ€Π΅ΡΡŠΡ‚, ΠΈΠ·Π±Ρ€Π°Π½ΠΈ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π½Π°Π²Π»ΠΈΠ·Π°Π½Π΅-ΠΏΠΎΠ»ΠΈΡ‚ΠΈΡ†ΠΈ, Ρ‰Π΅ сС опрСдСлят ΠΎΡ‚ тяхната Π΄ΠΈΠ·ΡŽΠ½ΠΊΡ†ΠΈΡ. Π’ Ρ‚ΠΎΠ·ΠΈ случай трябва ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ Π΄Π° ΠΌΡƒ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΎΡ‚ Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ. Ако Π³Ρ€ΡƒΠΏΠ° Π½Π΅ Π΅ ΠΈΠ·Π±Ρ€Π°Π½Π° ΠΎΡ‚ Π½ΠΈΠΊΠ°ΠΊΠ²Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, цСлият входящ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π·Π° нСя Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

Π’ΠΈΠΆΡ‚Π΅ Stateful ΠΈΠ»ΠΈ Stateless ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ.

Π”Π½Π΅Π²Π½ΠΈΡ†ΠΈ

ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π° Kubernetes Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° рСгистрират Ρ‚Ρ€Π°Ρ„ΠΈΠΊ. Π’ΠΎΠ²Π° затруднява опрСдСлянСто Π΄Π°Π»ΠΈ Π΄Π°Π΄Π΅Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΏΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ услоТнява Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° сигурността.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° към външни услуги

ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π° Kubernetes Π½Π΅ Π²ΠΈ позволяват Π΄Π° посочитС напълно ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΎ ΠΈΠΌΠ΅ Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½ (DNS) Π² ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ сСкции. Π’ΠΎΠ·ΠΈ Ρ„Π°ΠΊΡ‚ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ нСудобство, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΎΠΏΠΈΡ‚Π²Π°Ρ‚Π΅ Π΄Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° към външни дСстинации, ΠΊΠΎΠΈΡ‚ΠΎ нямат фиксиран IP адрСс (ΠΊΠ°Ρ‚ΠΎ aws.com).

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π°

Π—Π°Ρ‰ΠΈΡ‚Π½ΠΈΡ‚Π΅ стСни Ρ‰Π΅ Π²ΠΈ прСдупрСдят ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΈ Ρ‰Π΅ ΠΎΡ‚ΠΊΠ°ΠΆΠ°Ρ‚ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ Π³Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°. Kubernetes ΡΡŠΡ‰ΠΎ ΠΏΡ€Π°Π²ΠΈ извСстна ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π·Π°Π΄Π°Π²Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Ρ‡Ρ€Π΅Π· kubectl, Kubernetes ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°, Ρ‡Π΅ тя Π΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½Π° ΠΈ Π΄Π° ΠΎΡ‚ΠΊΠ°ΠΆΠ΅ Π΄Π° я ΠΏΡ€ΠΈΠ΅ΠΌΠ΅. Π’ Π΄Ρ€ΡƒΠ³ΠΈ случаи Kubernetes Ρ‰Π΅ Π²Π·Π΅ΠΌΠ΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° ΠΈ Ρ‰Π΅ я попълни с липсващитС подробности. Π’Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС видят с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:

kubernetes get networkpolicy <policy-name> -o yaml

Π˜ΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ систСмата Π·Π° Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° Kubernetes Π½Π΅ Π΅ Π±Π΅Π·ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½Π° ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° пропуснС някои Π²ΠΈΠ΄ΠΎΠ²Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈ.

ИзпълнСниС

Kubernetes Π½Π΅ ΠΏΡ€ΠΈΠ»Π°Π³Π° сам ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, Π° Π΅ просто API шлюз, ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π΅Π»Π΅Π³ΠΈΡ€Π° тСТСстта Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° основна систСма, Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° Container Networking Interface (CNI). Π—Π°Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Π½Π° Kubernetes Π±Π΅Π· присвояванС Π½Π° подходящия CNI Π΅ ΡΡŠΡ‰ΠΎΡ‚ΠΎ ΠΊΠ°Ρ‚ΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π½Π° стСна, Π±Π΅Π· слСд Ρ‚ΠΎΠ²Π° Π΄Π° сС инсталират Π½Π° Π·Π°Ρ‰ΠΈΡ‚Π½ΠΈΡ‚Π΅ стСни. ΠžΡ‚ вас зависи Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΡ‚Π΅, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π΅Π½ CNI ΠΈΠ»ΠΈ, Π² случай Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ Kubernetes, хостван Π² ΠΎΠ±Π»Π°ΠΊΠ° (ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ списъка с доставчици Ρ‚ΡƒΠΊ β€” ΠΏΡ€ΠΈΠ±Π». ΠΏΡ€Π΅Π².), Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Π·Π°Π΄Π°Π΄Π°Ρ‚ CNI вмСсто вас.

Π˜ΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ Kubernetes няма Π΄Π° Π²ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈ, Π°ΠΊΠΎ Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΌΡ€Π΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π±Π΅Π· подходящия ΠΏΠΎΠΌΠΎΡ‰Π΅Π½ CNI.

Π”ΡŠΡ€ΠΆΠ°Π²Π΅Π½ ΠΈΠ»ΠΈ Π±Π΅Π· граТданство?

Всички CNI Π½Π° Kubernetes, ΠΊΠΎΠΈΡ‚ΠΎ съм срСщал, са със ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Calico ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Linux conntrack). Π’ΠΎΠ²Π° позволява Π½Π° Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ Π·Π° TCP Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π°, която Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€Π°Π»Π°, Π±Π΅Π· Π΄Π° сС Π½Π°Π»Π°Π³Π° Π΄Π° я установява ΠΎΡ‚Π½ΠΎΠ²ΠΎ. НС ΠΌΠΈ Π΅ извСстСн ΠΎΠ±Π°Ρ‡Π΅ стандарт Π½Π° Kubernetes, ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° Π΄ΡŠΡ€ΠΆΠ°Π²Π½ΠΎΡΡ‚.

Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π·Π° сигурност

Π•Ρ‚ΠΎ няколко Π½Π°Ρ‡ΠΈΠ½Π° Π·Π° подобряванС Π½Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π·Π° сигурност Π² Kubernetes:

  1. АрхитСктурният ΠΌΠΎΠ΄Π΅Π» Π½Π° Service Mesh ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ с кош, Π·Π° Π΄Π° осигури ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π° тСлСмСтрия ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° Π½ΠΈΠ²ΠΎ услуга. ΠšΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ Π˜ΡΡ‚ΠΈΠΎ.
  2. Някои ΠΎΡ‚ доставчицитС Π½Π° CNI Ρ€Π°Π·ΡˆΠΈΡ€ΠΈΡ…Π° своитС инструмСнти, Π·Π° Π΄Π° Π½Π°Π΄Ρ…Π²ΡŠΡ€Π»ΡΡ‚ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes.
  3. Π’ΡƒΡ„ΠΈΠ½ косатка ΠžΡΠΈΠ³ΡƒΡ€ΡΠ²Π° видимост ΠΈ автоматизация Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes.

ΠŸΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ Tufin Orca управлява ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes (ΠΈ Π΅ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊΡŠΡ‚ Π½Π° Π΅ΠΊΡ€Π°Π½Π½ΠΈΡ‚Π΅ снимки ΠΏΠΎ-Π³ΠΎΡ€Π΅).

Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° информация

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Kubernetes ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ Π΄ΠΎΠ±ΡŠΡ€ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ инструмСнти Π·Π° сСгмСнтиранС Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ, Π½ΠΎ Ρ‚Π΅ Π½Π΅ са ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΈ ΠΈ ΠΈΠΌΠ°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚ΡŠΠ½ΠΊΠΎΡΡ‚ΠΈ. ΠŸΠΎΡ€Π°Π΄ΠΈ Ρ‚Π°Π·ΠΈ слоТност вярвам, Ρ‡Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ са бъгови. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΈΡ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ инструмСнти Π·Π° сСгмСнтиранС.

Надявам сС Ρ‚ΠΎΠ²Π° Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ Π΄Π° Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° изяснитС някои Π²ΡŠΠΏΡ€ΠΎΡΠΈ ΠΈ Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° срСщнСтС.

PS ΠΎΡ‚ ΠΏΡ€Π΅Π²ΠΎΠ΄Π°Ρ‡Π°

ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π² нашия Π±Π»ΠΎΠ³:

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€