Skip to content

Commit 786770a

Browse files
authored
chore: admin access management review (#447)
1 parent d1dd6c6 commit 786770a

15 files changed

+187
-216
lines changed
Lines changed: 41 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,58 @@
1-
# Folders
1+
# Folders Storage
22

3-
## About Folders Storage
3+
## Introduction
44

5-
The Folders Storage section of DIAL Admin lets you control which users or roles can browse and access different directories in the [Assets (Prompts & Files) area](/docs/tutorials/3.admin/assets-files.md). On this screen, you can define per-folder Access Control Lists (ACLs) rules.
5+
Folders Storage displays the current structure and content of the **Public** folder of the DIAL file storage.
66

7-
## Folders List
7+
> Refer to [Access Control](/docs/platform/3.core/2.access-control-intro.md) to learn more about Private and Public logical spaces for objects storage in DIAL.
88
9-
The **Folders Storage** section is where you manage all folders and their hierarchy.
9+
## Folders
1010

11-
![ ](img/img_46.png)
11+
Objects ([applications](/docs/tutorials/3.admin/assets-applications.md), [files](/docs/tutorials/3.admin/assets-files.md), [prompts](/docs/tutorials/3.admin/assets-prompts.md), [toolsets](/docs/tutorials/3.admin/assets-toolsets.md)) get to the Public folder when published by end users or added by administrators.
1212

13-
### Folders Hierarchy
13+
> Refer to [Chat User Guide](/docs/tutorials/0.user-guide.md#publish-2) to learn how end users can publish applications and to [DIAL Core API Publications](https://dialx.ai/dial_api#tag/Publications) to learn how to create and manage publication requests via API.
1414
15-
**Folders Structure (Left Pane)**: Shows a hierarchical view of all storage folders under the root.
15+
**Note**: Public folder does not contain private objects of DIAL users!
1616

17-
| Element | Behavior |
18-
|--------------------------|-------------------------------------------------------------------------------------------|
19-
| **Public folder** | A root folder accessible to all users. |
20-
| **User-defined folders** | Collapsible folders you create to group files by project, team, domain, or environment. |
17+
Objects in the Public folder are arranged hierarchically, similar to a file system.
2118

22-
### Folders Permissions
19+
- **Root folder**: Pubic is a root folder which can include sub-folders and files.
20+
- **Sub-folders**: Sub-folders can include uploaded files and files of published applications.
2321

24-
When a folder is selected, the right pane displays its access-control rules which determine who can view or add assets in the selected folder.
22+
![](img/folders-storage-folders.png)
2523

26-
Rules can be nested under **And/Or** blocks to form complex access policies:
27-
* **And**: All rules must be satisfied.
28-
* **Or**: At least one rule must be satisfied.
24+
## Access Rules
25+
26+
Click any folder to display its access rules.
27+
28+
* **Public folder**: Access to the root Public folder is predefined and available to all authorized DIAL users.
29+
* **Sub-folders**: Sub-folders within the Public folder can have custom access rules defined by administrators or by users in publication requests. The effective authorization rule for an object in a sub-folder includes restrictions applied to all parent sub-folders up to the root folder. Refer to [Tutorials](/docs/tutorials/1.developers/1.work-with-resources/0.work-with-publications.md#effective-rules) to learn about affective rules for folders.
30+
31+
> Refer to [Access Control](/docs/platform/3.core/2.access-control-intro.md) to learn more about Private and Public logical spaces for objects storage in DIAL.
32+
33+
34+
![](img/folders-storage-rules.png)
2935

30-
> **Note**: If a folder has a parent folder, all access rules of a parent folder also apply to the child folder.
36+
##### Working with access rules
3137

32-
![](img/76.png)
38+
To determine whether a logged-in user has access to a particular resource in sub-folders, DIAL Core matches `claims` from identity providers (IDPs) with access rules.
3339

34-
##### Adding & Removing Access Rules
40+
> * Refer to [JWT](/docs/tutorials/2.devops/2.auth-and-access-control/1.jwt.md) and [API Keys](/docs/tutorials/2.devops/2.auth-and-access-control/0.api-keys.md) to learn how to enables access to DIAL resources.
41+
> * Refer to [Tutorials](/docs/tutorials/2.devops/2.auth-and-access-control/2.configure-idps/0.overview.md) to discover configurations for supported identity service providers.
3542
36-
1. Click **Add** to append a new permission rule to the selected folder.
37-
2. Specify attribute, operation and value.
43+
Access rules for objects in sub-folders can be defined using three parameters:
44+
45+
* **Attribute**: Specific `claim` in JWT token payload. E.g: role.
46+
* **Value**: Array of claim `values`. E.g.: admin.
47+
* **Operation**: Matching functions for `claims` and `values`. E.g: Equal.
48+
49+
![](img/access-rules.png)
50+
51+
Rules can be nested under **And/Or** blocks to form complex access policies:
52+
53+
* **And**: All rules must be satisfied.
54+
* **Or**: At least one rule must be satisfied.
3855

39-
Click the trash-can icon on the right edge of any rule to remove it.
56+
> **Note**: If a folder has a parent folder, all access rules of a parent folder also apply to the child folder. Refer to [Tutorials](/docs/tutorials/1.developers/1.work-with-resources/0.work-with-publications.md#effective-rules) to learn about affective rules for folders.
4057
41-
![](img/77.png)
58+
![](img/76.png)

docs/tutorials/3.admin/access-management-keys.md

Lines changed: 74 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -4,122 +4,131 @@
44

55
DIAL Core uses API keys to manage access of external applications for resources in DIAL.
66

7+
> * Refer to [DIAL Core](https://github.com/epam/ai-dial-core/blob/development/docs/dynamic-settings/keys.md) to learn how API keys are defined in DIAL Core configuration.
78
> * Refer to [Access Control](/docs/platform/3.core/2.access-control-intro.md) to learn more about access control in DIAL.
89
> * Refer to [Tutorials](/docs/tutorials/2.devops/2.auth-and-access-control/0.api-keys.md) to learn how to configure access and usage control for API keys.
910
1011
## Main Screen
1112

12-
On the main screen you can see all existing API keys with their details.
13+
On this screen, you can find all API keys defined in your instance of DIAL. Here, you can also add and manage API keys.
14+
15+
> API keys can also be defined directly in [DIAL Core configuration](https://github.com/epam/ai-dial-core/blob/development/docs/dynamic-settings/keys.md).
1316
1417
![](img/img_42.png)
1518

16-
##### Keys Grid
19+
##### Keys grid
1720

1821
> **TIP**: Use the **Columns** selector to customize which columns are visible in the grid.
1922
20-
| Column | Definition |
21-
|---------------------------|---------------------------------------------------------------------------------------------------------------------|
22-
| **ID** | A unique key under the Keys section of DIAL Admin. |
23-
| **Display Name** | A user-friendly name of the Key. |
24-
| **Description** | Optional notes explaining the key’s purpose, owner/team, or special instructions. |
25-
| **Key generation time** | A key's creation timestamp. Useful for auditing and correlating the key's usage with system changes or deployments. |
26-
| **Expiration time** | A key's expiration timestamp. Setting expirations enforces regular key rotation. |
27-
| **Status** | The current state of the key. |
28-
| **Project** | The name of the project the key is associated with. |
29-
| **Updated time** | Timestamp of the latest change. |
30-
| **Creation time** | Date and time when the key artefact was created in DIAL. |
31-
| **Project contact point** | Email of the responsible person or group. |
32-
| **Secured** | Indication if it is secured API key. |
33-
| **Topics** | Tags assigned to the key (e.g. "admin", "user"). |
34-
23+
| Column | Definition |
24+
|--------|------------|
25+
| **ID** | Unique key identifier. |
26+
| **Display Name** | Name of the key displayed on UI. |
27+
| **Description** | Description of the key. |
28+
| **Creation time** | Key's creation timestamp. |
29+
| **Updated time** | Timestamp of the latest change. |
30+
| **Key generation time** | Timestamp of the key's secret value generation. |
31+
| **Expiration time** | Key's expiration timestamp. Setting expirations enforces regular key rotation. |
32+
| **Status** | Current validity status of the key. A key is **invalid** in cases when there are no roles assigned to it, or its secret value is missing or is expired. |
33+
| **Project** | Name of the project the key was created for. |
34+
| **Project contact point** | Email of the responsible person or group. |
35+
| **Secured** | Indication if it is [secured API key](/docs/platform/3.core/4.privacy.md#applications-audit-logs). |
36+
| **Topics** | Tags assigned to the key (e.g. "admin", "user"). |
3537

3638
## Create Keys
3739

3840
Follow these steps to create a new API key:
3941

40-
1. Click **Create** to invoke the **Create Key** modal.
42+
1. Click **Create** to invoke the **Key** modal.
4143
2. In the modal, specify the following parameters for the new key:
4244

43-
| Field | Required | Description |
44-
|---------------------|----------|-------------|
45-
| **ID** | Yes | A unique key under the Keys section of DIAL Admin. Click Generate to automatically create unique GUID.|
46-
| **Display Name** | Yes | A user-friendly name of the Key. |
47-
| **Description** | No | An optional free-form text.<br />Use to document the key’s purpose, owner team, or usage context. |
48-
| **Project** | Yes | Logical project or department grouping (e.g. "AnalyticsTeam").<br />Helps organize keys and apply cost/usage reporting by project. |
49-
| **Key value** | Yes | The actual secret string used for authentication.<br />Initially hidden; click **👁️** to reveal.<br />Press **Generate** to have its value automatically generated in GUID format. |
50-
| **Validity Period** | Yes | A key's expiration time period. Use to enforce credential rotation and retirement. |
45+
| Field | Required | Description |
46+
|-------|----------|-------------|
47+
| **ID** | Yes | Unique key identifier. Click Generate to automatically create unique GUID. |
48+
| **Display Name** | Yes | Name of the key displayed on UI. |
49+
| **Description** | No | Description of the key. |
50+
| **Project** | Yes | Name of the project the key was created for. |
51+
| **Key value** | Yes | Secret string used for authentication.<br />Initially hidden; click **👁️** to reveal.<br />Press **Generate** to have its value automatically generated in GUID format.<br />Can be changed in [Properties](#properties). |
52+
| **Validity Period** | Yes | Key's expiration time period. Use to enforce credential rotation and retirement. |
5153

52-
3. Once all required fields are filled, click **Create**. The dialog closes and the new [key configuration](#key-configuration) screen is opened. A new key entry will appear immediately in the listing once created.
54+
3. Once all required fields are filled, click **Create**. The dialog closes and the new [key configuration](#configuration) screen is opened. A new key entry will appear immediately in the listing once created.
5355

5456
![](img/img_43.png)
5557

58+
## Delete
5659

57-
## Key Configuration
60+
Click **Delete** on the main screen to permanently remove the selected key.
61+
62+
> **Note**: All related entities (applications, models, routes) bound to the deleted API key will fail.
63+
64+
![](img/keys-delete.png)
65+
66+
## Configuration
5867

5968
Click any API key to display the configuration screen.
6069

6170
### Keys Rotation
6271

6372
Use **Rotation** to refresh an existing API key.
6473

74+
> Note, that after rotation the key's generation timestamp will be updated accordingly.
75+
6576
1. Click any API key to invoke the configuration screen
6677
2. Click **Rotate**.
6778
3. Paste or auto-generate a new secret in the **Key value** field.
6879
4. Pick the **Validity period**. The default expiration period is three months.
6980
5. Click **Rotate** to apply the changes.
7081

82+
![](img/keys-rotation.png)
83+
7184
### Properties
7285

7386
In the Properties tab, you can view metadata and manage the selected settings for a specific API key.
7487

75-
![](img/img_44.png)
76-
77-
| Field | Required | Description |
78-
|---------------------------|----------|------------|
79-
| **ID** | - | A unique key under the Keys section of DIAL Admin. |
80-
| **Creation Time** | - | Date and time when the key artefact was created in DIAL. |
81-
| **Key Generation Time** | - | Date and time when the actual key value was last modified. |
82-
| **Expiration Time** | - | Date and time when the key is expiring. |
83-
| **Status** | - | Indicates the validity status of a key.<br /> A key is **invalid** in cases when there are no roles assigned to it, or its secret value is missing or is expired.|
84-
| **Display Name** | Yes | A user-friendly identifier of a key.<br />Use meaningful names to tie keys back to projects, environments, or teams. |
85-
| **Description** | No | A free-form text.<br />Use to document the key’s purpose, owner team, or usage context (e.g. "Used by QH Data Ingestion pipeline"). |
86-
| **Project** | Yes | Logical project or department grouping (e.g. "QH", "AnalyticsTeam").<br />Helps organize keys and apply cost/usage reporting by project. |
87-
| **Project contact point** | No | Email of the responsible person or group. |
88-
| **Key value** | Yes | The actual secret string used for authentication.<br />Initially hidden - click **👁️** to reveal.<br />Press **Copy** to copy it to clipboard. |
89-
| **Secured** | Yes | Toggle to make the key a [secured API key](/docs/platform/3.core/4.privacy.md#applications-audit-logs). |
90-
| **Topics** | No | Tags that you can assign to keys (e.g. "admin", "user"). Helps to split keys into categories for better navigation on UI. |
88+
| Field | Required | Description |
89+
|-------|----------|-------------|
90+
| **ID** | - | Unique key identifier. |
91+
| **Updated Time** | - | Timestamp of the last update. |
92+
| **Creation Time** | - | Key's creation timestamp. |
93+
| **Key Generation Time** | - | Timestamp of the key's secret value generation. |
94+
| **Expiration Time** | - | Key's expiration timestamp. Setting expirations enforces regular key rotation. |
95+
| **Status** | - | Current validity status of the key. A key is **invalid** in cases when there are no roles assigned to it, or its secret value is missing or is expired. |
96+
| **Display Name** | Yes | Name of the key displayed on UI. |
97+
| **Description** | No | Description of the key. |
98+
| **Project** | Yes | Name of the project the key was created for. |
99+
| **Project contact point** | No | Email of the responsible person or group. |
100+
| **Key value** | Yes | Secret string used for authentication.<br />Initially hidden - click **👁️** to reveal.<br />Press **Copy** to copy it to clipboard. |
101+
| **Secured** | Yes | Indication if it is [secured API key](/docs/platform/3.core/4.privacy.md#applications-audit-logs). |
102+
| **Topics** | No | Tags assigned to the key (e.g. "admin", "user"). |
103+
104+
![](img/keys-properties.png)
91105

92106
### Roles
93107

94108
API keys must be associated with a specific role in DIAL Core to be valid. Roles give access to specific DIAL resources and can impose usage and cost limits.
95109

96110
In the Roles tab, you can associate the selected API key with existing [roles](/docs/tutorials/3.admin/access-management-roles.md).
97111

98-
![](img/img_45.png)
99-
100-
| Column | Description|
101-
| --------------- |-----------------------------------------------|
102-
| **Name** | A unique identifier of the role. |
103-
| **Description** | User-friendly summary of the Role’s purpose. |
104-
105-
#### Add
112+
![](img/keys-roles.png)
106113

107-
To associate one or more roles with the selected API key:
114+
| Column | Description |
115+
|--------|-------------|
116+
| **Display Name** | Role's name displayed on UI. |
117+
| **Description** | Description of a role. |
118+
| **ID** | Unique role's identifier. |
108119

109-
1. Click **+ Add** (top-right of the Roles Grid).
110-
2. **Select** one or more roles in the modal window. Roles are defined in the [Access Management → Roles](/docs/tutorials/3.admin/access-management-roles.md) section.
111-
3. **Confirm** to insert them into the table.
120+
##### Available actions
112121

113-
#### Remove
122+
| Action | Description |
123+
|--------|-------------|
124+
| Add | Use to a role that will get access to the selected API key. |
125+
| Remove | Use to disconnect the selected role from API keys. To delete role, go to [Roles](/docs/tutorials/3.admin/access-management-roles.md). |
114126

115-
Use to stop associating API keys with roles.
116-
117-
1. Click the **actions** menu in the role's line.
118-
2. Choose **Remove** in the menu.
127+
### Audit
119128

120-
![](img/83.png)
129+
The Activities section provides detailed visibility into all changes made to the selected API key. This section mimics the functionality available in the global [Audit → Activities](/docs/tutorials/3.admin/telemetry-activity-audit.md) menu, but is scoped specifically to the selected API key.
121130

122-
> To delete a role, go to the [Access Management → Roles](/docs/tutorials/3.admin/access-management-roles.md) section.
131+
![](img/keys-audit.png)
123132

124133
### JSON Editor
125134

@@ -129,18 +138,11 @@ Use to stop associating API keys with roles.
129138
130139
![](img/keys_json.png)
131140

132-
In JSON editor, you can use the view dropdown to select between Admin format and Core format. Note, that these formatting options are for your convenience only and do not render properties as they are defined in DIAL Core. After making changes, the **Sync with core** indicator on the main configuration screen will inform you about the synchronization state with DIAL Core.
141+
In JSON editor, you can use the view dropdown to select between Admin format and Core format. Note, that these formatting options are for your convenience only and do not render properties as they are defined in DIAL Core.
133142

134143
##### Working with JSON Editor
135144

136145
1. Navigate to **Access Management → Keys**, then select the key you want to edit.
137146
2. Click the **JSON Editor** toggle (top-right). The UI reveals the raw JSON.
138147
3. Chose between the Admin and Core format to see and work with properties in the necessary format. **Note**: Core format view mode does not render the actual configuration stored in DIAL Core but the configuration in Admin service displayed in the DIAL Core format.
139-
4. Make changes and click **Save** to apply them.
140-
5. After making changes, the **Sync with core** indicator on the main configuration screen will inform you about the synchronization state with DIAL Core.
141-
142-
## Delete
143-
144-
Click **Delete** on the main screen to permanently remove the selected key.
145-
146-
> **Note**: All related entities (applications, models, routes) bound to the deleted API key will fail.
148+
4. Make changes and click **Save** to apply them.

0 commit comments

Comments
 (0)