SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
Protegendo Microservices
Boas Práticas e Estratégias de Implementação
Rodrigo Cândido da Silva
@rcandidosilva
Agenda
• Microservices
• Requisitos de Segurança
• OAuth2, JWT, OpenID Connect
• Boas Práticas
Monolithic vs.Microservices
Como implementar segurança neste contexto?
RESTAPIs são vulneráveis
• RESTful não define procedimentos de segurança
• São igualmente vulneráveis como as aplicações web tradicionais
• Principais vulnerabilidades de segurança
- Injection attacks
- Replay attacks
- Cross-site scripting
- Denial of Service (DoS)
- Man-in-the-middle
Autenticação & Autorização
OAuth2
• Protocolo de segurança aberto e padronizado
• Habilita o controle de acesso à aplicações sem
compartilhamento de credenciais
• Evita problemas com password
• Ideal para delegação de acesso
- Aplicações externas
- Pode ser seletivamente revogado
- Recursos específicos por um tempo determinado
OAuth2 overview
OAuth2 token
• Access Token
- Short-lived token
• Refresh Token
- Long-lived token
• Bearer token
- Hash random token
- Apenas define o conceito de secret (sem identidade de usuário)
{
"access_token": "2YotnFZFEjr1zCsicMWpAA",
"token_type": "bearer",
"expires_in": 3600,
"scope": "read write",
"refresh_token": "tGzv3JOkF0XG5Qx2TlKWIA"
}
Qual o problema utilizando apenas OAuth2?
Não utiliza stateless token model (necessita delegar validação)
Como OAuth2 + JWT irão trabalhar em conjunto?
Stateless token model (validação embutida em cada microservice)
JSON Web Tokens
“Modelo compacto e auto-contido para transmissão
segura de informação no formato JSON”
JSON Web Tokens
OAuth2 + JWT (Substitui o bearer token definido pelo OAuth2)
{
"access_token":
"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTMyODMxNzksInVzZXJfbmFtZSI6InVzZXIiLCJhdX
Rob3JpdGllcyI6WyJVU0VSIiwiTUFOQUdFUiJdLCJqdGkiOiJkMGY5OTY2OC01NzdkLTRkZTEtODkwYi1hNDY1MTBkZj
g2YjAiLCJjbGllbnRfaWQiOiJjbGllbnQiLCJzY29wZSI6WyJvcGVuaWQiXX0.iH1pnwJZPZi05hdpY9MDGIvtx34Dj8
lxc5fdU5c5NCCtUblT_L9kdZO6NaOIIZffbGzSHoyVUEZkSwkGXm6lT1jRTcOHq2khAZlwmO3hN3c1xb8bumAgmpF8fJ
SIKTVIkFJpbVO4uDfHSSbBm6QsTbqHkNgNwWSWbNG1n6ZlsHCcZCh37cmgbh-
B4tPD9QEfH3CSI6Z7AgUbS9UCIytjm02sgxgAr3liOcykRrdcOvxgIBx_yGDvornQ5JOBVdW-TS0-
uJmHe6sHCFYeBNchJhRi7xqZCMYFD6IcP4dftPupzg3IMl5oWberxhZTCCLoi18JtQyZgIgqmSlOAIq8wg",
"token_type": "bearer",
"expires_in": 43199,
"scope": "read write",
"jti": "d0f99668-577d-4de1-890b-a46510df86b0",
"refresh_token": "tGzv3JOkF0XG5Qx2TlKWIA"
}
OpenID Connect
• Camada de identidade no topo do protocolo OAuth2
• ID tokens são JWT tokens
• REST-based
• Fornece core endpoints
- Authorization
- Token, UserInfo
(Identity, Authentication) + OAuth2 = OpenID Connect
Visão geral
Boas Práticas
Crie um API gateway
“Aplica o princípio da defesa por profundidade”
Apenas exponha o gateway na DMZ (over TLS)
“Criptografia dos dados em transito”
Garanta privacidade dos dados
“Dados sensíveis devem ser encriptados o mais cedo possível”
Limite o trafego de entrada das requisições
“Previne ataques DoS”
Implemente proteção CSRF e CORS
“Todas requisições externas devem ser verificadas”
Aplique segurança no nível do container
“Atinge o conceito de menor privilégio possível"
Monitore tudo que seja possível
“Detecta e previne ataques”
https://goo.gl/FqbJhP
Perguntas
?
Obrigado!
@rcandidosilva

Mais conteúdo relacionado

Mais procurados

Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de softwareTensor
 
Behavior Driven Development with Cucumber
Behavior Driven Development with CucumberBehavior Driven Development with Cucumber
Behavior Driven Development with CucumberBrandon Keepers
 
Quality Assurance/Testing Overview & Capability Deck
Quality Assurance/Testing Overview & Capability DeckQuality Assurance/Testing Overview & Capability Deck
Quality Assurance/Testing Overview & Capability DeckSowmak Bardhan
 
SQA V And V Intro & History
SQA V And V Intro & HistorySQA V And V Intro & History
SQA V And V Intro & HistoryDouglas Gabel
 
Introduction a la SOA
Introduction a la SOAIntroduction a la SOA
Introduction a la SOATugdual Grall
 
Validation vs. verification
Validation vs. verificationValidation vs. verification
Validation vs. verificationSaad Al Jabri
 
Software process improvement.ppt
Software process improvement.pptSoftware process improvement.ppt
Software process improvement.pptImXaib
 
Istqb 4-테스트설계기법-2015-1
Istqb 4-테스트설계기법-2015-1Istqb 4-테스트설계기법-2015-1
Istqb 4-테스트설계기법-2015-1Jongwon Lee
 
Presentation Csharp et winforms
Presentation Csharp et winformsPresentation Csharp et winforms
Presentation Csharp et winformsChristophe Zome
 
BDD with SpecFlow and Selenium
BDD with SpecFlow and SeleniumBDD with SpecFlow and Selenium
BDD with SpecFlow and SeleniumLiraz Shay
 
Programación estructurada presentación
Programación estructurada presentaciónProgramación estructurada presentación
Programación estructurada presentaciónIvarra
 
Java Performance Monitoring & Tuning
Java Performance Monitoring & TuningJava Performance Monitoring & Tuning
Java Performance Monitoring & TuningMuhammed Shakir
 
Software Testing Life Cycle
Software Testing Life CycleSoftware Testing Life Cycle
Software Testing Life CycleUdayakumar Sree
 
Agile Testing Process
Agile Testing ProcessAgile Testing Process
Agile Testing ProcessIntetics
 

Mais procurados (20)

Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Pruebas de software
Pruebas de softwarePruebas de software
Pruebas de software
 
Test Life Cycle
Test Life CycleTest Life Cycle
Test Life Cycle
 
Behavior Driven Development with Cucumber
Behavior Driven Development with CucumberBehavior Driven Development with Cucumber
Behavior Driven Development with Cucumber
 
Quality Assurance/Testing Overview & Capability Deck
Quality Assurance/Testing Overview & Capability DeckQuality Assurance/Testing Overview & Capability Deck
Quality Assurance/Testing Overview & Capability Deck
 
SQA V And V Intro & History
SQA V And V Intro & HistorySQA V And V Intro & History
SQA V And V Intro & History
 
Introduction a la SOA
Introduction a la SOAIntroduction a la SOA
Introduction a la SOA
 
Normas ISO Programación
Normas ISO ProgramaciónNormas ISO Programación
Normas ISO Programación
 
Validation vs. verification
Validation vs. verificationValidation vs. verification
Validation vs. verification
 
Software process improvement.ppt
Software process improvement.pptSoftware process improvement.ppt
Software process improvement.ppt
 
Istqb 4-테스트설계기법-2015-1
Istqb 4-테스트설계기법-2015-1Istqb 4-테스트설계기법-2015-1
Istqb 4-테스트설계기법-2015-1
 
Presentation Csharp et winforms
Presentation Csharp et winformsPresentation Csharp et winforms
Presentation Csharp et winforms
 
ISO 9000-3
ISO 9000-3ISO 9000-3
ISO 9000-3
 
BDD with SpecFlow and Selenium
BDD with SpecFlow and SeleniumBDD with SpecFlow and Selenium
BDD with SpecFlow and Selenium
 
Programación estructurada presentación
Programación estructurada presentaciónProgramación estructurada presentación
Programación estructurada presentación
 
Java Performance Monitoring & Tuning
Java Performance Monitoring & TuningJava Performance Monitoring & Tuning
Java Performance Monitoring & Tuning
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Software Testing Life Cycle
Software Testing Life CycleSoftware Testing Life Cycle
Software Testing Life Cycle
 
Tests Logiciel
Tests LogicielTests Logiciel
Tests Logiciel
 
Agile Testing Process
Agile Testing ProcessAgile Testing Process
Agile Testing Process
 

Semelhante a Protegendo Microservices: Boas Práticas e Estratégias de Implementação

TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...tdc-globalcode
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...tdc-globalcode
 
Aplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWTAplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWTBruno Neves Menezes
 
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2Rodrigo Cândido da Silva
 
TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2Rodrigo Cândido da Silva
 
Boas práticas de segurança no acesso a dados em aplicações Web - SQLSaturday ...
Boas práticas de segurança no acesso a dados em aplicações Web - SQLSaturday ...Boas práticas de segurança no acesso a dados em aplicações Web - SQLSaturday ...
Boas práticas de segurança no acesso a dados em aplicações Web - SQLSaturday ...Renato Groff
 
Implementando APIs REST mais seguras - TDC 2019 - São Paulo
Implementando APIs REST mais seguras - TDC 2019 - São PauloImplementando APIs REST mais seguras - TDC 2019 - São Paulo
Implementando APIs REST mais seguras - TDC 2019 - São PauloRenato Groff
 
Implementando APIs REST mais seguras - TDC 2019 - Porto Alegre
Implementando APIs REST mais seguras - TDC 2019 - Porto AlegreImplementando APIs REST mais seguras - TDC 2019 - Porto Alegre
Implementando APIs REST mais seguras - TDC 2019 - Porto AlegreRenato Groff
 
Jwt com implementação apache Oltu
Jwt com implementação apache OltuJwt com implementação apache Oltu
Jwt com implementação apache OltuRodrigo Araujo
 
Microservices & Service Mesh Pattern presentation
Microservices & Service Mesh Pattern presentationMicroservices & Service Mesh Pattern presentation
Microservices & Service Mesh Pattern presentationClaudio Acquaviva
 
Boas práticas de segurança no acesso a dados em aplicações Web - DBA BRASIL 4.0
Boas práticas de segurança no acesso a dados em aplicações Web - DBA BRASIL 4.0Boas práticas de segurança no acesso a dados em aplicações Web - DBA BRASIL 4.0
Boas práticas de segurança no acesso a dados em aplicações Web - DBA BRASIL 4.0Renato Groff
 
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Clavis Segurança da Informação
 
[DTC21] Thiago Henrique - Microsserviços do Mundo Real
[DTC21] Thiago Henrique - Microsserviços do Mundo Real[DTC21] Thiago Henrique - Microsserviços do Mundo Real
[DTC21] Thiago Henrique - Microsserviços do Mundo RealDeep Tech Brasil
 
Blockchain as a Service - Azure Blockchain WorkBench
Blockchain as a Service - Azure Blockchain WorkBenchBlockchain as a Service - Azure Blockchain WorkBench
Blockchain as a Service - Azure Blockchain WorkBenchRogério Rodrigues
 
A tecnologia “blockchain” aplicada ao Registro Imobiliário
A tecnologia “blockchain” aplicada ao Registro ImobiliárioA tecnologia “blockchain” aplicada ao Registro Imobiliário
A tecnologia “blockchain” aplicada ao Registro ImobiliárioIRIB
 
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupados
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupadosSegurança de APIs HTTP, um guia sensato para desenvolvedores preocupados
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupadosLuis Cipriani
 

Semelhante a Protegendo Microservices: Boas Práticas e Estratégias de Implementação (20)

GUJavaSC - Protegendo Microservices em Java
GUJavaSC - Protegendo Microservices em JavaGUJavaSC - Protegendo Microservices em Java
GUJavaSC - Protegendo Microservices em Java
 
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
TDC2017 | São Paulo - Trilha Microservices Coaching I How we figured out we h...
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
TDC2017 | São Paulo - Trilha Segurança e Criptografia How we figured out we h...
 
Aplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWTAplicações stateless com PHP e JWT
Aplicações stateless com PHP e JWT
 
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
JavaOne LATAM 2015 - Segurança em Recursos RESTful com OAuth2
 
TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2TDC 2015 - Segurança em Recursos RESTful com OAuth2
TDC 2015 - Segurança em Recursos RESTful com OAuth2
 
Boas práticas de segurança no acesso a dados em aplicações Web - SQLSaturday ...
Boas práticas de segurança no acesso a dados em aplicações Web - SQLSaturday ...Boas práticas de segurança no acesso a dados em aplicações Web - SQLSaturday ...
Boas práticas de segurança no acesso a dados em aplicações Web - SQLSaturday ...
 
Implementando APIs REST mais seguras - TDC 2019 - São Paulo
Implementando APIs REST mais seguras - TDC 2019 - São PauloImplementando APIs REST mais seguras - TDC 2019 - São Paulo
Implementando APIs REST mais seguras - TDC 2019 - São Paulo
 
Implementando APIs REST mais seguras - TDC 2019 - Porto Alegre
Implementando APIs REST mais seguras - TDC 2019 - Porto AlegreImplementando APIs REST mais seguras - TDC 2019 - Porto Alegre
Implementando APIs REST mais seguras - TDC 2019 - Porto Alegre
 
Jwt com implementação apache Oltu
Jwt com implementação apache OltuJwt com implementação apache Oltu
Jwt com implementação apache Oltu
 
Microservices & Service Mesh Pattern presentation
Microservices & Service Mesh Pattern presentationMicroservices & Service Mesh Pattern presentation
Microservices & Service Mesh Pattern presentation
 
Boas práticas de segurança no acesso a dados em aplicações Web - DBA BRASIL 4.0
Boas práticas de segurança no acesso a dados em aplicações Web - DBA BRASIL 4.0Boas práticas de segurança no acesso a dados em aplicações Web - DBA BRASIL 4.0
Boas práticas de segurança no acesso a dados em aplicações Web - DBA BRASIL 4.0
 
Fundamentos de Blockchain
Fundamentos de BlockchainFundamentos de Blockchain
Fundamentos de Blockchain
 
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
 
[DTC21] Thiago Henrique - Microsserviços do Mundo Real
[DTC21] Thiago Henrique - Microsserviços do Mundo Real[DTC21] Thiago Henrique - Microsserviços do Mundo Real
[DTC21] Thiago Henrique - Microsserviços do Mundo Real
 
Api todo list
Api todo listApi todo list
Api todo list
 
Blockchain as a Service - Azure Blockchain WorkBench
Blockchain as a Service - Azure Blockchain WorkBenchBlockchain as a Service - Azure Blockchain WorkBench
Blockchain as a Service - Azure Blockchain WorkBench
 
A tecnologia “blockchain” aplicada ao Registro Imobiliário
A tecnologia “blockchain” aplicada ao Registro ImobiliárioA tecnologia “blockchain” aplicada ao Registro Imobiliário
A tecnologia “blockchain” aplicada ao Registro Imobiliário
 
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupados
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupadosSegurança de APIs HTTP, um guia sensato para desenvolvedores preocupados
Segurança de APIs HTTP, um guia sensato para desenvolvedores preocupados
 

Mais de Rodrigo Cândido da Silva

Protecting Java Microservices: Best Practices and Strategies
Protecting Java Microservices: Best Practices and StrategiesProtecting Java Microservices: Best Practices and Strategies
Protecting Java Microservices: Best Practices and StrategiesRodrigo Cândido da Silva
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesRodrigo Cândido da Silva
 
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSSWorkshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSSRodrigo Cândido da Silva
 
Workshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring BootWorkshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring BootRodrigo Cândido da Silva
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesRodrigo Cândido da Silva
 
TDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com JavaTDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com JavaRodrigo Cândido da Silva
 
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOpsGUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOpsRodrigo Cândido da Silva
 
GUJavaSC - Criando Micro-serviços Reativos com Java
GUJavaSC - Criando Micro-serviços Reativos com JavaGUJavaSC - Criando Micro-serviços Reativos com Java
GUJavaSC - Criando Micro-serviços Reativos com JavaRodrigo Cândido da Silva
 
JavaOne 2016 - Reactive Microservices with Java and Java EE
JavaOne 2016 - Reactive Microservices with Java and Java EEJavaOne 2016 - Reactive Microservices with Java and Java EE
JavaOne 2016 - Reactive Microservices with Java and Java EERodrigo Cândido da Silva
 
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EEJavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EERodrigo Cândido da Silva
 
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data RESTJavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data RESTRodrigo Cândido da Silva
 
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring CloudTDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring CloudRodrigo Cândido da Silva
 
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...Rodrigo Cândido da Silva
 
QCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EEQCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EERodrigo Cândido da Silva
 
JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...
JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...
JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...Rodrigo Cândido da Silva
 
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EEConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EERodrigo Cândido da Silva
 

Mais de Rodrigo Cândido da Silva (20)

Java 9, 10 e ... 11
Java 9, 10 e ... 11Java 9, 10 e ... 11
Java 9, 10 e ... 11
 
Cloud Native Java EE
Cloud Native Java EECloud Native Java EE
Cloud Native Java EE
 
Protecting Java Microservices: Best Practices and Strategies
Protecting Java Microservices: Best Practices and StrategiesProtecting Java Microservices: Best Practices and Strategies
Protecting Java Microservices: Best Practices and Strategies
 
As novidades da nova versão do Java 9
As novidades da nova versão do Java 9As novidades da nova versão do Java 9
As novidades da nova versão do Java 9
 
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e KubernetesWorkshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
Workshop Microservices - Distribuindo os Microservices com Docker e Kubernetes
 
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSSWorkshop Microservices - Microservices com Spring Cloud e Netflix OSS
Workshop Microservices - Microservices com Spring Cloud e Netflix OSS
 
Workshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring BootWorkshop Microservices - Construindo APIs RESTful com Spring Boot
Workshop Microservices - Construindo APIs RESTful com Spring Boot
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
 
TDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com JavaTDC Floripa 2017 - Criando Microservices Reativos com Java
TDC Floripa 2017 - Criando Microservices Reativos com Java
 
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOpsGUJavaSC - Combinando Micro-serviços com Práticas DevOps
GUJavaSC - Combinando Micro-serviços com Práticas DevOps
 
GUJavaSC - Criando Micro-serviços Reativos com Java
GUJavaSC - Criando Micro-serviços Reativos com JavaGUJavaSC - Criando Micro-serviços Reativos com Java
GUJavaSC - Criando Micro-serviços Reativos com Java
 
JavaOne 2016 - Reactive Microservices with Java and Java EE
JavaOne 2016 - Reactive Microservices with Java and Java EEJavaOne 2016 - Reactive Microservices with Java and Java EE
JavaOne 2016 - Reactive Microservices with Java and Java EE
 
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EEJavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
 
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data RESTJavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST
 
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring CloudTDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
TDC Floripa 2016 - Decolando seus micro-serviços na Spring Cloud
 
GUJavaSC - Combinando AngularJS com Java EE
GUJavaSC - Combinando AngularJS com Java EEGUJavaSC - Combinando AngularJS com Java EE
GUJavaSC - Combinando AngularJS com Java EE
 
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
 
QCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EEQCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EE
 
JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...
JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...
JavaOne LATAM 2015 - Batch Processing: Processamento em Lotes no Mundo Corpor...
 
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EEConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
ConFoo 2015 - Supporting Multi-tenancy Applications with Java EE
 

Protegendo Microservices: Boas Práticas e Estratégias de Implementação

  • 1. Protegendo Microservices Boas Práticas e Estratégias de Implementação Rodrigo Cândido da Silva @rcandidosilva
  • 2. Agenda • Microservices • Requisitos de Segurança • OAuth2, JWT, OpenID Connect • Boas Práticas
  • 4. Como implementar segurança neste contexto?
  • 5. RESTAPIs são vulneráveis • RESTful não define procedimentos de segurança • São igualmente vulneráveis como as aplicações web tradicionais • Principais vulnerabilidades de segurança - Injection attacks - Replay attacks - Cross-site scripting - Denial of Service (DoS) - Man-in-the-middle
  • 7. OAuth2 • Protocolo de segurança aberto e padronizado • Habilita o controle de acesso à aplicações sem compartilhamento de credenciais • Evita problemas com password • Ideal para delegação de acesso - Aplicações externas - Pode ser seletivamente revogado - Recursos específicos por um tempo determinado
  • 9. OAuth2 token • Access Token - Short-lived token • Refresh Token - Long-lived token • Bearer token - Hash random token - Apenas define o conceito de secret (sem identidade de usuário) { "access_token": "2YotnFZFEjr1zCsicMWpAA", "token_type": "bearer", "expires_in": 3600, "scope": "read write", "refresh_token": "tGzv3JOkF0XG5Qx2TlKWIA" }
  • 10. Qual o problema utilizando apenas OAuth2? Não utiliza stateless token model (necessita delegar validação)
  • 11. Como OAuth2 + JWT irão trabalhar em conjunto? Stateless token model (validação embutida em cada microservice)
  • 12. JSON Web Tokens “Modelo compacto e auto-contido para transmissão segura de informação no formato JSON”
  • 13. JSON Web Tokens OAuth2 + JWT (Substitui o bearer token definido pelo OAuth2) { "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE0OTMyODMxNzksInVzZXJfbmFtZSI6InVzZXIiLCJhdX Rob3JpdGllcyI6WyJVU0VSIiwiTUFOQUdFUiJdLCJqdGkiOiJkMGY5OTY2OC01NzdkLTRkZTEtODkwYi1hNDY1MTBkZj g2YjAiLCJjbGllbnRfaWQiOiJjbGllbnQiLCJzY29wZSI6WyJvcGVuaWQiXX0.iH1pnwJZPZi05hdpY9MDGIvtx34Dj8 lxc5fdU5c5NCCtUblT_L9kdZO6NaOIIZffbGzSHoyVUEZkSwkGXm6lT1jRTcOHq2khAZlwmO3hN3c1xb8bumAgmpF8fJ SIKTVIkFJpbVO4uDfHSSbBm6QsTbqHkNgNwWSWbNG1n6ZlsHCcZCh37cmgbh- B4tPD9QEfH3CSI6Z7AgUbS9UCIytjm02sgxgAr3liOcykRrdcOvxgIBx_yGDvornQ5JOBVdW-TS0- uJmHe6sHCFYeBNchJhRi7xqZCMYFD6IcP4dftPupzg3IMl5oWberxhZTCCLoi18JtQyZgIgqmSlOAIq8wg", "token_type": "bearer", "expires_in": 43199, "scope": "read write", "jti": "d0f99668-577d-4de1-890b-a46510df86b0", "refresh_token": "tGzv3JOkF0XG5Qx2TlKWIA" }
  • 14. OpenID Connect • Camada de identidade no topo do protocolo OAuth2 • ID tokens são JWT tokens • REST-based • Fornece core endpoints - Authorization - Token, UserInfo (Identity, Authentication) + OAuth2 = OpenID Connect
  • 17. Crie um API gateway “Aplica o princípio da defesa por profundidade”
  • 18. Apenas exponha o gateway na DMZ (over TLS) “Criptografia dos dados em transito”
  • 19. Garanta privacidade dos dados “Dados sensíveis devem ser encriptados o mais cedo possível”
  • 20. Limite o trafego de entrada das requisições “Previne ataques DoS”
  • 21. Implemente proteção CSRF e CORS “Todas requisições externas devem ser verificadas”
  • 22. Aplique segurança no nível do container “Atinge o conceito de menor privilégio possível"
  • 23. Monitore tudo que seja possível “Detecta e previne ataques”