SlideShare a Scribd company logo
Industrial Strength Access
Control for Spring Applications
By Dario Amiri
@darioamiri
What is ACS?
• Access Control Service
• Fine-grained access control for RESTful APIs
• Available on github
• master branch for stable releases
• develop branch for cutting edge features
• Apache license version 2
• Spring Boot project
• Extensions available for Spring Security integration
2
Why ACS?
Limitations of OAuth 2.0
• Scope-based privileges are too coarse-grained
• Scopes are tightly coupled to access token
• Logout/login required for privilege changes to take effect
• Not tuned for making access control decisions per resource request
Architectural concerns
• Need for a consistent and reusable solution decoupled from application
• Need for a consistent way to define access control policies
• Need for a sharable and distributed privilege store
Example Use Case
4
/sites/san-ramonanalyst
tom@ge.com
/assets/21
/sites/cincy-oh
/assets/33
tom@ge.com GET
GET
Subjects ResourcesActions
tom@ge.com is an analyst, with all associated privileges, when he operates on
assets at the San Ramon site but not when he operates on assets at the Cincinnati
site.
Components
Attribute Based Access Control (ABAC)
• Attribute store for
• Subjects: entities that do things
• Resources: entities that have things done to them
• Policy store
• How subject and resource attributes combine to determine privileges
• Policy evaluation
• Given a subject, action, and resource determine if operation is allowed
What are attributes?
• A key value pair
• Asserted by a trusted entity
• Useful for making authorization decisions
What are attributes?
• tom@ge.com is an analyst
• tom@ge.com is a member of the research group
role: analyst
group: researchers
attributes
subject
tom@ge.com
identifier
What are attributes?
• The asset with id 1234 is located at the San Ramon site
• The asset with id 1234 belongs to users in the research group
site: san-ramon
group: researchers
attributes
resource
/assets/1234
identifier
Breaking down policy evaluation
• Client sends a request for authorization
• Can a subject perform an action on a resource
• Java library support today - route service tomorrow
• ACS performs
• Attribute discovery
• Policy evaluation
• Client receives
• Authorization decision (permit | deny)
• Discovered attributes
authorization request
tom@ge.com
subject
/assets/1234
resource
GET
action
attribute discovery
policy evaluation
authorization response
PERMIT | DENY
decision
role: analyst
group: researchers
tom@ge.com
site: san-ramon
group: researchers
/assets/1234
discovered attributes
authorization response
discovered attributes
subject.and(resource).haveSame(‘group’)
policy
condition
attribute discovery
role: analyst
group: researchers
tom@ge.com
site: san-ramon
group: researchers
/assets/1234
discovered attributes
AttributeStore
authorization request
tom@ge.com /assets/1234GET
permit
Implementing RBAC with ACS
Hierarchical attributes
• Define attributes for roles, groups, etc.
• Users can inherit attributes from these
o E.g. Create an “role-analyst” subject and assign it attributes
o E.g. Have “tom@ge.com” subject inherit attributes from “role-analyst”
Subject attribute inheritance example
org: ge
tenancy-id: 11235
org-ge
group: research
app: apm
group-research
role: analyst
report: asset-performance
role-analyst
tom@ge.com
org: ge
tenancy-id: 11235
group: research
app: apm
role: analyst
report: asset-performance
Resource attribute inheritance example
org: ge
site: san-ramon
/sites/01
group: research
/sites/01/assets/21
report: asset-performance
/sites/01/assets/21/reports/72
org: ge
site: san-ramon
group: research
report: asset-performance
Dynamic roles
Subject roles depend on the resource accessed
• Child subject conditionally inherits parent attributes
• User X inherits attribute from role Y when accessing resource Z
o tom@ge.com is an analyst for the “san-ramon” site
o tom@ge.com is not an analyst for other sites
• Subject attributes are scoped by resource attributes
Scoped attribute inheritance (permit)
site: san-ramon
org: ge
tenancy-id: 11235
org-ge
group: research
app: apm
group-research
role: analyst
report: asset-performance
role-analyst
tom@ge.com
org: ge
tenancy-id: 11235
group: research
app: apm
role: analyst
report: asset-performance
org: ge
site: san-ramon
/sites/01
group: research
/sites/01/assets/21
report: asset-performance
/sites/01/assets/21/reports/72
org: ge
site: san-ramon
group: research
report: asset-performance
Allow user access to asset performance report if
• The asset belongs to the user’s group
• The user is an analyst for the San Ramon site
Scoped attribute inheritance (deny)
site: san-ramon
org: ge
tenancy-id: 11235
org-ge
group: research
app: apm
group-research
role: analyst
report: asset-performance
role-analyst
tom@ge.com
org: ge
tenancy-id: 11235
group: research
app: apm
org: ge
site: cincy-oh
/sites/02
group: research
/sites/02/assets/33
report: asset-performance
/sites/02/assets/33/reports/51
org: ge
site: cincy-oh
group: research
report: asset-performance
Allow user access to asset performance report if
• The asset belongs to the user’s group
• The user is an analyst for the San Ramon site
Technology stack
runtime
Apache
Cassandra
PostgreSQL
java
spring boot titan db
spring data apache tinkerpop
cloud foundry
platform
uaa
spring mvc
spring security
Resources
• Demo
• Documentation
19
Learn More. Stay Connected.
amiri@ge.com
@darioamiri
@springcentral
spring.io/blog
@pivotal
pivotal.io/blog
@pivotalcf
http://engineering.pivotal.io

More Related Content

PPTX
Microsoft Graph community call-December 2018
PPTX
Building Social Tools
PDF
I've Pair Programmed for 30,000 Hours: Ask Me Anything!
PPTX
TDD: The Bad Parts
PDF
Cloud Native Key Management
PDF
Design Tradeoffs in Distributed Systems- How Southwest Airlines Uses Geode
PPTX
Are Your Microservices Naked and Afraid?
PPTX
Pivotal Cloud Foundry: Cloud Native Architecture
Microsoft Graph community call-December 2018
Building Social Tools
I've Pair Programmed for 30,000 Hours: Ask Me Anything!
TDD: The Bad Parts
Cloud Native Key Management
Design Tradeoffs in Distributed Systems- How Southwest Airlines Uses Geode
Are Your Microservices Naked and Afraid?
Pivotal Cloud Foundry: Cloud Native Architecture

Viewers also liked (20)

PPTX
Results Should Be More Fun
PPTX
An Authentication and Authorization Architecture for a Microservices World
PPTX
Why Domain-Driven Design and Reactive Programming?
PPTX
Breaking the Monolith
PPTX
Adapt or Die Sydney - 5 Things Developers Should Know About Serverless
PDF
Understand the What, Why & How of Digital Transformation Featuring 451 Research
PPTX
Adapt or Die Sydney - API Security
PDF
Simplifying Event Streaming: Tools for Location Transparency and Data Evoluti...
PPTX
Building Large-Scale Stream Infrastructures Across Multiple Data Centers with...
PPTX
When it Absolutely, Positively, Has to be There: Reliability Guarantees in Ka...
PPTX
Building an Event-oriented Data Platform with Kafka, Eric Sammer
PDF
A Practical Guide to Selecting a Stream Processing Technology
PDF
The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...
PDF
Securing Kafka
PDF
Stream Processing with Kafka in Uber, Danny Yuan
PPTX
Fundamentals of Stream Processing with Apache Beam, Tyler Akidau, Frances Perry
PPTX
Protecting your data at rest with Apache Kafka by Confluent and Vormetric
PPTX
Real-Time Analytics Visualized w/ Kafka + Streamliner + MemSQL + ZoomData, An...
PDF
Introducing Kafka Streams: Large-scale Stream Processing with Kafka, Neha Nar...
PDF
Data integration with Apache Kafka
Results Should Be More Fun
An Authentication and Authorization Architecture for a Microservices World
Why Domain-Driven Design and Reactive Programming?
Breaking the Monolith
Adapt or Die Sydney - 5 Things Developers Should Know About Serverless
Understand the What, Why & How of Digital Transformation Featuring 451 Research
Adapt or Die Sydney - API Security
Simplifying Event Streaming: Tools for Location Transparency and Data Evoluti...
Building Large-Scale Stream Infrastructures Across Multiple Data Centers with...
When it Absolutely, Positively, Has to be There: Reliability Guarantees in Ka...
Building an Event-oriented Data Platform with Kafka, Eric Sammer
A Practical Guide to Selecting a Stream Processing Technology
The Enterprise Service Bus is Dead! Long live the Enterprise Service Bus, Rim...
Securing Kafka
Stream Processing with Kafka in Uber, Danny Yuan
Fundamentals of Stream Processing with Apache Beam, Tyler Akidau, Frances Perry
Protecting your data at rest with Apache Kafka by Confluent and Vormetric
Real-Time Analytics Visualized w/ Kafka + Streamliner + MemSQL + ZoomData, An...
Introducing Kafka Streams: Large-scale Stream Processing with Kafka, Neha Nar...
Data integration with Apache Kafka
Ad

Similar to Industrial Strength Access Control for Spring Applications (20)

PDF
Access Control Models: Controlling Resource Authorization
PPTX
009 Authentication and Access Control.pptx
PPT
Access control mechanism (DAC, MAC and RBAC).ppt
PDF
Attribute based access control
PPTX
Week No 13 Access Control Part 1.pptx
PDF
Authorization and attributes glossary
PPT
access control information security professor hossein saiedian fall 2014
PDF
E5: Predix Security with ACS & UAA (Predix Transform 2016)
DOCX
Microsoft Windows Azure - Developer’s Guide Access Control in the Windows Azu...
PPTX
Access control
PPTX
smu_abac_150410.pptx
PDF
ENHANCING THE WORDPRESS SYSTEM:FROM ROLE TO ATTRIBUTE-BASED ACCESS CONTROL
PDF
ENHANCING THE WORDPRESS SYSTEM:FROM ROLE TO ATTRIBUTE-BASED ACCESS CONTROL
PDF
Automated Inference of Access Control Policies for Web Applications
PPTX
The day when role based access control disappears
PDF
A Constraint And Attribute Based Security Framework For Dynamic Role Assignme...
PDF
Opa in the api management world
PPTX
Unpacking Authorization Approaches: Policy as Code Versus Traditional Busines...
PPT
Abac17 prosun-slides
PPTX
Data security authorization and access control
Access Control Models: Controlling Resource Authorization
009 Authentication and Access Control.pptx
Access control mechanism (DAC, MAC and RBAC).ppt
Attribute based access control
Week No 13 Access Control Part 1.pptx
Authorization and attributes glossary
access control information security professor hossein saiedian fall 2014
E5: Predix Security with ACS & UAA (Predix Transform 2016)
Microsoft Windows Azure - Developer’s Guide Access Control in the Windows Azu...
Access control
smu_abac_150410.pptx
ENHANCING THE WORDPRESS SYSTEM:FROM ROLE TO ATTRIBUTE-BASED ACCESS CONTROL
ENHANCING THE WORDPRESS SYSTEM:FROM ROLE TO ATTRIBUTE-BASED ACCESS CONTROL
Automated Inference of Access Control Policies for Web Applications
The day when role based access control disappears
A Constraint And Attribute Based Security Framework For Dynamic Role Assignme...
Opa in the api management world
Unpacking Authorization Approaches: Policy as Code Versus Traditional Busines...
Abac17 prosun-slides
Data security authorization and access control
Ad

More from VMware Tanzu (20)

PDF
Spring into AI presented by Dan Vega 5/14
PDF
What AI Means For Your Product Strategy And What To Do About It
PDF
Make the Right Thing the Obvious Thing at Cardinal Health 2023
PPTX
Enhancing DevEx and Simplifying Operations at Scale
PDF
Spring Update | July 2023
PPTX
Platforms, Platform Engineering, & Platform as a Product
PPTX
Building Cloud Ready Apps
PDF
Spring Boot 3 And Beyond
PDF
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
PDF
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
PDF
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
PPTX
tanzu_developer_connect.pptx
PDF
Tanzu Virtual Developer Connect Workshop - French
PDF
Tanzu Developer Connect Workshop - English
PDF
Virtual Developer Connect Workshop - English
PDF
Tanzu Developer Connect - French
PDF
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
PDF
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
PDF
SpringOne Tour: The Influential Software Engineer
PDF
SpringOne Tour: Domain-Driven Design: Theory vs Practice
Spring into AI presented by Dan Vega 5/14
What AI Means For Your Product Strategy And What To Do About It
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Enhancing DevEx and Simplifying Operations at Scale
Spring Update | July 2023
Platforms, Platform Engineering, & Platform as a Product
Building Cloud Ready Apps
Spring Boot 3 And Beyond
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
tanzu_developer_connect.pptx
Tanzu Virtual Developer Connect Workshop - French
Tanzu Developer Connect Workshop - English
Virtual Developer Connect Workshop - English
Tanzu Developer Connect - French
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: Domain-Driven Design: Theory vs Practice

Recently uploaded (20)

PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PDF
Getting Started with Data Integration: FME Form 101
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
DP Operators-handbook-extract for the Mautical Institute
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PPTX
observCloud-Native Containerability and monitoring.pptx
PDF
NewMind AI Weekly Chronicles – August ’25 Week III
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
PPT
What is a Computer? Input Devices /output devices
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
PDF
WOOl fibre morphology and structure.pdf for textiles
PDF
August Patch Tuesday
PPTX
O2C Customer Invoices to Receipt V15A.pptx
PPTX
The various Industrial Revolutions .pptx
PDF
Hybrid model detection and classification of lung cancer
PDF
project resource management chapter-09.pdf
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
Getting Started with Data Integration: FME Form 101
A comparative study of natural language inference in Swahili using monolingua...
DP Operators-handbook-extract for the Mautical Institute
Final SEM Unit 1 for mit wpu at pune .pptx
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
gpt5_lecture_notes_comprehensive_20250812015547.pdf
observCloud-Native Containerability and monitoring.pptx
NewMind AI Weekly Chronicles – August ’25 Week III
Univ-Connecticut-ChatGPT-Presentaion.pdf
TrustArc Webinar - Click, Consent, Trust: Winning the Privacy Game
What is a Computer? Input Devices /output devices
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
WOOl fibre morphology and structure.pdf for textiles
August Patch Tuesday
O2C Customer Invoices to Receipt V15A.pptx
The various Industrial Revolutions .pptx
Hybrid model detection and classification of lung cancer
project resource management chapter-09.pdf
Group 1 Presentation -Planning and Decision Making .pptx

Industrial Strength Access Control for Spring Applications

  • 1. Industrial Strength Access Control for Spring Applications By Dario Amiri @darioamiri
  • 2. What is ACS? • Access Control Service • Fine-grained access control for RESTful APIs • Available on github • master branch for stable releases • develop branch for cutting edge features • Apache license version 2 • Spring Boot project • Extensions available for Spring Security integration 2
  • 3. Why ACS? Limitations of OAuth 2.0 • Scope-based privileges are too coarse-grained • Scopes are tightly coupled to access token • Logout/login required for privilege changes to take effect • Not tuned for making access control decisions per resource request Architectural concerns • Need for a consistent and reusable solution decoupled from application • Need for a consistent way to define access control policies • Need for a sharable and distributed privilege store
  • 4. Example Use Case 4 /sites/san-ramonanalyst tom@ge.com /assets/21 /sites/cincy-oh /assets/33 tom@ge.com GET GET Subjects ResourcesActions tom@ge.com is an analyst, with all associated privileges, when he operates on assets at the San Ramon site but not when he operates on assets at the Cincinnati site.
  • 5. Components Attribute Based Access Control (ABAC) • Attribute store for • Subjects: entities that do things • Resources: entities that have things done to them • Policy store • How subject and resource attributes combine to determine privileges • Policy evaluation • Given a subject, action, and resource determine if operation is allowed
  • 6. What are attributes? • A key value pair • Asserted by a trusted entity • Useful for making authorization decisions
  • 7. What are attributes? • tom@ge.com is an analyst • tom@ge.com is a member of the research group role: analyst group: researchers attributes subject tom@ge.com identifier
  • 8. What are attributes? • The asset with id 1234 is located at the San Ramon site • The asset with id 1234 belongs to users in the research group site: san-ramon group: researchers attributes resource /assets/1234 identifier
  • 9. Breaking down policy evaluation • Client sends a request for authorization • Can a subject perform an action on a resource • Java library support today - route service tomorrow • ACS performs • Attribute discovery • Policy evaluation • Client receives • Authorization decision (permit | deny) • Discovered attributes
  • 10. authorization request tom@ge.com subject /assets/1234 resource GET action attribute discovery policy evaluation authorization response PERMIT | DENY decision role: analyst group: researchers tom@ge.com site: san-ramon group: researchers /assets/1234 discovered attributes
  • 11. authorization response discovered attributes subject.and(resource).haveSame(‘group’) policy condition attribute discovery role: analyst group: researchers tom@ge.com site: san-ramon group: researchers /assets/1234 discovered attributes AttributeStore authorization request tom@ge.com /assets/1234GET permit
  • 12. Implementing RBAC with ACS Hierarchical attributes • Define attributes for roles, groups, etc. • Users can inherit attributes from these o E.g. Create an “role-analyst” subject and assign it attributes o E.g. Have “tom@ge.com” subject inherit attributes from “role-analyst”
  • 13. Subject attribute inheritance example org: ge tenancy-id: 11235 org-ge group: research app: apm group-research role: analyst report: asset-performance role-analyst tom@ge.com org: ge tenancy-id: 11235 group: research app: apm role: analyst report: asset-performance
  • 14. Resource attribute inheritance example org: ge site: san-ramon /sites/01 group: research /sites/01/assets/21 report: asset-performance /sites/01/assets/21/reports/72 org: ge site: san-ramon group: research report: asset-performance
  • 15. Dynamic roles Subject roles depend on the resource accessed • Child subject conditionally inherits parent attributes • User X inherits attribute from role Y when accessing resource Z o tom@ge.com is an analyst for the “san-ramon” site o tom@ge.com is not an analyst for other sites • Subject attributes are scoped by resource attributes
  • 16. Scoped attribute inheritance (permit) site: san-ramon org: ge tenancy-id: 11235 org-ge group: research app: apm group-research role: analyst report: asset-performance role-analyst tom@ge.com org: ge tenancy-id: 11235 group: research app: apm role: analyst report: asset-performance org: ge site: san-ramon /sites/01 group: research /sites/01/assets/21 report: asset-performance /sites/01/assets/21/reports/72 org: ge site: san-ramon group: research report: asset-performance Allow user access to asset performance report if • The asset belongs to the user’s group • The user is an analyst for the San Ramon site
  • 17. Scoped attribute inheritance (deny) site: san-ramon org: ge tenancy-id: 11235 org-ge group: research app: apm group-research role: analyst report: asset-performance role-analyst tom@ge.com org: ge tenancy-id: 11235 group: research app: apm org: ge site: cincy-oh /sites/02 group: research /sites/02/assets/33 report: asset-performance /sites/02/assets/33/reports/51 org: ge site: cincy-oh group: research report: asset-performance Allow user access to asset performance report if • The asset belongs to the user’s group • The user is an analyst for the San Ramon site
  • 18. Technology stack runtime Apache Cassandra PostgreSQL java spring boot titan db spring data apache tinkerpop cloud foundry platform uaa spring mvc spring security
  • 20. Learn More. Stay Connected. amiri@ge.com @darioamiri @springcentral spring.io/blog @pivotal pivotal.io/blog @pivotalcf http://engineering.pivotal.io

Editor's Notes

  • #4: Now I’m going to switch to the subject of ACS and why it exists… 03m00s
  • #6: ACS was designed to address the access control limitations of OAuth. It is essentially a comprehensive solution for building a RESTful API that supports Attribute Based Access Control… In order to do this it is… 01m00s
  • #7: But what exactly are attributes? 00m30s
  • #8: The concept is best explained by example… 01m00s
  • #9: Attributes can also apply to resources… 01m00s
  • #10: But how do we make the access control decision??? 01m00s
  • #11: Here’s a diagram to help visualize the process… 02m00s
  • #12: Let’s delve into the ACS side of things… 02m00s
  • #13: The above example I just presented pretty basic. ACS can satisfy much more complicated use cases… 01m30s
  • #14: Very useful to manage complex systems of user attributes… 01m00s
  • #15: Resources can also inherit attributes… 01m00s
  • #16: Subject privileges can also depend on what user the subject is trying to access. 02m00s
  • #17: 01m00s
  • #18: 01m00s
  • #19: 02m00s