Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Políticas de segurança em redes para kubernetes

Políticas de segurança em redes para kubernetes

Como proteger os serviços existentes em um cluster kubernetes? Microsegmentação! Esta apresentação fala sobre como implementar isso em um cluster kubernetes usando a tecnologia de network policies. também está disponível um vídeo demonstrando os conceitos.

https://youtu.be/_VleDFvbhbY

Other Decks in Technology

Transcript

  1. # whoami Carlos Alberto Arquiteto de software Trabalho na CAPES,

    fomentando práticas devops, implementando CI/CD, microservices. “Generalista por natureza, um especialista é um homem que mora em sua casa própria, mas nunca sai dela. Na casa, ele conhece tudo com exatidão, cada degrau, cada canto e cada viga, mas fora desse lugar tudo lhe é estranho e desconhecido.”
  2. Benefícios microsegmentação • Criação de redes virtuais seguras • Funções

    de segurança sejam programadas na própria infraestrutura • Segurança persistente e onipresente
  3. DEMO namespace: projetoweb pod: front-3i49a label: - app: struts pod:

    back-3i49a label: - app: twitter-reader namespace: infra-db pod: db-3i49a label: - app: db-mysql
  4. DEMO namespace: projetoweb pod: front-3i49a label: - app: struts pod:

    back-3i49a label: - app: twitter-reader namespace: infra-db pod: db-3i49a label: - app: db-mysql
  5. namespace: projetoweb pod: front-3i49a label: - app: struts pod: back-3i49a

    label: - app: twitter-reader namespace: infra-db pod: db-3i49a label: - app: db-mysql DEMO
  6. namespace: projetoweb pod: front-3i49a label: - app: struts pod: back-3i49a

    label: - app: twitter-reader namespace: infra-db pod: db-3i49a label: - app: db-mysql DEMO
  7. Stable versão 1.7 do kubernetes estabilizou network policy promovendo para

    v1 CNI surge container network interface 2014 2015 2015 2017 2017 overlay network sem suporte padronizado docker network docker introduziu network NetworkPolicy Kubernetes introduz na versão 1.6 suporte a network policies manual para cni para networkpolicy
  8. Redes - como proteger? frontend backend postgres database somente porta

    80 somente do frontend somente porta 5432 somente do backend
  9. Network kubernetes policy políticas de controle de conexão controla conexões

    de entrada (ingress) controla conexões de saída (egress)
  10. Anatomia network policy apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: nome-da-policy

    spec: podSelector: matchLabels: pod-label: value ingress: [] egress: [] - from: - namespaceSelector: matchLabels: namespace-label: value - podSelector: matchLabels: only-pod-label: value ports: - protocol: tcp port: port-number
  11. Anatomia network policy apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: nome-da-policy

    spec: podSelector: matchLabels: pod-label: value ingress: [] egress: [] - to: - namespaceSelector: matchLabels: namespace-label: value - podSelector: matchLabels: only-pod-label: value ports: - protocol: tcp port: port-number
  12. Anatomia network policy apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: nome-da-policy

    spec: podSelector: matchLabels: pod-label: value ingress: [] egress: [] - from: - namespaceSelector: matchLabels: namespace-label: value - podSelector: matchLabels: only-pod-label: value ports: - protocol: tcp port: port-number - to: - namespaceSelector: matchLabels: namespace-label: value - podSelector: matchLabels: only-pod-label: value ports: - protocol: tcp port: port-number
  13. Network kubernetes policy Exemplo: Bloqueia tudo apiVersion: networking.k8s.io/v1 kind: NetworkPolicy

    metadata: name: bloqueia-tudo spec: podSelector: {} ingress: [] egress: []
  14. Network kubernetes policy - ingress apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata:

    name: aceita-conexoes-redis namespace: default spec: podSelector: matchLabels: role: db ingress: [] egress: [] - from: - namespaceSelector: matchLabels: project: myproject - podSelector: matchLabels: role: worker ports: - protocol: tcp port: 6379
  15. Network kubernetes policy namespace: default namespace: myproject label: project: myproject

    namespace: demo pod: worker-nxj21 label: - role: worker pod: redis-a5x31 label: - role: db pod: front-3i49a label: - role: frontend role: worker port: 6379/tcp namespace-label: project: myproject port: 6379/tcp <<in <<in Network Policy: test-network-policy namespace: default pod: worker-ad3c1 label: - role: worker
  16. Network kubernetes policy egress apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name:

    libera-frontend-para-redis namespace: myproject spec: podSelector: matchLabels: role: frontend ingress: [] egress: [] - to: - namespaceSelector: matchLabels: project: default ports: - protocol: tcp port: 6379
  17. Network kubernetes policy namespace: default namespace: myproject pod: redis-a5x31 label:

    - role: db pod: front-3i49a label: - role: frontend namespace: default port: 6379/tcp <<out Network Policy: libera-frontend-para-redis namespace: myproject
  18. apiVersion: network.openshift.io/v1 kind: EgressNetworkPolicy metadata: name: default namespace: app-demo spec:

    egress: - to: cidrSelector: 1.2.3.0/24 type: Allow - to: dnsName: api.twitter.com type: Allow - to: cidrSelector: 0.0.0.0/0 type: Deny Anatomia de uma egressnetworkpolicy