SlideShare ist ein Scribd-Unternehmen logo
Sicher in die Cloud mit
Angular 2 und Spring Boot
Andreas Falk
German OWASP Day
29.11.2016
Andreas Falk / Germany
NovaTec Consulting GmbH
andreas.falk@novatec-gmbh.de
@agile_security
Agile
Threat Modeling
Cloud
Spring
Security
Scrum
Kanban
TDD
Code Review
CleanCode
Static Analysis
Architecture
OWASP
Java EE
Microservices
IoT
BDD
DevOps
Web
Java
SSO
OAuth2
SAML
Sicher in die Cloud mit Angular 2 und Spring
Boot
2
Sicher in die Cloud mit Angular 2 und Spring
Boot
3
DevOpsProduct Owner
Entwicklung
QA
Betrieb
InfoSec
Sicher in die Cloud mit Angular 2 und Spring
Boot
4
Sicher in die Cloud mit Angular 2 und Spring
Boot
5
Java
Entwickler vs. Security
Identity Server
Sicher in die Cloud mit Angular 2 und Spring
Boot
6
Angular 2
API Gateway
Microservice
HTTPS
Microservice
HTTPS
HTTPS HTTPS
DB
DB
JDBC
JDBC
Architektur / Threat Model
HTTPS
Sicher in die Cloud mit Angular 2 und Spring
Boot
7
Angular 2
https://angular.io
Sicher in die Cloud mit Angular 2 und Spring
Boot
8
https://angularjs.blogspot.de/2016/09/angular-16-expression-sandbox-removal.html
Angular 1.x
Angular 2
Sicher in die Cloud mit Angular 2 und Spring
Boot
9
https://github.com/angular/angular/issues/8511
Sicher in die Cloud mit Angular 2 und Spring
Boot
10
Sicherheitseinstufung in Angular 2
Alle Werte (Alles was ins DOM wandert)
Angular Templates (Vorsicht: Template-Injection)
Kontextabhängige Sanitization und Escaping
HTML (z.B. Bindings mit „innerHtml“)
Style (CSS Bindings)
URL (URL Eigenschaften wie <a href>
Resource URL (z.B. <image src> oder <script src>)
Sicher in die Cloud mit Angular 2 und Spring
Boot
11
https://angular.io/docs/ts/latest/api/platform-browser/index/DomSanitizer-class.html
Sicher in die Cloud mit Angular 2 und Spring
Boot
12
„Double Submit Cookie“ Support in Angular 2
XSRF-TOKEN Cookie
Client Server
X-XSRF-TOKEN Header +
XSRF-TOKEN Cookie
CSRF Schutz
Sicher in die Cloud mit Angular 2 und Spring
Boot
13
Backendhttps://spring.io/platform
Sicher in die Cloud mit Angular 2 und Spring
Boot
14
Spring Boot
Spring Security
Spring Data JPA
Spring Framework
Sicher in die Cloud mit Angular 2 und Spring
Boot
15
Demo: Eine sichere Web-Anwendung in 5 Minuten
Sicher in die Cloud mit Angular 2 und Spring
Boot
16
Authentifizierung aller URLs
Session Fixation Schutz
Session Cookie (HttpOnly, Secure)
CSRF Angriffschutz
Security Response Header
„Secure By Default“ Konfiguration
Sicher in die Cloud mit Angular 2 und Spring
Boot
17
@Configuration
public class WebSecurityConfiguration extends
WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
…
http
.csrf().csrfTokenRepository(
CookieCsrfTokenRepository.withHttpOnlyFalse()
);
}
CSRF Konfiguration für Angular 2
Sicher in die Cloud mit Angular 2 und Spring
Boot
18
public interface PasswordEncoder {
String encode(CharSequence rawPassword);
boolean matches(
CharSequence rawPassword,
String encodedPassword);
}
Sichere Passwortverschlüsselung
Sicher in die Cloud mit Angular 2 und Spring
Boot
19
Sichere Passwortverschlüsselung
Encoder Implementierungen:
BCryptPasswordEncoder
SCryptPasswordEncoder
Pbkdf2PasswordEncoder
BytesEncryptor (BouncyCastle)
Sicher in die Cloud mit Angular 2 und Spring
Boot
20
Authorization
Server
Client
Resource
Server
OAuth2 = Autorisierung
https://oauth.net/2
Sicher in die Cloud mit Angular 2 und Spring
Boot
21
OpenID Connect = Authentifizierung
https://openid.net/connect
OAuth 2
JWT JWS JWE
OpenID Connect
JWK
Sicher in die Cloud mit Angular 2 und Spring
Boot
22
Tweetable OAuth2 Application
Sicher in die Cloud mit Angular 2 und Spring
Boot
23
https://github.com/IdentityServer/IdentityServer3
Sicher in die Cloud mit Angular 2 und Spring
Boot
24
@Entity
public class Person extends AbstractPersistable<Long> {
@NotNull
@Pattern(regexp = "^[A-Za-z0-9- ]{1,30}$")
private String lastName;
@NotNull
@Enumerated(EnumType.STRING)
private GenderEnum gender;
...
}
Input Validierung
Typisierung und Bean Validation
(REST Interface UND in JPA Entity)
Sicher in die Cloud mit Angular 2 und Spring
Boot
25
@Query(
"select u from User u where u.username = "
+ " :username and u.password = :password"
)
User findByUsernameAndPassword(
@Param("username") String username,
@Param("password") String password);
SQL Injection Schutz
Prepared Statements mit Spring Data JPA
Sicher in die Cloud mit Angular 2 und Spring
Boot
26
public class UserBoundaryService {
@PreAuthorize("hasRole('ADMIN')")
public List<User> findAllUsers() {…}
}
-------------------------------------
public class TaskBoundaryService {
@PreAuthorize("hasPermission(#task.getProject().getId(),
@permissionTargetType.PROJECT, @accessType.WRITE)")
public Task createTask(Task task) {…}
}
Autorisierung der REST API
Rollen- oder Rechtebasiert
Sicher in die Cloud mit Angular 2 und Spring
Boot
27
public class AuthorizationIntegrationTest {
@WithMockUser(roles = "ADMIN")
@Test
public void verifyFindAllUsersIsAuthorized() {…}
@WithMockUser(roles = "USER")
@Test(expected = AccessDeniedException.class)
public void verifyFindAllUsersIsUnauthorized() {…}
…
}
Test der REST API
Serverseitige Tests (mit Security)
Sicher in die Cloud mit Angular 2 und Spring
Boot
28
Cloud Plattformhttps://www.cloudfoundry.org/
Sicher in die Cloud mit Angular 2 und Spring
Boot
29
Rotate
Repair
Repave
https://www.youtube.com/watch?v=NUXpz0Dni50
Justin Smith, Pivotal
Sicher in die Cloud mit Angular 2 und Spring
Boot
30
What if every server inside my data center had a
maximum lifetime of two hours?
This approach would frustrate malware writers,
because it limits the amount of time to exploit
known vulnerabilities before they are patched.
“
“Justin Smith, Pivotal
Repave
Sicher in die Cloud mit Angular 2 und Spring
Boot
31
Rotate
Microservice
DB
JDBC
Service Binding
Credentials
Sicher in die Cloud mit Angular 2 und Spring
Boot
32
Repair
Spring Boot + Spring Platform
CloudFoundry Java Buildpack
CloudFoundry OPS Manager
AWS Azure OpenStack
Sicher in die Cloud mit Angular 2 und Spring
Boot
33
Verify for Security
Early and Often
Parameterize Queries
Encode Data
Validate All Inputs
DevOps / Code Reviews
Spring Data JPA
Angular 2 Kontext-Sanitizer
Typisierte Eingaben /
Bean Validation
Summary (1)
https://www.owasp.org/index.php/OWASP_Proactive_Controls
Sicher in die Cloud mit Angular 2 und Spring
Boot
34
Implement Identity and
Authentication Controls
Implement Access Controls
Protect Data
OAuth2 + OpenID Connect
Summary (2)
https://www.owasp.org/index.php/OWASP_Proactive_Controls
Spring Security
Autorisierung
Spring Security Password
Encoder
Sicher in die Cloud mit Angular 2 und Spring
Boot
35
Implement Logging and
Intrusion Detection
Leverage Security Frameworks
and Libraries
Error and Exception Handling
Spring Error Controller
Java Exception Handling
Slf4J Logger, Splunk,
Auditing, (AppSensor)
Spring Security
Spring Boot + Spring Platform
Summary (3)
https://www.owasp.org/index.php/OWASP_Proactive_Controls

Weitere ähnliche Inhalte

Was ist angesagt?

Kubernetes ist so viel mehr als ein Container Orchestrierer
Kubernetes ist so viel mehr als ein Container OrchestriererKubernetes ist so viel mehr als ein Container Orchestrierer
Kubernetes ist so viel mehr als ein Container Orchestrierer
QAware GmbH
 
Stackstorm – Event driven Automation
Stackstorm – Event driven AutomationStackstorm – Event driven Automation
Stackstorm – Event driven Automation
inovex GmbH
 
Apache Sling Server Seitiges OSGi
Apache Sling Server Seitiges OSGiApache Sling Server Seitiges OSGi
Apache Sling Server Seitiges OSGi
Felix Meschberger
 
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-UmgebungenContinuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
Nicholas Dille
 
In-Memory Computing mit Apache Ignite und Kubernetes
In-Memory Computing mit Apache Ignite und KubernetesIn-Memory Computing mit Apache Ignite und Kubernetes
In-Memory Computing mit Apache Ignite und Kubernetes
QAware GmbH
 
Migration zum Zend Framework 3
Migration zum Zend Framework 3Migration zum Zend Framework 3
Migration zum Zend Framework 3
Ralf Eggert
 

Was ist angesagt? (6)

Kubernetes ist so viel mehr als ein Container Orchestrierer
Kubernetes ist so viel mehr als ein Container OrchestriererKubernetes ist so viel mehr als ein Container Orchestrierer
Kubernetes ist so viel mehr als ein Container Orchestrierer
 
Stackstorm – Event driven Automation
Stackstorm – Event driven AutomationStackstorm – Event driven Automation
Stackstorm – Event driven Automation
 
Apache Sling Server Seitiges OSGi
Apache Sling Server Seitiges OSGiApache Sling Server Seitiges OSGi
Apache Sling Server Seitiges OSGi
 
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-UmgebungenContinuous Delivery für Infrastrukturdienste in Container-Umgebungen
Continuous Delivery für Infrastrukturdienste in Container-Umgebungen
 
In-Memory Computing mit Apache Ignite und Kubernetes
In-Memory Computing mit Apache Ignite und KubernetesIn-Memory Computing mit Apache Ignite und Kubernetes
In-Memory Computing mit Apache Ignite und Kubernetes
 
Migration zum Zend Framework 3
Migration zum Zend Framework 3Migration zum Zend Framework 3
Migration zum Zend Framework 3
 

Ähnlich wie OWASP German Day 2016 - Sicher in die Cloud mit Angular 2 und Spring Boot

Continuous deployment in LeanIX @ Bonn Agile
Continuous deployment in LeanIX @ Bonn AgileContinuous deployment in LeanIX @ Bonn Agile
Continuous deployment in LeanIX @ Bonn Agile
LeanIX GmbH
 
Microprofile-Anwendungen mit Quarkus
Microprofile-Anwendungen mit Quarkus Microprofile-Anwendungen mit Quarkus
Microprofile-Anwendungen mit Quarkus
gedoplan
 
Holistische Sicherheit für Microservice Architekturen
Holistische Sicherheit für Microservice ArchitekturenHolistische Sicherheit für Microservice Architekturen
Holistische Sicherheit für Microservice Architekturen
QAware GmbH
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
QAware GmbH
 
stackconf 2020 | SecDevOps in der Cloud by Florian Wiethoff
stackconf 2020 | SecDevOps in der Cloud by Florian Wiethoffstackconf 2020 | SecDevOps in der Cloud by Florian Wiethoff
stackconf 2020 | SecDevOps in der Cloud by Florian Wiethoff
NETWAYS
 
Sicherheit in Single-Page-Web-Anwendungen
Sicherheit in Single-Page-Web-AnwendungenSicherheit in Single-Page-Web-Anwendungen
Sicherheit in Single-Page-Web-Anwendungen
Philipp Burgmer
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
Sebastian Springer
 
Bkr Workflow Oeffentlich
Bkr Workflow OeffentlichBkr Workflow Oeffentlich
Bkr Workflow Oeffentlich
Ralf Ruethlein
 
System Center Configuration Manager with Azure, Intune and Application Manage...
System Center Configuration Manager with Azure, Intune and Application Manage...System Center Configuration Manager with Azure, Intune and Application Manage...
System Center Configuration Manager with Azure, Intune and Application Manage...
Digicomp Academy AG
 
Cloud Connectivity - Herausforderungen und Loesungen
Cloud Connectivity - Herausforderungen und LoesungenCloud Connectivity - Herausforderungen und Loesungen
Cloud Connectivity - Herausforderungen und Loesungen
Daniel Steiger
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
OPITZ CONSULTING Deutschland
 
Compliance und Governance in der DevOps-Acht
Compliance und Governance in der DevOps-AchtCompliance und Governance in der DevOps-Acht
Compliance und Governance in der DevOps-Acht
BATbern
 
Virtuelles CodeMoving mit Translocated Execution
Virtuelles CodeMoving mit Translocated ExecutionVirtuelles CodeMoving mit Translocated Execution
Virtuelles CodeMoving mit Translocated Execution
team-WIBU
 
Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?
QAware GmbH
 
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?
Josef Adersberger
 
JEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine EinführungJEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine Einführung
gedoplan
 
Camunda@1&1
Camunda@1&1Camunda@1&1
Camunda@1&1
1&1
 
Microprofile-Anwendungen mit Quarkus - reloaded
Microprofile-Anwendungen mit Quarkus - reloadedMicroprofile-Anwendungen mit Quarkus - reloaded
Microprofile-Anwendungen mit Quarkus - reloaded
gedoplan
 
In den sicheren Hafen jax2020
In den sicheren Hafen jax2020In den sicheren Hafen jax2020
In den sicheren Hafen jax2020
Stephan Kaps
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
Hendrik Lösch
 

Ähnlich wie OWASP German Day 2016 - Sicher in die Cloud mit Angular 2 und Spring Boot (20)

Continuous deployment in LeanIX @ Bonn Agile
Continuous deployment in LeanIX @ Bonn AgileContinuous deployment in LeanIX @ Bonn Agile
Continuous deployment in LeanIX @ Bonn Agile
 
Microprofile-Anwendungen mit Quarkus
Microprofile-Anwendungen mit Quarkus Microprofile-Anwendungen mit Quarkus
Microprofile-Anwendungen mit Quarkus
 
Holistische Sicherheit für Microservice Architekturen
Holistische Sicherheit für Microservice ArchitekturenHolistische Sicherheit für Microservice Architekturen
Holistische Sicherheit für Microservice Architekturen
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
 
stackconf 2020 | SecDevOps in der Cloud by Florian Wiethoff
stackconf 2020 | SecDevOps in der Cloud by Florian Wiethoffstackconf 2020 | SecDevOps in der Cloud by Florian Wiethoff
stackconf 2020 | SecDevOps in der Cloud by Florian Wiethoff
 
Sicherheit in Single-Page-Web-Anwendungen
Sicherheit in Single-Page-Web-AnwendungenSicherheit in Single-Page-Web-Anwendungen
Sicherheit in Single-Page-Web-Anwendungen
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
 
Bkr Workflow Oeffentlich
Bkr Workflow OeffentlichBkr Workflow Oeffentlich
Bkr Workflow Oeffentlich
 
System Center Configuration Manager with Azure, Intune and Application Manage...
System Center Configuration Manager with Azure, Intune and Application Manage...System Center Configuration Manager with Azure, Intune and Application Manage...
System Center Configuration Manager with Azure, Intune and Application Manage...
 
Cloud Connectivity - Herausforderungen und Loesungen
Cloud Connectivity - Herausforderungen und LoesungenCloud Connectivity - Herausforderungen und Loesungen
Cloud Connectivity - Herausforderungen und Loesungen
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
Compliance und Governance in der DevOps-Acht
Compliance und Governance in der DevOps-AchtCompliance und Governance in der DevOps-Acht
Compliance und Governance in der DevOps-Acht
 
Virtuelles CodeMoving mit Translocated Execution
Virtuelles CodeMoving mit Translocated ExecutionVirtuelles CodeMoving mit Translocated Execution
Virtuelles CodeMoving mit Translocated Execution
 
Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?Cloud Native & Java EE: Freund oder Feind?
Cloud Native & Java EE: Freund oder Feind?
 
Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?Cloud Native und Java EE: Freund oder Feind?
Cloud Native und Java EE: Freund oder Feind?
 
JEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine EinführungJEE-Microservices mit Quarkus – eine Einführung
JEE-Microservices mit Quarkus – eine Einführung
 
Camunda@1&1
Camunda@1&1Camunda@1&1
Camunda@1&1
 
Microprofile-Anwendungen mit Quarkus - reloaded
Microprofile-Anwendungen mit Quarkus - reloadedMicroprofile-Anwendungen mit Quarkus - reloaded
Microprofile-Anwendungen mit Quarkus - reloaded
 
In den sicheren Hafen jax2020
In den sicheren Hafen jax2020In den sicheren Hafen jax2020
In den sicheren Hafen jax2020
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
 

Mehr von Andreas Falk

AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"
AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"
AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"
Andreas Falk
 
Sicher in die Cloud mit Angular und Spring Boot (Karlsruher Entwicklertag 2017)
Sicher in die Cloud mit Angular und Spring Boot (Karlsruher Entwicklertag 2017)Sicher in die Cloud mit Angular und Spring Boot (Karlsruher Entwicklertag 2017)
Sicher in die Cloud mit Angular und Spring Boot (Karlsruher Entwicklertag 2017)
Andreas Falk
 
Manage distributed configuration and secrets with spring cloud and vault (Spr...
Manage distributed configuration and secrets with spring cloud and vault (Spr...Manage distributed configuration and secrets with spring cloud and vault (Spr...
Manage distributed configuration and secrets with spring cloud and vault (Spr...
Andreas Falk
 
JAX 2017 - Sicher in die Cloud mit Angular und Spring Boot
JAX 2017 - Sicher in die Cloud mit Angular und Spring BootJAX 2017 - Sicher in die Cloud mit Angular und Spring Boot
JAX 2017 - Sicher in die Cloud mit Angular und Spring Boot
Andreas Falk
 
OWASP AppSecEu 2016 Rome - Building secure cloud native apps
OWASP AppSecEu 2016 Rome - Building secure cloud native appsOWASP AppSecEu 2016 Rome - Building secure cloud native apps
OWASP AppSecEu 2016 Rome - Building secure cloud native apps
Andreas Falk
 
Cloud Foundry Meetup Stuttgart 2017 - Spring Cloud Development
Cloud Foundry Meetup Stuttgart 2017 - Spring Cloud DevelopmentCloud Foundry Meetup Stuttgart 2017 - Spring Cloud Development
Cloud Foundry Meetup Stuttgart 2017 - Spring Cloud Development
Andreas Falk
 

Mehr von Andreas Falk (6)

AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"
AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"
AllTheTalks.Online 2020: "Basics of OAuth 2.0 and OpenID Connect"
 
Sicher in die Cloud mit Angular und Spring Boot (Karlsruher Entwicklertag 2017)
Sicher in die Cloud mit Angular und Spring Boot (Karlsruher Entwicklertag 2017)Sicher in die Cloud mit Angular und Spring Boot (Karlsruher Entwicklertag 2017)
Sicher in die Cloud mit Angular und Spring Boot (Karlsruher Entwicklertag 2017)
 
Manage distributed configuration and secrets with spring cloud and vault (Spr...
Manage distributed configuration and secrets with spring cloud and vault (Spr...Manage distributed configuration and secrets with spring cloud and vault (Spr...
Manage distributed configuration and secrets with spring cloud and vault (Spr...
 
JAX 2017 - Sicher in die Cloud mit Angular und Spring Boot
JAX 2017 - Sicher in die Cloud mit Angular und Spring BootJAX 2017 - Sicher in die Cloud mit Angular und Spring Boot
JAX 2017 - Sicher in die Cloud mit Angular und Spring Boot
 
OWASP AppSecEu 2016 Rome - Building secure cloud native apps
OWASP AppSecEu 2016 Rome - Building secure cloud native appsOWASP AppSecEu 2016 Rome - Building secure cloud native apps
OWASP AppSecEu 2016 Rome - Building secure cloud native apps
 
Cloud Foundry Meetup Stuttgart 2017 - Spring Cloud Development
Cloud Foundry Meetup Stuttgart 2017 - Spring Cloud DevelopmentCloud Foundry Meetup Stuttgart 2017 - Spring Cloud Development
Cloud Foundry Meetup Stuttgart 2017 - Spring Cloud Development
 

OWASP German Day 2016 - Sicher in die Cloud mit Angular 2 und Spring Boot

  • 1. Sicher in die Cloud mit Angular 2 und Spring Boot Andreas Falk German OWASP Day 29.11.2016
  • 2. Andreas Falk / Germany NovaTec Consulting GmbH andreas.falk@novatec-gmbh.de @agile_security Agile Threat Modeling Cloud Spring Security Scrum Kanban TDD Code Review CleanCode Static Analysis Architecture OWASP Java EE Microservices IoT BDD DevOps Web Java SSO OAuth2 SAML Sicher in die Cloud mit Angular 2 und Spring Boot 2
  • 3. Sicher in die Cloud mit Angular 2 und Spring Boot 3 DevOpsProduct Owner Entwicklung QA Betrieb InfoSec
  • 4. Sicher in die Cloud mit Angular 2 und Spring Boot 4
  • 5. Sicher in die Cloud mit Angular 2 und Spring Boot 5 Java Entwickler vs. Security
  • 6. Identity Server Sicher in die Cloud mit Angular 2 und Spring Boot 6 Angular 2 API Gateway Microservice HTTPS Microservice HTTPS HTTPS HTTPS DB DB JDBC JDBC Architektur / Threat Model HTTPS
  • 7. Sicher in die Cloud mit Angular 2 und Spring Boot 7 Angular 2 https://angular.io
  • 8. Sicher in die Cloud mit Angular 2 und Spring Boot 8 https://angularjs.blogspot.de/2016/09/angular-16-expression-sandbox-removal.html Angular 1.x Angular 2
  • 9. Sicher in die Cloud mit Angular 2 und Spring Boot 9 https://github.com/angular/angular/issues/8511
  • 10. Sicher in die Cloud mit Angular 2 und Spring Boot 10 Sicherheitseinstufung in Angular 2 Alle Werte (Alles was ins DOM wandert) Angular Templates (Vorsicht: Template-Injection) Kontextabhängige Sanitization und Escaping HTML (z.B. Bindings mit „innerHtml“) Style (CSS Bindings) URL (URL Eigenschaften wie <a href> Resource URL (z.B. <image src> oder <script src>)
  • 11. Sicher in die Cloud mit Angular 2 und Spring Boot 11 https://angular.io/docs/ts/latest/api/platform-browser/index/DomSanitizer-class.html
  • 12. Sicher in die Cloud mit Angular 2 und Spring Boot 12 „Double Submit Cookie“ Support in Angular 2 XSRF-TOKEN Cookie Client Server X-XSRF-TOKEN Header + XSRF-TOKEN Cookie CSRF Schutz
  • 13. Sicher in die Cloud mit Angular 2 und Spring Boot 13 Backendhttps://spring.io/platform
  • 14. Sicher in die Cloud mit Angular 2 und Spring Boot 14 Spring Boot Spring Security Spring Data JPA Spring Framework
  • 15. Sicher in die Cloud mit Angular 2 und Spring Boot 15 Demo: Eine sichere Web-Anwendung in 5 Minuten
  • 16. Sicher in die Cloud mit Angular 2 und Spring Boot 16 Authentifizierung aller URLs Session Fixation Schutz Session Cookie (HttpOnly, Secure) CSRF Angriffschutz Security Response Header „Secure By Default“ Konfiguration
  • 17. Sicher in die Cloud mit Angular 2 und Spring Boot 17 @Configuration public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { … http .csrf().csrfTokenRepository( CookieCsrfTokenRepository.withHttpOnlyFalse() ); } CSRF Konfiguration für Angular 2
  • 18. Sicher in die Cloud mit Angular 2 und Spring Boot 18 public interface PasswordEncoder { String encode(CharSequence rawPassword); boolean matches( CharSequence rawPassword, String encodedPassword); } Sichere Passwortverschlüsselung
  • 19. Sicher in die Cloud mit Angular 2 und Spring Boot 19 Sichere Passwortverschlüsselung Encoder Implementierungen: BCryptPasswordEncoder SCryptPasswordEncoder Pbkdf2PasswordEncoder BytesEncryptor (BouncyCastle)
  • 20. Sicher in die Cloud mit Angular 2 und Spring Boot 20 Authorization Server Client Resource Server OAuth2 = Autorisierung https://oauth.net/2
  • 21. Sicher in die Cloud mit Angular 2 und Spring Boot 21 OpenID Connect = Authentifizierung https://openid.net/connect OAuth 2 JWT JWS JWE OpenID Connect JWK
  • 22. Sicher in die Cloud mit Angular 2 und Spring Boot 22 Tweetable OAuth2 Application
  • 23. Sicher in die Cloud mit Angular 2 und Spring Boot 23 https://github.com/IdentityServer/IdentityServer3
  • 24. Sicher in die Cloud mit Angular 2 und Spring Boot 24 @Entity public class Person extends AbstractPersistable<Long> { @NotNull @Pattern(regexp = "^[A-Za-z0-9- ]{1,30}$") private String lastName; @NotNull @Enumerated(EnumType.STRING) private GenderEnum gender; ... } Input Validierung Typisierung und Bean Validation (REST Interface UND in JPA Entity)
  • 25. Sicher in die Cloud mit Angular 2 und Spring Boot 25 @Query( "select u from User u where u.username = " + " :username and u.password = :password" ) User findByUsernameAndPassword( @Param("username") String username, @Param("password") String password); SQL Injection Schutz Prepared Statements mit Spring Data JPA
  • 26. Sicher in die Cloud mit Angular 2 und Spring Boot 26 public class UserBoundaryService { @PreAuthorize("hasRole('ADMIN')") public List<User> findAllUsers() {…} } ------------------------------------- public class TaskBoundaryService { @PreAuthorize("hasPermission(#task.getProject().getId(), @permissionTargetType.PROJECT, @accessType.WRITE)") public Task createTask(Task task) {…} } Autorisierung der REST API Rollen- oder Rechtebasiert
  • 27. Sicher in die Cloud mit Angular 2 und Spring Boot 27 public class AuthorizationIntegrationTest { @WithMockUser(roles = "ADMIN") @Test public void verifyFindAllUsersIsAuthorized() {…} @WithMockUser(roles = "USER") @Test(expected = AccessDeniedException.class) public void verifyFindAllUsersIsUnauthorized() {…} … } Test der REST API Serverseitige Tests (mit Security)
  • 28. Sicher in die Cloud mit Angular 2 und Spring Boot 28 Cloud Plattformhttps://www.cloudfoundry.org/
  • 29. Sicher in die Cloud mit Angular 2 und Spring Boot 29 Rotate Repair Repave https://www.youtube.com/watch?v=NUXpz0Dni50 Justin Smith, Pivotal
  • 30. Sicher in die Cloud mit Angular 2 und Spring Boot 30 What if every server inside my data center had a maximum lifetime of two hours? This approach would frustrate malware writers, because it limits the amount of time to exploit known vulnerabilities before they are patched. “ “Justin Smith, Pivotal Repave
  • 31. Sicher in die Cloud mit Angular 2 und Spring Boot 31 Rotate Microservice DB JDBC Service Binding Credentials
  • 32. Sicher in die Cloud mit Angular 2 und Spring Boot 32 Repair Spring Boot + Spring Platform CloudFoundry Java Buildpack CloudFoundry OPS Manager AWS Azure OpenStack
  • 33. Sicher in die Cloud mit Angular 2 und Spring Boot 33 Verify for Security Early and Often Parameterize Queries Encode Data Validate All Inputs DevOps / Code Reviews Spring Data JPA Angular 2 Kontext-Sanitizer Typisierte Eingaben / Bean Validation Summary (1) https://www.owasp.org/index.php/OWASP_Proactive_Controls
  • 34. Sicher in die Cloud mit Angular 2 und Spring Boot 34 Implement Identity and Authentication Controls Implement Access Controls Protect Data OAuth2 + OpenID Connect Summary (2) https://www.owasp.org/index.php/OWASP_Proactive_Controls Spring Security Autorisierung Spring Security Password Encoder
  • 35. Sicher in die Cloud mit Angular 2 und Spring Boot 35 Implement Logging and Intrusion Detection Leverage Security Frameworks and Libraries Error and Exception Handling Spring Error Controller Java Exception Handling Slf4J Logger, Splunk, Auditing, (AppSensor) Spring Security Spring Boot + Spring Platform Summary (3) https://www.owasp.org/index.php/OWASP_Proactive_Controls