It is achievable but there are some considerations.
For example with overlapping IP's you should connect these customers to different receivers.
ELM: using different ELM or storage pools.
ACE: Filtering of the information you want to be correleated.
ESM: you can give access only to speciefic resources per user/ role basis.
Let me know if you have more speciefic questions
I can see that would work, and it makes sense to deploy receivers at the customers' sites (if only to reduce WAN bandwidth usage by taking advantage of aggregation), but how to cope with overlapping IPs when the events hit the ESM?
AS the Events will originate from different Receivers there will be no problem just to put additional filters so it will return results only for the desired Customer/IP.
Another way is if you create a Role/Users with access only to specific Sources.
This way if customer is logged in he will see only the events from his sources.
however it is not possible to have duplicate IP's under single receiver.
On top of what @Alexander has suggested you can also configure zoning in order to effectively differentiate customer data and use this zoning in ACE to create multiple correlation engines. As for ELM either you create multiple storage groups to support multiple customer log retention requirements or you can use single ELM per customer.
Bumping this, to ask: what if you want to run correlation rules on the receiver?
Sure, you can pull all the correlation rules for your tenants. But you can't set up multiple correlation rules which pull data from Tenant A's zone, Tenant B's zone, etc, even though the advanced option when you create a source allows you to limit down to one zone.
You better off use a dedicated ACE with multiple correlation engines (one per customer), rather than have correlation engine on the receivers themselves.
We've been doing this for years with no real issues. You'll need a separate receiver (or receivers) per customer, but shared ELM with separate pools and shared ACE with a correlation engine per customer. Use zones and proper filtering and it's fine.