Skip to content

Commit 1f6cf85

Browse files
committed
feat: Rework domain-manager standard
Life shows that not all CSPs are capable to adopt the domain manager requirement due to certain architecture decisions or security requirement. Suggest a rework that splits requirements into mandatory and recommended. Signed-off-by: Artem Goncharov <[email protected]>
1 parent e42f64e commit 1f6cf85

File tree

1 file changed

+143
-0
lines changed

1 file changed

+143
-0
lines changed
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
---
2+
title: Domain Manager adoption notes
3+
type: Standard
4+
track: IAM
5+
status: Draft
6+
replaces: scs-0302-v1-domain-manager-role.md
7+
---
8+
9+
## Introduction
10+
11+
After the domain manager persona has been implemented certain issues in the
12+
standard adoption and verification started being raised by CSPs:
13+
14+
- Not every CSP is using domains to separate customers.
15+
16+
- CSP may rely on the Identity federation in which case it is impossible or is
17+
prohibited to manage identities on OpenStack side (OpenStack is a service
18+
provider and not an identity provider).
19+
20+
- CSP may customize authorization policies in a different way so that domain
21+
manager can not be implemented by simply reusing the upstream implementation.
22+
23+
As such simple enforcement of the Domain Manager persona can not be achieved.
24+
25+
This standard clarifies base standard and splits requirements into recommended
26+
and mandatory to provide better granularity while still giving guidance with
27+
the goal to provide a smooth user experience for the end users.
28+
29+
Requiring customer to use CSP specific APIs to manage identity data is
30+
contradicting with the idea of certification as such. It hinders customers from
31+
having a smooth user experience across different cloud providers forcing them
32+
to adapt their management strategies on such clouds. Moreover it represent a
33+
lock-in what is contradicting with the idea of SovereignCloudStack.
34+
35+
### Mandatory capabilities
36+
37+
#### Assign roles to users/group on projects/domain
38+
39+
One of the main initial concerns of the Domain Manager was the ability of the
40+
customer to manage user permissions in a self-service manner. OpenStack
41+
Keystone provides an easy possibility to smoothly integrate role assignments
42+
with arbitrary external systems in a transparent way (a role assignment backend
43+
plugin can be provided to persist assignments in any external system). As such
44+
this capability MUST be supported by the CSP using OpenStack APIs or role
45+
assignments.
46+
47+
#### Project creation
48+
49+
Another important requirement was to provide self-service capability for
50+
customers to create projects as desired without requesting CSP support. This
51+
capability MUST be available using native cloud APIs.
52+
53+
#### Project editing
54+
55+
Customer must be able to activate or deactivate project access without
56+
requesting CSP support. This capability provides possibility to temporarily
57+
disable users to authorize into certain project by modifying`enabled` property
58+
of the project. Further control of the project name, description, options and
59+
tags MUST be provided to the customer using native Keystone API.
60+
61+
:::info
62+
63+
Project deletion using Keystone API is not mandatory since CSP may have certain
64+
expectations on the resources cleanup. This requirement is described in detail
65+
in a dedicated chapter.
66+
67+
:::
68+
69+
### Recommended capabilities
70+
71+
Relying on the Identity federation conceptually changes ways of identity
72+
resource management. This makes it impossible to fulfill them as MUST
73+
requirements. This chapter describes remaining capabilities of the initial
74+
Domain Manager as SHOULD implement.
75+
76+
#### Domains usage
77+
78+
It is strongly suggested to rely on the Domain concept of Keystone to implement
79+
multi-tenancy.
80+
81+
Usage of domains by itself allows to implement form of self-service management
82+
by the customer. Only identity resources are owned by domains (with projects
83+
being also identity resources). Other services use projects to for resources
84+
isolation. They do not need to be domain aware.
85+
86+
Using domains allows implementing [domain
87+
limits](https://docs.openstack.org/keystone/latest/admin/unified-limits.html#domain-limits)
88+
which allow to set a global resources limit for the customer. Without domains
89+
specific limits artificial control of the overall customer consumption must be
90+
implemented.
91+
92+
#### User management
93+
94+
User management (creation, activation, deactivation, deletion) SHOULD be
95+
possible using OpenStack APIs.
96+
97+
When an external IdP is being used (IdP federation) there is still an
98+
expectation that local users may be required by customers. As such creation of
99+
users (pre-creating federated users or regular local users) within customer
100+
domain SHOULD me possible. Keystone does not allow certain operations on
101+
federated users (i.e. password change, MFA, name) as such allowing customers to
102+
manage users using OpenStack APIs should not conflict with any additional
103+
requirements.
104+
105+
Security requirements on the customer side or on the CSP side to only allow
106+
federated users to consume platform services was used as the limitating factor
107+
forcing degrading of the capability requirement.
108+
109+
#### Group management
110+
111+
Management of groups SHOULD be possible using OpenStack APIs.
112+
113+
In case of federated Identities there it is possible that groups on the IdP
114+
side do not match groups on the cloud provider side. In addition to that there
115+
might be a need to combine federated and local users. This would only be
116+
possible when groups are managed by the OpenStack.
117+
118+
It is advised to keep user groups as mapped entities between external systems
119+
of CSP and Keystone. Upon user login (or using SCIM) user group relation may be
120+
synchronized between both platforms.
121+
122+
#### Project deletion
123+
124+
As described above project deletion may be implemented differently by CSPs.
125+
There are few ways of achieving that:
126+
127+
- Forbid project deletion when resources (i.e. VMs) are still provisioned
128+
inside of those projects. This scenario assumes that the customer is
129+
responsible for cleaning projects before their deletion.
130+
131+
- Automatically purge all project resources by the CSP when project deletion
132+
request is received. In this scenario CSP is implementing custom functionality
133+
to delete all resources before deleting the project.
134+
135+
- Leave orphant resources. In this scenario project is being deleted by the API
136+
with custom cleanup procedures being responsible for dropping orphant resources.
137+
138+
Leaving orphant resources MAY NOT be allowed.
139+
140+
Forbidding project deletion making customer responsible for the cleanup SHOULD
141+
be preferred since it allows preventing the accidental deletion of the
142+
resources. Supplementary methods for purging project resources MAY be offered by
143+
the CSP.

0 commit comments

Comments
 (0)