SlideShare uma empresa Scribd logo
1 de 22
Project Calico
Segurança para Containers e um pouco mais :)
Eu, rapidão :)
● CKA e LPIC3 (essa venceu…)
● Gerente de engenharia de
Nuvem no SERPRO - Projeto
Estaleiro
● Nesse mundo Linux desde
2004, no SERPRO desde
2009, mexendo com esses
trecos desde 2014
● Curioso, aficionado por aviação
● Corinthiano
Começando pelo começo
Conceitos
● Container - Menor unidade existente no Host - Um PROCESSO
● Labels - Identificador para cada objeto no Kubernetes
● PODs - Objeto que representa o conjunto de 1 a N agregados, que
compartilham REDE, CPU e Memória, storage, etc - Uma aplicação
rodando (e a menor unidade em um Cluster Kubernetes)
● Services - Objeto que representa a abstração lógica para um conjunto de
PODs idênticos - 1 IP fixo que identifica 1 a N PODs
● Deployment - Objeto que controla um conjunto de PODs, quantidade de
réplicas, volumes, etc
● Network Policy - Objeto que controla permissões de comunicação de
PODs
Docker x Redes
Fonte: https://www.kaitoy.xyz/images/docker_network.jpg
Namespaces
$ man 7 namespaces
“A namespace wraps a global system resource in an abstraction that makes it
appear to the processes within the namespace that they have their own
isolated instance of the global resource.
Changes to the global resource are visible to other processes that are
members of the namespace, but are invisible to other processes. One use of
namespaces is to implement containers.”
Kubernetes x Redes
Kubernetes x Mundo
CNI - Container Network Interface
● Originalmente criado para o RKT (runtime de Containers da CoreOS)
● O Kubelet chama um programa (o CNI!) para:
○ Criar um Network Namespace (e as placas de rede), caso não exista, alocado ao Namespace
(PID) do POD
○ Alocar um IP para o POD
○ Desfazer e destruir tudo isso quando o POD morre
● No Kubelet, é composto do diretório de binários (--cni-bin-dir) e configuração (--
cni-conf-dir)
{
"name": "nomequalquer",
"cniVersion": "0.1.0",
"type": "calico",
"ipam": {
"type": "calico-ipam"
}
}
CNI - Container Network Interface
● Quando criamos um POD o seguinte ocorre dentro do Kubelet:
# CNI_COMMAND=ADD CNI_CONTAINERID=1234567890 CNI_NETNS=/var/run/netns/1234567890 CNI_IFNAME=eth12
CNI_PATH=/opt/cni/bin ./calico <calico.conf
{
"ip4": {
"ip": "172.17.1.17/32"
},
"dns": {}
}
● Ou seja, o Kubernetes não conhece a stack de rede. Ao invés disso ele
delega a um programa (o CNI!) o controle dessa rede, inclusive IPAM
● Adicionalmente, ele pode usar esse programa para controle de regras de
firewall do ambiente
Resumo até aqui
Kube APIWorkload
Scheduler
Kubelet
● Baixa imagem
● Executa o CNI
● Sobe o POD (Pause +
Containers)
Project Calico
“Secure networking for the cloud
native era”
O que é o Calico?
● Software que provê conectividade e segurança de redes
● Simples - Modelo de redes simplificado, baseado em tecnologias de
roteamento já conhecidas e bem utilizadas e sem necessidade de
Overlays de rede
● Escalável - Possui uma arquitetura descentralizada onde cada node de
rede é responsável pelo seu workload (regras, roteamento) e utiliza
apenas um banco centralizado para armazenar informações
● Seguro - Calico provê capacidades de microsegmentação de forma
simplificada, com a declaração de regras baseadas em objetos, labels e
ações
● OpenSource - Código totalmente aberto, comunidade participante de
decisões no design do Kubernetes
Principais recursos
● Rede - Responsável por prover conectividade entre PODs
○ Suporte a IPv6
○ NAT de saída
○ BGP e suporte à IPs reais por PODs
○ IP-in-IP para roteamento entre Datacenters
● Segurança - Provê microsegmentação
○ Para o Kubernetes através do uso de Network Policies
○ Para hosts físicos, com o agente instalado
Topologia 1 - Acesso direto ao ETCD
ETCD
calicoctl
K8s
policy
controller
configurações
kube-api
Network policies (*)
Objetosde
regrasCalico
Calico
Node
Calico
Node
Calico
Node
Configurações e
regras de firewall (*)
(*) = O Calico Node e o
k8s-policy quem lêem as
configurações
CNI
Requisita IP, aloca rotas
Network Policies
Topologia 2 - Acesso via API do Kubernetes (beta)
ETCD
kube-api
Calico
Node
Configurações e regras de firewall
CNI
Requisita IP, aloca rotas
Objetos de conf
(CRD)
Componentes
● Node - Container que agrega vários componentes para funcionamento do
Calico
○ Felix - “Coração” da solução, responsável pela programação de interfaces, rotas e
ACLs/regras de firewall e NAT
○ BIRD e BIRD6 - Cliente BGP para troca de informações de Rotas entre cada um dos
nós (IPv4 e IPv6)
○ CONFD - Daemon que lê configurações do ETCD e reconfigura arquivos de acordo com
templates - Gera as configurações do BIRD
Componentes
● Kubernetes Policy Controller - Traduz objetos Network Policies em
Objetos de regras para o Calico
○ Existem também plugins para o Openstack, por exemplo
● Route Reflector - Em ambientes muito grandes ou que demandem
sincronização com roteadores externos, replica e agrega as rotas do
ambiente via BGP - Baseado no BIRD
DEMO TIME
Não precisa ser
complexo pra ser
completo :)
Referências
● https://www.projectcalico.org
● https://kubernetes.io
● https://github.com/containernetworking/cni/blob/master/SPEC.md
● https://blog.scottlowe.org/2013/09/04/introducing-linux-network-namespaces/
● http://www.dasblinkenlichten.com/understanding-cni-container-networking-interface/
● http://blog.mbrt.it/2017-10-01-demystifying-container-networking/
● https://thenewstack.io/hackers-guide-kubernetes-networking/
● https://www.cncf.io/wp-content/uploads/2017/11/Introduction-to-CNI-2.pdf
● https://github.com/kelseyhightower/kubernetes-the-hard-way
● https://gist.github.com/rikatz/68217ad14b481d18d73d96edb3052e37
● http://mvp.tigera.io/ - Entre, participe, ganhe uma camiseta do Calico :D
Obrigado!
Emails:
ricardo.katz@gmail.com
ricardo.katz@serpro.gov.br
katz@estaleiro.io
Twitter: @katzsp
Grupo Telegram:
t.me/kubernetesbr

Mais conteúdo relacionado

Mais procurados

TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
iG - Internet Group do Brasil S/A
 
Aula 8 sistemas_embarcados_i2_c
Aula 8 sistemas_embarcados_i2_cAula 8 sistemas_embarcados_i2_c
Aula 8 sistemas_embarcados_i2_c
darosajoseluiz
 

Mais procurados (19)

TDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unhaTDC2018SP | Trilha Containers - Linux Conteineres na unha
TDC2018SP | Trilha Containers - Linux Conteineres na unha
 
Projeto Terminais Leves Linux
Projeto Terminais Leves LinuxProjeto Terminais Leves Linux
Projeto Terminais Leves Linux
 
Kubernetes no Governo Federal - Kubernetes Meetup #3
Kubernetes no Governo Federal - Kubernetes Meetup #3Kubernetes no Governo Federal - Kubernetes Meetup #3
Kubernetes no Governo Federal - Kubernetes Meetup #3
 
Aula PIT 3 - Ambientes
Aula PIT 3 - AmbientesAula PIT 3 - Ambientes
Aula PIT 3 - Ambientes
 
Producao Segura de Containers com Kubernetes e CoreOS - QCONSP 2017
Producao Segura de Containers com Kubernetes e CoreOS - QCONSP 2017Producao Segura de Containers com Kubernetes e CoreOS - QCONSP 2017
Producao Segura de Containers com Kubernetes e CoreOS - QCONSP 2017
 
Blockchain além do Hello World
Blockchain além do Hello WorldBlockchain além do Hello World
Blockchain além do Hello World
 
Pyro vs RMI
Pyro vs RMIPyro vs RMI
Pyro vs RMI
 
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
TDC2010 - Trilha Python: Python no iG (Automação de Datacenters)
 
Workshop de desenvolvimento para blockchain Ethereum
Workshop de desenvolvimento para blockchain EthereumWorkshop de desenvolvimento para blockchain Ethereum
Workshop de desenvolvimento para blockchain Ethereum
 
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...
 
Ferramentas para desenvolvimento no blockchain Ethereum
Ferramentas para desenvolvimento no blockchain EthereumFerramentas para desenvolvimento no blockchain Ethereum
Ferramentas para desenvolvimento no blockchain Ethereum
 
Docker de containers a orquestração
Docker de containers a orquestraçãoDocker de containers a orquestração
Docker de containers a orquestração
 
Criando um site com LAMP e Joomla em 30 minutos
Criando um site com LAMP e Joomla em 30 minutosCriando um site com LAMP e Joomla em 30 minutos
Criando um site com LAMP e Joomla em 30 minutos
 
Kdc spoofing com kerberos mit
Kdc spoofing com kerberos mitKdc spoofing com kerberos mit
Kdc spoofing com kerberos mit
 
KDC Spoofing com Kerberos MIT
KDC Spoofing com Kerberos MITKDC Spoofing com Kerberos MIT
KDC Spoofing com Kerberos MIT
 
Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
 
Instalação do i-Educar com Linux Containers (LXC)
Instalação do i-Educar com Linux Containers (LXC)Instalação do i-Educar com Linux Containers (LXC)
Instalação do i-Educar com Linux Containers (LXC)
 
Aula 8 sistemas_embarcados_i2_c
Aula 8 sistemas_embarcados_i2_cAula 8 sistemas_embarcados_i2_c
Aula 8 sistemas_embarcados_i2_c
 

Semelhante a Calico seguranca para containers e mais

Semelhante a Calico seguranca para containers e mais (20)

Iniciando com kubernetes
Iniciando com kubernetesIniciando com kubernetes
Iniciando com kubernetes
 
Beers & Bytes - O Futuro da virtualização
Beers & Bytes - O Futuro da virtualizaçãoBeers & Bytes - O Futuro da virtualização
Beers & Bytes - O Futuro da virtualização
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting docker
 
Criando sua própria nuvem com Raspberry Pi
Criando sua própria nuvem com Raspberry PiCriando sua própria nuvem com Raspberry Pi
Criando sua própria nuvem com Raspberry Pi
 
O futuro do Openstack, NFV, SDN e Cloud Computing - FISL 2014
O futuro do Openstack, NFV, SDN e Cloud Computing - FISL 2014O futuro do Openstack, NFV, SDN e Cloud Computing - FISL 2014
O futuro do Openstack, NFV, SDN e Cloud Computing - FISL 2014
 
Mini-curso CUDA
Mini-curso CUDAMini-curso CUDA
Mini-curso CUDA
 
Minicurso Node-RED.pdf
Minicurso Node-RED.pdfMinicurso Node-RED.pdf
Minicurso Node-RED.pdf
 
QCon 2019 - Kubernetes Deepdive
QCon 2019 -  Kubernetes DeepdiveQCon 2019 -  Kubernetes Deepdive
QCon 2019 - Kubernetes Deepdive
 
Eripi2018 p4 tutorial
Eripi2018 p4 tutorialEripi2018 p4 tutorial
Eripi2018 p4 tutorial
 
Cisco ccna modulo 04
Cisco ccna modulo 04Cisco ccna modulo 04
Cisco ccna modulo 04
 
5 - segurança - firewall
5  - segurança - firewall5  - segurança - firewall
5 - segurança - firewall
 
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
 
Curso de Verão - Aula 02 - Orquestração de Contêineres
Curso de Verão - Aula 02 - Orquestração de ContêineresCurso de Verão - Aula 02 - Orquestração de Contêineres
Curso de Verão - Aula 02 - Orquestração de Contêineres
 
Camada rede
Camada redeCamada rede
Camada rede
 
Docker em Produção com Kubernetes
Docker em Produção com Kubernetes Docker em Produção com Kubernetes
Docker em Produção com Kubernetes
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014
 
Rodando uma API Com Django Rest Framework no Google Cloud
Rodando uma API Com Django Rest Framework  no Google CloudRodando uma API Com Django Rest Framework  no Google Cloud
Rodando uma API Com Django Rest Framework no Google Cloud
 
Cases de Python no 7Masters 2012
Cases de Python no 7Masters 2012Cases de Python no 7Masters 2012
Cases de Python no 7Masters 2012
 
Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!
Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!
Python: Cabe no seu bolso, cabe no seu micro, cabe no seu cérebro!
 
Protegendo Docker
Protegendo DockerProtegendo Docker
Protegendo Docker
 

Último

Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Dirceu Resende
 

Último (9)

Entrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo PagliusiEntrevistas, artigos, livros & citações de Paulo Pagliusi
Entrevistas, artigos, livros & citações de Paulo Pagliusi
 
O futuro e o impacto da tecnologia nas salas de aulas
O futuro e o impacto da tecnologia  nas salas de aulasO futuro e o impacto da tecnologia  nas salas de aulas
O futuro e o impacto da tecnologia nas salas de aulas
 
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
[ServiceNow] Upgrade de versão - 2ª edição (Revisada, atualizada e ampliada)
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINASCOI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
COI CENTRO DE OPERAÇÕES INDUSTRIAIS NAS USINAS
 
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIAEAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
EAD Curso - CIÊNCIA DE DADOS NA INDÚSTTRIA
 
Apostila e caderno de exercicios de WORD
Apostila e caderno de exercicios de  WORDApostila e caderno de exercicios de  WORD
Apostila e caderno de exercicios de WORD
 
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo PagliusiPalestras sobre Cibersegurança em Eventos - Paulo Pagliusi
Palestras sobre Cibersegurança em Eventos - Paulo Pagliusi
 
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdfFrom_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
From_SEH_Overwrite_with_Egg_Hunter_to_Get_a_Shell_PT-BR.pdf
 

Calico seguranca para containers e mais

  • 1. Project Calico Segurança para Containers e um pouco mais :)
  • 2. Eu, rapidão :) ● CKA e LPIC3 (essa venceu…) ● Gerente de engenharia de Nuvem no SERPRO - Projeto Estaleiro ● Nesse mundo Linux desde 2004, no SERPRO desde 2009, mexendo com esses trecos desde 2014 ● Curioso, aficionado por aviação ● Corinthiano
  • 4. Conceitos ● Container - Menor unidade existente no Host - Um PROCESSO ● Labels - Identificador para cada objeto no Kubernetes ● PODs - Objeto que representa o conjunto de 1 a N agregados, que compartilham REDE, CPU e Memória, storage, etc - Uma aplicação rodando (e a menor unidade em um Cluster Kubernetes) ● Services - Objeto que representa a abstração lógica para um conjunto de PODs idênticos - 1 IP fixo que identifica 1 a N PODs ● Deployment - Objeto que controla um conjunto de PODs, quantidade de réplicas, volumes, etc ● Network Policy - Objeto que controla permissões de comunicação de PODs
  • 5. Docker x Redes Fonte: https://www.kaitoy.xyz/images/docker_network.jpg
  • 6. Namespaces $ man 7 namespaces “A namespace wraps a global system resource in an abstraction that makes it appear to the processes within the namespace that they have their own isolated instance of the global resource. Changes to the global resource are visible to other processes that are members of the namespace, but are invisible to other processes. One use of namespaces is to implement containers.”
  • 9. CNI - Container Network Interface ● Originalmente criado para o RKT (runtime de Containers da CoreOS) ● O Kubelet chama um programa (o CNI!) para: ○ Criar um Network Namespace (e as placas de rede), caso não exista, alocado ao Namespace (PID) do POD ○ Alocar um IP para o POD ○ Desfazer e destruir tudo isso quando o POD morre ● No Kubelet, é composto do diretório de binários (--cni-bin-dir) e configuração (-- cni-conf-dir) { "name": "nomequalquer", "cniVersion": "0.1.0", "type": "calico", "ipam": { "type": "calico-ipam" } }
  • 10. CNI - Container Network Interface ● Quando criamos um POD o seguinte ocorre dentro do Kubelet: # CNI_COMMAND=ADD CNI_CONTAINERID=1234567890 CNI_NETNS=/var/run/netns/1234567890 CNI_IFNAME=eth12 CNI_PATH=/opt/cni/bin ./calico <calico.conf { "ip4": { "ip": "172.17.1.17/32" }, "dns": {} } ● Ou seja, o Kubernetes não conhece a stack de rede. Ao invés disso ele delega a um programa (o CNI!) o controle dessa rede, inclusive IPAM ● Adicionalmente, ele pode usar esse programa para controle de regras de firewall do ambiente
  • 11. Resumo até aqui Kube APIWorkload Scheduler Kubelet ● Baixa imagem ● Executa o CNI ● Sobe o POD (Pause + Containers)
  • 12. Project Calico “Secure networking for the cloud native era”
  • 13. O que é o Calico? ● Software que provê conectividade e segurança de redes ● Simples - Modelo de redes simplificado, baseado em tecnologias de roteamento já conhecidas e bem utilizadas e sem necessidade de Overlays de rede ● Escalável - Possui uma arquitetura descentralizada onde cada node de rede é responsável pelo seu workload (regras, roteamento) e utiliza apenas um banco centralizado para armazenar informações ● Seguro - Calico provê capacidades de microsegmentação de forma simplificada, com a declaração de regras baseadas em objetos, labels e ações ● OpenSource - Código totalmente aberto, comunidade participante de decisões no design do Kubernetes
  • 14. Principais recursos ● Rede - Responsável por prover conectividade entre PODs ○ Suporte a IPv6 ○ NAT de saída ○ BGP e suporte à IPs reais por PODs ○ IP-in-IP para roteamento entre Datacenters ● Segurança - Provê microsegmentação ○ Para o Kubernetes através do uso de Network Policies ○ Para hosts físicos, com o agente instalado
  • 15. Topologia 1 - Acesso direto ao ETCD ETCD calicoctl K8s policy controller configurações kube-api Network policies (*) Objetosde regrasCalico Calico Node Calico Node Calico Node Configurações e regras de firewall (*) (*) = O Calico Node e o k8s-policy quem lêem as configurações CNI Requisita IP, aloca rotas Network Policies
  • 16. Topologia 2 - Acesso via API do Kubernetes (beta) ETCD kube-api Calico Node Configurações e regras de firewall CNI Requisita IP, aloca rotas Objetos de conf (CRD)
  • 17. Componentes ● Node - Container que agrega vários componentes para funcionamento do Calico ○ Felix - “Coração” da solução, responsável pela programação de interfaces, rotas e ACLs/regras de firewall e NAT ○ BIRD e BIRD6 - Cliente BGP para troca de informações de Rotas entre cada um dos nós (IPv4 e IPv6) ○ CONFD - Daemon que lê configurações do ETCD e reconfigura arquivos de acordo com templates - Gera as configurações do BIRD
  • 18. Componentes ● Kubernetes Policy Controller - Traduz objetos Network Policies em Objetos de regras para o Calico ○ Existem também plugins para o Openstack, por exemplo ● Route Reflector - Em ambientes muito grandes ou que demandem sincronização com roteadores externos, replica e agrega as rotas do ambiente via BGP - Baseado no BIRD
  • 20. Não precisa ser complexo pra ser completo :)
  • 21. Referências ● https://www.projectcalico.org ● https://kubernetes.io ● https://github.com/containernetworking/cni/blob/master/SPEC.md ● https://blog.scottlowe.org/2013/09/04/introducing-linux-network-namespaces/ ● http://www.dasblinkenlichten.com/understanding-cni-container-networking-interface/ ● http://blog.mbrt.it/2017-10-01-demystifying-container-networking/ ● https://thenewstack.io/hackers-guide-kubernetes-networking/ ● https://www.cncf.io/wp-content/uploads/2017/11/Introduction-to-CNI-2.pdf ● https://github.com/kelseyhightower/kubernetes-the-hard-way ● https://gist.github.com/rikatz/68217ad14b481d18d73d96edb3052e37 ● http://mvp.tigera.io/ - Entre, participe, ganhe uma camiseta do Calico :D