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
-
As of version 5.9, namespaces are only applicable to MQTT clients. The Dashboard and REST API are not yet isolated based on namespaces. EMQX plans to implement unified management namespaces and MQTT namespaces in future versions. For details, see the [Multi-Tenancy Roadmap](#multi-tenancy-roadmap).
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,11 +109,11 @@ 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.
113
-
- Implement isolation for built-in database authentication.
114
-
- Implement isolation for built-in database authorization.
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)
115
116
- Implement quota isolation for retained messages.
Copy file name to clipboardExpand all lines: en_US/multi-tenancy/namespace-quick-start.md
+26-2Lines changed: 26 additions & 2 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
@@ -68,4 +68,28 @@ This section guides you through using the [MQTTX client](https://mqttx.app) to c
68
68
- Even though both clients use the same topic (`test/topic`), Client A will **not receive** messages published by Client B because they are isolated by namespace.
69
69
- In the **Monitoring** -> **Clients** page:
70
70
- Client A's subscribed topic appears as `tenantA/test/topic`.
71
-
- Client B's published topic appears as `tenantB/test/topic`.
71
+
- Client B's published topic appears as `tenantB/test/topic`.
72
+
73
+
## Enable Mountpoint-Based ACL Checks
74
+
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
+
77
+
Starting from EMQX 6.1, you can enable mountpoint-aware authorization to achieve namespace-level ACL isolation.
78
+
79
+
To enable this feature, add the following configuration to `base.hocon`:
80
+
81
+
```hocon
82
+
authorization.include_mountpoint = true
83
+
```
84
+
85
+
Alternatively, enable it in the Dashboard:
86
+
87
+
1. Navigate to **Access Control** -> **Authorization** -> **Settings**.
88
+
2. Enable **Include Mountpoint in Authorization Check**.
89
+
3. Click **Save Changes**.
90
+
91
+
::: tip Note
92
+
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