Flat no more! Hierarchical multitenancy and projects acting as - - PowerPoint PPT Presentation

flat no more hierarchical multitenancy and projects
SMART_READER_LITE
LIVE PREVIEW

Flat no more! Hierarchical multitenancy and projects acting as - - PowerPoint PPT Presentation

Flat no more! Hierarchical multitenancy and projects acting as domains in OpenStack Andrey Brito, Henrique Truta and Raildo Mascena Universidade Federal de Campina Grande 1 Presenters Andrey Brito Professor - Universidade Federal de Campina


slide-1
SLIDE 1

Flat no more! Hierarchical multitenancy and projects acting as domains in OpenStack

1

Andrey Brito, Henrique Truta and Raildo Mascena

Universidade Federal de Campina Grande

slide-2
SLIDE 2

Andrey Brito

Professor - Universidade Federal de Campina Grande (Brazil)

Henrique Truta

Lead Software Engineer - Universidade Federal de Campina Grande (Brazil) OpenStack ATC

Raildo Mascena

Software Engineer - Universidade Federal de Campina Grande (Brazil) OpenStack ATC

Presenters

2

slide-3
SLIDE 3

Agenda

  • Introduction of OpenStack
  • Introduction of Keystone
  • Hierarchical Multitenancy
  • Nested Quotas
  • Projects acting as domains
  • Next steps

3

slide-4
SLIDE 4

4

slide-5
SLIDE 5

Keystone

  • The OpenStack component responsible for Identity management

○ Authorization ○ Authentication ○ Audit

  • Supports multiple Identity providers

○ Federation

  • Support for auth backends and frameworks such as LDAP and OAuth
  • Enables Multitenancy

5

slide-6
SLIDE 6

Multitenancy:

“A single instance of software that runs on a server and serves multiple tenants. A tenant is a group of users who share a common access with specific privileges to the software instance”

6

slide-7
SLIDE 7

A bit of history

7

slide-8
SLIDE 8

Multitenancy in OpenStack

  • From Austin to Cactus:

○ One user → One tenant ○ A user could not belong to more than one tenant ○ Nova handled the authentication

  • From Diablo to Folsom:

○ Keystone released in Diablo with API 2.0 ○ Kept the “one user → one tenant” model ○ Simple RBAC existed: Hardcoded to admin and member operations

8

slide-9
SLIDE 9

Multitenancy in OpenStack

  • Grizzly and Havana:

○ v3 release

■ Domains introduced: Container of projects ■ Tenants became projects ■ Users no longer belong to the tenant, but to the domain

○ One user → Many projects ○ RBAC via policy file introduced ○ “admin” role is global

9

slide-10
SLIDE 10

Multitenancy in OpenStack

  • Icehouse and Juno:

○ First efforts to eliminate global admin ○ Improvements on domain usage

■ Domain specific backends ■ Possibility of domain policy enforcement

  • And Kilo...

10

slide-11
SLIDE 11

Hierarchical Multitenancy

11

slide-12
SLIDE 12

How to better represent that?

12

UFCG CLOUD LSD ANALYTICS SPLAB FOGBOW OPENSTACK BIGDATA

DIFERENTONA

PRE SMART CITIES KEYSTONE IRONIC MONASCA DEV CI ...

slide-13
SLIDE 13

‘ Project . Project . Domain Project . Project . Project .

Workaround in a flat way

13

Domain

· UFCG Cloud · LSD · LSD_Fogbow · LSD_BigData · LSD_OpenStack_Keystone · LSD_OpenStack_Ironic · LSD_OpenStack_Monasca · Analytics · Analytics_Research

Project

slide-14
SLIDE 14

Subproject Project Domain Domain Subproject Subproject Subproject Project Project

Hierarchical Multitenancy

· UFCG Cloud · LSD · OpenStack · Keystone · Monasca · FOGBOW · Dev · CI · Analytics · ... Hierarchical Multitenancy (HMT)

14

slide-15
SLIDE 15

Basic operations

14

Operation OpenStack Call Create

project create <p-name> [ --parent <parent_name> ]

Read

project show <p-name> [ --parents ][ --subtree ]

Update

project set <p-name> --description <p-description>

Delete

project delete <p-name>

15

slide-16
SLIDE 16

How can we improve the access control?

16

slide-17
SLIDE 17

Henrique as PM Henrique as Project Manager Henrique as PM

How to grant a role to a user on a project subtree? · UFCG Cloud · LSD · OpenStack · Keystone · Monasca · Fogbow · Dev · CI · Analytics · ...

17

Usual role assignments

slide-18
SLIDE 18

Henrique as Project Manager

Inherited role assignments

· UFCG Cloud · LSD · OpenStack · Keystone · Monasca · Fogbow · Dev · CI · Analytics · ... Keystone Inherited Roles Assignment Concept

18

slide-19
SLIDE 19

Role assignment operations

Operation OpenStack Call Create

role add <r-name> --user <u-name> --project <p-name> [ --inherited ]

Read

role assignment list --user <u-name> [ --inherited | --effective ]

Delete

role remove <r-name> --user <u-name> --project <p-name> [ --inherited ]

19

slide-20
SLIDE 20

Set Up

· UFCG Cloud · LSD domain create lsd · OpenStack Henrique as PM project create openstack --domain lsd · Keystone project create keystone --domain lsd --parent openstack · Monasca project create monasca --domain lsd --parent openstack

· Projects Hierarchy · User & Grant

  • user create henrique--domain lsd --password tough_password
  • role add project_manager --user henrique --project openstack --inherited

20

slide-21
SLIDE 21

Enforcing quota

21

slide-22
SLIDE 22

The current quota implementation

  • The existing driver is useful to enforce quotas when projects are independent,

but...

○ A quota for a subproject can exceed its parent’s quota ○ The project manager cannot control the subprojects’ quotas

  • Others services do not support domains

○ Consequently, there are no quotas for domains ○ If you want project admins to handle their own users (i.e., give them domains), then you cannot control their quotas

22

slide-23
SLIDE 23

Quota Instance = 60 Quota Instance = 30 Quota Instance = 70 Quota Instance = 10 Quota Instance = 100 Quota Instance = 50

Current Quota Driver

· UFCG Cloud · LSD · OpenStack · Keystone · Monasca · Fogbow · Dev · CI · Analytics · ... Nested Quota

23

slide-24
SLIDE 24

Nested Quota

  • New driver that enforces quotas in nested projects
  • Allocate part of the parents’ quota to their subtree

○ The project manager shares his quota: split his resources among his subprojects ○ Quota for a subproject will always be lower than its parent project

24

slide-25
SLIDE 25

Quota Instance = 60 Quota Instance = 30 Quota Instance = 70 Quota Instance = 10 Quota Instance = 100 Quota Instance = 50

Current Quota Driver

· UFCG Cloud · LSD · OpenStack · Keystone · Monasca · Fogbow · Dev · CI · Analytics · ... Nested Quota

25

slide-26
SLIDE 26

Quota Instance = 30 Quota Instance = 30 Quota Instance = 70 Quota Instance = 10 Quota Instance = 100 Quota Instance = 50

Nested Quota

· UFCG Cloud · LSD · OpenStack · Keystone · Monasca · Fogbow · Dev · CI · Analytics · ... Nested Quota

26

slide-27
SLIDE 27

What is the expected visibility of the cloud admin?

27

slide-28
SLIDE 28

Cloud admin delegating control

28

Cloud admin creates domain and gives to the PM

Domain

CA

P

PM PM creates users, hierarchies and is able to set unlimited quotas

P

Sets quota=100.000 S e t s q u

  • t

a = 1 .

CA creates A domain

slide-29
SLIDE 29

Cloud admin controlling

29

Cloud admin creates domain, but it will not be a black box anymore

Domain

CA

P

PM PM contacts CA when needs an operation like project creation and quota sets

P

Sets quota=100

CA creates contacts

S e t s q u

  • t

a = 2

A domain

slide-30
SLIDE 30

Challenge: Give project managers the control

  • f their resources, without giving

them all resources of the cloud

30

slide-31
SLIDE 31

Projects acting as domains

31

slide-32
SLIDE 32

Subproject Project Domain Domain Subproject Subproject Subproject Project Project

Representing with HMT

· UFCG Cloud · LSD · OpenStack · Keystone · Monasca · Fogbow · Dev · CI · Analytics · ... HMT

32

slide-33
SLIDE 33

Subproject Project Project that acts as a Domain Project that acts as Domain Subproject Subproject Subproject Project Project

New Representation with PAAD

· UFCG Cloud · LSD · OpenStack · Keystone · Monasca · Fogbow · Dev · CI · Analytics · ... Projects Acting as Domains (PAAD)

33

slide-34
SLIDE 34

What has changed

  • “LSD” is now a project (but also a domain)

○ Internally represented by the flag “is_domain” ○ It is still the container of users and projects

  • But now the cloud admin is able to set its quota
  • And the project managers can distribute their quota across the tree, as they

creates subprojects

34

slide-35
SLIDE 35

Creating a new hierarchy

35

slide-36
SLIDE 36

Step 1: Cloud admin creates the project that acts as a domain

36

POST /v3/projects Body: { “name”: “LSD”, “description”: “My root project that acts as a domain”, “is_domain”: true } LSD

is_domain=True parent_id=None domain_id=None

slide-37
SLIDE 37

Alternative step 1: Using the domain API

37

POST /v3/domains Body: { “name”: “LSD”, “description”: “My root project that acts as a domain” } In the CLI: domain create lsd --description “My root project that acts as a domain” LSD

is_domain=True parent_id=None domain_id=None

slide-38
SLIDE 38

Step 2: User creates a regular project

POST /v3/projects Body: { “name”: “OpenStack”, “description”: “Project of OpenStack group”, “is_domain”: false, “parent_id”: <lsd id> } In the CLI: project create openstack --parent lsd --domain lsd

38

LSD

is_domain=True parent=None domain=None is_domain=False parent=LSD domain=LSD

OpenStack

slide-39
SLIDE 39

POST /v3/projects Body: { “name”: “National marketing”, “description”: “Project of keystone team”, “is_domain”: false, “parent_id”: <openstack id> } In the CLI: project create keystone --parent

  • penstack --domain lsd

Step 3: User creates subprojects

39

LSD

is_domain=True parent=None domain=None is_domain=False parent=LSD domain=LSD

OpenStack

is_domain=False parent=OpenStack domain=LSD

Keystone

slide-40
SLIDE 40

Summary & Next steps

40

slide-41
SLIDE 41

Summary

  • Hierarchical Multitenancy enables better management of resource
  • It is a combination of several features

○ Creating hierarchical relationships between projects ○ Assigning roles to users in projects using these hierarchical ○ Managing resource limits hierarchically ○ Delegating control of a subtree

41

slide-42
SLIDE 42

Next steps: Reseller

  • Subprojects may want to manage their users from the parent
  • Delegating user management across the tree

○ Subprojects manage their own users, acting also as domains ○ Resource usage controlled by the parent PM ○ Different user backends (LDAP, SQL, AD)

  • Enables reselling part of the resources

42

slide-43
SLIDE 43

Next steps: Reseller

43

LSD OpenStack Keystone

Fogbow

LDAP backend SQL backend Dev Ironic CI

slide-44
SLIDE 44

Next steps: Nested Quota

  • Already works on Cinder
  • Under review in Nova

○ But there is work to do: a common quota library for all services ○ Contributors are welcome ■ Contribute code ■ Share use cases ■ Review! ■ Channel: #openstack-quota

44

slide-45
SLIDE 45

45

Next steps: UX

slide-46
SLIDE 46

46

Next steps: UX

slide-47
SLIDE 47

Besides us, a couple more users believe this is pretty relevant

47

slide-48
SLIDE 48

48

slide-49
SLIDE 49

Thank you!

Flat no more! Hierarchical multitenancy and projects acting as domains in OpenStack {andrey, henrique, raildo}@lsd.ufcg.edu.br IRC: abrito, htruta, raildo

49