SlideShare a Scribd company logo
1 of 26
Download to read 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

More Related Content

What's hot

Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudEberhard Wolff
 
Planning and configuring client connectivity exchange server
Planning and configuring client connectivity exchange serverPlanning and configuring client connectivity exchange server
Planning and configuring client connectivity exchange serverFaisal AlNuaim
 
Enterprise Single Sign-On - SSO
Enterprise Single Sign-On - SSOEnterprise Single Sign-On - SSO
Enterprise Single Sign-On - SSOOliver Mueller
 
Diving into Common AWS Misconfigurations
Diving into Common AWS MisconfigurationsDiving into Common AWS Misconfigurations
Diving into Common AWS MisconfigurationsNikhil Sahoo
 
Extent Test report v3 with Appium/Selenium
Extent Test report v3 with Appium/SeleniumExtent Test report v3 with Appium/Selenium
Extent Test report v3 with Appium/SeleniumRaman Gowda Hullur
 
Micro frontends with react and redux dev day
Micro frontends with react and redux   dev dayMicro frontends with react and redux   dev day
Micro frontends with react and redux dev dayPrasanna Venkatesan
 
Mobile Application Development Using Java
Mobile Application Development Using JavaMobile Application Development Using Java
Mobile Application Development Using JavaNexSoftsys
 
Taking conditional access to the next level
Taking conditional access to the next levelTaking conditional access to the next level
Taking conditional access to the next levelRonny de Jong
 
Ppt full stack developer
Ppt full stack developerPpt full stack developer
Ppt full stack developerSudhirVarpe1
 
Selenium Maven With Eclipse | Edureka
Selenium Maven With Eclipse | EdurekaSelenium Maven With Eclipse | Edureka
Selenium Maven With Eclipse | EdurekaEdureka!
 
Identity Management for Your Users and Apps: A Deep Dive on Amazon Cognito - ...
Identity Management for Your Users and Apps: A Deep Dive on Amazon Cognito - ...Identity Management for Your Users and Apps: A Deep Dive on Amazon Cognito - ...
Identity Management for Your Users and Apps: A Deep Dive on Amazon Cognito - ...Amazon Web Services
 
Test-Driven Security
Test-Driven SecurityTest-Driven Security
Test-Driven SecurityVMware Tanzu
 
Development of Mobile Application -PPT
Development of Mobile Application -PPTDevelopment of Mobile Application -PPT
Development of Mobile Application -PPTDhivya T
 
Security Patterns for Microservice Architectures
Security Patterns for Microservice ArchitecturesSecurity Patterns for Microservice Architectures
Security Patterns for Microservice ArchitecturesVMware Tanzu
 

What's hot (20)

Reactive Spring Framework 5
Reactive Spring Framework 5Reactive Spring Framework 5
Reactive Spring Framework 5
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
 
Planning and configuring client connectivity exchange server
Planning and configuring client connectivity exchange serverPlanning and configuring client connectivity exchange server
Planning and configuring client connectivity exchange server
 
Enterprise Single Sign-On - SSO
Enterprise Single Sign-On - SSOEnterprise Single Sign-On - SSO
Enterprise Single Sign-On - SSO
 
Diving into Common AWS Misconfigurations
Diving into Common AWS MisconfigurationsDiving into Common AWS Misconfigurations
Diving into Common AWS Misconfigurations
 
Extent Test report v3 with Appium/Selenium
Extent Test report v3 with Appium/SeleniumExtent Test report v3 with Appium/Selenium
Extent Test report v3 with Appium/Selenium
 
Micro frontends with react and redux dev day
Micro frontends with react and redux   dev dayMicro frontends with react and redux   dev day
Micro frontends with react and redux dev day
 
Mobile Application Development Using Java
Mobile Application Development Using JavaMobile Application Development Using Java
Mobile Application Development Using Java
 
SINGLE SIGN-ON
SINGLE SIGN-ONSINGLE SIGN-ON
SINGLE SIGN-ON
 
Taking conditional access to the next level
Taking conditional access to the next levelTaking conditional access to the next level
Taking conditional access to the next level
 
Ppt full stack developer
Ppt full stack developerPpt full stack developer
Ppt full stack developer
 
Single Sign On 101
Single Sign On 101Single Sign On 101
Single Sign On 101
 
Selenium Maven With Eclipse | Edureka
Selenium Maven With Eclipse | EdurekaSelenium Maven With Eclipse | Edureka
Selenium Maven With Eclipse | Edureka
 
Identity Management for Your Users and Apps: A Deep Dive on Amazon Cognito - ...
Identity Management for Your Users and Apps: A Deep Dive on Amazon Cognito - ...Identity Management for Your Users and Apps: A Deep Dive on Amazon Cognito - ...
Identity Management for Your Users and Apps: A Deep Dive on Amazon Cognito - ...
 
Test-Driven Security
Test-Driven SecurityTest-Driven Security
Test-Driven Security
 
Cell phone jammer
Cell phone jammerCell phone jammer
Cell phone jammer
 
Development of Mobile Application -PPT
Development of Mobile Application -PPTDevelopment of Mobile Application -PPT
Development of Mobile Application -PPT
 
Security Patterns for Microservice Architectures
Security Patterns for Microservice ArchitecturesSecurity Patterns for Microservice Architectures
Security Patterns for Microservice Architectures
 
Test automation using selenium
Test automation using seleniumTest automation using selenium
Test automation using selenium
 
SNAP BI.pdf
SNAP BI.pdfSNAP BI.pdf
SNAP BI.pdf
 

Similar to 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
 

Similar to 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
 

More from 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
 

More from 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”