SlideShare a Scribd company logo
Enabling Cloud Native Security
with Multi-Tenant UAA
William Tran, Pivotal
Agenda
• Introductions
• Why use UAA for Cloud Native Applications
• Advantages of Multi-tenant UAA
• How to get started
Introductions
About Me
• Spring user since version 2.0 (2007)
• Joined Pivotal October 2013
• Based in Toronto, Canada
• Working on Pivotal CF Services
– Mobile Services API Gateway
– Pivotal SSO
– Spring Cloud Services
• Committer on UAA
About UAA
• User Account and Authorization server
• Secures all CF components
• OAuth2 and OpenID Connect
• SCIM API for user management in internal
user database
• Integration with SAML 2.0 and LDAP
• OAuth2 client registration API
About OAuth2
• Delegated Authorization
• 4 Actors
– The Authorization Server
– User
– Client
– Resource Server
• Clients act on behalf of users
– Authorization Code Grant
– Resource Owner Password Grant
– Implicit Grant
• Clients act on their own
– Client Credentials Grant
OAuth2 In Cloudfoundry
• Apps Manager (PWS or PCF)
OAuth2 In Cloudfoundry
• Apps Manager
– Go to apps.cfdomain in the browser
UAA
(login.)
Apps
Manager
(apps.)
Cloud
Controller
(api.)
Browser
OAuth2 In Cloudfoundry
• Apps Manager
– Apps manager redirects you to UAA
UAA
(login.)
Apps
Manager
(apps.)
Cloud
Controller
(api.)
Browser
Not logged
in!
OAuth2 In Cloudfoundry
• Apps Manager
– Apps manager redirects you to UAA
UAA
(login.)
Apps
Manager
(apps.)
Cloud
Controller
(api.)
Browser
OAuth2 In Cloudfoundry
• Apps Manager
– UAA asks for username and password
UAA
(login.)
Apps
Manager
(apps.)
Cloud
Controller
(api.)
Browser
Please log in
OAuth2 In Cloudfoundry
• Apps Manager
– User logs in
UAA
(login.)
Apps
Manager
(apps.)
Cloud
Controller
(api.)
Browser
Here is the
username and
password
OAuth2 In Cloudfoundry
• Apps Manager
– UAA redirects back to Apps Manager with a one
time code
UAA
(login.)
Apps
Manager
(apps.)
Cloud
Controller
(api.)
Browser
Here is an
authorization
code
OAuth2 In Cloudfoundry
• Apps Manager
– UAA redirects back to Apps Manager with a one
time code
UAA
(login.)
Apps
Manager
(apps.)
Cloud
Controller
(api.)
Browser
Here is an
authorization
code
OAuth2 In Cloudfoundry
• Apps Manager
– Apps Manager gives the code back to UAA
UAA
(login.)
Apps
Manager
(apps.)
Cloud
Controller
(api.)
Browser
Here is the same
authorization code
OAuth2 In Cloudfoundry
• Apps Manager
– UAA exchanges the code for an access token
UAA
(login.)
Apps
Manager
(apps.)
Cloud
Controller
(api.)
Browser
The code is the same,
here is a token
OAuth2 In Cloudfoundry
• Apps Manager
– Apps manager uses the access token to access
the CC API
UAA
(login.)
Apps
Manager
(apps.)
Cloud
Controller
(api.)
Browser
/v2/apps -H
“Authorization: bearer
eyJhbGci…”
OAuth2 In Cloudfoundry
• Apps Manager
– Apps manager renders the page
UAA
(login.)
Apps
Manager
(apps.)
Cloud
Controller
(api.)
Browser
Here is the the
pretty screen,
finally!
OAuth2 In Cloudfoundry
• Apps Manager
– Authorization Code Grant
– Typical of web applications
– Apps manager webapp is the client
OAuth2 In Cloudfoundry
• CF CLI
cf target api.cfdomain
cf login
cf apps
OAuth2 In Cloudfoundry
• CF CLI
– cf login
UAA
(login.)
Cloud
Controller
(api.)
CF CLI
Here is the
username and
password
OAuth2 In Cloudfoundry
• CF CLI
– cf login
UAA
(login.)
Cloud
Controller
(api.)
CF CLI
Here is a token
OAuth2 In Cloudfoundry
• CF CLI
– cf login
UAA
(login.)
Cloud
Controller
(api.)
CF CLI
/v2/apps -H
“Authorization: bearer
eyJhbGci…”
OAuth2 In Cloudfoundry
• CF CLI
– Resource Owner Password Grant
– Typical of CLI, Mobile Apps, non-browser user
apps
– CF CLI is the client
OAuth2 In Cloudfoundry
• Autoscaling Service (PCF)
my-appAutoscaler
I’m getting very busy!
OAuth2 In Cloudfoundry
• Autoscaling Service (PCF)
my-appAutoscaler
Don’t worry, I’ll create
more instances
OAuth2 In Cloudfoundry
• Autoscaling Service (PCF)
my-appAutoscaler
my-app
OAuth2 In Cloudfoundry
• Autoscaling Service (PCF)
my-appAutoscaler
my-app
my-app
OAuth2 In Cloudfoundry
• Autoscaling Service (PCF)
UAA
(login.)
Cloud
Controller
(api.)
Autoscaler
Time to check
status!
OAuth2 In Cloudfoundry
• Autoscaling Service (PCF)
UAA
(login.)
Cloud
Controller
(api.)
Autoscaler
Here is my
client_id and
client_secret
OAuth2 In Cloudfoundry
• Autoscaling Service (PCF)
UAA
(login.)
Cloud
Controller
(api.)
Autoscaler
Here is a token
OAuth2 In Cloudfoundry
• Autoscaling Service (PCF)
UAA
(login.)
Cloud
Controller
(api.)
Autoscaler
/v2/apps/1234/stats
-H “Authorization: bearer eyJhbGci…”
OAuth2 In Cloudfoundry
• Autoscaling Service (PCF)
UAA
(login.)
Cloud
Controller
(api.)
Autoscaler
CPU at
80%!
OAuth2 In Cloudfoundry
• Autoscaling Service (PCF)
UAA
(login.)
Cloud
Controller
(api.)
Autoscaler
PUT /v2/apps/1234
-H “Authorization: bearer eyJhbGci…”
-d ‘{"instances":2}’
OAuth2 In Cloudfoundry
• Autoscaling Service (PCF)
UAA
(login.)
Cloud
Controller
(api.)
Autoscaler
OK, creating
more
instances
OAuth2 In Cloudfoundry
• Autoscaling Service (PCF)
– Client Credentials Grant
– Typical of apps that act without a user’s
involvement
– Autoscaling Service is the client
OAuth2 In Cloudfoundry
• The CF platform has many more examples of
using OAuth2
• UAA is the key
– Manages users
– Manages clients
– Grants and verifies access tokens
UAA is the perfect fit for
Cloud Native Security*
UAA for Cloud Native Security
• *In CF there’s more to security than just UAA
– Network security / security groups
– Cross container traffic / trusted workloads
– No End to end TLS
• UAA is for application-level security
• It works for us, so it’ll work for you*
So you want to secure your apps
• Example
– You want to host your API application on Cloud
Foundry
my-cloudfoundry.cn
So you want to secure your apps
• Example
– You want to host your API application on Cloud
Foundry
my-cloudfoundry.cn
my-api
So you want to secure your apps
• Example
– It will be accessed by a web app hosted on CF
my-cloudfoundry.cn
my-api
my-
webapp
browser
So you want to secure your apps
• Example
– It will be accessed through a mobile app as well
my-cloudfoundry.cn
my-api
my-
webapp
browser
Mobile
app
So you want to secure your apps
• Perfect! Use UAA
my-cloudfoundry.cn
my-api
my-
webapp
browser
Mobile
app
UAA
So you want to secure your apps
• Perfect! Use UAA
– Client for web app  authcode grant
So you want to secure your apps
• Perfect! Use UAA
– Client for web app  authcode grant
– Client for mobile app  password grant
So you want to secure your apps
• Perfect! Use UAA
– Client for web app  authcode grant
– Client for mobile app  password grant
– API app token verification  JWT signature
So you want to secure your apps
• Perfect! Use UAA
– Client for web app  authcode grant
– Client for mobile app  password grant
– API app token verification  JWT signature
• API app can validate token on its own
Who are your end users?
• SpaceDevelopers, OrgManagers
– Platform users, no problem
Who are your end users?
• SpaceDevelopers, OrgManagers
– Platform users, no problem
• That sales guy
– Not a platform user, PROBLEM
Who are your end users?
jsmith jsmyth
cf set-space-role 
jsmyth the-org the-space SpaceDeveloper
oops
Who are your end users?
jsmith jsmyth
My app is too
slow
Who are your end users?
jsmith jsmyth
cf login –u jsmyth ...
cf scale sales-api –m 10G
I can fix that!
The Principle of Least Privilege
• You (or the application, process, module, etc)
should have the minimum level of access
required for performing their job
The Principle of Least Privilege
• You (or the application, process, module, etc)
should have the minimum level of access
required for performing their job
• Salesguy should not have been added to the
platform UAA
Solutions?
• Create your own authorization server
• Deploy your own UAA
So you want to secure your products
• Example
– You want to build a product that’s packaged as a
CF service
my-cloudfoundry.cn
my-service
So you want to secure your products
• Example
– When apps bind to the service…
my-cloudfoundry.cn
my-service my-app
cf bind-service
So you want to secure your products
• Example
– Create an oauth client
my-cloudfoundry.cn
my-service my-app
UAA
POST
/oauth/client
So you want to secure your products
• Example
– Create an oauth client
my-cloudfoundry.cn
my-service my-app
UAA 201: Created
my-cloudfoundry.cn
So you want to secure your products
• Example
– So that the app to service communication can be
secured by OAuth2 client credentials grant
my-service my-app
UAA
The client_id and
client_secret are in
VCAP_SERVICES
my-cloudfoundry.cn
So you want to secure your products
• Example
– So that the app to service communication can be
secured by OAuth2 client credentials grant
my-service my-app
UAA
GET /api/foo
-H ‘Authorization:
bearer eyJhbGci…’
So you want to secure your products
• Perfect! Use UAA
– App to app communication  client credentials
– Token verification  JWT signature
– Every app gets their own credentials
• Super secure right?
How do you create clients in UAA?
• POST /oauth/clients
– Token must have scope clients.write
• Creating clients with authorities
– Eg the app gets a token with my-service.read
scope
– Requires clients.write and uaa.admin
• So give your service admin credentials?
Admin-Level Credentials
my-service
• client_id: my-service
• client_secret: 123xyz
• authorities: clients.write,
uaa.admin
• authorized_grant_types:
client_credentials
Admin-Level Credentials
my-service
• CLIENT_ID: my-service
• CLIENT_SECRET: 123xyz
Admin-Level Credentials
my-service
• CLIENT_ID: my-service
• CLIENT_SECRET: 123xyz
I got root, yo.
Admin-Level Credentials
my-service
• CLIENT_ID: my-service
• CLIENT_SECRET: 123xyz
This job sucks.
cf env my-service
Admin-Level Credentials
$ uaac target uaa.my-cloudfoundry.cn
$ uaac token client get my-service 
-s 123xyz
$ uaac client add my-admin-client 
–authorities cloud_controller.admin
Admin-Level Credentials
I got root yo. Lets
have some fun.
The Principle of Least Privilege
• You (or the application, process, module, etc)
should have the minimum level of access
required for performing their job
The Principle of Least Privilege
• You (or the application, process, module, etc)
should have the minimum level of access
required for performing their job
• Giving admin level credentials to applications
is dangerous
Solutions?
• Create your own authorization server
• Deploy your own UAA
How do you deploy your own UAA?
• cf push cloudfoundry-identity-uaa.war
• Yaml config
• Bootstrap users
• Provision DB
• Do the above manually, or as part of a Bosh
deployment
Running your own UAA
• Pros:
– Principle of least privilege
– You can fork it
• Cons:
– Overhead
– Manual upgrades
– “yak shaving” a bosh release
Running your own UAA
• Pros:
– Principle of least privilege
• Systems secured by your UAA cannot affect systems
secured by the platform UAA
Running your own UAA
• Pros:
– Principle of least privilege
Your UAA
Running your own UAA
• Pros:
– Principle of least privilege
Your UAA
Platform UAA
Running your own UAA
• Pros:
– Principle of least privilege
Your UAA
Platform UAA
Impossible!
Running your own UAA
• Pros:
– Principle of least privilege
– You can fork it
• Cons:
– Overhead
– Manual upgrades
– “yak shaving” a bosh release
Multitenant UAA
What is Multitenant UAA
• CF v208 +
• The built-in UAA with subdomains
• Subdomain maps to Identity Zone
• Total segregation between Identity Zones
• API for creating Identity Zones
• Existing API stays the same
Zone administrators
• UAA users with god-like powers in an identity
zone
• Requires scope zone.[zone-id].admin
• Instead of targeting zone via subdomain, use
X-Identity-Zone-Id header
– POST uaa.domain.com/oauth/clients  create a
client in the UAA zone
– POST uaa.domain.com/oauth/clients -H “X-
Identity-Zone-Id:12345”  create a client in the
Identity Zone with id 12345
Multitenant UAA
• Pros:
– Principle of least privilege
– API calls for creating a new tenant (aka Identity
Zone)
– Zone administrators instead of bootstrap users
• Cons:
– Overhead
– Manual upgrades
– “yak shaving” a bosh release
– You can’t fork it
Let’s Use It
Multitenant UAA with UAAC
• Setup can be cumbersome
– When acting as zone admin with X-Identity-Zone-
Id header, you can only uaac curl
• Once you have an admin client in the zone,
uaac works great
• Future enhancements
– Creating initial users / clients when the Identity
Zone is created
– -z global option to target a zone via header
Summary
• UAA is great for securing Cloud Native
Applications
• Always use the principle of least privilege
– Don’t add non-platform users to the platform
– Don’t give out platform admin abilities to other
apps
• You can deploy your own UAA
– but multitenant UAA is an API call away
• Tooling needs to catch up
– But once you get that admin client set up, its easy
Stay In Touch
Stay in touch
• Me
– Twitter: @fivetenwill
– github.com/william-tran
– wtran@pivotal.io
• CF Identity PM
– Sree Tummidi: stummidi@pivotal.io
• CF Identity Team
– Issues: github.com/cloudfoundry/uaa
– Discussion: lists.cloudfoundry.org

More Related Content

What's hot

An Authentication and Authorization Architecture for a Microservices World
An Authentication and Authorization Architecture for a Microservices WorldAn Authentication and Authorization Architecture for a Microservices World
An Authentication and Authorization Architecture for a Microservices World
VMware Tanzu
 
OAuth2 - Introduction
OAuth2 - IntroductionOAuth2 - Introduction
OAuth2 - Introduction
Knoldus Inc.
 
OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...
OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...
OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...
Brian Campbell
 
Stateless authentication for microservices - Spring I/O 2015
Stateless authentication for microservices  - Spring I/O 2015Stateless authentication for microservices  - Spring I/O 2015
Stateless authentication for microservices - Spring I/O 2015
Alvaro Sanchez-Mariscal
 
ConFoo 2015 - Securing RESTful resources with OAuth2
ConFoo 2015 - Securing RESTful resources with OAuth2ConFoo 2015 - Securing RESTful resources with OAuth2
ConFoo 2015 - Securing RESTful resources with OAuth2
Rodrigo Cândido da Silva
 
API Security & Federation Patterns - Francois Lascelles, Chief Architect, Lay...
API Security & Federation Patterns - Francois Lascelles, Chief Architect, Lay...API Security & Federation Patterns - Francois Lascelles, Chief Architect, Lay...
API Security & Federation Patterns - Francois Lascelles, Chief Architect, Lay...
CA API Management
 
Rest API Security
Rest API SecurityRest API Security
Rest API Security
Stormpath
 
OAuth2 and Spring Security
OAuth2 and Spring SecurityOAuth2 and Spring Security
OAuth2 and Spring Security
Orest Ivasiv
 
OAuth - Open API Authentication
OAuth - Open API AuthenticationOAuth - Open API Authentication
OAuth - Open API Authentication
leahculver
 
Stateless token-based authentication for pure front-end applications
Stateless token-based authentication for pure front-end applicationsStateless token-based authentication for pure front-end applications
Stateless token-based authentication for pure front-end applications
Alvaro Sanchez-Mariscal
 
Best Practices in Building an API Security Ecosystem
Best Practices in Building an API Security EcosystemBest Practices in Building an API Security Ecosystem
Best Practices in Building an API Security Ecosystem
Prabath Siriwardena
 
Securing your APIs with OAuth, OpenID, and OpenID Connect
Securing your APIs with OAuth, OpenID, and OpenID ConnectSecuring your APIs with OAuth, OpenID, and OpenID Connect
Securing your APIs with OAuth, OpenID, and OpenID Connect
Manish Pandit
 
OAuth 2.0
OAuth 2.0OAuth 2.0
OAuth 2.0
Uwe Friedrichsen
 
The Ultimate Guide to Mobile API Security
The Ultimate Guide to Mobile API SecurityThe Ultimate Guide to Mobile API Security
The Ultimate Guide to Mobile API Security
Stormpath
 
Oauth 2.0 security
Oauth 2.0 securityOauth 2.0 security
Oauth 2.0 security
vinoth kumar
 
An Introduction to OAuth 2
An Introduction to OAuth 2An Introduction to OAuth 2
An Introduction to OAuth 2
Aaron Parecki
 
REST Service Authetication with TLS & JWTs
REST Service Authetication with TLS & JWTsREST Service Authetication with TLS & JWTs
REST Service Authetication with TLS & JWTs
Jon Todd
 
OpenID Connect and Single Sign-On for Beginners
OpenID Connect and Single Sign-On for BeginnersOpenID Connect and Single Sign-On for Beginners
OpenID Connect and Single Sign-On for Beginners
Salesforce Developers
 
Oauth2 and OWSM OAuth2 support
Oauth2 and OWSM OAuth2 supportOauth2 and OWSM OAuth2 support
Oauth2 and OWSM OAuth2 supportGaurav Sharma
 

What's hot (20)

An Authentication and Authorization Architecture for a Microservices World
An Authentication and Authorization Architecture for a Microservices WorldAn Authentication and Authorization Architecture for a Microservices World
An Authentication and Authorization Architecture for a Microservices World
 
OAuth2 - Introduction
OAuth2 - IntroductionOAuth2 - Introduction
OAuth2 - Introduction
 
OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...
OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...
OAuth 2.0 and Mobile Devices: Is that a token in your phone in your pocket or...
 
Stateless authentication for microservices - Spring I/O 2015
Stateless authentication for microservices  - Spring I/O 2015Stateless authentication for microservices  - Spring I/O 2015
Stateless authentication for microservices - Spring I/O 2015
 
ConFoo 2015 - Securing RESTful resources with OAuth2
ConFoo 2015 - Securing RESTful resources with OAuth2ConFoo 2015 - Securing RESTful resources with OAuth2
ConFoo 2015 - Securing RESTful resources with OAuth2
 
API Security & Federation Patterns - Francois Lascelles, Chief Architect, Lay...
API Security & Federation Patterns - Francois Lascelles, Chief Architect, Lay...API Security & Federation Patterns - Francois Lascelles, Chief Architect, Lay...
API Security & Federation Patterns - Francois Lascelles, Chief Architect, Lay...
 
Rest API Security
Rest API SecurityRest API Security
Rest API Security
 
OAuth2 and Spring Security
OAuth2 and Spring SecurityOAuth2 and Spring Security
OAuth2 and Spring Security
 
OAuth - Open API Authentication
OAuth - Open API AuthenticationOAuth - Open API Authentication
OAuth - Open API Authentication
 
Stateless token-based authentication for pure front-end applications
Stateless token-based authentication for pure front-end applicationsStateless token-based authentication for pure front-end applications
Stateless token-based authentication for pure front-end applications
 
OAuth2 + API Security
OAuth2 + API SecurityOAuth2 + API Security
OAuth2 + API Security
 
Best Practices in Building an API Security Ecosystem
Best Practices in Building an API Security EcosystemBest Practices in Building an API Security Ecosystem
Best Practices in Building an API Security Ecosystem
 
Securing your APIs with OAuth, OpenID, and OpenID Connect
Securing your APIs with OAuth, OpenID, and OpenID ConnectSecuring your APIs with OAuth, OpenID, and OpenID Connect
Securing your APIs with OAuth, OpenID, and OpenID Connect
 
OAuth 2.0
OAuth 2.0OAuth 2.0
OAuth 2.0
 
The Ultimate Guide to Mobile API Security
The Ultimate Guide to Mobile API SecurityThe Ultimate Guide to Mobile API Security
The Ultimate Guide to Mobile API Security
 
Oauth 2.0 security
Oauth 2.0 securityOauth 2.0 security
Oauth 2.0 security
 
An Introduction to OAuth 2
An Introduction to OAuth 2An Introduction to OAuth 2
An Introduction to OAuth 2
 
REST Service Authetication with TLS & JWTs
REST Service Authetication with TLS & JWTsREST Service Authetication with TLS & JWTs
REST Service Authetication with TLS & JWTs
 
OpenID Connect and Single Sign-On for Beginners
OpenID Connect and Single Sign-On for BeginnersOpenID Connect and Single Sign-On for Beginners
OpenID Connect and Single Sign-On for Beginners
 
Oauth2 and OWSM OAuth2 support
Oauth2 and OWSM OAuth2 supportOauth2 and OWSM OAuth2 support
Oauth2 and OWSM OAuth2 support
 

Similar to Enabling Cloud Native Security with OAuth2 and Multi-Tenant UAA

Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...
Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...
Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...
Tanya Denisyuk
 
Security as a Service - Tian Wang
Security as a Service - Tian WangSecurity as a Service - Tian Wang
Security as a Service - Tian Wang
VMware Tanzu
 
Operating Your Production API
Operating Your Production APIOperating Your Production API
Operating Your Production API
Amazon Web Services
 
Operating your Production API
Operating your Production APIOperating your Production API
Operating your Production API
Amazon Web Services
 
Azure API Management - why should I care?
Azure API Management - why should I care?Azure API Management - why should I care?
Azure API Management - why should I care?
Jouni Heikniemi
 
The Datacenter API
The Datacenter APIThe Datacenter API
The Datacenter APIAkana
 
The Datacenter API
The Datacenter APIThe Datacenter API
The Datacenter API
Akana
 
#1922 rest-push2 ap-im-v6
#1922 rest-push2 ap-im-v6#1922 rest-push2 ap-im-v6
#1922 rest-push2 ap-im-v6
Jack Carnes
 
Developing Apps with Azure AD
Developing Apps with Azure ADDeveloping Apps with Azure AD
Developing Apps with Azure AD
SharePointRadi
 
Token Management using Stormpath inside Mule
Token Management using Stormpath inside MuleToken Management using Stormpath inside Mule
Token Management using Stormpath inside Mule
RaviShankar Mishra
 
AWS Summit Barcelona 2015 - Introducing Amazon API Gateway
AWS Summit Barcelona 2015 - Introducing Amazon API GatewayAWS Summit Barcelona 2015 - Introducing Amazon API Gateway
AWS Summit Barcelona 2015 - Introducing Amazon API Gateway
Vadim Zendejas
 
Amazon API Gateway
Amazon API GatewayAmazon API Gateway
Amazon API Gateway
Amazon Web Services
 
Aws Technical Day 2015 - Amazon API Gateway
Aws Technical Day 2015 - Amazon API GatewayAws Technical Day 2015 - Amazon API Gateway
Aws Technical Day 2015 - Amazon API Gateway
aws-marketing-il
 
AWS CodeDeploy: Manage Deployment Complexity
AWS CodeDeploy: Manage Deployment ComplexityAWS CodeDeploy: Manage Deployment Complexity
AWS CodeDeploy: Manage Deployment Complexity
Amazon Web Services
 
AWS re:Invent 2016: Building SaaS Offerings for Desktop Apps with Amazon AppS...
AWS re:Invent 2016: Building SaaS Offerings for Desktop Apps with Amazon AppS...AWS re:Invent 2016: Building SaaS Offerings for Desktop Apps with Amazon AppS...
AWS re:Invent 2016: Building SaaS Offerings for Desktop Apps with Amazon AppS...
Amazon Web Services
 
Oauth2.0
Oauth2.0Oauth2.0
Oauth2.0
Yasmine Gaber
 
Authorization Architecture Patterns: How to Avoid Pitfalls in #OAuth / #OIDC ...
Authorization Architecture Patterns: How to Avoid Pitfalls in #OAuth / #OIDC ...Authorization Architecture Patterns: How to Avoid Pitfalls in #OAuth / #OIDC ...
Authorization Architecture Patterns: How to Avoid Pitfalls in #OAuth / #OIDC ...
Tatsuo Kudo
 
API, Integration, and SOA Convergence
API, Integration, and SOA ConvergenceAPI, Integration, and SOA Convergence
API, Integration, and SOA Convergence
Kasun Indrasiri
 
API Services: Building State-of-the-Art APIs
API Services: Building State-of-the-Art APIsAPI Services: Building State-of-the-Art APIs
API Services: Building State-of-the-Art APIs
Apigee | Google Cloud
 
Transforming Software Development
Transforming Software DevelopmentTransforming Software Development
Transforming Software Development
Amazon Web Services
 

Similar to Enabling Cloud Native Security with OAuth2 and Multi-Tenant UAA (20)

Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...
Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...
Дмитрий Хоревич "Cloud native security with UAA \ Как защитить микросервисы с...
 
Security as a Service - Tian Wang
Security as a Service - Tian WangSecurity as a Service - Tian Wang
Security as a Service - Tian Wang
 
Operating Your Production API
Operating Your Production APIOperating Your Production API
Operating Your Production API
 
Operating your Production API
Operating your Production APIOperating your Production API
Operating your Production API
 
Azure API Management - why should I care?
Azure API Management - why should I care?Azure API Management - why should I care?
Azure API Management - why should I care?
 
The Datacenter API
The Datacenter APIThe Datacenter API
The Datacenter API
 
The Datacenter API
The Datacenter APIThe Datacenter API
The Datacenter API
 
#1922 rest-push2 ap-im-v6
#1922 rest-push2 ap-im-v6#1922 rest-push2 ap-im-v6
#1922 rest-push2 ap-im-v6
 
Developing Apps with Azure AD
Developing Apps with Azure ADDeveloping Apps with Azure AD
Developing Apps with Azure AD
 
Token Management using Stormpath inside Mule
Token Management using Stormpath inside MuleToken Management using Stormpath inside Mule
Token Management using Stormpath inside Mule
 
AWS Summit Barcelona 2015 - Introducing Amazon API Gateway
AWS Summit Barcelona 2015 - Introducing Amazon API GatewayAWS Summit Barcelona 2015 - Introducing Amazon API Gateway
AWS Summit Barcelona 2015 - Introducing Amazon API Gateway
 
Amazon API Gateway
Amazon API GatewayAmazon API Gateway
Amazon API Gateway
 
Aws Technical Day 2015 - Amazon API Gateway
Aws Technical Day 2015 - Amazon API GatewayAws Technical Day 2015 - Amazon API Gateway
Aws Technical Day 2015 - Amazon API Gateway
 
AWS CodeDeploy: Manage Deployment Complexity
AWS CodeDeploy: Manage Deployment ComplexityAWS CodeDeploy: Manage Deployment Complexity
AWS CodeDeploy: Manage Deployment Complexity
 
AWS re:Invent 2016: Building SaaS Offerings for Desktop Apps with Amazon AppS...
AWS re:Invent 2016: Building SaaS Offerings for Desktop Apps with Amazon AppS...AWS re:Invent 2016: Building SaaS Offerings for Desktop Apps with Amazon AppS...
AWS re:Invent 2016: Building SaaS Offerings for Desktop Apps with Amazon AppS...
 
Oauth2.0
Oauth2.0Oauth2.0
Oauth2.0
 
Authorization Architecture Patterns: How to Avoid Pitfalls in #OAuth / #OIDC ...
Authorization Architecture Patterns: How to Avoid Pitfalls in #OAuth / #OIDC ...Authorization Architecture Patterns: How to Avoid Pitfalls in #OAuth / #OIDC ...
Authorization Architecture Patterns: How to Avoid Pitfalls in #OAuth / #OIDC ...
 
API, Integration, and SOA Convergence
API, Integration, and SOA ConvergenceAPI, Integration, and SOA Convergence
API, Integration, and SOA Convergence
 
API Services: Building State-of-the-Art APIs
API Services: Building State-of-the-Art APIsAPI Services: Building State-of-the-Art APIs
API Services: Building State-of-the-Art APIs
 
Transforming Software Development
Transforming Software DevelopmentTransforming Software Development
Transforming Software Development
 

Recently uploaded

Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
abdulrafaychaudhry
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Nidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, TipsNidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, Tips
vrstrong314
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
ShamsuddeenMuhammadA
 

Recently uploaded (20)

Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Nidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, TipsNidhi Software Price. Fact , Costs, Tips
Nidhi Software Price. Fact , Costs, Tips
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
 

Enabling Cloud Native Security with OAuth2 and Multi-Tenant UAA

  • 1. Enabling Cloud Native Security with Multi-Tenant UAA William Tran, Pivotal
  • 2. Agenda • Introductions • Why use UAA for Cloud Native Applications • Advantages of Multi-tenant UAA • How to get started
  • 4. About Me • Spring user since version 2.0 (2007) • Joined Pivotal October 2013 • Based in Toronto, Canada • Working on Pivotal CF Services – Mobile Services API Gateway – Pivotal SSO – Spring Cloud Services • Committer on UAA
  • 5. About UAA • User Account and Authorization server • Secures all CF components • OAuth2 and OpenID Connect • SCIM API for user management in internal user database • Integration with SAML 2.0 and LDAP • OAuth2 client registration API
  • 6. About OAuth2 • Delegated Authorization • 4 Actors – The Authorization Server – User – Client – Resource Server • Clients act on behalf of users – Authorization Code Grant – Resource Owner Password Grant – Implicit Grant • Clients act on their own – Client Credentials Grant
  • 7. OAuth2 In Cloudfoundry • Apps Manager (PWS or PCF)
  • 8. OAuth2 In Cloudfoundry • Apps Manager – Go to apps.cfdomain in the browser UAA (login.) Apps Manager (apps.) Cloud Controller (api.) Browser
  • 9. OAuth2 In Cloudfoundry • Apps Manager – Apps manager redirects you to UAA UAA (login.) Apps Manager (apps.) Cloud Controller (api.) Browser Not logged in!
  • 10. OAuth2 In Cloudfoundry • Apps Manager – Apps manager redirects you to UAA UAA (login.) Apps Manager (apps.) Cloud Controller (api.) Browser
  • 11. OAuth2 In Cloudfoundry • Apps Manager – UAA asks for username and password UAA (login.) Apps Manager (apps.) Cloud Controller (api.) Browser Please log in
  • 12. OAuth2 In Cloudfoundry • Apps Manager – User logs in UAA (login.) Apps Manager (apps.) Cloud Controller (api.) Browser Here is the username and password
  • 13. OAuth2 In Cloudfoundry • Apps Manager – UAA redirects back to Apps Manager with a one time code UAA (login.) Apps Manager (apps.) Cloud Controller (api.) Browser Here is an authorization code
  • 14. OAuth2 In Cloudfoundry • Apps Manager – UAA redirects back to Apps Manager with a one time code UAA (login.) Apps Manager (apps.) Cloud Controller (api.) Browser Here is an authorization code
  • 15. OAuth2 In Cloudfoundry • Apps Manager – Apps Manager gives the code back to UAA UAA (login.) Apps Manager (apps.) Cloud Controller (api.) Browser Here is the same authorization code
  • 16. OAuth2 In Cloudfoundry • Apps Manager – UAA exchanges the code for an access token UAA (login.) Apps Manager (apps.) Cloud Controller (api.) Browser The code is the same, here is a token
  • 17. OAuth2 In Cloudfoundry • Apps Manager – Apps manager uses the access token to access the CC API UAA (login.) Apps Manager (apps.) Cloud Controller (api.) Browser /v2/apps -H “Authorization: bearer eyJhbGci…”
  • 18. OAuth2 In Cloudfoundry • Apps Manager – Apps manager renders the page UAA (login.) Apps Manager (apps.) Cloud Controller (api.) Browser Here is the the pretty screen, finally!
  • 19. OAuth2 In Cloudfoundry • Apps Manager – Authorization Code Grant – Typical of web applications – Apps manager webapp is the client
  • 20. OAuth2 In Cloudfoundry • CF CLI cf target api.cfdomain cf login cf apps
  • 21. OAuth2 In Cloudfoundry • CF CLI – cf login UAA (login.) Cloud Controller (api.) CF CLI Here is the username and password
  • 22. OAuth2 In Cloudfoundry • CF CLI – cf login UAA (login.) Cloud Controller (api.) CF CLI Here is a token
  • 23. OAuth2 In Cloudfoundry • CF CLI – cf login UAA (login.) Cloud Controller (api.) CF CLI /v2/apps -H “Authorization: bearer eyJhbGci…”
  • 24. OAuth2 In Cloudfoundry • CF CLI – Resource Owner Password Grant – Typical of CLI, Mobile Apps, non-browser user apps – CF CLI is the client
  • 25. OAuth2 In Cloudfoundry • Autoscaling Service (PCF) my-appAutoscaler I’m getting very busy!
  • 26. OAuth2 In Cloudfoundry • Autoscaling Service (PCF) my-appAutoscaler Don’t worry, I’ll create more instances
  • 27. OAuth2 In Cloudfoundry • Autoscaling Service (PCF) my-appAutoscaler my-app
  • 28. OAuth2 In Cloudfoundry • Autoscaling Service (PCF) my-appAutoscaler my-app my-app
  • 29. OAuth2 In Cloudfoundry • Autoscaling Service (PCF) UAA (login.) Cloud Controller (api.) Autoscaler Time to check status!
  • 30. OAuth2 In Cloudfoundry • Autoscaling Service (PCF) UAA (login.) Cloud Controller (api.) Autoscaler Here is my client_id and client_secret
  • 31. OAuth2 In Cloudfoundry • Autoscaling Service (PCF) UAA (login.) Cloud Controller (api.) Autoscaler Here is a token
  • 32. OAuth2 In Cloudfoundry • Autoscaling Service (PCF) UAA (login.) Cloud Controller (api.) Autoscaler /v2/apps/1234/stats -H “Authorization: bearer eyJhbGci…”
  • 33. OAuth2 In Cloudfoundry • Autoscaling Service (PCF) UAA (login.) Cloud Controller (api.) Autoscaler CPU at 80%!
  • 34. OAuth2 In Cloudfoundry • Autoscaling Service (PCF) UAA (login.) Cloud Controller (api.) Autoscaler PUT /v2/apps/1234 -H “Authorization: bearer eyJhbGci…” -d ‘{"instances":2}’
  • 35. OAuth2 In Cloudfoundry • Autoscaling Service (PCF) UAA (login.) Cloud Controller (api.) Autoscaler OK, creating more instances
  • 36. OAuth2 In Cloudfoundry • Autoscaling Service (PCF) – Client Credentials Grant – Typical of apps that act without a user’s involvement – Autoscaling Service is the client
  • 37. OAuth2 In Cloudfoundry • The CF platform has many more examples of using OAuth2 • UAA is the key – Manages users – Manages clients – Grants and verifies access tokens
  • 38. UAA is the perfect fit for Cloud Native Security*
  • 39. UAA for Cloud Native Security • *In CF there’s more to security than just UAA – Network security / security groups – Cross container traffic / trusted workloads – No End to end TLS • UAA is for application-level security • It works for us, so it’ll work for you*
  • 40. So you want to secure your apps • Example – You want to host your API application on Cloud Foundry my-cloudfoundry.cn
  • 41. So you want to secure your apps • Example – You want to host your API application on Cloud Foundry my-cloudfoundry.cn my-api
  • 42. So you want to secure your apps • Example – It will be accessed by a web app hosted on CF my-cloudfoundry.cn my-api my- webapp browser
  • 43. So you want to secure your apps • Example – It will be accessed through a mobile app as well my-cloudfoundry.cn my-api my- webapp browser Mobile app
  • 44. So you want to secure your apps • Perfect! Use UAA my-cloudfoundry.cn my-api my- webapp browser Mobile app UAA
  • 45. So you want to secure your apps • Perfect! Use UAA – Client for web app  authcode grant
  • 46. So you want to secure your apps • Perfect! Use UAA – Client for web app  authcode grant – Client for mobile app  password grant
  • 47. So you want to secure your apps • Perfect! Use UAA – Client for web app  authcode grant – Client for mobile app  password grant – API app token verification  JWT signature
  • 48. So you want to secure your apps • Perfect! Use UAA – Client for web app  authcode grant – Client for mobile app  password grant – API app token verification  JWT signature • API app can validate token on its own
  • 49. Who are your end users? • SpaceDevelopers, OrgManagers – Platform users, no problem
  • 50. Who are your end users? • SpaceDevelopers, OrgManagers – Platform users, no problem • That sales guy – Not a platform user, PROBLEM
  • 51. Who are your end users? jsmith jsmyth cf set-space-role jsmyth the-org the-space SpaceDeveloper oops
  • 52. Who are your end users? jsmith jsmyth My app is too slow
  • 53. Who are your end users? jsmith jsmyth cf login –u jsmyth ... cf scale sales-api –m 10G I can fix that!
  • 54. The Principle of Least Privilege • You (or the application, process, module, etc) should have the minimum level of access required for performing their job
  • 55. The Principle of Least Privilege • You (or the application, process, module, etc) should have the minimum level of access required for performing their job • Salesguy should not have been added to the platform UAA
  • 56. Solutions? • Create your own authorization server • Deploy your own UAA
  • 57. So you want to secure your products • Example – You want to build a product that’s packaged as a CF service my-cloudfoundry.cn my-service
  • 58. So you want to secure your products • Example – When apps bind to the service… my-cloudfoundry.cn my-service my-app cf bind-service
  • 59. So you want to secure your products • Example – Create an oauth client my-cloudfoundry.cn my-service my-app UAA POST /oauth/client
  • 60. So you want to secure your products • Example – Create an oauth client my-cloudfoundry.cn my-service my-app UAA 201: Created
  • 61. my-cloudfoundry.cn So you want to secure your products • Example – So that the app to service communication can be secured by OAuth2 client credentials grant my-service my-app UAA The client_id and client_secret are in VCAP_SERVICES
  • 62. my-cloudfoundry.cn So you want to secure your products • Example – So that the app to service communication can be secured by OAuth2 client credentials grant my-service my-app UAA GET /api/foo -H ‘Authorization: bearer eyJhbGci…’
  • 63. So you want to secure your products • Perfect! Use UAA – App to app communication  client credentials – Token verification  JWT signature – Every app gets their own credentials • Super secure right?
  • 64. How do you create clients in UAA? • POST /oauth/clients – Token must have scope clients.write • Creating clients with authorities – Eg the app gets a token with my-service.read scope – Requires clients.write and uaa.admin • So give your service admin credentials?
  • 65. Admin-Level Credentials my-service • client_id: my-service • client_secret: 123xyz • authorities: clients.write, uaa.admin • authorized_grant_types: client_credentials
  • 66. Admin-Level Credentials my-service • CLIENT_ID: my-service • CLIENT_SECRET: 123xyz
  • 67. Admin-Level Credentials my-service • CLIENT_ID: my-service • CLIENT_SECRET: 123xyz I got root, yo.
  • 68. Admin-Level Credentials my-service • CLIENT_ID: my-service • CLIENT_SECRET: 123xyz This job sucks. cf env my-service
  • 69. Admin-Level Credentials $ uaac target uaa.my-cloudfoundry.cn $ uaac token client get my-service -s 123xyz $ uaac client add my-admin-client –authorities cloud_controller.admin
  • 70. Admin-Level Credentials I got root yo. Lets have some fun.
  • 71. The Principle of Least Privilege • You (or the application, process, module, etc) should have the minimum level of access required for performing their job
  • 72. The Principle of Least Privilege • You (or the application, process, module, etc) should have the minimum level of access required for performing their job • Giving admin level credentials to applications is dangerous
  • 73. Solutions? • Create your own authorization server • Deploy your own UAA
  • 74. How do you deploy your own UAA? • cf push cloudfoundry-identity-uaa.war • Yaml config • Bootstrap users • Provision DB • Do the above manually, or as part of a Bosh deployment
  • 75. Running your own UAA • Pros: – Principle of least privilege – You can fork it • Cons: – Overhead – Manual upgrades – “yak shaving” a bosh release
  • 76. Running your own UAA • Pros: – Principle of least privilege • Systems secured by your UAA cannot affect systems secured by the platform UAA
  • 77. Running your own UAA • Pros: – Principle of least privilege Your UAA
  • 78. Running your own UAA • Pros: – Principle of least privilege Your UAA Platform UAA
  • 79. Running your own UAA • Pros: – Principle of least privilege Your UAA Platform UAA Impossible!
  • 80. Running your own UAA • Pros: – Principle of least privilege – You can fork it • Cons: – Overhead – Manual upgrades – “yak shaving” a bosh release
  • 82. What is Multitenant UAA • CF v208 + • The built-in UAA with subdomains • Subdomain maps to Identity Zone • Total segregation between Identity Zones • API for creating Identity Zones • Existing API stays the same
  • 83. Zone administrators • UAA users with god-like powers in an identity zone • Requires scope zone.[zone-id].admin • Instead of targeting zone via subdomain, use X-Identity-Zone-Id header – POST uaa.domain.com/oauth/clients  create a client in the UAA zone – POST uaa.domain.com/oauth/clients -H “X- Identity-Zone-Id:12345”  create a client in the Identity Zone with id 12345
  • 84. Multitenant UAA • Pros: – Principle of least privilege – API calls for creating a new tenant (aka Identity Zone) – Zone administrators instead of bootstrap users • Cons: – Overhead – Manual upgrades – “yak shaving” a bosh release – You can’t fork it
  • 86. Multitenant UAA with UAAC • Setup can be cumbersome – When acting as zone admin with X-Identity-Zone- Id header, you can only uaac curl • Once you have an admin client in the zone, uaac works great • Future enhancements – Creating initial users / clients when the Identity Zone is created – -z global option to target a zone via header
  • 87. Summary • UAA is great for securing Cloud Native Applications • Always use the principle of least privilege – Don’t add non-platform users to the platform – Don’t give out platform admin abilities to other apps • You can deploy your own UAA – but multitenant UAA is an API call away • Tooling needs to catch up – But once you get that admin client set up, its easy
  • 89. Stay in touch • Me – Twitter: @fivetenwill – github.com/william-tran – wtran@pivotal.io • CF Identity PM – Sree Tummidi: stummidi@pivotal.io • CF Identity Team – Issues: github.com/cloudfoundry/uaa – Discussion: lists.cloudfoundry.org

Editor's Notes

  1. Hello everyone, thank you for coming to my talk, I’m very excited to be here.