Skip to content

Commit 5a58ffe

Browse files
Merge pull request #1863 from ThumulaPerera/update-authz-docs
Update authz docs
2 parents c073b52 + 47d9279 commit 5a58ffe

File tree

15 files changed

+413
-256
lines changed

15 files changed

+413
-256
lines changed

en/developer-docs/docs/administer/control-access-in-the-choreo-console.md renamed to en/developer-docs/docs/administer/configure-access-control.md

Lines changed: 14 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,19 @@
1-
# Control Access in the Choreo Console
1+
# Configure Access Control
22

3-
In the Choreo Console, you have the ability to manage access to projects and the actions that can be performed within them. Administrators have the capability to restrict project access to specific user groups. This feature is useful when you need certain user groups to have access to particular projects or for a set of projects.
3+
Before configuring access control in Choreo, review the [Access Control Concepts](../choreo-concepts/access-control.md).
44

5-
Choreo uses **Roles**, **Groups**, and a **Mapping level** to control access to the Choreo Console as follows:
5+
Now, let’s walk through a sample scenario for granting access to a specific environment within a project.
66

7-
- **Role** : Role is a collection of permissions. Choreo has a predefined set of roles with permissions assigned to them. [Learn more](../choreo-concepts/organization.md#roles)
8-
- **Group** : Group is a collection of users. A user group requires a role or multiple roles to be assigned to it so that the users in those groups get the relevant permissions via the assigned roles. [Learn more](../choreo-concepts/organization.md#groups)
9-
10-
- **Mapping level** : A mapping level defines the extent at which a role-group mapping can be done. Choreo has two defined resource levels.
11-
- **Organization** : You can assign a role to a group or associate a group with a role within the organization. This ensures that
12-
all users in a group inherit the permissions granted by that role across all organizational resources.
13-
For example, if a user has edit_project permission at the organization mapping level, that user can edit all the projects in the organization.
14-
- **Project** : You can assign a role to a group or associate a group with a role within a specific project resource. This ensures
15-
that users in the group inherit the permissions granted by that role only within the context of the specified project.
16-
For example, If a user has edit_project permission at the project mapping level, that user can only edit the specified project.
17-
18-
19-
In Choreo, authorization operates by assigning a role to a group at a specified level. The level at which the role is assigned determines the extent of permissions granted to users.
20-
21-
!!! warning "Important"
22-
Avoid assigning multiple roles to a single user across different projects or levels (organization and project). Such assignments can grant users unintended permission to some projects, allowing them to perform tasks they shouldn't have access to. Therefore, it is recommended to assign only one role to a user across projects or levels to ensure proper access control.
23-
24-
!!! info
25-
In Choreo, organization-level permissions take precedence over project-level permissions.
26-
27-
To elaborate further, refer to the following diagram.
28-
29-
The following diagram depicts a role-group assignment at a specific resource level. In the diagram, an admin user has assigned the Developer role to all members of the Engineering group within the Engineering Project. This grants users in the Engineering group the ability to perform all actions allowed by the Developer role within the Engineering Project.
30-
31-
![Console access control](../assets/img/administer/access-control-to-console.png)
32-
33-
## Sample scenario
34-
35-
Now that you understand the basic concepts of access control within the Choreo Console, let’s try out a sample scenario to manage access within a project.
36-
37-
Assume you are overseeing the Engineering Project within your organization and you need to grant development access to specific users solely within this project. Here's a step-by-step guide on how to achieve this:
7+
Assume you are overseeing the Engineering Project within your organization and you need to grant development access to specific users solely within this project. As they are developers, you further need to restrict their access to the Development environment of the project. Here's a step-by-step guide on how to achieve this:
388

399
### Step 1: Create a project
4010

4111
Follow the steps given below to create a project:
4212

43-
1. Go to the [Choreo Console](https://console.choreo.dev/) and sign in. This opens the organization home page.
13+
1. Go to [https://console.choreo.dev/](https://console.choreo.dev/) and sign in. This opens the organization home page.
4414
2. On the organization home page, click **+ Create Project**.
4515
3. Enter a display name, unique name, and description for the project. You can enter the values given below:
46-
16+
4717
!!! info
4818
In the **Name** field, you must specify a name to uniquely identify your project in various contexts. The value is editable only at the time you create the project. You cannot change the name after you create the project.
4919

@@ -80,21 +50,21 @@ Follow the steps given below to assign the **Developer** role to the **Engineeri
8050
2. In the left navigation menu, click **Settings**.
8151
3. Click the **Access Control** tab and then click the **Groups** tab.
8252
4. On the **Groups** tab, search for the **Engineering Project Developer** group and click the corresponding edit icon.
83-
5. Click **+Add Roles**.
84-
6. In the **Add Roles to Group in Project** dialog that opens, click the **Roles** list and select **Developer**.
85-
7. Click **Add**. This assigns the **Developer** role to the group. You should see the mapping level as **Project (Engineering Project)** as follows, indicating the scope of the mapping:
86-
87-
![Mapping level](../assets/img/administer/mapping-level.png)
53+
5. Click **+Assign Roles**.
54+
6. In the **Assign Roles to Group in Project** dialog that opens, click the **Roles** list and select **Developer**.
55+
7. Click **Selected Environments** radio button under **Applicable Environments**
56+
8. Select **Development** environment from the environment selecction dropdown
57+
7. Click **Assign**. This assigns the **Developer** role to the group. You should see the mapping level as **Project (Engineering Project)** and Applicable Environment as **Development** indicating the type of the asssignment:
8858

89-
This means that you have granted developer access to users in the Engineering Project Developer group in the scope of the Engineering Project.
59+
This means that you have granted developer access to users in the Engineering Project Developer group in the scope of the Development environment of the Engineering Project.
9060

9161
Now that you have set up access control, you can proceed to add users to the new group.
9262

9363
### Step 4: Add users to the group
9464

9565
There are two approaches you can follow to add users to the group.
9666

97-
#### Add a new user as a project developer
67+
#### Add a new user as a project developer
9868

9969
Follow the steps given below to add a new user as a project developer:
10070

@@ -107,7 +77,7 @@ Follow the steps given below to add a new user as a project developer:
10777
2. Click the **Groups** list and select **Engineering Project Developer**.
10878
6. Click **Invite**.
10979

110-
#### Add an existing user as a project developer
80+
#### Add an existing user as a project developer
11181

11282
Follow the steps given below to add an existing user as a project developer:
11383

en/developer-docs/docs/administer/inviting-members.md

Lines changed: 0 additions & 3 deletions
This file was deleted.

en/developer-docs/docs/administer/manage-members-of-an-organization.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
An organization in Choreo is a logical grouping of users and user resources. A first-time user must create an organization and be a user of it when signing in to Choreo. Users and resources in an organization cannot access resources in another organization unless an admin of the other organization invites them and adds them as a user of that organization.
44

5-
{% include "inviting-members.md" %}
5+
## Inviting users
6+
7+
An organization administrator can invite users to the organization by assigning them specific [groups](../choreo-concepts/access-control.md#group). Invited users receive an invitation via email. An invited user must accept the invitation to join the organization and access the resources of that organization.
68

79
## Manage user permission
810

9-
For details on how Choreo manages user permission, see [Manage user permission](../choreo-concepts/organization.md#manage-user-permission).
11+
For details on how Choreo manages user permission, see [Access Control](../choreo-concepts/access-control.md).
Binary file not shown.
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# Access Control
2+
3+
With Choreo, administrators can control user access to different projects and environments within the organization.
4+
At the finest granularity level, an administrator can restrict a user to perform a specific action on a specific project and a specific environment.
5+
6+
## Fundamental Question in Access Control
7+
8+
Access control in any system ultimately comes down to answering the following question.
9+
10+
> *Can this **user** perform this **action** on this **resource**?*
11+
12+
???+ example
13+
Can Harry view logs of development environment of engineering project?
14+
15+
- `Harry` is the **user**
16+
- `view logs` is the **action**
17+
- `development environment of engineering project` is the **resource**
18+
19+
## Permission
20+
21+
In Choreo access control model, a permission is the right to perform a specific action.
22+
23+
???+ example
24+
A user can create a component only if the user has `Create Component` permission.
25+
26+
### Environment Specific Permissions
27+
28+
In Choreo, actions such as `deploy component`, `promote component`, `create configuration groups`, and `view logs` must be performed within the context of an environment. The permissions which give the right to perform such actions are categorized as **Environment Specific** permissions.
29+
30+
!!! note
31+
For actions tied to an environment, it is sometimes necessary to allow a user to perform the action in certain environments but not in others; for example, a developer may be allowed to view logs in the development environment but not in the production environment.
32+
33+
## Role
34+
35+
Assigning permissions individually to each user is a time-consuming and error prone task. Users with similar job responsibilities often need the same set of permissions, which is why **roles** exist. A role is a collection of permissions designed to reflect real-world job responsibilities.
36+
37+
Roles simplify permission management. For example, instead of assigning 20 permissions to each of 50 developers (1000 assignments), you can assign the 20 permissions to a Developer role and then assign that role to each developer (20 + 50 assignments).
38+
39+
!!! info
40+
Each organization in Choreo comes with a set of predefined roles with default permissions. Organization administrators can customize these roles or create new ones as needed.
41+
42+
## Group
43+
44+
A group is a collection of users, usually organized by team or department.
45+
46+
Instead of assigning a role to each user, you assign the role to the group. Every user in the group automatically gets the group’s permissions. This makes updates easier. For example, instead of removing 50 role-to-user assignments and creating 50 new ones, you only need to remove one role-to-group assignment and add one new assignment.
47+
48+
!!! info
49+
Each organization in Choreo comes with a set of predefined groups. By default, each group is mapped to a role with the same name. Organization administrators can customize these groups or create new ones as needed.
50+
51+
## Permission to Role Assignment
52+
53+
In Choreo, all permission-to-role assignments apply across the organization. You can’t restrict these assignments to specific resources. For example, you can’t configure Choreo to grant the `View Logs` permission to the `Developer` role only in the Development environment of the Engineering project.
54+
55+
## Role to Group Assignment
56+
57+
The real strength of Choreo Access Control comes from role-to-group assignments. These assignments can include resource-specific restrictions. For example, you can assign the `Developer` role to the `Engineering Project Developer` group, but limit it to the Development environment of the Engineering project.
58+
59+
Each role-to-group assignment has two attributes:
60+
61+
1. **Mapping Level** : Defines whether the assignment applies to the entire `Organization` or only to a specific `Project`.
62+
2. **Applicable Environment** : Defines whether the assignment applies to `All` environments or only to a specific `Environment`.
63+
64+
By combining these attributes, you can create four types of assignments.
65+
66+
|Assignment Type|Mapping Level|Appicable Environment|
67+
|-|-|-|
68+
|`Organization Scoped`|Organization|All|
69+
|`Project Scoped`|Project|All|
70+
|`Environement Scoped`|Organization|Environment|
71+
|`Project-Environment Scoped`|Project|Environment|
72+
73+
!!! warning "Important"
74+
Avoid assigning multiple roles to the same group across different projects or mapping levels (organization and project). Doing so can give users unintended permissions in some projects, allowing access to tasks they shouldn’t perform. To ensure proper access control, assign only one role to a group across projects or mapping levels.
75+
76+
## Extent of Access granted through different Role to Group assignment types
77+
78+
Recall the [Fundamental Question in Access Control](#fundamental-question-in-access-control).
79+
80+
> *Can this **user** perform this **action** on this **resource**?*
81+
82+
Based on this question, the extent of access has two parts.
83+
84+
1. Allowed **actions**
85+
86+
2. Allowed **resources** (the resources on which those actions can be performed)
87+
88+
Next, let’s go through each role-to-group assignment type to see the extent of access it grants. We’ll look at both the allowed **actions** and the allowed **resources**.
89+
90+
### Organization Scoped Assignments
91+
92+
- Actions permitted by the role are allowed on resources within the organization.
93+
- All other actions are not allowed.
94+
95+
!!! note
96+
Actions permitted by a role are the actions linked to the permissions assigned to the role.
97+
98+
### Project Scoped Assignments
99+
100+
- Actions permitted by the role are allowed on resources within the specific project.
101+
- All other actions are not allowed.
102+
103+
### Environement Scoped Assignments
104+
105+
- Environment specific actions permitted by the role are allowed on resources within the specific environment of the organization.
106+
- Other actions permitted by the role are allowed on resources within the organization.
107+
- All other actions are not allowed.
108+
109+
!!! note
110+
**Environment specific actions** permitted by a role are the actions linked to the [**environment specific permissions**](#environment-specific-permissions) assigned to the role.
111+
112+
For environement scoped assignments, allowing **non environment specific** actions on resources across organization is intentional. This design aligns with real world Access Control use cases.
113+
114+
!!! example
115+
Suppose you assign the Developer role to the Engineering Developer group, but only for the Development environment of the Engineering project. The purpose of this assignment is not to prevent developers from performing actions like `build component`, which don’t depend on a specific environment. Instead, the goal is to restrict developers from performing actions such as `promote component` on environments they aren’t authorized to access, like Production.
116+
117+
!!! warning "Important"
118+
Exercise care when creating environment scoped role-to-group assignments. Only environment specific actions are restricted to that environment; all other actions remain allowed on resources across the organization.
119+
120+
### Project-Environment Scoped Assignments
121+
122+
- Environment Specific actions permitted by the role are allowed on resources within the specific Environment of the specific Project.
123+
- Other actions permitted by the role are allowed on resources within the specific Project.
124+
- All other actions are not allowed.
125+
126+
Similar to previous case, allowing **non environment specific** actions on resources across project is intentional. This design aligns with real world Access Control use cases.
127+
128+
!!! warning "Important"
129+
Exercise care when creating project-environment scoped role-to-group assignments. Only environment specific actions are restricted to that environment; all other actions remain allowed on resources across the project.
130+
131+
Now that you understand the access control concepts in Choreo, see [Configure Access Control](../administer/configure-access-control.md) for a walkthrough on how to set it up.

en/developer-docs/docs/choreo-concepts/organization.md

Lines changed: 4 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -6,44 +6,13 @@ An organization in Choreo is a logical grouping of users and user resources. A f
66

77
If you are a member of more than one organization, you can switch from one organization to another when necessary. To do this, select the required organization from the **Organization** list in the Choreo Console header.
88

9-
{% include "../administer/inviting-members.md" %}
9+
## Inviting users
1010

11-
## Manage user permission
12-
13-
Choreo manages user permissions with groups and roles.
14-
15-
### Groups
16-
17-
A group in Choreo is a collection of users, each with one or more roles assigned to them. Users within a group inherit the permissions associated with the roles assigned to that group. For instance, if a user is added to the `API Publisher` group, they will automatically receive the `API Publisher` role.
18-
19-
Choreo comes with predefined groups already configured with specific roles, as follows:
11+
An organization administrator can invite users to the organization by assigning them specific [groups](../choreo-concepts/access-control.md#group). Invited users receive an invitation via email. An invited user must accept the invitation to join the organization and access the resources of that organization.
2012

21-
- **API Publisher**: A collection of users who have the API Publisher role.
22-
- **API Subscriber**: A collection of users who have the API Subscriber role.
23-
- **Admin** : A collection of users who have the Admin role.
24-
- **Billing Admin** : A collection of users who have the Billing Admin role.
25-
- **Choreo DevOps** : A collection of users who have the Choreo DevOps role.
26-
- **Developer** : Users who develop, deploy, and manage cloud native applications at scale.
27-
- **External API Subscriber**: A collection of users who have the External API Subscriber role.
28-
29-
When creating a new group to invite members, be sure to assign a role to the group to ensure users have the required permissions.
30-
31-
### Roles
32-
33-
Choreo roles are defined as follows:
34-
35-
- **Admin**: Performs all administrative tasks including user management, Developer Portal customization, project management, analytics configuration, and domain management.
36-
- **API Publisher**: Discovers, creates, publishes, deletes, tests, and manages APIs.
37-
- **API Subscriber**: Subscribes to APIs, manages subscriptions and applications, and generates and manages API keys.
38-
- **Billing Admin**: Handles billing administration including viewing tiers, managing organizations and invoices, and managing subscriptions and payment methods.
39-
- **Choreo DevOps**: Manages deployment, monitoring, and reliability of components in Choreo.
40-
- **Choreo Platform Engineer**: Performs infrastructure, governance, service mesh, and monitoring tasks.
41-
- **Developer**: Develops, deploys, and manages cloud-native applications at scale.
42-
- **External API Subscriber**: Consumes APIs with Developer Portal access and can join an organization exclusively for API usage.
43-
- **Environment Manager (Deprecated):** Previously responsible for managing deployment environments.
44-
- **Viewer**: Views and monitors applications, APIs, and environments without making changes.
13+
## Manage user permission
4514

46-
_Note: The **Choreo DevOps** role has been replaced with the **Choreo Platform Engineer** role. However, organizations that previously had Choreo DevOps role will continue to see and use both roles with their existing functionality._
15+
For details on how Choreo manages user permission, see [Access Control](access-control.md).
4716

4817
## Organization ID
4918

0 commit comments

Comments
 (0)