Hey guys, I've been working an outline for implementing row-level feature filtering with SOIs combined with map/dashboard filtering using Enterprise Portal groups.
Below is the outline of my approach. Does anyone see any issues or reasons this wouldn't work? I'm particularly interested in feedback from anyone who's implemented something similar - did you run into any pitfalls I should be aware of? The goal is to filter features based on region without creating separate services for each user group.
This demonstration showcases a practical solution to a common enterprise GIS security challenge: providing row-level data access control without requiring individual database accounts. Using a combination of ArcGIS Portal groups and a custom Server Object Interceptor (SOI), we can deliver personalized data views to different user groups while maintaining a single database connection. This approach addresses our current IT constraints while still meeting security requirements.
The solution leverages Portal groups to control dashboard visibility and a PostgreSQL-driven SOI to filter map features dynamically based on user permissions. When users log in, they'll only see the dashboards relevant to their role and, within maps, only the data they have permission to access. This two-tiered approach provides comprehensive security without requiring database-level modifications or individual database credentials.
Our organization faces several constraints that prevent implementing traditional row-level security directly in the database:
Single Database Connection: All feature services connect to PostgreSQL using a single "data-owner" account via .sde files. IT cannot provide individual database logins for each user.
Limited IT Support: The IT department cannot assist with database-level security configuration before this demo. Any solution must work within existing infrastructure.
Portal-Centric Enterprise: Our ArcGIS Enterprise deployment is heavily Portal-centric, with a requirement to maintain consistent user experiences through Enterprise Sites.
Maintenance Overhead Concerns: We must avoid creating and maintaining multiple view layers and separate maps and dashboards for each user group. With our environment expected to grow to over 100 maps, dashboards, and Experience Builder apps, and potentially hundreds of users, managing multiple instances of nearly identical content would create an unsustainable maintenance burden.
Security Requirements: Despite these constraints, we need to demonstrate secure, filtered views of the same data based on user permissions.
We've designed an SOI-based solution that provides row-level security without requiring changes to the database authentication model:
Portal Groups for Application Security:
Java SOI for Feature-Level Security:
PostgreSQL Lookup Table:
Single Map Instance Approach:
Preserved Editing Capabilities:
The demo implementation includes:
PostgreSQL Components:
Java SOI:
Portal Configuration:
This demo will clearly demonstrate to management:
Multi-Level Security:
User Experience:
Technical Feasibility:
User Portal Group DB Permission Visible Content Visible Features Editing Capability
Alice | West-Users | ['west'] | • Enterprise Site<br>• Plant Map<br>• West Dashboard | Only features with region='west' | Can edit West features if assigned editor role |
Bob | East-Users | ['east'] | • Enterprise Site<br>• Plant Map<br>• East Dashboard | Only features with region='east' | Can edit East features if assigned editor role |
Carol | Admin | ['admin'] | • Enterprise Site<br>• Plant Map<br>• West Dashboard<br>• East Dashboard | All features (admin sees everything) | Can edit all features if assigned editor role |
Data Layer Requirements
Portal Configuration
SOI Configuration
After successful demonstration and approval, we plan to enhance the solution:
So is this possible?