You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: en_US/multi-tenancy/namespace-overview.md
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,21 +41,21 @@ Namespaces are identified by a special client attribute `tns` (tenant namespace)
41
41
Namespaces provide a clean boundary for collecting metrics such as connection count and message throughput per tenant, essential for capacity planning and operational insight.
42
42
43
43
-**Admin User Isolation**
44
-
44
+
45
45
Starting from EMQX 6.0, namespaces are extended to Dashboard, CLI, and API users through [namespaced roles](../dashboard/system.md/#namespaced-roles).
46
46
47
47
- Admin users can be created with roles restricted to a specific namespace, e.g., `ns:team_a::administrator`.
48
48
- Namespaced users only see and operate on resources within their assigned namespace.
49
49
- Cluster-level configurations not yet namespace-aware are visible but read-only for namespaced users, and only modifiable by global administrators.
50
50
- This ensures secure, tenant-specific administrative access alongside data isolation.
51
-
51
+
52
52
-**Multi-Tenant Management**
53
53
54
54
System administrators can manage multiple namespaces within the same cluster, while each tenant operates in a self-contained environment with isolated resources and user permissions.
55
55
56
56
### Isolation Mechanisms
57
57
58
-
EMQX offers high flexibility and has supported various isolation methods even before the namespace feature. The namespace feature provides a unified tenant identifier field (`client_attrs.tns`), allowing configurations like client ID and topic mount points to be organized and managed around unified tenant information.
58
+
EMQX offers high flexibility and has supported various isolation methods even before the namespace feature. The namespace feature provides a unified tenant identifier field (`client_attrs.tns`), allowing configurations like client ID and topic mountpoints to be organized and managed around unified tenant information.
59
59
60
60
However, note that isolation strategies still require **manual configuration** by users based on business needs; the system will not automatically enable client ID or topic isolation features.
61
61
@@ -69,17 +69,17 @@ However, note that isolation strategies still require **manual configuration** b
69
69
70
70
This rule adds the namespace as a prefix to the client ID to avoid conflicts.
71
71
72
-
-**Topic Isolation Using Mount Points**
72
+
-**Topic Isolation Using Mountpoints**
73
73
74
-
If clients in different namespaces need to publish or subscribe to the same topic names without affecting each other, you can use mount points to automatically add namespace prefixes:
74
+
If clients in different namespaces need to publish or subscribe to the same topic names without affecting each other, you can use mountpoints to automatically add namespace prefixes:
This setting adds a namespace prefix to the topic name.
81
81
82
-
For backward compatibility, the Authorization(ACL) checks do **NOT** include mountpoint prefix by default. Starting from 6.1 you can set `authorization.include_mountpoint=true` to allow authorization backends to receive topic with mountpoint prefix.
82
+
For backward compatibility, the Authorization(ACL) checks do **NOT** include the mountpoint prefix by default. Starting from EMQX 6.1, you can set `authorization.include_mountpoint=true` to allow authorization backends to receive topics with a mountpoint prefix.
83
83
84
84
## Enable Namespaces
85
85
@@ -109,10 +109,10 @@ You can also enable namespaces using the EMQX Dashboard:
109
109
110
110
The following features are being rolled out progressively:
111
111
112
-
- Unify management namespaces and MQTT namespaces. [6.0]
113
-
- Implement isolation for built-in database authentication. [6.1]
114
-
- Implement isolation for built-in database authorization. [6.1]
115
-
- Implement isolation for Prometheus metrics. [6.1]
112
+
- Unify management namespaces and MQTT namespaces. (6.0)
113
+
- Implement isolation for built-in database authentication. (6.1)
114
+
- Implement isolation for built-in database authorization. (6.1)
115
+
- Implement isolation for Prometheus metrics. (6.1)
116
116
- Implement quota isolation for retained messages.
Copy file name to clipboardExpand all lines: en_US/multi-tenancy/namespace-quick-start.md
+15-17Lines changed: 15 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Quick Start: Experience Namespaces
2
2
3
-
This section guides you through using the [MQTTX client](https://mqttx.app) to connect to EMQX and quickly experience the core capabilities of the namespace feature: tenant identification, client isolation, and topic isolation.
3
+
This section guides you through using the [MQTTX client](https://mqttx.app) to connect to EMQX and quickly experience the core capabilities of the namespace feature: tenant identification, client and topic isolation, and ACL isolation.
4
4
5
5
## Enable the `tns` Attribute for Namespace Identification
6
6
@@ -70,28 +70,26 @@ This section guides you through using the [MQTTX client](https://mqttx.app) to c
70
70
- Client A's subscribed topic appears as `tenantA/test/topic`.
71
71
- Client B's published topic appears as `tenantB/test/topic`.
72
72
73
-
4.ACL isolation
73
+
## Enable Mountpoint-Based ACL Checks
74
74
75
-
By default, authorization (ACL) checks do not include the mountpoint prefix for backward compatibility. This means that ACL rules are evaluated against the original topic name (e.g., `test/topic`) rather than the namespaced topic (e.g., `tenantA/test/topic`).
75
+
By default, authorization (ACL) checks do not include the mountpoint prefix to preserve backward compatibility. This means that ACL rules are evaluated against the original topic name (e.g., `test/topic`) rather than the namespaced topic (e.g., `tenantA/test/topic`).
76
76
77
-
Starting from EMQX 6.1, you can enable mountpoint-aware authorization to achieve namespace-level ACL isolation:
77
+
Starting from EMQX 6.1, you can enable mountpoint-aware authorization to achieve namespace-level ACL isolation.
78
78
79
-
**Enable mountpoint-aware authorization**:
79
+
To enable this feature, add the following configuration to `base.hocon`:
80
80
81
-
Add the following configuration to `base.hocon`:
81
+
```hocon
82
+
authorization.include_mountpoint = true
83
+
```
82
84
83
-
```
84
-
authorization.include_mountpoint = true
85
-
```
86
-
87
-
Alternatively, configure this in the Dashboard:
85
+
Alternatively, enable it in the Dashboard:
88
86
89
-
1. Navigate to **Access Control** -> **Authorization** -> **Settings**.
90
-
2. Enable **Include Mountpoint in Authorization Check**.
91
-
3. Click **Save Changes**.
87
+
1. Navigate to **Access Control** -> **Authorization** -> **Settings**.
88
+
2. Enable **Include Mountpoint in Authorization Check**.
89
+
3. Click **Save Changes**.
92
90
93
-
::: tip Note
91
+
::: tip Note
94
92
95
-
When `authorization.include_mountpoint=true` is enabled, all ACL rules must include the mountpoint in the topic pattern. For example, if a client connects to a listener with mountpoint `tenantA/` wants to subscribe to `test/topic`, the ACL rule should be configured as `tenantA/test/topic`.
93
+
When `authorization.include_mountpoint=true` is enabled, all ACL rules must include the mountpoint in the topic pattern. For example, if a client connects to a listener with mountpoint `tenantA/` wants to subscribe to `test/topic`, the corresponding ACL rule must be configured as `tenantA/test/topic`.
0 commit comments