SlideShare uma empresa Scribd logo
1 de 21
Kubernetes no
Governo Federal
Projeto Estaleiro
Modernização de Infraestrutura de Produção de Serviços dentro do SERPRO, com o objetivo de
uma entrega rápida e segura de novos serviços
● PaaS - Kubernetes
● STaaS - CEPH
● DBaaS - Openstack Trove
● Componentes periféricos que auxiliem na produção desses serviços - Graylog, Elasticsearch,
CA APM, NGINX, HAProxy, etc
● Empoderamento do desenvolvedor
● Produção passa a ser produção
Overview
Requisitos
● Segmentação - Serviços de Cliente A não impactem / influenciem / realizem acesso não
autorizado em Serviços de Cliente B.
● Segregação de papéis - Desenvolvedor responsável por produto A só tenha acesso aos
recursos desse produto
● Auditoria - Se alguém mudou algo no ambiente, quem foi e quando.
● Controle de vulnerabilidades - Algum pacote do Container desatualizado? Alguma
configuração inadequada?
● “Isso existia no ambiente tradicional” - Pré requisitos já existentes em um ambiente
tradicional, se eles são aplicáveis, e como aplicá-los
○ Ex.: Autenticação via certificado digital, Stickness de sessão
Segregação de rede
● A maior preocupação das equipes de Segurança
○ Uma aplicação chamando outra indevidamente
○ Uma aplicação chamando o ambiente tradicional indevidamente
○ Uma aplicação indo na Internet indevidamente (Facebook,
Wikipedia..)
○ Falta de rastreabilidade de rede (quem chamou e quando?)
○ Normas federais, Sindicâncias, auditorias, Polícia Federal :)
Segregação de rede
Segmentação de redes - Calico
● Calico - Projeto da Tigera
● Responsável pela parte de Networking e também pela implementação de Network Policies
● Principais funcionalidades:
○ Conectividade com o mundo externo via BGP (1 IP real por POD, se assim quiser)
○ Possibilidade de associar um range de IPs específico (inclusive IPv6) por POD ou
ReplicaSet
○ Possibilidade de criar regras de entrada e saída (o Kubernetes só suporta regras de
entrada)
● Baseado em Felix, Confd, IPTables e backend ETCD :)
● É tema inteiro para uma próxima palestra (quem se dispõe??)
Demonstração Calico
Network Policy
apiVersion: extensions/v1beta1
kind: NetworkPolicy
metadata:
name: allow-http
namespace: demonstracao
spec:
ingress:
- ports:
- port: 8080
protocol: TCP
podSelector:
matchLabels:
app: dummy-app-1
Network Policy
apiVersion: extensions/v1beta1
kind: NetworkPolicy
metadata:
name: allow-icmp
namespace: demonstracao
spec:
ingress:
- from:
- podSelector:
matchLabels:
app: dummy-app-1
ports:
- protocol: ICMP
podSelector:
matchLabels:
app: dummy-app-1
Segregação de papéis
● Caso: Um desenvolvedor participa de mais de um projeto, mas não pode ter acesso ao
cluster inteiro
● RBAC: Nem todos podem ser admin :)
○ Atenção: roles ainda estão em Beta no Kubernetes 1.6
○ Objetos de um projeto: Namespace, ReplicaSet, DaemonSet, PODs, Network Policies,
Ingress Controllers, Service, etc etc etc
○ Manter o acesso de cada um apenas a seus objetos é um sofrimento!!
● Roles pré existentes: Node (sim, nodes também são usuários do Cluster), Sys admin.
● Grupos: Podem ser utilizados
○ No nosso caso usamos autenticação via Certificado Digital, então o grupo tem que
fazer parte do certificado no atributo ‘O’.
○ Ex.: "/CN=rkatz/O=projeto1/O=projeto2"
Problema 3 - Segregação de projetos e papéis
RBAC - Objetos
● ClusterRole - Papel existente no Cluster inteiro. Uma permissão global.
○ Ex.: readonly (para um bilhetador, por exemplo), node (para um node)
● Role - Papel existente apenas no contexto de um namespace.
○ Ex.: Um desenvolvedor dentro de um namespace com permissão apenas de mexer nos
objetos de Ingress.
● Uma ClusterRole pode ser associada a um grupo em uma namespace, limitando seu
escopo.
○ Ex.: Grupo X possui a ClusterRole readonly apenas no projeto prj1, podendo ver (mas
não modificar) qualquer recurso desse namespace
● Mais infos: https://kubernetes.io//docs/admin/authorization/rbac/
● Demonstração de funcionamento!
Auditoria
● Grandes poderes, grandes responsabilidades!
● Para cada acesso à API do Kubernetes uma entrada de auditoria é gerada, com as seguintes
informações:
○ ID da requisição
○ Quando
○ Quem (usuário e IP)
○ Onde (namespace e objeto do Kubernetes)
○ Conseguiu? - Essa auditoria é uma linha à parte, com o mesmo ID da requisição e o
Return Code da transação
● Demo time - Essa é rapida :)
Auditoria
Análise de vulnerabilidades
● O software em meu container está atualizado?
● O container está com alguma abominação instalada? SSH, clientes telnet, nc, etc
● O Dockerfile do container especifica um usuário (USER)? Ou roda como ‘root’?
● Proposta: Não se publica um container diretamente no registry. Apenas a integração
contínua o faz.
○ IC faz as análises de conteúdo do container, Dockerfile, pacotes, etc
○ CoreOS Clair faz a análise dos pacotes existentes e sua atualização
● Container com qualquer problema de segurança não é publicado no registry, e
consequentemente não é publicado
● WIP - O Harbor ainda não se integra com o Clair. Mas o Jenkins sim! Então estamos
trabalhando nisso.
Análise de vulnerabilidades - Onde queremos chegar?
Ingress Controller
Necessidades ambiente tradicional
● O foco nesse momento é em como as aplicações são ‘chamadas’
● Ingress - Objeto que especifica a forma de ‘entrada’ de um serviço.
○ Obs.: É diferente do objeto ‘Service’ que especifica como um conjunto de PODs é
exposto no cluster
● Hoje suporta protocolos HTTP/s, com especificação de URL, certificado digital a ser usado,
configurações de cabeçalho, configurações de protocolos SSL/TLS habilitados.
● Ingress Controller - Programa responsável por ler os objetos do Kubernetes (Ingress,
Service, Secrets e PODs) e reconfigurar o frontend conforme esses objetos
○ Nosso frontend hoje é o NGINX, mas existe implementação também para HAProxy
● https://github.com/kubernetes/ingress e https://github.com/jcmoraisjr/haproxy-ingress
● Demo time :)
Links interessantes
● https://www.serpro.gov.br
● https://landing.google.com/sre/book.html - Livro sobre SRE do Google
● http://docs.projectcalico.org/v2.1/reference/cni-plugin/configuration - Configuração do
plugin CNI do Calico, inclusive com as referências a alocação de IPs diferentes por POD
● https://github.com/kubernetes/ingress - Repositório oficial Ingress Controller
● https://github.com/jcmoraisjr - Repositório do João Morais (Serpro) com alguns softwares
desenvolvidos para o Estaleiro (omaha-server, ingress-haproxy, coreos-bootstrap, etc)
● https://github.com/rikatz/coreos-kube-lab - Repositório com os userdata que estavam
sendo utilizados para montar os laboratórios (WIP)
● https://www.graylog.org/ - Página oficial do Projeto Graylog
● https://quay.io/ - Docker Registry com Análise de vulnerabilidades
Dúvidas?
Agradecemos pela atenção.
Ricardo Pchevuzinske Katz
ricardo.katz@serpro.gov.br
ricardo.katz@gmail.com
@katzsp
https://www.linkedin.com/in/katzricardo/

Mais conteúdo relacionado

Mais procurados

Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Renato Groff
 
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?tdc-globalcode
 
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 unhatdc-globalcode
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)Wellington Silva
 
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...Renato Groff
 
gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?Yago Tomé
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting dockerRafael Gomes
 
Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Renato Groff
 
Containers em produção!
Containers em produção!Containers em produção!
Containers em produção!Evandro Couto
 
TDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de DockerTDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de DockerStefan Teixeira
 
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...Renato Groff
 
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Renato Groff
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Renato Groff
 
Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Renato Groff
 
Node.js para desenvolvedores .NET
Node.js para desenvolvedores .NETNode.js para desenvolvedores .NET
Node.js para desenvolvedores .NETMVP Microsoft
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o DockerWebSix
 
TDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop dockerTDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop dockerRafael Gomes
 

Mais procurados (20)

Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
Kubernetes de ponta a ponta: do Pod ao Deployment Automatizado - Janeiro-2020
 
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
TDC2018SP | Trilha Containers - Kubernetes: como a magica acontece?
 
Msr (ideia) {pptx}
Msr (ideia) {pptx}Msr (ideia) {pptx}
Msr (ideia) {pptx}
 
MicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applicationsMicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applications
 
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
 
O poder do Docker (7 Masters)
O poder do Docker (7 Masters)O poder do Docker (7 Masters)
O poder do Docker (7 Masters)
 
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
Docker para Ambientes de Desenvolvimento e Testes - Open Source Roadshow 2019...
 
gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?gRPC: Por que você ainda usa REST?
gRPC: Por que você ainda usa REST?
 
Troubleshooting docker
Troubleshooting dockerTroubleshooting docker
Troubleshooting docker
 
Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018
 
Containers em produção!
Containers em produção!Containers em produção!
Containers em produção!
 
TDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de DockerTDC 2015 POA - O Fantástico Mundo de Docker
TDC 2015 POA - O Fantástico Mundo de Docker
 
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
Docker + Kubernetes: orquestrando containers e escalando rapidamente aplicaçõ...
 
Node JS - Parte 1
Node JS - Parte 1Node JS - Parte 1
Node JS - Parte 1
 
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
Banco de Dados - Docker Compose + Bancos Relacionais: descomplicando a montag...
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
 
Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018
 
Node.js para desenvolvedores .NET
Node.js para desenvolvedores .NETNode.js para desenvolvedores .NET
Node.js para desenvolvedores .NET
 
Primeiros passos com o Docker
Primeiros passos com o DockerPrimeiros passos com o Docker
Primeiros passos com o Docker
 
TDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop dockerTDC 2016 Floripa - Workshop docker
TDC 2016 Floripa - Workshop docker
 

Semelhante a Kubernetes no Governo Federal - Kubernetes Meetup #3

Configuração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as codeConfiguração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as codeAécio Pires
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Jeronimo Zucco
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Giovanni Bassi
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 
Calico seguranca para containers e mais
Calico   seguranca para containers e maisCalico   seguranca para containers e mais
Calico seguranca para containers e maisRicardo Katz
 
Orquestrando Containers na Nuvem com o Azure Kubernetes Service - ThorArch #1...
Orquestrando Containers na Nuvem com o Azure Kubernetes Service - ThorArch #1...Orquestrando Containers na Nuvem com o Azure Kubernetes Service - ThorArch #1...
Orquestrando Containers na Nuvem com o Azure Kubernetes Service - ThorArch #1...Renato Groff
 
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...Renato Groff
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMRodrigo Zaccara
 
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...Renato Groff
 
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...Renato Groff
 
Boas práticas na configuração de jobs no Kubernetes
Boas práticas na configuração de jobs no KubernetesBoas práticas na configuração de jobs no Kubernetes
Boas práticas na configuração de jobs no KubernetesGraziella Bonizi
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Renato Groff
 
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/2014Getup Cloud
 
QCon 2019 - Kubernetes Deepdive
QCon 2019 -  Kubernetes DeepdiveQCon 2019 -  Kubernetes Deepdive
QCon 2019 - Kubernetes DeepdiveRicardo Katz
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucaoFernando Ike
 
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...Renato Groff
 
Apresentacao gt cnc-workshop_iniciliazicao_fase2
Apresentacao gt cnc-workshop_iniciliazicao_fase2Apresentacao gt cnc-workshop_iniciliazicao_fase2
Apresentacao gt cnc-workshop_iniciliazicao_fase2Lucas Silva
 
Docker + Kubernetes: Turbinando seus projetos Web - Open Source Saturday - Ag...
Docker + Kubernetes: Turbinando seus projetos Web - Open Source Saturday - Ag...Docker + Kubernetes: Turbinando seus projetos Web - Open Source Saturday - Ag...
Docker + Kubernetes: Turbinando seus projetos Web - Open Source Saturday - Ag...Renato Groff
 
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
 

Semelhante a Kubernetes no Governo Federal - Kubernetes Meetup #3 (20)

Configuração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as codeConfiguração de ativos de rede utilizando a abordagem infrastructure as code
Configuração de ativos de rede utilizando a abordagem infrastructure as code
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
Tchelinux live 2020 - Detectando e Respondendo Incidentes de Segurança em Fro...
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
Calico seguranca para containers e mais
Calico   seguranca para containers e maisCalico   seguranca para containers e mais
Calico seguranca para containers e mais
 
Orquestrando Containers na Nuvem com o Azure Kubernetes Service - ThorArch #1...
Orquestrando Containers na Nuvem com o Azure Kubernetes Service - ThorArch #1...Orquestrando Containers na Nuvem com o Azure Kubernetes Service - ThorArch #1...
Orquestrando Containers na Nuvem com o Azure Kubernetes Service - ThorArch #1...
 
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...
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
 
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
 
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...
 
Boas práticas na configuração de jobs no Kubernetes
Boas práticas na configuração de jobs no KubernetesBoas práticas na configuração de jobs no Kubernetes
Boas práticas na configuração de jobs no Kubernetes
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
 
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
 
QCon 2019 - Kubernetes Deepdive
QCon 2019 -  Kubernetes DeepdiveQCon 2019 -  Kubernetes Deepdive
QCon 2019 - Kubernetes Deepdive
 
Container revolucao
Container revolucaoContainer revolucao
Container revolucao
 
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
Docker + Kubernetes: Orquestrando containers e escalando rapidamente suas apl...
 
Apresentacao gt cnc-workshop_iniciliazicao_fase2
Apresentacao gt cnc-workshop_iniciliazicao_fase2Apresentacao gt cnc-workshop_iniciliazicao_fase2
Apresentacao gt cnc-workshop_iniciliazicao_fase2
 
Docker + Kubernetes: Turbinando seus projetos Web - Open Source Saturday - Ag...
Docker + Kubernetes: Turbinando seus projetos Web - Open Source Saturday - Ag...Docker + Kubernetes: Turbinando seus projetos Web - Open Source Saturday - Ag...
Docker + Kubernetes: Turbinando seus projetos Web - Open Source Saturday - Ag...
 
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)
 

Kubernetes no Governo Federal - Kubernetes Meetup #3

  • 2. Projeto Estaleiro Modernização de Infraestrutura de Produção de Serviços dentro do SERPRO, com o objetivo de uma entrega rápida e segura de novos serviços ● PaaS - Kubernetes ● STaaS - CEPH ● DBaaS - Openstack Trove ● Componentes periféricos que auxiliem na produção desses serviços - Graylog, Elasticsearch, CA APM, NGINX, HAProxy, etc ● Empoderamento do desenvolvedor ● Produção passa a ser produção
  • 4. Requisitos ● Segmentação - Serviços de Cliente A não impactem / influenciem / realizem acesso não autorizado em Serviços de Cliente B. ● Segregação de papéis - Desenvolvedor responsável por produto A só tenha acesso aos recursos desse produto ● Auditoria - Se alguém mudou algo no ambiente, quem foi e quando. ● Controle de vulnerabilidades - Algum pacote do Container desatualizado? Alguma configuração inadequada? ● “Isso existia no ambiente tradicional” - Pré requisitos já existentes em um ambiente tradicional, se eles são aplicáveis, e como aplicá-los ○ Ex.: Autenticação via certificado digital, Stickness de sessão
  • 5. Segregação de rede ● A maior preocupação das equipes de Segurança ○ Uma aplicação chamando outra indevidamente ○ Uma aplicação chamando o ambiente tradicional indevidamente ○ Uma aplicação indo na Internet indevidamente (Facebook, Wikipedia..) ○ Falta de rastreabilidade de rede (quem chamou e quando?) ○ Normas federais, Sindicâncias, auditorias, Polícia Federal :)
  • 7. Segmentação de redes - Calico ● Calico - Projeto da Tigera ● Responsável pela parte de Networking e também pela implementação de Network Policies ● Principais funcionalidades: ○ Conectividade com o mundo externo via BGP (1 IP real por POD, se assim quiser) ○ Possibilidade de associar um range de IPs específico (inclusive IPv6) por POD ou ReplicaSet ○ Possibilidade de criar regras de entrada e saída (o Kubernetes só suporta regras de entrada) ● Baseado em Felix, Confd, IPTables e backend ETCD :) ● É tema inteiro para uma próxima palestra (quem se dispõe??)
  • 9. Network Policy apiVersion: extensions/v1beta1 kind: NetworkPolicy metadata: name: allow-http namespace: demonstracao spec: ingress: - ports: - port: 8080 protocol: TCP podSelector: matchLabels: app: dummy-app-1
  • 10. Network Policy apiVersion: extensions/v1beta1 kind: NetworkPolicy metadata: name: allow-icmp namespace: demonstracao spec: ingress: - from: - podSelector: matchLabels: app: dummy-app-1 ports: - protocol: ICMP podSelector: matchLabels: app: dummy-app-1
  • 11. Segregação de papéis ● Caso: Um desenvolvedor participa de mais de um projeto, mas não pode ter acesso ao cluster inteiro ● RBAC: Nem todos podem ser admin :) ○ Atenção: roles ainda estão em Beta no Kubernetes 1.6 ○ Objetos de um projeto: Namespace, ReplicaSet, DaemonSet, PODs, Network Policies, Ingress Controllers, Service, etc etc etc ○ Manter o acesso de cada um apenas a seus objetos é um sofrimento!! ● Roles pré existentes: Node (sim, nodes também são usuários do Cluster), Sys admin. ● Grupos: Podem ser utilizados ○ No nosso caso usamos autenticação via Certificado Digital, então o grupo tem que fazer parte do certificado no atributo ‘O’. ○ Ex.: "/CN=rkatz/O=projeto1/O=projeto2"
  • 12. Problema 3 - Segregação de projetos e papéis
  • 13. RBAC - Objetos ● ClusterRole - Papel existente no Cluster inteiro. Uma permissão global. ○ Ex.: readonly (para um bilhetador, por exemplo), node (para um node) ● Role - Papel existente apenas no contexto de um namespace. ○ Ex.: Um desenvolvedor dentro de um namespace com permissão apenas de mexer nos objetos de Ingress. ● Uma ClusterRole pode ser associada a um grupo em uma namespace, limitando seu escopo. ○ Ex.: Grupo X possui a ClusterRole readonly apenas no projeto prj1, podendo ver (mas não modificar) qualquer recurso desse namespace ● Mais infos: https://kubernetes.io//docs/admin/authorization/rbac/ ● Demonstração de funcionamento!
  • 14. Auditoria ● Grandes poderes, grandes responsabilidades! ● Para cada acesso à API do Kubernetes uma entrada de auditoria é gerada, com as seguintes informações: ○ ID da requisição ○ Quando ○ Quem (usuário e IP) ○ Onde (namespace e objeto do Kubernetes) ○ Conseguiu? - Essa auditoria é uma linha à parte, com o mesmo ID da requisição e o Return Code da transação ● Demo time - Essa é rapida :)
  • 16. Análise de vulnerabilidades ● O software em meu container está atualizado? ● O container está com alguma abominação instalada? SSH, clientes telnet, nc, etc ● O Dockerfile do container especifica um usuário (USER)? Ou roda como ‘root’? ● Proposta: Não se publica um container diretamente no registry. Apenas a integração contínua o faz. ○ IC faz as análises de conteúdo do container, Dockerfile, pacotes, etc ○ CoreOS Clair faz a análise dos pacotes existentes e sua atualização ● Container com qualquer problema de segurança não é publicado no registry, e consequentemente não é publicado ● WIP - O Harbor ainda não se integra com o Clair. Mas o Jenkins sim! Então estamos trabalhando nisso.
  • 17. Análise de vulnerabilidades - Onde queremos chegar?
  • 19. Necessidades ambiente tradicional ● O foco nesse momento é em como as aplicações são ‘chamadas’ ● Ingress - Objeto que especifica a forma de ‘entrada’ de um serviço. ○ Obs.: É diferente do objeto ‘Service’ que especifica como um conjunto de PODs é exposto no cluster ● Hoje suporta protocolos HTTP/s, com especificação de URL, certificado digital a ser usado, configurações de cabeçalho, configurações de protocolos SSL/TLS habilitados. ● Ingress Controller - Programa responsável por ler os objetos do Kubernetes (Ingress, Service, Secrets e PODs) e reconfigurar o frontend conforme esses objetos ○ Nosso frontend hoje é o NGINX, mas existe implementação também para HAProxy ● https://github.com/kubernetes/ingress e https://github.com/jcmoraisjr/haproxy-ingress ● Demo time :)
  • 20. Links interessantes ● https://www.serpro.gov.br ● https://landing.google.com/sre/book.html - Livro sobre SRE do Google ● http://docs.projectcalico.org/v2.1/reference/cni-plugin/configuration - Configuração do plugin CNI do Calico, inclusive com as referências a alocação de IPs diferentes por POD ● https://github.com/kubernetes/ingress - Repositório oficial Ingress Controller ● https://github.com/jcmoraisjr - Repositório do João Morais (Serpro) com alguns softwares desenvolvidos para o Estaleiro (omaha-server, ingress-haproxy, coreos-bootstrap, etc) ● https://github.com/rikatz/coreos-kube-lab - Repositório com os userdata que estavam sendo utilizados para montar os laboratórios (WIP) ● https://www.graylog.org/ - Página oficial do Projeto Graylog ● https://quay.io/ - Docker Registry com Análise de vulnerabilidades
  • 21. Dúvidas? Agradecemos pela atenção. Ricardo Pchevuzinske Katz ricardo.katz@serpro.gov.br ricardo.katz@gmail.com @katzsp https://www.linkedin.com/in/katzricardo/