SlideShare a Scribd company logo
Geode Security
Before and After
Apache Geode
Apache Geode is a data management platform.
It provides you tools to manage your cluster and your data:
Cluster management: start/stop locator/server, shutdown, alter runtime…
Cluster read/write: describe member, config, regions, alter log level...
Data management: create/destroy region, indexes, disk stores, create functions...
Data read/write: put/get data entries, querying….
Various ways for you to interact with your cluster/data:
Java client, native client
Geode Security
Authentication
Resolve identity, represented as a principal
Authorization
Resolve roles and permissions
Post Processing
Resolve final value presented back to user
Geode Security - Before
Java
Client
JMX
Client Gfsh Pulse
Locator
Server
Server
Server
Native
Client
Credentials(TCP)
Peer Auth
RESTful Client
Client-Auth
Not Secured
(HTTP)
Client-Accessor
Properties needed:
Security-peer-auth-init
Security-peer-authenticator
Security-client-auth-init
Security-client-authenticator
Security-client-accessor
Jmx-manager-password-file
jmx-manager-access-file
Security
Manager
Security
Manager
Security
Manager
Geode Security - 1.0
Java
Client
JMX
Client Gfsh Pulse
Locator
Server
Server
Native
Client
Credentials(TCP)
RESTful Client
Properties needed:
security-manager
SecurityManager
Implement a single interface to secure your Geode cluster.
public class SimpleSecurityManager implements SecurityManager {
@Override
public void init(Properties securityProps) {}
// authenticated if username matches password
public Object authenticate(Properties credentials) throws AuthenticationFailedException {
String username = credentials.getProperty("security-username");
String password = credentials.getProperty("security-password");
If (username!=null && username.equals(password)) {
return username;
}
throw new AuthenticationFailedException("invalid username/password");
}
// authorized if username is the beginning part of the permission string
public boolean authorize(Object principal, ResourcePermission permission) {
String permissionString = permission.toString().replace(":","").toLowerCase();
String principle = principal.toString().toLowerCase();
return permissionString.startsWith(principle);
}
@Override
public void close() {}
}
Defined by your implementation of
SecurityManager
authorize(principal, permission)
Defined by Geode Security
Users, Permissions and Operations
Permission
Permission
Permission
Permission
Permission
Operation
Operation
Operation
Operation
Operation
Operation
Operation
Operation
Operation
has requires
ResourcePermission
It’s the key to unify authorization across different communication channels.
It contains at most 4 parts:
Resource: DATA, CLUSTER
Operation: READ, WRITE, MANAGE
Region (only for data): region name
Key (only for data): key value
Each operation, no matter where it originates, has a corresponding
ResourcePermission:
Start server: CLUSTER:MANAGE
Roles
● Your SecurityManager needs to define User ->Permission mapping.
● By definition, there would be 2 x 3 x #of regions x #of keys permission
permutations. Can’t possibly grant them individually.
● ResourcePermission(resource:operation:region:key) has this implication
system built in:
○ A --> A:B --> A:B:C --> A:B:C:D
○ E.g. data -> data:manage -> data:manage:regionA -> data:manage:regionA:key1
○ * means “all”, and can be put in any of the four parts.
● It’s easier to assign roles to the user and have roles implies specific
Post Processor
An add-on feature to authentication/authorization
Any region data returned back to clients as a result of user operation will pass
through this post processor first
Any form of getting region value in the client, gfsh command or rest service
Query results, continued query results.
Data in the registered interest events
Configured by security-post-processor property
Method to be implemented (showing SamplePostProcessor):
public Object processRegionValue(Object principal, String regionName, Object key, Object value) {
Demo
Geode
How it’s Done
Shiro
Security
Engine
Custom
Realm
SecurityManager
Client PeerJMX Rest Pulse
Credentials
In the authenticators:
1. Authenticate credentials.
2. Puts the logged-in subject in
the current executing thread.
Anywhere In Geode:
1. Get the subject out of the
executing thread.
2. Check the required permission
Apache Shiro
Apache Shiro is a Java security framework that performs authentication,
authorization, cryptography, and session management.
Easy to Use API
Subject based, saved in ThreadLocal, you can retrieve it anywhere in your code.
Single method call to authenticate/authorize
currentUser.login(username, password)
currentUser.checkPermission(permission)
Powerful:
Pluggable data source, called Realms to manage your users.
GEODE Security
In Geode’s Future
Shiro
Security
Engine
LDAP Realm
Custom Realm SecurityManager
shiro.ini
AD Realm
JDBC Realm
TextConfig Realm
Client PeerJMX Rest Pulse
Your own Realm

More Related Content

PDF
Geode - Day 3
PDF
Making Storage Systems Accessible via Globus (GlobusWorld Tour West)
PDF
Best Practices for Data Sharing (GlobusWorld Tour - UCSD)
PDF
Globus Endpoint Setup and Configuration - XSEDE14 Tutorial
PDF
Tutorial: Managing Protected Data with Globus Connect Server v5
PDF
GlobusWorld 2021 Tutorial: The Globus CLI, Platform and SDK
PDF
Introduction to Globus (GlobusWorld Tour West)
PDF
Introduction to Globus (APS Workshop)
Geode - Day 3
Making Storage Systems Accessible via Globus (GlobusWorld Tour West)
Best Practices for Data Sharing (GlobusWorld Tour - UCSD)
Globus Endpoint Setup and Configuration - XSEDE14 Tutorial
Tutorial: Managing Protected Data with Globus Connect Server v5
GlobusWorld 2021 Tutorial: The Globus CLI, Platform and SDK
Introduction to Globus (GlobusWorld Tour West)
Introduction to Globus (APS Workshop)

What's hot (20)

PDF
Globus Command Line Interface (APS Workshop)
PDF
Introduction to Globus for New Users (GlobusWorld Tour - UCSD)
PDF
Broker otw.pptx
PDF
HandsOn ProxySQL Tutorial - PLSC18
PDF
Globus for System Administrators (GlobusWorld Tour - UCSD)
PDF
Percona live 2021 Practical Database Automation with Ansible
PPTX
Monitoring multiple ultra esb instances with u console
PDF
인피니스팬 데이터그리드 플랫폼
PDF
Infinispan Data Grid Platform
PDF
Globus for System Administrators (GlobusWorld Tour - Columbia University)
PDF
LuSql: (Quickly and easily) Getting your data from your DBMS into Lucene
 
ODP
Common schema my sql uc 2012
PDF
Status of Hadoop 0.23 Operations at Yahoo
PPTX
MSSQL SERVER
ODP
Infinispan and Enterprise Data Grid
PPTX
High performance and high availability proxies for MySQL
PDF
FITC presents: Mobile & offline data synchronization in Angular JS
PDF
Introduction to Globus for System Administrators (GlobusWorld Tour - UMich)
DOCX
Active directory domain administration tools
Globus Command Line Interface (APS Workshop)
Introduction to Globus for New Users (GlobusWorld Tour - UCSD)
Broker otw.pptx
HandsOn ProxySQL Tutorial - PLSC18
Globus for System Administrators (GlobusWorld Tour - UCSD)
Percona live 2021 Practical Database Automation with Ansible
Monitoring multiple ultra esb instances with u console
인피니스팬 데이터그리드 플랫폼
Infinispan Data Grid Platform
Globus for System Administrators (GlobusWorld Tour - Columbia University)
LuSql: (Quickly and easily) Getting your data from your DBMS into Lucene
 
Common schema my sql uc 2012
Status of Hadoop 0.23 Operations at Yahoo
MSSQL SERVER
Infinispan and Enterprise Data Grid
High performance and high availability proxies for MySQL
FITC presents: Mobile & offline data synchronization in Angular JS
Introduction to Globus for System Administrators (GlobusWorld Tour - UMich)
Active directory domain administration tools
Ad

Viewers also liked (8)

PPTX
Zettaset Elastic Big Data Security for Greenplum Database
PDF
#GeodeSummit: Combining Stream Processing and In-Memory Data Grids for Near-R...
PPTX
Apache HAWQ and Apache MADlib: Journey to Apache
PDF
Geode on Docker
PPTX
Standardizing +113 million Merchant Names in Financial Services with Greenplu...
PPTX
Azure sql database escalabilidad
PDF
How to Interview a Data Scientist
PDF
Big Data [sorry] & Data Science: What Does a Data Scientist Do?
Zettaset Elastic Big Data Security for Greenplum Database
#GeodeSummit: Combining Stream Processing and In-Memory Data Grids for Near-R...
Apache HAWQ and Apache MADlib: Journey to Apache
Geode on Docker
Standardizing +113 million Merchant Names in Financial Services with Greenplu...
Azure sql database escalabilidad
How to Interview a Data Scientist
Big Data [sorry] & Data Science: What Does a Data Scientist Do?
Ad

More from PivotalOpenSourceHub (20)

PPTX
Apache Geode Clubhouse - WAN-based Replication
PDF
#GeodeSummit: Easy Ways to Become a Contributor to Apache Geode
PDF
#GeodeSummit Keynote: Creating the Future of Big Data Through 'The Apache Way"
PPTX
#GeodeSummit - Off-Heap Storage Current and Future Design
PDF
#GeodeSummit - Redis to Geode Adaptor
PDF
#GeodeSummit - Integration & Future Direction for Spring Cloud Data Flow & Geode
PPTX
#GeodeSummit - Spring Data GemFire API Current and Future
PDF
#GeodeSummit - Modern manufacturing powered by Spring XD and Geode
PDF
#GeodeSummit - Using Geode as Operational Data Services for Real Time Mobile ...
PDF
#GeodeSummit - Large Scale Fraud Detection using GemFire Integrated with Gree...
PDF
#GeodeSummit: Democratizing Fast Analytics with Ampool (Powered by Apache Geode)
PDF
#GeodeSummit: Architecting Data-Driven, Smarter Cloud Native Apps with Real-T...
PDF
#GeodeSummit - Apex & Geode: In-memory streaming, storage & analytics
PDF
#GeodeSummit - Where Does Geode Fit in Modern System Architectures
PDF
#GeodeSummit - Design Tradeoffs in Distributed Systems
PDF
#GeodeSummit - Wall St. Derivative Risk Solutions Using Geode
PDF
Building Apps with Distributed In-Memory Computing Using Apache Geode
PPTX
GPORCA: Query Optimization as a Service
PDF
Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan
PPTX
Apache Geode Offheap Storage
Apache Geode Clubhouse - WAN-based Replication
#GeodeSummit: Easy Ways to Become a Contributor to Apache Geode
#GeodeSummit Keynote: Creating the Future of Big Data Through 'The Apache Way"
#GeodeSummit - Off-Heap Storage Current and Future Design
#GeodeSummit - Redis to Geode Adaptor
#GeodeSummit - Integration & Future Direction for Spring Cloud Data Flow & Geode
#GeodeSummit - Spring Data GemFire API Current and Future
#GeodeSummit - Modern manufacturing powered by Spring XD and Geode
#GeodeSummit - Using Geode as Operational Data Services for Real Time Mobile ...
#GeodeSummit - Large Scale Fraud Detection using GemFire Integrated with Gree...
#GeodeSummit: Democratizing Fast Analytics with Ampool (Powered by Apache Geode)
#GeodeSummit: Architecting Data-Driven, Smarter Cloud Native Apps with Real-T...
#GeodeSummit - Apex & Geode: In-memory streaming, storage & analytics
#GeodeSummit - Where Does Geode Fit in Modern System Architectures
#GeodeSummit - Design Tradeoffs in Distributed Systems
#GeodeSummit - Wall St. Derivative Risk Solutions Using Geode
Building Apps with Distributed In-Memory Computing Using Apache Geode
GPORCA: Query Optimization as a Service
Pivoting Spring XD to Spring Cloud Data Flow with Sabby Anandan
Apache Geode Offheap Storage

Recently uploaded (20)

PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
MYSQL Presentation for SQL database connectivity
PPT
Teaching material agriculture food technology
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
Spectroscopy.pptx food analysis technology
PDF
Machine learning based COVID-19 study performance prediction
DOCX
The AUB Centre for AI in Media Proposal.docx
Unlocking AI with Model Context Protocol (MCP)
Understanding_Digital_Forensics_Presentation.pptx
Mobile App Security Testing_ A Comprehensive Guide.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
MYSQL Presentation for SQL database connectivity
Teaching material agriculture food technology
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Big Data Technologies - Introduction.pptx
Review of recent advances in non-invasive hemoglobin estimation
Network Security Unit 5.pdf for BCA BBA.
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Spectroscopy.pptx food analysis technology
Machine learning based COVID-19 study performance prediction
The AUB Centre for AI in Media Proposal.docx

New Security Framework in Apache Geode

  • 2. Apache Geode Apache Geode is a data management platform. It provides you tools to manage your cluster and your data: Cluster management: start/stop locator/server, shutdown, alter runtime… Cluster read/write: describe member, config, regions, alter log level... Data management: create/destroy region, indexes, disk stores, create functions... Data read/write: put/get data entries, querying…. Various ways for you to interact with your cluster/data: Java client, native client
  • 3. Geode Security Authentication Resolve identity, represented as a principal Authorization Resolve roles and permissions Post Processing Resolve final value presented back to user
  • 4. Geode Security - Before Java Client JMX Client Gfsh Pulse Locator Server Server Server Native Client Credentials(TCP) Peer Auth RESTful Client Client-Auth Not Secured (HTTP) Client-Accessor Properties needed: Security-peer-auth-init Security-peer-authenticator Security-client-auth-init Security-client-authenticator Security-client-accessor Jmx-manager-password-file jmx-manager-access-file
  • 5. Security Manager Security Manager Security Manager Geode Security - 1.0 Java Client JMX Client Gfsh Pulse Locator Server Server Native Client Credentials(TCP) RESTful Client Properties needed: security-manager
  • 6. SecurityManager Implement a single interface to secure your Geode cluster. public class SimpleSecurityManager implements SecurityManager { @Override public void init(Properties securityProps) {} // authenticated if username matches password public Object authenticate(Properties credentials) throws AuthenticationFailedException { String username = credentials.getProperty("security-username"); String password = credentials.getProperty("security-password"); If (username!=null && username.equals(password)) { return username; } throw new AuthenticationFailedException("invalid username/password"); } // authorized if username is the beginning part of the permission string public boolean authorize(Object principal, ResourcePermission permission) { String permissionString = permission.toString().replace(":","").toLowerCase(); String principle = principal.toString().toLowerCase(); return permissionString.startsWith(principle); } @Override public void close() {} }
  • 7. Defined by your implementation of SecurityManager authorize(principal, permission) Defined by Geode Security Users, Permissions and Operations Permission Permission Permission Permission Permission Operation Operation Operation Operation Operation Operation Operation Operation Operation has requires
  • 8. ResourcePermission It’s the key to unify authorization across different communication channels. It contains at most 4 parts: Resource: DATA, CLUSTER Operation: READ, WRITE, MANAGE Region (only for data): region name Key (only for data): key value Each operation, no matter where it originates, has a corresponding ResourcePermission: Start server: CLUSTER:MANAGE
  • 9. Roles ● Your SecurityManager needs to define User ->Permission mapping. ● By definition, there would be 2 x 3 x #of regions x #of keys permission permutations. Can’t possibly grant them individually. ● ResourcePermission(resource:operation:region:key) has this implication system built in: ○ A --> A:B --> A:B:C --> A:B:C:D ○ E.g. data -> data:manage -> data:manage:regionA -> data:manage:regionA:key1 ○ * means “all”, and can be put in any of the four parts. ● It’s easier to assign roles to the user and have roles implies specific
  • 10. Post Processor An add-on feature to authentication/authorization Any region data returned back to clients as a result of user operation will pass through this post processor first Any form of getting region value in the client, gfsh command or rest service Query results, continued query results. Data in the registered interest events Configured by security-post-processor property Method to be implemented (showing SamplePostProcessor): public Object processRegionValue(Object principal, String regionName, Object key, Object value) {
  • 11. Demo
  • 12. Geode How it’s Done Shiro Security Engine Custom Realm SecurityManager Client PeerJMX Rest Pulse Credentials In the authenticators: 1. Authenticate credentials. 2. Puts the logged-in subject in the current executing thread. Anywhere In Geode: 1. Get the subject out of the executing thread. 2. Check the required permission
  • 13. Apache Shiro Apache Shiro is a Java security framework that performs authentication, authorization, cryptography, and session management. Easy to Use API Subject based, saved in ThreadLocal, you can retrieve it anywhere in your code. Single method call to authenticate/authorize currentUser.login(username, password) currentUser.checkPermission(permission) Powerful: Pluggable data source, called Realms to manage your users.
  • 14. GEODE Security In Geode’s Future Shiro Security Engine LDAP Realm Custom Realm SecurityManager shiro.ini AD Realm JDBC Realm TextConfig Realm Client PeerJMX Rest Pulse Your own Realm

Editor's Notes

  • #3: What is region, in memory, key value pair (Apache con)
  • #5: Just showing a typical Geode topology to illustrate the security framework (pre 9.0) Pulse’s underlying communication to Geode is still over JMX, so still secured by jmx-manager-* settings, but no restrictions on page views Each of those colored components is different implementation. Too much setup, too many implementations and un-unified implementation leads to data leak.
  • #6: Currently credentials are sent in as security-username and security-password for all interfaces. RESTful OAuth is after 1.0
  • #7: Authenticate method returns the principal used in the authorize method.
  • #8: Roles are used to group permissions for easier management
  • #9: This ResourcePermission is passed to your implementation of SecurityManager for authorization
  • #11: Note regionName or key could be null when the system is calling this method, because in some situations we can’t determine those values, like when we return a big resultset
  • #12: Start locator with security Login using wrong password Login using user Start server with locators (demo peer to peer authentication/authorization) (server 1 with sufficient privilage, server2 with insufficient privilage) Create region Put data Get data Demo permission is specific enough to allow granular control.
  • #13: Lesson learned Threading, annotations
  • #14: Geode’s ResourcePermission extends from Shiro’s WildCardPermission