SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
THEFT PROOF-JAVA EE
Markus Eisele
markus@jboss.org
@myfear
blog.eisele.net
Securing your Java EE applications
YOU KNOW JAVA EE
BUT WHAT DO YOU KNOW ABOUT
SECURITY?
Markus Eisele aka @myfear5
HOLISTIC SECURITY
To build a secure Java EE application, a holistic
approach to application security is required and security
must be applied at all layers and services.
Network
Host
Application
Platform Services (JVM, Application Server)
Operating System
Infrastructure
Software
Application
Landscape
Enterprise-
Services
Business
IT-Security-Architecture
Secure applications rely on secure networks
Markus Eisele aka @myfear6
SECURE NETWORKS
Things to look out for:
• Router
• Firewall
• Switch
• Protocols
• Ports
• Firmware
• Standard passwords
Repeat for all of them: including database, message broker, httpd-server
and all the others.
Markus Eisele aka @myfear7
SECURE HOSTS / OPERATING SYSTEMS
Things to look out for:
• Shared Volumes
• Running Services
• Accounts (user and service)
• Auditing and Logging
• Files and directories
• Patches and updates
All pre-installed runtimes, like the JVM/JDK, Application server, etc.
Markus Eisele aka @myfear8
PLATFORM SERVICES
Things to look out for:
• Policy Files
• File Access Rights
• Default Passwords
• Admin Console
Security relies on the following components
WHAT IS APPLICATION SECURITY?
Availability
Integrity
Confidentiality
Auditing
Authorization
Authentication
Markus Eisele aka @myfear9
A thread is a potential event that may affect your system. An attack
exploits a vulnerability in your system.
Markus Eisele aka @myfear10
THREATS, VULNERABILITIES, AND
ATTACKS
How do you decide if an application is secure?
Application +
Infrastructure
exposes Vulnerability exploits Attack
Markus Eisele aka @myfear11
NO SECURITY WITHOUT THREATS
It is not possible to design and build a secure Web application until you
know your threats.
Thread modelling in the design phase:
• To be
protected
• CC,
Address,
etc.
Data Goal of an
attackThreat
• Potential
damage
• $ or
image
Rate
Markus Eisele aka @myfear12
STRATEGY – APPROACH - GOAL
Some basic categories mapped down from the security components
Markus Eisele aka @myfear13
APPLICATION VULNERABILITY
CATEGORIES
• Input Validation
• Authentication
• Authorization
• Configuration Management
• Sensitive Data
• Session Management
• Data Encryption
• Parameter Manipulation
• Exception Handling
• Auditing and Logging
• Timestamping
• Role Based Access Control
• Execution Sandboxing
• Process Separation
Best Practices for designing secure applications.
Markus Eisele aka @myfear14
CORE SECURITY PRINCIPLES
• Compartmentalize
• Use least privilege
• Apply defense in depth
• Do not trust user input
• Check at the gate
• Fail securely
• Secure the weakest link
• Create secure defaults
• Reduce your attack surface
THINGS TO KEEP IN MIND FOR YOUR
SYSTEM DESIGN
AND HOW MUCH OF THAT CAN
YOU DO WITH JAVA EE?
15
Basic, Form, Digest, Client, Mutual
Markus Eisele aka @myfear16
AUTHENTICATION
The means by which communicating entities, such as client and server,
prove to each other that they are acting on behalf of specific identities that
are authorized for access. This ensures that users are who they say they
are.
• Configuration via deployment descriptor
• Application roles mapping into server groups
• Most servers provide standard login modules (DB, LDAP, Client-Cert, Filesystem)
• Additional resources (Keystores, LDAP, DB)
• Custom Authentication Logic via:
• JASPIC
• JAAS
• Server Specific Features (Realms)
The missing pieces
Markus Eisele aka @myfear17
AUTHENTICATION
Well known and broadly used and still missing in Java EE
• Two Factor Auth Support (Custom Token, Hardware Token, Soft-Token)
• Social Login (Facebook, Twitter, GitHub)
• User Registration / Self Service
• Easy Customizing for custom login pages
• OAuth support
• Policies (Password / Revocation)
Option: Custom implementation (e.g. OAuth w/ programmatic security)
Markus Eisele aka @myfear18
AUTHENTICATION
https://oneminutedistraction.wordpress.com/2014/04/29/using-oauth-for-your-javaee-login/
Browser Java EE Server OAuth
Login Button
Redirect Login Page
Submit Credentials
Redirect Callback URL
Redirect Callback
Get access_token
Get User Data
DISADVANTAGESADVANTAGES
Custom Implementation
Markus Eisele aka @myfear19
AUTHENTICATION
• Minimal – Meet Needs
• Fast Implementation
• Tied to one provider
• Hard to extend
• Hard to test
• Potential implementation mistakes
expose vulnerabilities
• JAAS/JASPIC hard to understand
• Easy to be accidentally tied to a
specific server
• Not “microservices-ready”
Option: Identity Broker – e.g. Keycloak
Markus Eisele aka @myfear20
AUTHENTICATION
http://keycloak.jboss.org/docs
DISADVANTAGESADVANTAGES
Identity Broker
Markus Eisele aka @myfear21
AUTHENTICATION
• Flexible
• Configurable and extendable
• Runtime Changes
• Many Identity Providers
• Additional Features
(Government/Policies)
• Ready for microservices
(downstream propagation)
• Separate System - Complexity
• Takes User/Roles management
out of the Java EE Server
Or Access Control
Markus Eisele aka @myfear22
AUTHORIZATION
The means by which interactions with resources are limited to collections
of users or programs for the purpose of enforcing integrity, confidentiality,
or availability constraints. This ensures that users have permission to
perform operations or access data.
• Configuration via deployment descriptor or Annotations (@RolesAllowed)
• Custom Authorization Logic via:
• Programmatic Security +
• CDI / Aspects +
• Caching
• JACC
The missing pieces
Markus Eisele aka @myfear23
AUTHORIZATION
Well known and broadly used and still missing in Java EE
• Fine Grained Access Control (technical or business)
• Data Protection Model through different specifications (e.g. data access per
user/tenant)
• Coherent AccessException Model
Option: Custom Implementation
Markus Eisele aka @myfear24
AUTHORIZATION
Use a mixture of standard authorization mechanisms (Principal) and add a
custom user object which get‘s enriched with Permissions.
• Authentication via form-based or other method
• Creating an application User per Principal
• Resolving custom rights per user (Datastore, In-Memory DB)
• Implementing Around Invoke Aspects (@AllowedTo(Permission.WRITE)
http://kenai.com/projects/javaee-patterns/sources/hg/show/javaee-security
DISADVANTAGESADVANTAGES
Custom Implementation
Markus Eisele aka @myfear25
AUTHORIZATION
• Native to the Java EE programmer
• Simple, Customizable at
development time
• Assignable per application
• Potential implementation mistakes
expose vulnerabilities
• Common Code tied into all
modules
• Complex permission matrices need
to be extensively cached
• Cache invalidation
• No runtime changes to permissions
Option: JACC (Java Authorization Contract for Containers)
Markus Eisele aka @myfear26
AUTHORIZATION
It “defines a contract between a Java EE application server and an
authorization policy provider" and which "defines java.security.Permission
classes that satisfy the Java EE authorization model”
Implement:
• A factory that provides an object that collects permissions
• A state machine that controls the life-cyle of this permission collector
• Linking permissions of multiple modules and utilities
• Collecting and managing permissions
• Processing permissions after collecting
• An "authorization module" using permissions for authorization decisions
http://arjan-tijms.omnifaces.org/2015/03/java-ee-authorization-jacc-revisited.html
DISADVANTAGESADVANTAGES
JACC (Java Authorization Contract for Containers)
Markus Eisele aka @myfear27
AUTHORIZATION
• Integrated with the Java EE
container
• Part of the standard
• As secure as it can get
• C.O.M.P.L.E.X.I.T.Y
• Amount of classes
• APIs
• Verbose
• Not truly portable
• Application Server Wide
Logging which security relevant changes happen.
Markus Eisele aka @myfear28
AUDITING
An audit trail (also called audit log) is a security-relevant chronological
record, set of records, and/or destination and source of records that
provide documentary evidence of the sequence of activities that have
affected at any time a specific operation, procedure, or event.
• There‘s nothing here in Java EE
Options:
• Custom Implementations
• Logger Implementations
• Data centered approaches (JPA / Database)
• Server specific implementations
Option: Custom Implementation
Markus Eisele aka @myfear29
AUDITING
A transactional application often requires to audit the persistent entities.
Sometimes you have to be able to track down changes and build up a
history of changes. Or you’re requirement to have a long term rollback or
need to archive in accordance with legal audit requirements.
• Aspects in the widest sense (EJB, CDI)
• @AroundInvoke captures relevant events on the service layer
• Events should be persisted asynchronously
• Ideally includes user information, date time and event type
http://blog.eisele.net/2011/01/five-ways-to-know-how-your-data-looked.html
DISADVANTAGESADVANTAGES
Custom Implementation
Markus Eisele aka @myfear30
AUDITING
• Suitable for business activity
auditing
• Simple to implement with a small
set of activities.
• Maybe used to also track
performance of service calls
• No rollback or data centered
auditing
• Doesn’t include security relevant
audits (aspects don’t work in login-
modules or realms
• May be “forgotten”
• Performance critical
• No UI to generate an audit trail
Option: Logger Implementation (e.g. Log4j)
Markus Eisele aka @myfear31
AUDITING
Some logging frameworks were specifically designed to support audit
features. One among them is Log4j. Others with more respect to legal audit
requirements also do exist.
• Use Log4j‘s audit logging features
• Populate ThreadContext Map with basic data like: user-id, remote-IP
address, application-name, application-version, etc.
• Create a StructuredDataMessage for every event
• EventLogger.logEvent(msg)
• Select an appropriate provider (Syslog, JMS, JDBC, Flume, etc.)
• Combine with aspects and automatically constructed DataMessages for broad
coverage on services.
DISADVANTAGESADVANTAGES
Logger Implementation
Markus Eisele aka @myfear32
AUDITING
• Native for Java EE developers
• Easy to use as “logging”
• Will work in security relevant
classes
• Guaranteed delivery ?
• Performance overhead with
growing events
Option: JPA Centered Approaches (Hibernate ORM Envers)
Markus Eisele aka @myfear33
AUDITING
The Envers module aims to enable easy auditing/versioning of persistent
classes. All that you have to do is annotate your persistent class or some of
its properties, that you want to audit, with @Audited.
Just add @Audited to your entities
• auditing of all mappings defined by the JPA specification
• auditing of some Hibernate mappings, which extend JPA, like custom types and
collections/maps of "simple" types (Strings, Integers, etc.) (see here for one
exception)
• logging data for each revision using a "revision entity"
• querying historical data
http://hibernate.org/orm/envers/
DISADVANTAGESADVANTAGES
Option: JPA Centered Approaches (Hibernate ORM Envers)
Markus Eisele aka @myfear34
AUDITING
• Historical Data
• Revisions
• Fully integrated into JPA
• Only Data Centered Auditing
or data privacy
Markus Eisele aka @myfear35
CONFIDENTIALITY
Confidentiality is the process of maintaining data privacy wherein we
secure the communications channel, to make sure the data is not accessed
in its original form by a third party by eavesdropping.
Java EE doesn‘t bring a hell lot to the table here.
Options:
• SSL Termination on the Application Server
• SSL Termination on a box before (httpd, router, appliance)
Terminating SSL on the App-Server
Markus Eisele aka @myfear36
CONFIDENTIALITY
<transport-guarantee>CONFIDENTIAL | INTEGRAL</transport-guarantee>
A value of INTEGRAL means that the application requires the data sent between the
client and server to be sent in such a way that it can't be changed in transit.
A value of CONFIDENTIAL means that the application requires the data to be
transmitted in a fashion that prevents other entities from observing the contents of
the transmission.
DISADVANTAGESADVANTAGES
Terminating SSL on the App-Server
Markus Eisele aka @myfear37
CONFIDENTIALITY
• Access to the SSL connection
information (ssl-session-id)
• Performance
• Configuration complexity
• Testing locally
Terminating SSL on a box
Markus Eisele aka @myfear38
CONFIDENTIALITY
Httpd server (Apache)
• Mostly in place anyway for load-balancing (therefore needs to inspect the data
anway)
• OpenSSL as a way to terminate SSL/TLS connections
Firewall / Router (including or not LB features)
• See above.
• Mostly hardware accelerated SSL termination.
• High performance.
DISADVANTAGESADVANTAGES
Terminating SSL on a box
Markus Eisele aka @myfear39
CONFIDENTIALITY
• If SSL session information are
required, they have to be passed
downstream
• Considered “best practice” for
failover, clustering and load-
balancing
• Additional infrastructure
Mostly Data Integrity
Markus Eisele aka @myfear40
INTEGRITY
Data integrity is the process of verifying if data is transmitted without
corruption or modification, thus making sure that the data received at the
receiver end is in fact the same message sent by the sender.
In Java EE mostly two big areas:
Implemented for data access/exchange with JPA and JTA.
Mostly Data Integrity
Markus Eisele aka @myfear41
INTEGRITY
Data integrity is the process of verifying if data is transmitted without
corruption or modification, thus making sure that the data received at the
receiver end is in fact the same message sent by the sender.
In Java EE mostly data integrity
• Implemented for data access/exchange with JPA and JTA.
Options:
• Enforce integrity on the database
• Store and compare hashes of entities
Clustering, Scaling et al
Markus Eisele aka @myfear42
AVAILABILITY
Availability is commonly referred to as the most underspecified non-
functional requirement for applications. Fact is: Applications only earn
money, while they are running.
There‘s nothing in Java EE.
• Clustering, Scaling and other features aren‘t specified.
• Completely vendor specific and server dependent.
WHAT ELSE DOES IT TAKES?
43
It needs a lot more.
JUST SECURE CODE ISN‘T ENOUGH
People
Process Technology
Markus Eisele aka @myfear44
45
“IT AIN’T WHAT
YOU DON’T KNOW
THAT GETS YOU INTO TROUBLE.
IT’S WHAT YOU KNOW
FOR SURE THAT JUST AIN’T SO.”
— MARK TWAIN
Q&A
FURTHER READING
• http://de.slideshare.net/mraible/java-web-application-security-with-java-ee-
spring-security-and-apache-shiro-uberconf-2015
• http://de.slideshare.net/MasoudKalali/top-security-risks-for-java
• https://abhirockzz.wordpress.com/2014/12/04/whats-up-with-java-ee-8/
• https://blogs.oracle.com/theaquarium/entry/jsr_375_java_ee_security
• http://www.infoq.com/news/2014/11/javaee8-security-jsr
• https://docs.oracle.com/javaee/7/tutorial/security-intro001.htm
• http://www.oracle.com/technetwork/java/seccodeguide-139067.html
• http://www.informit.com/store/java-coding-guidelines-75-recommendations-
for-reliable-9780133439519
• https://www.owasp.org/index.php/Category:OWASP_Guide_Project
• https://www.owasp.org/index.php/OWASP_Appsec_Tutorial_Series

Contenu connexe

Tendances

Gradual migration to MicroProfile
Gradual migration to MicroProfileGradual migration to MicroProfile
Gradual migration to MicroProfileRudy De Busscher
 
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native CompanionJakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native CompanionJakarta_EE
 
Application Security - 28 Nov 2018
Application Security - 28 Nov 2018Application Security - 28 Nov 2018
Application Security - 28 Nov 2018Cheah Eng Soon
 
The 6 Rules for Modernizing Your Legacy Java Monolith with Microservices
The 6 Rules for Modernizing Your Legacy Java Monolith with MicroservicesThe 6 Rules for Modernizing Your Legacy Java Monolith with Microservices
The 6 Rules for Modernizing Your Legacy Java Monolith with MicroservicesLightbend
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architectureFaren faren
 
Authentication - Alberto Bellotti - ManageIQ Design Summit 2016
Authentication - Alberto Bellotti - ManageIQ Design Summit 2016Authentication - Alberto Bellotti - ManageIQ Design Summit 2016
Authentication - Alberto Bellotti - ManageIQ Design Summit 2016ManageIQ
 
A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0
A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0
A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0Legacy Typesafe (now Lightbend)
 
Secure JAX-RS
Secure JAX-RSSecure JAX-RS
Secure JAX-RSPayara
 
Tokyo Azure Meetup #4 - Build 2016 Overview
Tokyo Azure Meetup #4 -  Build 2016 OverviewTokyo Azure Meetup #4 -  Build 2016 Overview
Tokyo Azure Meetup #4 - Build 2016 OverviewTokyo Azure Meetup
 
Extending Windows Admin Center to manage your applications and infrastructure...
Extending Windows Admin Center to manage your applications and infrastructure...Extending Windows Admin Center to manage your applications and infrastructure...
Extending Windows Admin Center to manage your applications and infrastructure...Microsoft Tech Community
 
MVC 6 - the new unified Web programming model
MVC 6 - the new unified Web programming modelMVC 6 - the new unified Web programming model
MVC 6 - the new unified Web programming modelAlex Thissen
 
Event Bus as Backbone for Decoupled Microservice Choreography (Oracle Code, A...
Event Bus as Backbone for Decoupled Microservice Choreography (Oracle Code, A...Event Bus as Backbone for Decoupled Microservice Choreography (Oracle Code, A...
Event Bus as Backbone for Decoupled Microservice Choreography (Oracle Code, A...Lucas Jellema
 
Microservices with Apache Camel, DDD, and Kubernetes
Microservices with Apache Camel, DDD, and KubernetesMicroservices with Apache Camel, DDD, and Kubernetes
Microservices with Apache Camel, DDD, and KubernetesChristian Posta
 
Java one kubernetes, jenkins and microservices
Java one   kubernetes, jenkins and microservicesJava one   kubernetes, jenkins and microservices
Java one kubernetes, jenkins and microservicesChristian Posta
 
An evolution of application networking: service mesh
An evolution of application networking: service meshAn evolution of application networking: service mesh
An evolution of application networking: service meshChristian Posta
 
Tokyo Azure Meetup #6 - Azure Monthly Update - June
Tokyo Azure Meetup #6 - Azure Monthly Update - JuneTokyo Azure Meetup #6 - Azure Monthly Update - June
Tokyo Azure Meetup #6 - Azure Monthly Update - JuneTokyo Azure Meetup
 

Tendances (20)

Gradual migration to MicroProfile
Gradual migration to MicroProfileGradual migration to MicroProfile
Gradual migration to MicroProfile
 
SOA to Microservices
SOA to MicroservicesSOA to Microservices
SOA to Microservices
 
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native CompanionJakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
JakartaOne Livestream CN4J: Eclipse MicroProfile - Your Cloud-Native Companion
 
Application Security - 28 Nov 2018
Application Security - 28 Nov 2018Application Security - 28 Nov 2018
Application Security - 28 Nov 2018
 
Microservices in Azure
Microservices in AzureMicroservices in Azure
Microservices in Azure
 
The 6 Rules for Modernizing Your Legacy Java Monolith with Microservices
The 6 Rules for Modernizing Your Legacy Java Monolith with MicroservicesThe 6 Rules for Modernizing Your Legacy Java Monolith with Microservices
The 6 Rules for Modernizing Your Legacy Java Monolith with Microservices
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architecture
 
Authentication - Alberto Bellotti - ManageIQ Design Summit 2016
Authentication - Alberto Bellotti - ManageIQ Design Summit 2016Authentication - Alberto Bellotti - ManageIQ Design Summit 2016
Authentication - Alberto Bellotti - ManageIQ Design Summit 2016
 
Microservices with Spring
Microservices with SpringMicroservices with Spring
Microservices with Spring
 
A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0
A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0
A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0
 
Secure JAX-RS
Secure JAX-RSSecure JAX-RS
Secure JAX-RS
 
Tokyo Azure Meetup #4 - Build 2016 Overview
Tokyo Azure Meetup #4 -  Build 2016 OverviewTokyo Azure Meetup #4 -  Build 2016 Overview
Tokyo Azure Meetup #4 - Build 2016 Overview
 
Extending Windows Admin Center to manage your applications and infrastructure...
Extending Windows Admin Center to manage your applications and infrastructure...Extending Windows Admin Center to manage your applications and infrastructure...
Extending Windows Admin Center to manage your applications and infrastructure...
 
MVC 6 - the new unified Web programming model
MVC 6 - the new unified Web programming modelMVC 6 - the new unified Web programming model
MVC 6 - the new unified Web programming model
 
Event Bus as Backbone for Decoupled Microservice Choreography (Oracle Code, A...
Event Bus as Backbone for Decoupled Microservice Choreography (Oracle Code, A...Event Bus as Backbone for Decoupled Microservice Choreography (Oracle Code, A...
Event Bus as Backbone for Decoupled Microservice Choreography (Oracle Code, A...
 
Microservices with Apache Camel, DDD, and Kubernetes
Microservices with Apache Camel, DDD, and KubernetesMicroservices with Apache Camel, DDD, and Kubernetes
Microservices with Apache Camel, DDD, and Kubernetes
 
Java one kubernetes, jenkins and microservices
Java one   kubernetes, jenkins and microservicesJava one   kubernetes, jenkins and microservices
Java one kubernetes, jenkins and microservices
 
An evolution of application networking: service mesh
An evolution of application networking: service meshAn evolution of application networking: service mesh
An evolution of application networking: service mesh
 
Lagom in Practice
Lagom in PracticeLagom in Practice
Lagom in Practice
 
Tokyo Azure Meetup #6 - Azure Monthly Update - June
Tokyo Azure Meetup #6 - Azure Monthly Update - JuneTokyo Azure Meetup #6 - Azure Monthly Update - June
Tokyo Azure Meetup #6 - Azure Monthly Update - June
 

En vedette

ARCHITECTING LARGE ENTERPRISE JAVA PROJECTS - vJUG
ARCHITECTING LARGE ENTERPRISE JAVA PROJECTS - vJUGARCHITECTING LARGE ENTERPRISE JAVA PROJECTS - vJUG
ARCHITECTING LARGE ENTERPRISE JAVA PROJECTS - vJUGMarkus Eisele
 
Java EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithJava EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithMarkus Eisele
 
Nine Neins - where Java EE will never take you
Nine Neins - where Java EE will never take youNine Neins - where Java EE will never take you
Nine Neins - where Java EE will never take youMarkus Eisele
 
Wild Flies and a Camel Java EE Integration Stories
Wild Flies and a Camel Java EE Integration StoriesWild Flies and a Camel Java EE Integration Stories
Wild Flies and a Camel Java EE Integration StoriesMarkus Eisele
 
Microservice Come in Systems
Microservice Come in SystemsMicroservice Come in Systems
Microservice Come in SystemsMarkus Eisele
 
Wild Flies and a Camel - Chicago JUG - 03/15
Wild Flies and a Camel - Chicago JUG - 03/15Wild Flies and a Camel - Chicago JUG - 03/15
Wild Flies and a Camel - Chicago JUG - 03/15Markus Eisele
 
OpenShift for Java EE Developers
OpenShift for Java EE DevelopersOpenShift for Java EE Developers
OpenShift for Java EE DevelopersMarkus Eisele
 
Architecting Large Enterprise Projects @DevConf.CZ
Architecting Large Enterprise Projects @DevConf.CZArchitecting Large Enterprise Projects @DevConf.CZ
Architecting Large Enterprise Projects @DevConf.CZMarkus Eisele
 
Architecting for failure - Why are distributed systems hard?
Architecting for failure - Why are distributed systems hard?Architecting for failure - Why are distributed systems hard?
Architecting for failure - Why are distributed systems hard?Markus Eisele
 
How to avoid top 10 security risks in Java EE applications and how to avoid them
How to avoid top 10 security risks in Java EE applications and how to avoid themHow to avoid top 10 security risks in Java EE applications and how to avoid them
How to avoid top 10 security risks in Java EE applications and how to avoid themMasoud Kalali
 
Real-Time Integration Between MongoDB and SQL Databases
Real-Time Integration Between MongoDB and SQL DatabasesReal-Time Integration Between MongoDB and SQL Databases
Real-Time Integration Between MongoDB and SQL DatabasesEugene Dvorkin
 
JavaOne 2015 - Simplificando a segurança de sua aplicação com Java EE
JavaOne 2015 - Simplificando a segurança de sua aplicação com Java EEJavaOne 2015 - Simplificando a segurança de sua aplicação com Java EE
JavaOne 2015 - Simplificando a segurança de sua aplicação com Java EELeonardo Zanivan
 
Real-World RESTful Service Development Problems and Solutions
Real-World RESTful Service Development Problems and SolutionsReal-World RESTful Service Development Problems and Solutions
Real-World RESTful Service Development Problems and SolutionsMasoud Kalali
 
Confess 2013: OWASP Top 10 and Java EE security in practice
Confess 2013: OWASP Top 10 and Java EE security in practiceConfess 2013: OWASP Top 10 and Java EE security in practice
Confess 2013: OWASP Top 10 and Java EE security in practiceMasoud Kalali
 
Real world RESTful service development problems and solutions
Real world RESTful service development problems and solutionsReal world RESTful service development problems and solutions
Real world RESTful service development problems and solutionsMasoud Kalali
 
Architecting Large Enterprise Java Projects
Architecting Large Enterprise Java ProjectsArchitecting Large Enterprise Java Projects
Architecting Large Enterprise Java ProjectsMarkus Eisele
 
Java EE 7 - Into the Cloud
Java EE 7 - Into the CloudJava EE 7 - Into the Cloud
Java EE 7 - Into the CloudMarkus Eisele
 
Architecting Large Enterprise Java Projects
Architecting Large Enterprise Java ProjectsArchitecting Large Enterprise Java Projects
Architecting Large Enterprise Java ProjectsMarkus Eisele
 
Java cloud service - And introduction for Java EE Developers
Java cloud service - And introduction for Java EE DevelopersJava cloud service - And introduction for Java EE Developers
Java cloud service - And introduction for Java EE DevelopersMarkus Eisele
 

En vedette (20)

ARCHITECTING LARGE ENTERPRISE JAVA PROJECTS - vJUG
ARCHITECTING LARGE ENTERPRISE JAVA PROJECTS - vJUGARCHITECTING LARGE ENTERPRISE JAVA PROJECTS - vJUG
ARCHITECTING LARGE ENTERPRISE JAVA PROJECTS - vJUG
 
Java EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolithJava EE microservices architecture - evolving the monolith
Java EE microservices architecture - evolving the monolith
 
Nine Neins - where Java EE will never take you
Nine Neins - where Java EE will never take youNine Neins - where Java EE will never take you
Nine Neins - where Java EE will never take you
 
Wild Flies and a Camel Java EE Integration Stories
Wild Flies and a Camel Java EE Integration StoriesWild Flies and a Camel Java EE Integration Stories
Wild Flies and a Camel Java EE Integration Stories
 
Microservice Come in Systems
Microservice Come in SystemsMicroservice Come in Systems
Microservice Come in Systems
 
Wild Flies and a Camel - Chicago JUG - 03/15
Wild Flies and a Camel - Chicago JUG - 03/15Wild Flies and a Camel - Chicago JUG - 03/15
Wild Flies and a Camel - Chicago JUG - 03/15
 
OpenShift for Java EE Developers
OpenShift for Java EE DevelopersOpenShift for Java EE Developers
OpenShift for Java EE Developers
 
Architecting Large Enterprise Projects @DevConf.CZ
Architecting Large Enterprise Projects @DevConf.CZArchitecting Large Enterprise Projects @DevConf.CZ
Architecting Large Enterprise Projects @DevConf.CZ
 
Architecting for failure - Why are distributed systems hard?
Architecting for failure - Why are distributed systems hard?Architecting for failure - Why are distributed systems hard?
Architecting for failure - Why are distributed systems hard?
 
How to avoid top 10 security risks in Java EE applications and how to avoid them
How to avoid top 10 security risks in Java EE applications and how to avoid themHow to avoid top 10 security risks in Java EE applications and how to avoid them
How to avoid top 10 security risks in Java EE applications and how to avoid them
 
Real-Time Integration Between MongoDB and SQL Databases
Real-Time Integration Between MongoDB and SQL DatabasesReal-Time Integration Between MongoDB and SQL Databases
Real-Time Integration Between MongoDB and SQL Databases
 
Owasp lapse
Owasp lapseOwasp lapse
Owasp lapse
 
JavaOne 2015 - Simplificando a segurança de sua aplicação com Java EE
JavaOne 2015 - Simplificando a segurança de sua aplicação com Java EEJavaOne 2015 - Simplificando a segurança de sua aplicação com Java EE
JavaOne 2015 - Simplificando a segurança de sua aplicação com Java EE
 
Real-World RESTful Service Development Problems and Solutions
Real-World RESTful Service Development Problems and SolutionsReal-World RESTful Service Development Problems and Solutions
Real-World RESTful Service Development Problems and Solutions
 
Confess 2013: OWASP Top 10 and Java EE security in practice
Confess 2013: OWASP Top 10 and Java EE security in practiceConfess 2013: OWASP Top 10 and Java EE security in practice
Confess 2013: OWASP Top 10 and Java EE security in practice
 
Real world RESTful service development problems and solutions
Real world RESTful service development problems and solutionsReal world RESTful service development problems and solutions
Real world RESTful service development problems and solutions
 
Architecting Large Enterprise Java Projects
Architecting Large Enterprise Java ProjectsArchitecting Large Enterprise Java Projects
Architecting Large Enterprise Java Projects
 
Java EE 7 - Into the Cloud
Java EE 7 - Into the CloudJava EE 7 - Into the Cloud
Java EE 7 - Into the Cloud
 
Architecting Large Enterprise Java Projects
Architecting Large Enterprise Java ProjectsArchitecting Large Enterprise Java Projects
Architecting Large Enterprise Java Projects
 
Java cloud service - And introduction for Java EE Developers
Java cloud service - And introduction for Java EE DevelopersJava cloud service - And introduction for Java EE Developers
Java cloud service - And introduction for Java EE Developers
 

Similaire à THEFT-PROOF JAVA EE - SECURING YOUR JAVA EE APPLICATIONS

Weblogic Cluster Security
Weblogic Cluster SecurityWeblogic Cluster Security
Weblogic Cluster SecurityAditya Bhuyan
 
Pillars of great Azure Architecture
Pillars of great Azure ArchitecturePillars of great Azure Architecture
Pillars of great Azure ArchitectureKarthikeyan VK
 
Presentation database security audit vault & database firewall
Presentation   database security audit vault & database firewallPresentation   database security audit vault & database firewall
Presentation database security audit vault & database firewallxKinAnx
 
Enterprise Node - Securing Your Environment
Enterprise Node - Securing Your EnvironmentEnterprise Node - Securing Your Environment
Enterprise Node - Securing Your EnvironmentKurtis Kemple
 
WebCenter as a Cloud App on Exalogic
WebCenter as a Cloud App on ExalogicWebCenter as a Cloud App on Exalogic
WebCenter as a Cloud App on ExalogicRaoul Miller
 
WebCenter as a Cloud App on Exalogic – A Case Study on Virtualization and Per...
WebCenter as a Cloud App on Exalogic – A Case Study on Virtualization and Per...WebCenter as a Cloud App on Exalogic – A Case Study on Virtualization and Per...
WebCenter as a Cloud App on Exalogic – A Case Study on Virtualization and Per...TEAM Informatics
 
Security guidelines
Security guidelinesSecurity guidelines
Security guidelineskarthz
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithMarkus Eisele
 
Shared Security Responsibility for the Azure Cloud
Shared Security Responsibility for the Azure CloudShared Security Responsibility for the Azure Cloud
Shared Security Responsibility for the Azure CloudAlert Logic
 
Security in the cloud Workshop HSTC 2014
Security in the cloud Workshop HSTC 2014Security in the cloud Workshop HSTC 2014
Security in the cloud Workshop HSTC 2014Akash Mahajan
 
Building multi tenant highly secured applications on .net for any cloud - dem...
Building multi tenant highly secured applications on .net for any cloud - dem...Building multi tenant highly secured applications on .net for any cloud - dem...
Building multi tenant highly secured applications on .net for any cloud - dem...kanimozhin
 
Techcello hp-arch workshop
Techcello hp-arch workshopTechcello hp-arch workshop
Techcello hp-arch workshopkanimozhin
 
DevSum - Top Azure security fails and how to avoid them
DevSum - Top Azure security fails and how to avoid themDevSum - Top Azure security fails and how to avoid them
DevSum - Top Azure security fails and how to avoid themKarl Ots
 
Java Development on Bluemix
Java Development on BluemixJava Development on Bluemix
Java Development on BluemixRam Vennam
 
Building Multi-tenant, Configurable, High Quality Applications on .NET for an...
Building Multi-tenant, Configurable, High Quality Applications on .NET for an...Building Multi-tenant, Configurable, High Quality Applications on .NET for an...
Building Multi-tenant, Configurable, High Quality Applications on .NET for an...Techcello
 
Slides for the #JavaOne Session ID: CON11881
Slides for the #JavaOne Session ID: CON11881Slides for the #JavaOne Session ID: CON11881
Slides for the #JavaOne Session ID: CON11881Masoud Kalali
 
Building Multi-tenant, Configurable, High Quality Applications on .NET for an...
Building Multi-tenant, Configurable, High Quality Applications on .NET for an...Building Multi-tenant, Configurable, High Quality Applications on .NET for an...
Building Multi-tenant, Configurable, High Quality Applications on .NET for an...Techcello
 
Securing Applications in the Cloud
Securing Applications in the CloudSecuring Applications in the Cloud
Securing Applications in the CloudSecurity Innovation
 
Java EE 6 Security in practice with GlassFish
Java EE 6 Security in practice with GlassFishJava EE 6 Security in practice with GlassFish
Java EE 6 Security in practice with GlassFishMarkus Eisele
 

Similaire à THEFT-PROOF JAVA EE - SECURING YOUR JAVA EE APPLICATIONS (20)

Weblogic security
Weblogic securityWeblogic security
Weblogic security
 
Weblogic Cluster Security
Weblogic Cluster SecurityWeblogic Cluster Security
Weblogic Cluster Security
 
Pillars of great Azure Architecture
Pillars of great Azure ArchitecturePillars of great Azure Architecture
Pillars of great Azure Architecture
 
Presentation database security audit vault & database firewall
Presentation   database security audit vault & database firewallPresentation   database security audit vault & database firewall
Presentation database security audit vault & database firewall
 
Enterprise Node - Securing Your Environment
Enterprise Node - Securing Your EnvironmentEnterprise Node - Securing Your Environment
Enterprise Node - Securing Your Environment
 
WebCenter as a Cloud App on Exalogic
WebCenter as a Cloud App on ExalogicWebCenter as a Cloud App on Exalogic
WebCenter as a Cloud App on Exalogic
 
WebCenter as a Cloud App on Exalogic – A Case Study on Virtualization and Per...
WebCenter as a Cloud App on Exalogic – A Case Study on Virtualization and Per...WebCenter as a Cloud App on Exalogic – A Case Study on Virtualization and Per...
WebCenter as a Cloud App on Exalogic – A Case Study on Virtualization and Per...
 
Security guidelines
Security guidelinesSecurity guidelines
Security guidelines
 
Stay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolithStay productive_while_slicing_up_the_monolith
Stay productive_while_slicing_up_the_monolith
 
Shared Security Responsibility for the Azure Cloud
Shared Security Responsibility for the Azure CloudShared Security Responsibility for the Azure Cloud
Shared Security Responsibility for the Azure Cloud
 
Security in the cloud Workshop HSTC 2014
Security in the cloud Workshop HSTC 2014Security in the cloud Workshop HSTC 2014
Security in the cloud Workshop HSTC 2014
 
Building multi tenant highly secured applications on .net for any cloud - dem...
Building multi tenant highly secured applications on .net for any cloud - dem...Building multi tenant highly secured applications on .net for any cloud - dem...
Building multi tenant highly secured applications on .net for any cloud - dem...
 
Techcello hp-arch workshop
Techcello hp-arch workshopTechcello hp-arch workshop
Techcello hp-arch workshop
 
DevSum - Top Azure security fails and how to avoid them
DevSum - Top Azure security fails and how to avoid themDevSum - Top Azure security fails and how to avoid them
DevSum - Top Azure security fails and how to avoid them
 
Java Development on Bluemix
Java Development on BluemixJava Development on Bluemix
Java Development on Bluemix
 
Building Multi-tenant, Configurable, High Quality Applications on .NET for an...
Building Multi-tenant, Configurable, High Quality Applications on .NET for an...Building Multi-tenant, Configurable, High Quality Applications on .NET for an...
Building Multi-tenant, Configurable, High Quality Applications on .NET for an...
 
Slides for the #JavaOne Session ID: CON11881
Slides for the #JavaOne Session ID: CON11881Slides for the #JavaOne Session ID: CON11881
Slides for the #JavaOne Session ID: CON11881
 
Building Multi-tenant, Configurable, High Quality Applications on .NET for an...
Building Multi-tenant, Configurable, High Quality Applications on .NET for an...Building Multi-tenant, Configurable, High Quality Applications on .NET for an...
Building Multi-tenant, Configurable, High Quality Applications on .NET for an...
 
Securing Applications in the Cloud
Securing Applications in the CloudSecuring Applications in the Cloud
Securing Applications in the Cloud
 
Java EE 6 Security in practice with GlassFish
Java EE 6 Security in practice with GlassFishJava EE 6 Security in practice with GlassFish
Java EE 6 Security in practice with GlassFish
 

Plus de Markus Eisele

Sustainable Software Architecture - Open Tour DACH '22
Sustainable Software Architecture - Open Tour DACH '22Sustainable Software Architecture - Open Tour DACH '22
Sustainable Software Architecture - Open Tour DACH '22Markus Eisele
 
Going from java message service (jms) to eda
Going from java message service (jms) to eda Going from java message service (jms) to eda
Going from java message service (jms) to eda Markus Eisele
 
Let's be real. Quarkus in the wild.
Let's be real. Quarkus in the wild.Let's be real. Quarkus in the wild.
Let's be real. Quarkus in the wild.Markus Eisele
 
What happens when unicorns drink coffee
What happens when unicorns drink coffeeWhat happens when unicorns drink coffee
What happens when unicorns drink coffeeMarkus Eisele
 
Stateful on Stateless - The Future of Applications in the Cloud
Stateful on Stateless - The Future of Applications in the CloudStateful on Stateless - The Future of Applications in the Cloud
Stateful on Stateless - The Future of Applications in the CloudMarkus Eisele
 
Java in the age of containers - JUG Frankfurt/M
Java in the age of containers - JUG Frankfurt/MJava in the age of containers - JUG Frankfurt/M
Java in the age of containers - JUG Frankfurt/MMarkus Eisele
 
Java in the Age of Containers and Serverless
Java in the Age of Containers and ServerlessJava in the Age of Containers and Serverless
Java in the Age of Containers and ServerlessMarkus Eisele
 
Migrating from Java EE to cloud-native Reactive systems
Migrating from Java EE to cloud-native Reactive systemsMigrating from Java EE to cloud-native Reactive systems
Migrating from Java EE to cloud-native Reactive systemsMarkus Eisele
 
Streaming to a new Jakarta EE / JOTB19
Streaming to a new Jakarta EE / JOTB19Streaming to a new Jakarta EE / JOTB19
Streaming to a new Jakarta EE / JOTB19Markus Eisele
 
Cloud wars - A LavaOne discussion in seven slides
Cloud wars - A LavaOne discussion in seven slidesCloud wars - A LavaOne discussion in seven slides
Cloud wars - A LavaOne discussion in seven slidesMarkus Eisele
 
Streaming to a new Jakarta EE
Streaming to a new Jakarta EEStreaming to a new Jakarta EE
Streaming to a new Jakarta EEMarkus Eisele
 
Reactive Integrations - Caveats and bumps in the road explained
Reactive Integrations - Caveats and bumps in the road explained  Reactive Integrations - Caveats and bumps in the road explained
Reactive Integrations - Caveats and bumps in the road explained Markus Eisele
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolithMarkus Eisele
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolithMarkus Eisele
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Markus Eisele
 
How lagom helps to build real world microservice systems
How lagom helps to build real world microservice systemsHow lagom helps to build real world microservice systems
How lagom helps to build real world microservice systemsMarkus Eisele
 
CQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java DevelopersCQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java DevelopersMarkus Eisele
 
10 Golden Social Media Rules for Developer Relations Manager
10 Golden Social Media Rules for Developer Relations Manager10 Golden Social Media Rules for Developer Relations Manager
10 Golden Social Media Rules for Developer Relations ManagerMarkus Eisele
 
Hyperscale Computing, Enterprise Agility with Mesosphere
Hyperscale Computing, Enterprise Agility with MesosphereHyperscale Computing, Enterprise Agility with Mesosphere
Hyperscale Computing, Enterprise Agility with MesosphereMarkus Eisele
 

Plus de Markus Eisele (19)

Sustainable Software Architecture - Open Tour DACH '22
Sustainable Software Architecture - Open Tour DACH '22Sustainable Software Architecture - Open Tour DACH '22
Sustainable Software Architecture - Open Tour DACH '22
 
Going from java message service (jms) to eda
Going from java message service (jms) to eda Going from java message service (jms) to eda
Going from java message service (jms) to eda
 
Let's be real. Quarkus in the wild.
Let's be real. Quarkus in the wild.Let's be real. Quarkus in the wild.
Let's be real. Quarkus in the wild.
 
What happens when unicorns drink coffee
What happens when unicorns drink coffeeWhat happens when unicorns drink coffee
What happens when unicorns drink coffee
 
Stateful on Stateless - The Future of Applications in the Cloud
Stateful on Stateless - The Future of Applications in the CloudStateful on Stateless - The Future of Applications in the Cloud
Stateful on Stateless - The Future of Applications in the Cloud
 
Java in the age of containers - JUG Frankfurt/M
Java in the age of containers - JUG Frankfurt/MJava in the age of containers - JUG Frankfurt/M
Java in the age of containers - JUG Frankfurt/M
 
Java in the Age of Containers and Serverless
Java in the Age of Containers and ServerlessJava in the Age of Containers and Serverless
Java in the Age of Containers and Serverless
 
Migrating from Java EE to cloud-native Reactive systems
Migrating from Java EE to cloud-native Reactive systemsMigrating from Java EE to cloud-native Reactive systems
Migrating from Java EE to cloud-native Reactive systems
 
Streaming to a new Jakarta EE / JOTB19
Streaming to a new Jakarta EE / JOTB19Streaming to a new Jakarta EE / JOTB19
Streaming to a new Jakarta EE / JOTB19
 
Cloud wars - A LavaOne discussion in seven slides
Cloud wars - A LavaOne discussion in seven slidesCloud wars - A LavaOne discussion in seven slides
Cloud wars - A LavaOne discussion in seven slides
 
Streaming to a new Jakarta EE
Streaming to a new Jakarta EEStreaming to a new Jakarta EE
Streaming to a new Jakarta EE
 
Reactive Integrations - Caveats and bumps in the road explained
Reactive Integrations - Caveats and bumps in the road explained  Reactive Integrations - Caveats and bumps in the road explained
Reactive Integrations - Caveats and bumps in the road explained
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolith Stay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
How lagom helps to build real world microservice systems
How lagom helps to build real world microservice systemsHow lagom helps to build real world microservice systems
How lagom helps to build real world microservice systems
 
CQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java DevelopersCQRS and Event Sourcing for Java Developers
CQRS and Event Sourcing for Java Developers
 
10 Golden Social Media Rules for Developer Relations Manager
10 Golden Social Media Rules for Developer Relations Manager10 Golden Social Media Rules for Developer Relations Manager
10 Golden Social Media Rules for Developer Relations Manager
 
Hyperscale Computing, Enterprise Agility with Mesosphere
Hyperscale Computing, Enterprise Agility with MesosphereHyperscale Computing, Enterprise Agility with Mesosphere
Hyperscale Computing, Enterprise Agility with Mesosphere
 

Dernier

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 

Dernier (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 

THEFT-PROOF JAVA EE - SECURING YOUR JAVA EE APPLICATIONS

  • 1. THEFT PROOF-JAVA EE Markus Eisele markus@jboss.org @myfear blog.eisele.net Securing your Java EE applications
  • 3. BUT WHAT DO YOU KNOW ABOUT SECURITY?
  • 4.
  • 5. Markus Eisele aka @myfear5 HOLISTIC SECURITY To build a secure Java EE application, a holistic approach to application security is required and security must be applied at all layers and services. Network Host Application Platform Services (JVM, Application Server) Operating System Infrastructure Software Application Landscape Enterprise- Services Business IT-Security-Architecture
  • 6. Secure applications rely on secure networks Markus Eisele aka @myfear6 SECURE NETWORKS Things to look out for: • Router • Firewall • Switch • Protocols • Ports • Firmware • Standard passwords
  • 7. Repeat for all of them: including database, message broker, httpd-server and all the others. Markus Eisele aka @myfear7 SECURE HOSTS / OPERATING SYSTEMS Things to look out for: • Shared Volumes • Running Services • Accounts (user and service) • Auditing and Logging • Files and directories • Patches and updates
  • 8. All pre-installed runtimes, like the JVM/JDK, Application server, etc. Markus Eisele aka @myfear8 PLATFORM SERVICES Things to look out for: • Policy Files • File Access Rights • Default Passwords • Admin Console
  • 9. Security relies on the following components WHAT IS APPLICATION SECURITY? Availability Integrity Confidentiality Auditing Authorization Authentication Markus Eisele aka @myfear9
  • 10. A thread is a potential event that may affect your system. An attack exploits a vulnerability in your system. Markus Eisele aka @myfear10 THREATS, VULNERABILITIES, AND ATTACKS How do you decide if an application is secure? Application + Infrastructure exposes Vulnerability exploits Attack
  • 11. Markus Eisele aka @myfear11 NO SECURITY WITHOUT THREATS It is not possible to design and build a secure Web application until you know your threats. Thread modelling in the design phase: • To be protected • CC, Address, etc. Data Goal of an attackThreat • Potential damage • $ or image Rate
  • 12. Markus Eisele aka @myfear12 STRATEGY – APPROACH - GOAL
  • 13. Some basic categories mapped down from the security components Markus Eisele aka @myfear13 APPLICATION VULNERABILITY CATEGORIES • Input Validation • Authentication • Authorization • Configuration Management • Sensitive Data • Session Management • Data Encryption • Parameter Manipulation • Exception Handling • Auditing and Logging • Timestamping • Role Based Access Control • Execution Sandboxing • Process Separation
  • 14. Best Practices for designing secure applications. Markus Eisele aka @myfear14 CORE SECURITY PRINCIPLES • Compartmentalize • Use least privilege • Apply defense in depth • Do not trust user input • Check at the gate • Fail securely • Secure the weakest link • Create secure defaults • Reduce your attack surface THINGS TO KEEP IN MIND FOR YOUR SYSTEM DESIGN
  • 15. AND HOW MUCH OF THAT CAN YOU DO WITH JAVA EE? 15
  • 16. Basic, Form, Digest, Client, Mutual Markus Eisele aka @myfear16 AUTHENTICATION The means by which communicating entities, such as client and server, prove to each other that they are acting on behalf of specific identities that are authorized for access. This ensures that users are who they say they are. • Configuration via deployment descriptor • Application roles mapping into server groups • Most servers provide standard login modules (DB, LDAP, Client-Cert, Filesystem) • Additional resources (Keystores, LDAP, DB) • Custom Authentication Logic via: • JASPIC • JAAS • Server Specific Features (Realms)
  • 17. The missing pieces Markus Eisele aka @myfear17 AUTHENTICATION Well known and broadly used and still missing in Java EE • Two Factor Auth Support (Custom Token, Hardware Token, Soft-Token) • Social Login (Facebook, Twitter, GitHub) • User Registration / Self Service • Easy Customizing for custom login pages • OAuth support • Policies (Password / Revocation)
  • 18. Option: Custom implementation (e.g. OAuth w/ programmatic security) Markus Eisele aka @myfear18 AUTHENTICATION https://oneminutedistraction.wordpress.com/2014/04/29/using-oauth-for-your-javaee-login/ Browser Java EE Server OAuth Login Button Redirect Login Page Submit Credentials Redirect Callback URL Redirect Callback Get access_token Get User Data
  • 19. DISADVANTAGESADVANTAGES Custom Implementation Markus Eisele aka @myfear19 AUTHENTICATION • Minimal – Meet Needs • Fast Implementation • Tied to one provider • Hard to extend • Hard to test • Potential implementation mistakes expose vulnerabilities • JAAS/JASPIC hard to understand • Easy to be accidentally tied to a specific server • Not “microservices-ready”
  • 20. Option: Identity Broker – e.g. Keycloak Markus Eisele aka @myfear20 AUTHENTICATION http://keycloak.jboss.org/docs
  • 21. DISADVANTAGESADVANTAGES Identity Broker Markus Eisele aka @myfear21 AUTHENTICATION • Flexible • Configurable and extendable • Runtime Changes • Many Identity Providers • Additional Features (Government/Policies) • Ready for microservices (downstream propagation) • Separate System - Complexity • Takes User/Roles management out of the Java EE Server
  • 22. Or Access Control Markus Eisele aka @myfear22 AUTHORIZATION The means by which interactions with resources are limited to collections of users or programs for the purpose of enforcing integrity, confidentiality, or availability constraints. This ensures that users have permission to perform operations or access data. • Configuration via deployment descriptor or Annotations (@RolesAllowed) • Custom Authorization Logic via: • Programmatic Security + • CDI / Aspects + • Caching • JACC
  • 23. The missing pieces Markus Eisele aka @myfear23 AUTHORIZATION Well known and broadly used and still missing in Java EE • Fine Grained Access Control (technical or business) • Data Protection Model through different specifications (e.g. data access per user/tenant) • Coherent AccessException Model
  • 24. Option: Custom Implementation Markus Eisele aka @myfear24 AUTHORIZATION Use a mixture of standard authorization mechanisms (Principal) and add a custom user object which get‘s enriched with Permissions. • Authentication via form-based or other method • Creating an application User per Principal • Resolving custom rights per user (Datastore, In-Memory DB) • Implementing Around Invoke Aspects (@AllowedTo(Permission.WRITE) http://kenai.com/projects/javaee-patterns/sources/hg/show/javaee-security
  • 25. DISADVANTAGESADVANTAGES Custom Implementation Markus Eisele aka @myfear25 AUTHORIZATION • Native to the Java EE programmer • Simple, Customizable at development time • Assignable per application • Potential implementation mistakes expose vulnerabilities • Common Code tied into all modules • Complex permission matrices need to be extensively cached • Cache invalidation • No runtime changes to permissions
  • 26. Option: JACC (Java Authorization Contract for Containers) Markus Eisele aka @myfear26 AUTHORIZATION It “defines a contract between a Java EE application server and an authorization policy provider" and which "defines java.security.Permission classes that satisfy the Java EE authorization model” Implement: • A factory that provides an object that collects permissions • A state machine that controls the life-cyle of this permission collector • Linking permissions of multiple modules and utilities • Collecting and managing permissions • Processing permissions after collecting • An "authorization module" using permissions for authorization decisions http://arjan-tijms.omnifaces.org/2015/03/java-ee-authorization-jacc-revisited.html
  • 27. DISADVANTAGESADVANTAGES JACC (Java Authorization Contract for Containers) Markus Eisele aka @myfear27 AUTHORIZATION • Integrated with the Java EE container • Part of the standard • As secure as it can get • C.O.M.P.L.E.X.I.T.Y • Amount of classes • APIs • Verbose • Not truly portable • Application Server Wide
  • 28. Logging which security relevant changes happen. Markus Eisele aka @myfear28 AUDITING An audit trail (also called audit log) is a security-relevant chronological record, set of records, and/or destination and source of records that provide documentary evidence of the sequence of activities that have affected at any time a specific operation, procedure, or event. • There‘s nothing here in Java EE Options: • Custom Implementations • Logger Implementations • Data centered approaches (JPA / Database) • Server specific implementations
  • 29. Option: Custom Implementation Markus Eisele aka @myfear29 AUDITING A transactional application often requires to audit the persistent entities. Sometimes you have to be able to track down changes and build up a history of changes. Or you’re requirement to have a long term rollback or need to archive in accordance with legal audit requirements. • Aspects in the widest sense (EJB, CDI) • @AroundInvoke captures relevant events on the service layer • Events should be persisted asynchronously • Ideally includes user information, date time and event type http://blog.eisele.net/2011/01/five-ways-to-know-how-your-data-looked.html
  • 30. DISADVANTAGESADVANTAGES Custom Implementation Markus Eisele aka @myfear30 AUDITING • Suitable for business activity auditing • Simple to implement with a small set of activities. • Maybe used to also track performance of service calls • No rollback or data centered auditing • Doesn’t include security relevant audits (aspects don’t work in login- modules or realms • May be “forgotten” • Performance critical • No UI to generate an audit trail
  • 31. Option: Logger Implementation (e.g. Log4j) Markus Eisele aka @myfear31 AUDITING Some logging frameworks were specifically designed to support audit features. One among them is Log4j. Others with more respect to legal audit requirements also do exist. • Use Log4j‘s audit logging features • Populate ThreadContext Map with basic data like: user-id, remote-IP address, application-name, application-version, etc. • Create a StructuredDataMessage for every event • EventLogger.logEvent(msg) • Select an appropriate provider (Syslog, JMS, JDBC, Flume, etc.) • Combine with aspects and automatically constructed DataMessages for broad coverage on services.
  • 32. DISADVANTAGESADVANTAGES Logger Implementation Markus Eisele aka @myfear32 AUDITING • Native for Java EE developers • Easy to use as “logging” • Will work in security relevant classes • Guaranteed delivery ? • Performance overhead with growing events
  • 33. Option: JPA Centered Approaches (Hibernate ORM Envers) Markus Eisele aka @myfear33 AUDITING The Envers module aims to enable easy auditing/versioning of persistent classes. All that you have to do is annotate your persistent class or some of its properties, that you want to audit, with @Audited. Just add @Audited to your entities • auditing of all mappings defined by the JPA specification • auditing of some Hibernate mappings, which extend JPA, like custom types and collections/maps of "simple" types (Strings, Integers, etc.) (see here for one exception) • logging data for each revision using a "revision entity" • querying historical data http://hibernate.org/orm/envers/
  • 34. DISADVANTAGESADVANTAGES Option: JPA Centered Approaches (Hibernate ORM Envers) Markus Eisele aka @myfear34 AUDITING • Historical Data • Revisions • Fully integrated into JPA • Only Data Centered Auditing
  • 35. or data privacy Markus Eisele aka @myfear35 CONFIDENTIALITY Confidentiality is the process of maintaining data privacy wherein we secure the communications channel, to make sure the data is not accessed in its original form by a third party by eavesdropping. Java EE doesn‘t bring a hell lot to the table here. Options: • SSL Termination on the Application Server • SSL Termination on a box before (httpd, router, appliance)
  • 36. Terminating SSL on the App-Server Markus Eisele aka @myfear36 CONFIDENTIALITY <transport-guarantee>CONFIDENTIAL | INTEGRAL</transport-guarantee> A value of INTEGRAL means that the application requires the data sent between the client and server to be sent in such a way that it can't be changed in transit. A value of CONFIDENTIAL means that the application requires the data to be transmitted in a fashion that prevents other entities from observing the contents of the transmission.
  • 37. DISADVANTAGESADVANTAGES Terminating SSL on the App-Server Markus Eisele aka @myfear37 CONFIDENTIALITY • Access to the SSL connection information (ssl-session-id) • Performance • Configuration complexity • Testing locally
  • 38. Terminating SSL on a box Markus Eisele aka @myfear38 CONFIDENTIALITY Httpd server (Apache) • Mostly in place anyway for load-balancing (therefore needs to inspect the data anway) • OpenSSL as a way to terminate SSL/TLS connections Firewall / Router (including or not LB features) • See above. • Mostly hardware accelerated SSL termination. • High performance.
  • 39. DISADVANTAGESADVANTAGES Terminating SSL on a box Markus Eisele aka @myfear39 CONFIDENTIALITY • If SSL session information are required, they have to be passed downstream • Considered “best practice” for failover, clustering and load- balancing • Additional infrastructure
  • 40. Mostly Data Integrity Markus Eisele aka @myfear40 INTEGRITY Data integrity is the process of verifying if data is transmitted without corruption or modification, thus making sure that the data received at the receiver end is in fact the same message sent by the sender. In Java EE mostly two big areas: Implemented for data access/exchange with JPA and JTA.
  • 41. Mostly Data Integrity Markus Eisele aka @myfear41 INTEGRITY Data integrity is the process of verifying if data is transmitted without corruption or modification, thus making sure that the data received at the receiver end is in fact the same message sent by the sender. In Java EE mostly data integrity • Implemented for data access/exchange with JPA and JTA. Options: • Enforce integrity on the database • Store and compare hashes of entities
  • 42. Clustering, Scaling et al Markus Eisele aka @myfear42 AVAILABILITY Availability is commonly referred to as the most underspecified non- functional requirement for applications. Fact is: Applications only earn money, while they are running. There‘s nothing in Java EE. • Clustering, Scaling and other features aren‘t specified. • Completely vendor specific and server dependent.
  • 43. WHAT ELSE DOES IT TAKES? 43
  • 44. It needs a lot more. JUST SECURE CODE ISN‘T ENOUGH People Process Technology Markus Eisele aka @myfear44
  • 45. 45 “IT AIN’T WHAT YOU DON’T KNOW THAT GETS YOU INTO TROUBLE. IT’S WHAT YOU KNOW FOR SURE THAT JUST AIN’T SO.” — MARK TWAIN
  • 46. Q&A
  • 47. FURTHER READING • http://de.slideshare.net/mraible/java-web-application-security-with-java-ee- spring-security-and-apache-shiro-uberconf-2015 • http://de.slideshare.net/MasoudKalali/top-security-risks-for-java • https://abhirockzz.wordpress.com/2014/12/04/whats-up-with-java-ee-8/ • https://blogs.oracle.com/theaquarium/entry/jsr_375_java_ee_security • http://www.infoq.com/news/2014/11/javaee8-security-jsr • https://docs.oracle.com/javaee/7/tutorial/security-intro001.htm • http://www.oracle.com/technetwork/java/seccodeguide-139067.html • http://www.informit.com/store/java-coding-guidelines-75-recommendations- for-reliable-9780133439519 • https://www.owasp.org/index.php/Category:OWASP_Guide_Project • https://www.owasp.org/index.php/OWASP_Appsec_Tutorial_Series