Designing a multi-tenant Wazuh MSSP:
AD, LDAPS, RBAC and document-level security

This design uses one shared Wazuh platform for Client A, Client B, and SOC operations. Active Directory manages identities. Indexer roles and document-level security restrict alert access. Dashboard tenants separate saved objects.

By Ashraf GamalUpdated 16 October 2026Reference design · Wazuh 4.14.7 diagramApprox. 12–15 min read
Version context: The architecture diagram identifies Wazuh 4.14.7. The official release notes list 4.14.9 as released on 14 October 2026. Confirm the version installed in your environment and use its matching documentation before applying version-specific changes. Wazuh release notes ↗

1. Design scope

The design separates three user populations: Client A, Client B, and privileged SOC/MSSP operators. Each customer has a dedicated dashboard tenant; SOC operators have a separate workspace for authorized cross-customer investigation.

The evidence gallery shows directory groups and users, LDAP group lookup, customer dashboards, a Client A cross-customer access test, and the operator tenant list. These screenshots document specific UI results; role configuration and negative-access tests are also required to validate the full authorization path.

2. Architecture overview

Reference diagram showing Active Directory over LDAPS, a single-node Wazuh manager/indexer/dashboard deployment, Client A and Client B dashboard tenants, an SOC operations tenant, agent labels, indexer roles, and document-level security.
The diagram shows the shared Wazuh components, identity source, customer tenants, and SOC-operations workspace. Manager, Indexer, and Dashboard are drawn on one node to explain the access model; this is not a high-availability topology.
ComponentResponsibilityImportant design point
Active DirectoryCentral identity store and group membership.Separate security groups determine expected backend roles.
LDAPSEncrypts directory communication on TCP 636.Trust the issuing CA and verify the server hostname.
Wazuh ManagerReceives agent data, applies decoders/rules and creates alerts.Customer identity needs to appear consistently in the indexed documents used by filters.
Wazuh Indexer (OpenSearch)Stores and searches alerts and related telemetry.Index permissions and document-level security enforce which documents a role can query.
Wazuh DashboardAnalyst interface and dashboard objects.Tenants separate saved objects; they do not replace data authorization.
Customer/SOC agentsProvide endpoint telemetry from customer and MSSP environments.Use consistent groups/labels and verify their indexed representation.

Deployment caveat: The diagram places Manager, Indexer and Dashboard on a single node. This may be suitable for a compact lab, but it is a single point of failure and does not demonstrate production capacity, resilient storage, disaster recovery or high availability.

3. Access model: identity, data, and workspace

Keep these controls separate: authentication identifies the user; indexer permissions determine which documents the user can read; tenant permissions govern dashboard objects and saved searches. OpenSearch DLS filters read/search results, not writes. Restrict write permissions separately. OpenSearch DLS documentation ↗

Directory group (example)Indexer role (example)Data scopeDashboard tenant
SOC-MSSP-ClientAmssp_client_a_alerts_readAlerts labeled Client-A onlyclient-a
SOC-MSSP-ClientBmssp_client_b_alerts_readAlerts labeled Client-B onlyclient-b
SOC-MSSP-Operatorsmssp_soc_operators_alerts_readCustomer and SOC data explicitly authorized for operatorssoc-operations

The names in the table are examples; the diagram shows names such as mssp-clienta-indexer. Keep naming consistent across AD groups, backend roles, indexer roles, tenants, and test accounts. Give SOC operator roles only the permissions required for their duties.

Critical isolation rule: Do not rely on tenant names, saved searches, dashboard filters, hidden menu items or Wazuh agent-group UI to enforce customer separation. Isolation must be enforced by indexer permissions and a verified document-level filter on every index that contains customer data.

4. Configure Active Directory and LDAPS

  1. Create dedicated groups. Keep Client A, Client B and SOC operator membership separate. Avoid putting customer users into shared administrator groups.
  2. Use LDAPS. Configure the Wazuh Indexer's LDAP authentication and authorization backends to connect to the AD FQDN on port 636. Trust the correct CA chain and keep hostname verification enabled.
  3. Use a least-privileged bind account. It needs to read the user/group attributes required for authentication and role lookup, not administer the domain.
  4. Map group membership into backend roles. The exact userbase, usersearch, rolebase, rolesearch and group attributes depend on AD schema and nesting. Validate that a test user returns only the expected backend roles.
  5. Map backend roles to indexer roles. A directory group is not automatically an indexer permission. Create explicit mappings and check inherited memberships so a client user cannot receive a broad operator/admin role through another group.

Back up security configuration and keep a rollback path before making changes. Wazuh's LDAP guide covers the indexer authentication (authc) and authorization (authz) blocks, role lookup, backend-role mappings and dashboard role mapping. Follow the procedure for the installed release rather than copying a block from another version unchanged. Wazuh Active Directory and LDAP integration ↗

Check LDAPS connectivity and certificate validation from the Indexer host:

openssl s_client \
  -connect <AD_FQDN>:636 \
  -servername <AD_FQDN> \
  -CAfile <PATH_TO_TRUSTED_AD_CA> \
  -verify_return_error

Replace the placeholders with your environment's values. A successful TCP connection alone is not enough: verify chain validation, hostname matching, DNS and group lookup. Never put the bind password or other secrets in a public GitHub repository.

5. Label customer telemetry

DLS can filter only on fields that exist in indexed documents. Wazuh's documented group-restricted access example uses agent.labels.group for alerts. A centralized agent configuration can add a label like this to a customer's agents:

<agent_config>
  <labels>
    <label key="group">Client-A</label>
  </labels>
</agent_config>

Configure separate labels for Client B and SOC operations. Before creating DLS queries, inspect indexed alert documents and confirm the field path and exact value. New labels apply to new alerts; older documents may not contain them.

An agent-management group name is not automatically the field used by DLS. The indexed label is a separate document attribute. Validate it in Discover, and configure separate filters for monitoring or other indexes because their field schemas may differ.

Official walkthrough: Wazuh RBAC — restrict access to a group of agents ↗

6. Create per-customer indexer roles and DLS filters

For Client A, create a read-only role limited to the required alert index pattern (for example, wazuh-alerts*) and add a DLS query using the value confirmed in Discover. Example:

{
  "bool": {
    "must": [
      {
        "match": {
          "agent.labels.group": "Client-A"
        }
      }
    ]
  }
}

For Client B, use the observed Client-B value. This query is only the DLS condition, not a complete role definition. Configure index patterns, cluster permissions, tenant permissions, and other index permissions separately.

Reference: Wazuh RBAC guide ↗ · OpenSearch DLS behavior ↗

7. Create dashboard tenants for each audience

Create tenants for Client A, Client B, and SOC operations. Grant each role access only to the required tenant, with read-only or read-write permissions based on job duties. Tenants isolate saved objects such as dashboards, visualizations, and index patterns; they do not isolate alert documents. OpenSearch multi-tenancy overview ↗

Configure the UI layer after the indexer data controls work. A Client A user must still be unable to query Client B documents through Discover, another index pattern, a direct search URL or an API request made with that user's identity. Similarly, placing a SOC dashboard inside the SOC-operations tenant does not prevent Client A from reading SOC documents if indexer permissions are too broad.

8. Test tenant isolation

Test with separate Client A, Client B, and SOC operator accounts. Run each test using the account being evaluated—not only an administrator account. Record both allowed queries and negative cross-customer queries.

Test accountExpected resultEvidence to capture
Client ACan sign in, open the Client A tenant and search Client A-labeled alerts.Client A dashboard/Discover results showing its label.
Client ACannot return Client B alerts via a direct search or alternate index pattern.Negative cross-customer attempt under the Client A test account.
Client BCan read Client B alerts but not Client A alerts.Client B dashboard and a negative Client A query.
SOC operatorCan select the SOC-operations tenant and access only the cross-customer datasets explicitly authorized for SOC.Available-tenants view and sanitized cross-customer results.
All rolesCannot bypass scope through another saved search, direct URL, index pattern or API search.Role/DLS configuration plus user-level positive and negative results.

Record the test date, account role, index pattern, query, expected result, actual result and pass/fail outcome. An empty result or a forbidden response may both be valid denial behavior depending on configuration, but the test must show that another customer's records were not returned.

9. Troubleshooting

10. Production hardening checklist

11. Evidence gallery

These screenshots are uploaded in assets/images/wazuh-mssp/. Select an image to open it at full size. Captions describe what each screenshot shows and distinguish role mapping from evidence of DLS enforcement.

Wazuh MSSP architecture diagram showing Active Directory, Wazuh components, tenants, and customer data boundaries.
Architecture overviewShared Wazuh components, directory identity, customer tenants, and the SOC-operations tenant.01-wazuh-mssp-architecture-overview.png.png
Active Directory security groups for Client A, Client B, and SOC operators.
Active Directory security groupsSeparate directory groups for customer users and SOC/MSSP operators.02-active-directory-mssp-security-groups.png.PNG
Active Directory test users for the MSSP multi-tenant environment.
Directory test usersTest identities and group membership used in the access model.03-active-directory-mssp-test-users.png.PNG
LDAP authentication and group lookup output from the Wazuh Indexer.
LDAP group lookupEvidence of directory connectivity and backend-role lookup from the Indexer side.04-wazuh-indexer-ldap-group-lookup.png.PNG
Wazuh MSSP dashboard login page.
MSSP login pageLogin entry point for the analyst interface.05-wazuh-mssp-login-page.png.PNG
Client A dashboard in the Wazuh MSSP environment.
Client A dashboardCustomer-facing dashboard view for Client A. Data authorization must also be tested at the Indexer layer.06-wazuh-mssp-client-a-dashboard.png.PNG
Client B dashboard in the Wazuh MSSP environment.
Client B dashboardCustomer-facing dashboard view for Client B.07-wazuh-mssp-client-b-dashboard.png.PNG
Client A access attempt against Client B data and the observed result.
Cross-customer access testClient A's attempted access to Client B data. Preserve the actual result and the test account context.08-wazuh-mssp-client-a-denied-client-b-data.png.PNG
Available dashboard tenants for the SOC operator.
SOC operator tenant accessTenants available to the operator account.09-wazuh-mssp-operator-available-tenants.png.PNG
Terminal output showing the Client A Indexer role and backend-role mapping.
Client A role mappingThe screenshot shows the role and its backend-role mapping. Its index pattern is broad and its DLS field is empty, so it does not demonstrate an active customer-specific DLS filter.10-wazuh-mssp-indexer-role-and-backend-mapping-client-a.png.png
SOC operations tenant and cross-customer access view.
SOC operations accessOperator view for SOC workflows across authorized customer environments.12-wazuh-mssp-soc-operations-access.png
Wazuh Endpoints page showing Client A and Client B endpoints in separate agent groups.
Customer endpoints and agent groupsShows endpoints in client-a and client-b groups. Group membership alone does not prove the DLS label exists in indexed alerts.13-wazuh-mssp-agent-groups-and-customer-endpoints.png.PNG
Wazuh Discover showing the indexed agent.labels.group field and Client-A and Client-B values.
Indexed customer labelsDiscover shows agent.labels.group with the values Client-A and Client-B. Match the DLS query to the indexed values exactly.14-wazuh-mssp-indexed-agent-labels-discover.png.png

Before sharing screenshots publicly, check for exposed credentials, internal hostnames/IP addresses, usernames, customer identifiers, and sensitive event fields. Redact these details where needed.

12. Official documentation

Use this as a design and validation reference, not as a drop-in deployment runbook. Confirm version compatibility, effective role permissions, and both allowed and denied access paths in the target environment.

Wazuh MSSP architecture

Multi-tenant SIEM design and access-control engineering

For Wazuh architecture, identity integration, or customer-isolation work, use one of the contact options below.