learn-cyber · lesson 7 · multi-tenancy
Grouping organized each hotel's machines. Now build the access-control walls so every client — and every analyst — sees only the data they're allowed to, and nothing else.
"Isolation" actually means two separate things in Wazuh, and the most common mistake is to confuse them. Keep them apart from the start:
You use both together. RBAC stops the Seaside Inn from querying Grand Plaza agents at all; tenants stop the two hotels' saved dashboards and reports from bleeding into each other. Let's take each in turn.
RBAC — Role-Based Access Control — governs the Wazuh API, which is the gate everything goes through. Its model has three pieces that snap together:1
Here's why RBAC and Lesson 6 were designed for each other. A policy's
resource can be scoped to a specific agent group. So you can
write a role that grants visibility and actions over only the
grand-plaza agents — and nothing else in your whole
deployment.3
Concretely, to give the Grand Plaza (or the junior analyst who only handles that account) read access to just their hotel:
grand-plaza."grand-plaza-readonly.That login can now query the Grand Plaza's agents and literally cannot query the Seaside Inn's — the white-list default denies everything the policy didn't name. The user-administration guide walks through creating internal users and mapping roles, including the case of a user scoped to only a group of agents.3
RBAC walls off the data. But two clients can both have read access to their own agents and still trip over each other's saved work — a dashboard named "Front Desk Logins," a report, an index pattern — unless those are separated too. That's what dashboard multi-tenancy is for.4
The Wazuh dashboard supports tenants that separate saved objects — dashboards, visualizations, index patterns — per tenant. There are three flavors:
Give each hotel its own custom tenant — a
grand-plaza tenant and a seaside-inn tenant — so their
dashboards and reports stay in separate compartments. Tenancy is enabled in the
dashboard's configuration file,
opensearch_dashboards.yml.4
Put the last two lessons together and you have a repeatable recipe. For each hotel client you stand up three things:
Group organizes the config, the scoped role walls off the data, and the tenant walls off the saved views. Run that recipe for the Grand Plaza, run it again for the Seaside Inn, and the two are cleanly separated on one deployment.1
When one node isn't enough. At larger scale the documented advanced approach is to give each client its own Wazuh server/manager, all feeding a shared indexer cluster with index-level separation between clients. Same isolation idea, more hardware — a growth path to keep in your back pocket, not a starting point. You met single-node vs. cluster back in Lesson 2.
grand-plaza-readonly user and confirm you
cannot see Seaside Inn's agents or dashboards. Isolation you haven't
verified is isolation you don't have.
Retrieval practice — answering from memory is what makes this stick. Don't peek back up; take the guess.
A client login can query the Grand Plaza's agents but not the Seaside Inn's. What enforced that boundary?
RBAC controls which data and agents a login can access. A
role scoped to the grand-plaza group grants action over only those
agents. Tenants separate saved views; agent.conf sets monitoring.
By default, a brand-new Wazuh user with no policies attached can do what through the API?
Wazuh RBAC is white-list by default: deny unless explicitly allowed. A fresh user sees nothing until you grant access, so you build up from "no access" — the safe direction for an MSSP.
What three things do you stand up per hotel to isolate one client fully from another?
The MSSP isolation pattern is agent group (organizes config) + RBAC role scoped to that group (walls off data) + dashboard tenant (walls off saved views). Run that recipe per client and they stay cleanly separated.
grand-plaza-readonly? Unsure how RBAC on the API
and a dashboard tenant line up for one client login? Curious when you'd jump
to per-client managers on a shared indexer? Ask in the chat — that
back-and-forth is where the real learning happens.
You just earned: the RBAC model (policies → roles → users), the white-list default, scoping a role to a hotel's agent group, dashboard tenants for separating saved views, the three-part MSSP isolation pattern, and the discipline of testing the wall before you trust it.
Up next (Lesson 8): the hotel threat model — POS, PMS, PCI-DSS, and guest Wi-Fi — so the monitoring you've learned to deploy and isolate is pointed at the right threats.
Reference: Glossary · All resources · Mission
← Lesson 6: One group per hotel · Lesson 8: The hotel threat model →
opensearch_dashboards.yml).