SlideShare a Scribd company logo
CloudStack Identity and Access
Management (IAM)
Min Chen
 
Prachi Damle"
Citrix
Agenda
•  Background
•  Our Design Goal
•  Architecture
•  Implementation
•  Use Cases
•  Next Steps
Background
•  Limited IAM Services
–  Out-of-box fixed roles (Root Admin, Domain Admin, User) with
prebaked access control.
–  No support for customized roles creation.
–  Special hard-coded access control logic baked in service layer for
some resources like networks, affinity group, etc.
–  Granting permissions by dedicated APIs is very restrictive.
Our Goal





 
Provide True Pluggable IAM Service
Our Goal





 
Provide True Pluggable IAM Service
What is IAM"
"

 👩	
  	
  
👨	
  	
  
👦	
  	
  
Permission	
  
Principal	
  
Ac+on	
  
Resource	
  
Permission	
  
Principal	
  
Ac+on	
  
Resource	
  
Permission	
  
Principal	
  
Ac+on	
  
Resource	
  
Policy	
  
Group	
  
Resource	
  
Resource	
  
Resource	
  
Resource	
  
Principal	
  
Principal	
  
Principal	
  
👫	
  
Role	
  
Impersonate	
  
Allow/Deny	
  
Our IAM Model
Pluggable IAM Service"


Host IAM server as an Independent Service listening at an endpoint
which CloudStack or other portal services call to do access checks
Pluggable IAM Components"

•  Server
–  An implementation of pure IAM taxonomy independent of CloudStack.
–  Out-of-box IAM server implementation based on our IAM schema 
–  Provide IAM server interface for third-party (LDAP/AD based) to implement a
different IAM server.
•  Plugin
–  A plugin integrated with CloudStack through adapter interfaces:
•  APIChecker
•  SecurityChecker
•  QuerySelector
–  Serve new IAM API requests
IAM Component Diagram
CloudStack	
  
cloud-­‐api	
  
cloud-­‐server	
  
IAM	
  Service	
  
cloud-­‐plugin-­‐iam	
  
APIChecker	
  
SecurityChecker	
  
QuerySelector	
  
RoleBasedAPIChecker	
  
RoleBasedEn+tyChecker	
  
RoleBasedQuerySelector	
  
IAM	
  Plugin	
  APIs	
  
cloud-­‐iam-­‐server	
  
IAM	
  Server	
  APIs	
  
IAM Server
•  IAM Schema
•  Implement IAM Server
interface to provide your 
own 3rd-party IAM server.
IAM Plugin
•  IAM APIs 
•  Adapters
–  APIChecker
–  SecurityChecker
•  AccessType
–  QuerySelector
•  Plugin understands CloudStack’s terminology
IAM APIs
createIAMGroup	
  
deleteIAMGroup	
  
listIAMGroups	
  
createIAMPolicy	
  
deleteIAMPolicy	
  
listIAMPolicies	
  
addIAMPermissionToIAMPolicy	
  
removeIAMPermissionFromIAMPolicy	
  
addAccountToIAMGroup	
  
removeAccountFromIAMGroup	
  
aDachIAMPolicyToAccount	
  
removeIAMPolicyFromAccount	
  
aDachIAMPolicyToIAMGroup	
  
removeIAMPolicyFromIAMGroup	
  👩	
  	
  
	
  Account	
  
APIChecker
•  CS APIChecker interface
•  commands.properties 

•  RoleBasedAPIAccessChecker
–  On startup loads permissions from commands.properties 
–  checkAccess by listing policy permissions

public	
  interface	
  APIChecker	
  extends	
  Adapter	
  {	
  
	
  	
  	
  	
  boolean	
  checkAccess(User	
  user,	
  	
  String	
  apiCommandName)	
  throws	
  	
  PermissionDeniedExcep+on;	
  }	
  
1	
  =	
  ADMIN,	
  2	
  =	
  RESOURCE_DOMAIN_ADMIN,	
  4	
  =	
  DOMAIN_ADMIN,	
  8	
  =	
  USER	
  
startVirtualMachine=15	
  
Default CloudStack Policies


User	
  Policy	
  
startVirtualMachine	
  
VirtualMachine	
  
ACCOUNT	
  
$accountId	
  
Permission	
  
User	
  Group	
  
Domain	
  Admin	
  Policy	
  
startVirtualMachine	
  
VirtualMachine	
  
DOMAIN	
  
$domainId	
  
Permission	
  
Domain	
  Admin	
  Group	
   Root	
  Admin	
  Policy	
  
startVirtualMachine	
  
VirtualMachine	
  
Scope:	
  ALL	
  
Permission	
  
migrateVirtualMachine	
  
Permission	
  
Root	
  Admin	
  Group	
  
IAM	
  APIChecker	
  
startVirtualMachine	
  =	
  15	
  
SecurityChecker
•  CS SecurityChecker interface
•  RoleBasedEntityAccessChecker
•  Check Policy permissions for the entity and action/accessType
•  Only work with ‘Allow’. No ‘Deny’ in this phase.
•  AccessType
•  ListEntry (read-only access)
•  UseEntry (read and use access)
•  OperateEntry (operate access)
public	
  interface	
  SecurityChecker	
  extends	
  Adapter	
  {	
  
boolean	
  checkAccess(Account	
  caller,	
  	
  ControlledEn+ty	
  en+ty,	
  	
  AccessType	
  accessType,	
  String	
  ac+on)	
  
throws	
  PermissionDeniedExcep+on;	
  
}	
  
Access Check Flow


👩	
  	
  
User1	
   startVirtualMachine	
  ‘Foo’	
  
👩	
  	
  
User2	
  
💻	
  
Foo	
  
IAM	
  API	
  Checker	
  
IAM	
  
SecurityChecker	
  
User	
  Policy	
  
startVirtualMachine	
  
VirtualMachine	
  
ACCOUNT	
  
$accountId	
  
Permission	
  
User	
  Group	
   Domain	
  Admin	
  Policy	
  
startVirtualMachine	
  
VirtualMachine	
  
DOMAIN	
  
$domainId	
  
Permission	
  
Domain	
  Admin	
  Group	
  
Root	
  Admin	
  Policy	
  
startVirtualMachine	
  
VirtualMachine	
  
Scope:	
  ALL	
  
Permission	
  
Root	
  Admin	
  Group	
  
startVirtualMachine	
  ‘Foo’	
   👩	
  	
  
Root	
  Admin	
  
startVirtualMachine	
  ‘Foo’	
  
IAM QuerySelector
•  QuerySelector => RoleBasedQuerySelector
public	
  interface	
  QuerySelector	
  extends	
  Adapter	
  {	
  
	
  	
  	
  	
  	
  	
  List<Long>	
  getAuthorizedDomains(Account	
  caller,	
  String	
  en+tyType,	
  AccessType	
  accessType);	
  
	
  	
  	
  	
  	
  	
  List<Long>	
  getAuthorizedAccounts(Account	
  caller,	
  String	
  en+tyType,	
  AccessType	
  accessType);	
  
	
  	
  	
  	
  	
  	
  List<Long>	
  getAuthorizedResources(Account	
  caller,	
  String	
  en+tyType,	
  AccessType	
  accessType);	
  
	
  	
  	
  	
  	
  	
  boolean	
  isGrantedAll(Account	
  caller,	
  String	
  ac+on,	
  AccessType	
  accessType);	
  
	
  	
  	
  	
  	
  	
  List<String>	
  listIAMGroupsByAccount(long	
  accountId);	
  	
  
}	
  	
  	
  
Custom Policy
•  Use Case: Domain admin wants to grant “read only access” to all VMs
of his domain to some service desk accounts.
Service	
  Desk	
  
Group	
  
ReadOnlyPolicy	
  
listVirtualMachines	
  
VirtualMachine	
  
DOMAIN	
  
$domainId	
  
Permission	
  
👩	
  	
  
👨	
  	
  
addAccountToIAMGroup	
  
aAachIAMPolicyToIAMGroup	
  
VMOpPolicy	
  
Cross-Account Grant
•  Use Case: Account A has a VM foo, and she wants to grant Account
B to Start/Stop her VM foo.
startVirtualMachine	
  
VirtualMachine	
  
RESOURCE	
  
foo	
  
Permission	
  
stopVirtualMachine	
  
VirtualMachine	
  
RESOURCE	
  
foo	
  
Permission	
  
👩	
  	
  
👨	
  	
  
A	
  
B	
  
💻	
  
Foo	
  
Next Step
•  Integrate IAM model with all CloudStack access control logic
–  Shared and isolated networks
–  Handle non ControlledEntity like Zone and Service Offering(Disk
offering, Network Offering)
–  Dedicated resource feature 
•  Provide UI support for IAM APIs.
•  Handle JSON based policy definition.
References
•  Functional Spec:
https://cwiki.apache.org/confluence/display/CLOUDSTACK/CloudStack
+IAM+guidelines+for+API+and+Service+Layer
•  Guidelines for Developers:
https://cwiki.apache.org/confluence/display/CLOUDSTACK/CloudStack
+IAM+guidelines+for+API+and+Service+Layer

More Related Content

PDF
Gravitee API Management - Ahmet AYDIN
PPTX
A Definition of Done for DevSecOps
PPTX
Camunda BPM - Said Mengi
PPTX
BDD Approach with Karate Framework in Service Tests
PPTX
API Management Demystified
PPT
Cloud Foundry Summit 2014: Introducing Cloud Foundry Integration for Eclipse
PDF
How Secure Are Your APIs?
PDF
Role of API Management in an API led Digital Economy
Gravitee API Management - Ahmet AYDIN
A Definition of Done for DevSecOps
Camunda BPM - Said Mengi
BDD Approach with Karate Framework in Service Tests
API Management Demystified
Cloud Foundry Summit 2014: Introducing Cloud Foundry Integration for Eclipse
How Secure Are Your APIs?
Role of API Management in an API led Digital Economy

What's hot (20)

PDF
Building Sustainable Ecosystems: The Economics of Collaboration
PDF
Gravitee.io
PPT
Api management introduction and product overview v1.0 2014.08.28
PPTX
apidays LIVE India - Asynchronous and Broadcasting APIs using Kafka by Rohit ...
PPTX
The Business Value for Internal APIs in the Enterprise
PPTX
Authentication and single sign on (sso)
PPTX
OAuth - Don’t Throw the Baby Out with the Bathwater
PDF
Strong Customer Authentication - All Your Questions Answered
PDF
WSO2 API Platform: Vision and Roadmap
PPTX
apidays LIVE India - 10 steps to secure your API by Pabitra Kumar Sahoo, Qual...
PDF
How APIs Can Be Secured in Mobile Environments
PDF
API strategy with IBM API connect
PDF
Melbourne API Management Seminar
PPTX
Webcast: AWS Sticker Shock? How can containers and automation help?
PDF
API Security In Cloud Native Era
PPTX
IBM API Connect Deployment `Good Practices - IBM Think 2018
PPTX
Overview of API Management Architectures
PDF
apidays LIVE Hong Kong - Orchestrating APIs at Scale by Hieu Nguyen Nhu
PPTX
Deep-Dive: API Security in the Digital Age
PDF
apidays LIVE Paris - Potential of API integrations, common traps and advices ...
Building Sustainable Ecosystems: The Economics of Collaboration
Gravitee.io
Api management introduction and product overview v1.0 2014.08.28
apidays LIVE India - Asynchronous and Broadcasting APIs using Kafka by Rohit ...
The Business Value for Internal APIs in the Enterprise
Authentication and single sign on (sso)
OAuth - Don’t Throw the Baby Out with the Bathwater
Strong Customer Authentication - All Your Questions Answered
WSO2 API Platform: Vision and Roadmap
apidays LIVE India - 10 steps to secure your API by Pabitra Kumar Sahoo, Qual...
How APIs Can Be Secured in Mobile Environments
API strategy with IBM API connect
Melbourne API Management Seminar
Webcast: AWS Sticker Shock? How can containers and automation help?
API Security In Cloud Native Era
IBM API Connect Deployment `Good Practices - IBM Think 2018
Overview of API Management Architectures
apidays LIVE Hong Kong - Orchestrating APIs at Scale by Hieu Nguyen Nhu
Deep-Dive: API Security in the Digital Age
apidays LIVE Paris - Potential of API integrations, common traps and advices ...
Ad

Similar to CloudStack Identity and Access Management (IAM) (20)

PPTX
CloudStack Overview
PPTX
Aws iam best practices to live by
PPTX
IBM Cloud VPC Deep Dive
PDF
AWS Systems Manager
PPTX
AWS Security - An Engineer’s Introduction to AWS Security Auditing using CIS ...
PPTX
AWS Twin Cities Meetup - IAM Deep Dive
PDF
Overview of Amazon Web Services
PDF
CIS 2015 Practical Deployments Enterprise Cloud Access Management Platform - ...
PPTX
IAM Deep Dive - Custom IAM Policies with Conditions
PPTX
Getting Started with Apache CloudStack
PPTX
Aws principle services: IAM,VPC, EC2, Cloudwatch
PPTX
Openstack Icehouse IaaS Presentation
PDF
CloudStack - LinuxFest NorthWest
PPTX
Identity access management (iam)
PPTX
Configure cloud services Presentation.pptx
PDF
CloudStack Architecture and Refactor
PPTX
The fundamentals of AWS Cloud Security 🛠⛅️🚀
PDF
Cloud stack for_beginners
PDF
The Keys To A Successful Identity And Access Management Program: How Does You...
PDF
Oracle Cloud Infrastructure Foundations Associate_Hand-On.pdf
CloudStack Overview
Aws iam best practices to live by
IBM Cloud VPC Deep Dive
AWS Systems Manager
AWS Security - An Engineer’s Introduction to AWS Security Auditing using CIS ...
AWS Twin Cities Meetup - IAM Deep Dive
Overview of Amazon Web Services
CIS 2015 Practical Deployments Enterprise Cloud Access Management Platform - ...
IAM Deep Dive - Custom IAM Policies with Conditions
Getting Started with Apache CloudStack
Aws principle services: IAM,VPC, EC2, Cloudwatch
Openstack Icehouse IaaS Presentation
CloudStack - LinuxFest NorthWest
Identity access management (iam)
Configure cloud services Presentation.pptx
CloudStack Architecture and Refactor
The fundamentals of AWS Cloud Security 🛠⛅️🚀
Cloud stack for_beginners
The Keys To A Successful Identity And Access Management Program: How Does You...
Oracle Cloud Infrastructure Foundations Associate_Hand-On.pdf
Ad

Recently uploaded (20)

PDF
Digital Logic Computer Design lecture notes
PPTX
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
PPT
CRASH COURSE IN ALTERNATIVE PLUMBING CLASS
PPTX
bas. eng. economics group 4 presentation 1.pptx
PPTX
Internet of Things (IOT) - A guide to understanding
PPTX
CYBER-CRIMES AND SECURITY A guide to understanding
PPTX
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
PDF
TFEC-4-2020-Design-Guide-for-Timber-Roof-Trusses.pdf
PPT
Project quality management in manufacturing
PPTX
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
PPTX
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
PDF
composite construction of structures.pdf
PDF
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
PDF
PPT on Performance Review to get promotions
PPTX
UNIT 4 Total Quality Management .pptx
PDF
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
PDF
R24 SURVEYING LAB MANUAL for civil enggi
PDF
Embodied AI: Ushering in the Next Era of Intelligent Systems
PPTX
additive manufacturing of ss316l using mig welding
Digital Logic Computer Design lecture notes
IOT PPTs Week 10 Lecture Material.pptx of NPTEL Smart Cities contd
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
CRASH COURSE IN ALTERNATIVE PLUMBING CLASS
bas. eng. economics group 4 presentation 1.pptx
Internet of Things (IOT) - A guide to understanding
CYBER-CRIMES AND SECURITY A guide to understanding
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
TFEC-4-2020-Design-Guide-for-Timber-Roof-Trusses.pdf
Project quality management in manufacturing
M Tech Sem 1 Civil Engineering Environmental Sciences.pptx
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
composite construction of structures.pdf
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
PPT on Performance Review to get promotions
UNIT 4 Total Quality Management .pptx
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
R24 SURVEYING LAB MANUAL for civil enggi
Embodied AI: Ushering in the Next Era of Intelligent Systems
additive manufacturing of ss316l using mig welding

CloudStack Identity and Access Management (IAM)

  • 1. CloudStack Identity and Access Management (IAM) Min Chen Prachi Damle" Citrix
  • 2. Agenda •  Background •  Our Design Goal •  Architecture •  Implementation •  Use Cases •  Next Steps
  • 3. Background •  Limited IAM Services –  Out-of-box fixed roles (Root Admin, Domain Admin, User) with prebaked access control. –  No support for customized roles creation. –  Special hard-coded access control logic baked in service layer for some resources like networks, affinity group, etc. –  Granting permissions by dedicated APIs is very restrictive.
  • 4. Our Goal Provide True Pluggable IAM Service
  • 5. Our Goal Provide True Pluggable IAM Service
  • 6. What is IAM" " 👩     👨     👦     Permission   Principal   Ac+on   Resource   Permission   Principal   Ac+on   Resource   Permission   Principal   Ac+on   Resource   Policy   Group   Resource   Resource   Resource   Resource   Principal   Principal   Principal   👫   Role   Impersonate   Allow/Deny  
  • 8. Pluggable IAM Service" Host IAM server as an Independent Service listening at an endpoint which CloudStack or other portal services call to do access checks
  • 9. Pluggable IAM Components" •  Server –  An implementation of pure IAM taxonomy independent of CloudStack. –  Out-of-box IAM server implementation based on our IAM schema –  Provide IAM server interface for third-party (LDAP/AD based) to implement a different IAM server. •  Plugin –  A plugin integrated with CloudStack through adapter interfaces: •  APIChecker •  SecurityChecker •  QuerySelector –  Serve new IAM API requests
  • 10. IAM Component Diagram CloudStack   cloud-­‐api   cloud-­‐server   IAM  Service   cloud-­‐plugin-­‐iam   APIChecker   SecurityChecker   QuerySelector   RoleBasedAPIChecker   RoleBasedEn+tyChecker   RoleBasedQuerySelector   IAM  Plugin  APIs   cloud-­‐iam-­‐server   IAM  Server  APIs  
  • 11. IAM Server •  IAM Schema •  Implement IAM Server interface to provide your own 3rd-party IAM server.
  • 12. IAM Plugin •  IAM APIs •  Adapters –  APIChecker –  SecurityChecker •  AccessType –  QuerySelector •  Plugin understands CloudStack’s terminology
  • 13. IAM APIs createIAMGroup   deleteIAMGroup   listIAMGroups   createIAMPolicy   deleteIAMPolicy   listIAMPolicies   addIAMPermissionToIAMPolicy   removeIAMPermissionFromIAMPolicy   addAccountToIAMGroup   removeAccountFromIAMGroup   aDachIAMPolicyToAccount   removeIAMPolicyFromAccount   aDachIAMPolicyToIAMGroup   removeIAMPolicyFromIAMGroup  👩      Account  
  • 14. APIChecker •  CS APIChecker interface •  commands.properties •  RoleBasedAPIAccessChecker –  On startup loads permissions from commands.properties –  checkAccess by listing policy permissions public  interface  APIChecker  extends  Adapter  {          boolean  checkAccess(User  user,    String  apiCommandName)  throws    PermissionDeniedExcep+on;  }   1  =  ADMIN,  2  =  RESOURCE_DOMAIN_ADMIN,  4  =  DOMAIN_ADMIN,  8  =  USER   startVirtualMachine=15  
  • 15. Default CloudStack Policies User  Policy   startVirtualMachine   VirtualMachine   ACCOUNT   $accountId   Permission   User  Group   Domain  Admin  Policy   startVirtualMachine   VirtualMachine   DOMAIN   $domainId   Permission   Domain  Admin  Group   Root  Admin  Policy   startVirtualMachine   VirtualMachine   Scope:  ALL   Permission   migrateVirtualMachine   Permission   Root  Admin  Group   IAM  APIChecker   startVirtualMachine  =  15  
  • 16. SecurityChecker •  CS SecurityChecker interface •  RoleBasedEntityAccessChecker •  Check Policy permissions for the entity and action/accessType •  Only work with ‘Allow’. No ‘Deny’ in this phase. •  AccessType •  ListEntry (read-only access) •  UseEntry (read and use access) •  OperateEntry (operate access) public  interface  SecurityChecker  extends  Adapter  {   boolean  checkAccess(Account  caller,    ControlledEn+ty  en+ty,    AccessType  accessType,  String  ac+on)   throws  PermissionDeniedExcep+on;   }  
  • 17. Access Check Flow 👩     User1   startVirtualMachine  ‘Foo’   👩     User2   💻   Foo   IAM  API  Checker   IAM   SecurityChecker   User  Policy   startVirtualMachine   VirtualMachine   ACCOUNT   $accountId   Permission   User  Group   Domain  Admin  Policy   startVirtualMachine   VirtualMachine   DOMAIN   $domainId   Permission   Domain  Admin  Group   Root  Admin  Policy   startVirtualMachine   VirtualMachine   Scope:  ALL   Permission   Root  Admin  Group   startVirtualMachine  ‘Foo’   👩     Root  Admin   startVirtualMachine  ‘Foo’  
  • 18. IAM QuerySelector •  QuerySelector => RoleBasedQuerySelector public  interface  QuerySelector  extends  Adapter  {              List<Long>  getAuthorizedDomains(Account  caller,  String  en+tyType,  AccessType  accessType);              List<Long>  getAuthorizedAccounts(Account  caller,  String  en+tyType,  AccessType  accessType);              List<Long>  getAuthorizedResources(Account  caller,  String  en+tyType,  AccessType  accessType);              boolean  isGrantedAll(Account  caller,  String  ac+on,  AccessType  accessType);              List<String>  listIAMGroupsByAccount(long  accountId);     }      
  • 19. Custom Policy •  Use Case: Domain admin wants to grant “read only access” to all VMs of his domain to some service desk accounts. Service  Desk   Group   ReadOnlyPolicy   listVirtualMachines   VirtualMachine   DOMAIN   $domainId   Permission   👩     👨     addAccountToIAMGroup   aAachIAMPolicyToIAMGroup  
  • 20. VMOpPolicy   Cross-Account Grant •  Use Case: Account A has a VM foo, and she wants to grant Account B to Start/Stop her VM foo. startVirtualMachine   VirtualMachine   RESOURCE   foo   Permission   stopVirtualMachine   VirtualMachine   RESOURCE   foo   Permission   👩     👨     A   B   💻   Foo  
  • 21. Next Step •  Integrate IAM model with all CloudStack access control logic –  Shared and isolated networks –  Handle non ControlledEntity like Zone and Service Offering(Disk offering, Network Offering) –  Dedicated resource feature •  Provide UI support for IAM APIs. •  Handle JSON based policy definition.
  • 22. References •  Functional Spec: https://cwiki.apache.org/confluence/display/CLOUDSTACK/CloudStack +IAM+guidelines+for+API+and+Service+Layer •  Guidelines for Developers: https://cwiki.apache.org/confluence/display/CLOUDSTACK/CloudStack +IAM+guidelines+for+API+and+Service+Layer