-
Notifications
You must be signed in to change notification settings - Fork 336
Closed
Copy link
Labels
Milestone
Description
🏢 Complete Enterprise Multi-Tenancy System
🧭 Epic Overview
Goal: Complete enterprise-grade multi-tenancy system with team-based resource scoping, email authentication, SSO integration, and comprehensive RBAC.
Impact: Transforms MCP Gateway from single-tenant to full enterprise multi-tenant platform with secure resource isolation, team collaboration, and enterprise SSO integration.
Status: 🟢 IMPLEMENTED - Production-ready multi-tenancy system with comprehensive documentation.
🎯 Core Features Implemented
🔐 Authentication & Authorization
- ✅ Email-based Authentication with Argon2id password hashing (closes [SECURITY FEATURE]: Database-Backed User Authentication with Argon2id (replace BASIC auth) #544)
- ✅ Complete RBAC System with Platform Admin, Team Owner, Team Member roles (closes [SECURITY FEATURE]: Role-Based Access Control (RBAC) - User/Team/Global Scopes for full multi-tenancy support #283)
- ✅ Enhanced JWT Tokens with team context and scoped access (closes [Feature Request]: Epic: Secure JWT Token Catalog with Per-User Expiry and Revocation #87, [SECURITY FEATURE]: Per-Virtual-Server API Keys with Scoped Access #282)
- ✅ Password Policy Engine with configurable security requirements (closes [SECURITY FEATURE]: Configurable Password and Secret Policy Engine #426)
- ✅ Multi-Provider SSO Framework supporting GitHub, Google, IBM Security Verify (builds on [AUTH FEATURE]: Authentication & Authorization - SSO + Identity-Provider Integration #220, [Feature Request]: Authentication & Authorization - Google SSO Integration Tutorial (Depends on #220) #278, [Feature Request]: Authentication & Authorization - IBM Security Verify Enterprise SSO Integration (Depends on #220) #859)
👥 Team Management System
- ✅ Personal Teams Auto-Creation - Every user gets a personal team upon registration
- ✅ Multi-Team Membership - Users can belong to multiple teams with different roles
- ✅ Team Invitation System - Email-based invitations with secure tokens and expiration
- ✅ Team Visibility Controls - Private/Public teams with proper discovery mechanisms
- ✅ Team Roles & Permissions - Owner/Member roles with granular permission enforcement
🔒 Resource Scoping & Visibility
- ✅ Three-Tier Resource Visibility:
- Private: Owner-only access
- Team: Team member access
- Public: Cross-team access
- ✅ Applied to All Resource Types: Tools, Servers, Resources, Prompts, A2A Agents
- ✅ Team-Scoped API Endpoints with proper access validation
- ✅ Cross-Team Resource Discovery for public resources
🏗️ Platform Administration
- ✅ Platform Admin Role separate from team roles
- ✅ Domain-Based Auto-Assignment via SSO (SSO_AUTO_ADMIN_DOMAINS)
- ✅ Enterprise Domain Trust (SSO_TRUSTED_DOMAINS)
- ✅ Admin Team Management - view/manage all teams except personal teams
🗄️ Database & Infrastructure
- ✅ Multi-Tenant Database Schema with proper indexing
- ✅ Team-Based Query Filtering for performance
- ✅ Migration Strategy from single-tenant to multi-tenant
- ✅ Complete API Redesign with team-aware endpoints
🔗 Related Issues & Dependencies
Closes These Issues:
- Closes [SECURITY FEATURE]: Database-Backed User Authentication with Argon2id (replace BASIC auth) #544 - Database-Backed User Authentication with Argon2id
- Closes [SECURITY FEATURE]: Role-Based Access Control (RBAC) - User/Team/Global Scopes for full multi-tenancy support #283 - Role-Based Access Control (RBAC) - User/Team/Global Scopes
- Closes [SECURITY FEATURE]: Configurable Password and Secret Policy Engine #426 - Configurable Password and Secret Policy Engine
- Closes [Feature Request]: Epic: Secure JWT Token Catalog with Per-User Expiry and Revocation #87 - Epic: Secure JWT Token Catalog with Per-User Expiry and Revocation
- Closes [SECURITY FEATURE]: Per-Virtual-Server API Keys with Scoped Access #282 - Per-Virtual-Server API Keys with Scoped Access
Builds Upon:
- Builds on [AUTH FEATURE]: Authentication & Authorization - SSO + Identity-Provider Integration #220 - Authentication & Authorization - SSO + Identity-Provider Integration
- Integrates with [Feature Request]: Authentication & Authorization - Google SSO Integration Tutorial (Depends on #220) #278 - Google SSO Integration Tutorial
- Integrates with [Feature Request]: Authentication & Authorization - IBM Security Verify Enterprise SSO Integration (Depends on #220) #859 - IBM Security Verify Enterprise SSO Integration
Future Extensions:
- Related to [Feature Request]: ABAC Virtual Server Support #706 - ABAC Virtual Server Support (requires this foundation)
📐 System Architecture
graph TB
subgraph "Authentication Layer"
Email[Email Authentication<br/>Argon2id Hashing]
SSO[Multi-Provider SSO<br/>GitHub, Google, IBM Verify]
JWT[Enhanced JWT Tokens<br/>Team Context + Scoped Access]
end
subgraph "Team Management"
PersonalTeams[Personal Teams<br/>Auto-Creation]
MultiTeam[Multi-Team Membership<br/>Owner/Member Roles]
Invitations[Email Invitations<br/>Token-Based Workflow]
TeamVisibility[Team Visibility<br/>Private/Public Discovery]
end
subgraph "Resource Scoping"
ResourceVis[Three-Tier Visibility<br/>Private/Team/Public]
TeamAPI[Team-Scoped APIs<br/>All Resource Types]
CrossTeam[Cross-Team Access<br/>Public Resources]
end
subgraph "Platform Administration"
PlatformAdmin[Platform Admin Role<br/>System-Wide Access]
DomainMap[Domain-Based Assignment<br/>Auto-Admin via SSO]
TeamMgmt[Team Management<br/>Admin Oversight]
end
subgraph "Database Layer"
Schema[Multi-Tenant Schema<br/>EmailUser, EmailTeam, etc.]
Indexes[Team-Based Indexing<br/>Query Performance]
Migration[Migration Strategy<br/>Single→Multi Tenant]
end
Email --> JWT
SSO --> JWT
JWT --> MultiTeam
PersonalTeams --> MultiTeam
MultiTeam --> ResourceVis
Invitations --> MultiTeam
TeamVisibility --> MultiTeam
ResourceVis --> TeamAPI
TeamAPI --> CrossTeam
PlatformAdmin --> TeamMgmt
DomainMap --> PlatformAdmin
Schema --> Indexes
Indexes --> Migration
🎛️ Configuration
Core Multi-Tenancy Settings
# Team Management
AUTO_CREATE_PERSONAL_TEAMS=true
PERSONAL_TEAM_PREFIX=personal
MAX_TEAMS_PER_USER=50
MAX_MEMBERS_PER_TEAM=100
# Invitations
INVITATION_EXPIRY_DAYS=7
REQUIRE_EMAIL_VERIFICATION_FOR_INVITES=true
# Platform Administration
[email protected]
PLATFORM_ADMIN_PASSWORD=changeme
PLATFORM_ADMIN_FULL_NAME="Platform Administrator"
# SSO & Domain Trust
SSO_ENABLED=true
SSO_TRUSTED_DOMAINS=["company.com","trusted-partner.com"]
SSO_AUTO_ADMIN_DOMAINS=["company.com"]
SSO_AUTO_CREATE_USERS=true
SSO_PRESERVE_ADMIN_AUTH=true
Authentication Settings
# Email Authentication
EMAIL_AUTH_ENABLED=true
ARGON2ID_TIME_COST=3
ARGON2ID_MEMORY_COST=65536
ARGON2ID_PARALLELISM=1
# Password Policies
PASSWORD_MIN_LENGTH=8
PASSWORD_REQUIRE_UPPERCASE=false
PASSWORD_REQUIRE_NUMBERS=false
PASSWORD_REQUIRE_SPECIAL=false
# JWT Configuration
JWT_SECRET_KEY=your-secret-key
JWT_EXPIRATION_HOURS=24
REQUIRE_TOKEN_EXPIRATION=true
🎯 User Stories Implemented
👤 User Authentication
- As a user, I can register with email/password and get secure Argon2id authentication
- As a user, I can login via SSO providers (GitHub, Google, IBM Security Verify)
- As a user, I automatically get a personal team for my private resources
👥 Team Management
- As a user, I can create organizational teams and invite members
- As a team owner, I can manage team settings, members, and resource visibility
- As a team member, I can access team resources and collaborate on shared tools
🔒 Resource Scoping
- As a user, I can create private resources only I can access
- As a team member, I can share resources with my team by changing visibility to "team"
- As a user, I can make resources public for cross-team discovery and access
👨💼 Platform Administration
- As a platform admin, I have system-wide access to manage all teams and users
- As a platform admin, I can configure domain-based auto-admin assignment
- As an enterprise admin, I can integrate with corporate SSO providers
🔐 Security Features
Multi-Tenant Security Model
- ✅ Data Isolation: Team-scoped queries prevent cross-tenant data access
- ✅ Resource Ownership: Every resource has owner_email and team_id validation
- ✅ Visibility Enforcement: Private/Team/Public visibility strictly enforced
- ✅ Access Logging: Authentication and authorization events tracked
- ✅ Secure Tokens: Invitation tokens with expiration and single-use validation
Enterprise Security Controls
- ✅ Domain Restrictions: Corporate domain enforcement via SSO_TRUSTED_DOMAINS
- ✅ MFA Support: Automatic enforcement of SSO provider MFA policies
- ✅ Conditional Access: Location/device-based access controls via SSO providers
- ✅ Audit Trail: Comprehensive logging for compliance requirements
📊 Implementation Details
Database Schema Extensions
-- Core multi-tenancy tables
CREATE TABLE email_users (email PRIMARY KEY, password_hash, full_name, is_admin, ...);
CREATE TABLE email_teams (id UUID PRIMARY KEY, name, visibility, owner_email, ...);
CREATE TABLE email_team_members (id UUID PRIMARY KEY, team_id, user_email, role, ...);
CREATE TABLE email_team_invitations (id UUID PRIMARY KEY, team_id, invited_email, token, ...);
-- All resource tables extended with:
ALTER TABLE tool ADD COLUMN team_id UUID, ADD COLUMN owner_email VARCHAR, ADD COLUMN visibility VARCHAR;
ALTER TABLE server ADD COLUMN team_id UUID, ADD COLUMN owner_email VARCHAR, ADD COLUMN visibility VARCHAR;
ALTER TABLE resource ADD COLUMN team_id UUID, ADD COLUMN owner_email VARCHAR, ADD COLUMN visibility VARCHAR;
ALTER TABLE prompt ADD COLUMN team_id UUID, ADD COLUMN owner_email VARCHAR, ADD COLUMN visibility VARCHAR;
ALTER TABLE a2a_agent ADD COLUMN team_id UUID, ADD COLUMN owner_email VARCHAR, ADD COLUMN visibility VARCHAR;
API Endpoint Updates
- ✅ All resource endpoints support team_id filtering
- ✅ Team membership validation on all operations
- ✅ Consistent access control across all APIs
- ✅ Resource creation with automatic team assignment
UI/UX Enhancements
- ✅ Team management interface in Admin UI
- ✅ Resource visibility controls in all creation/edit forms
- ✅ Team member invitation workflows
- ✅ Multi-team resource discovery interface
📚 Documentation
Complete Documentation Suite
- ✅ Architecture Documentation:
docs/docs/architecture/multitenancy.md
(934 lines) - ✅ SSO Integration Tutorials:
docs/docs/manage/sso-ibm-tutorial.md
- GitHub and Google SSO guides
- ✅ Configuration Reference: Environment variables and settings
- ✅ Migration Guide: Single-tenant to multi-tenant upgrade path
- ✅ API Reference: Team-scoped endpoint documentation
Enterprise Deployment
- ✅ Production Checklist: Security requirements and best practices
- ✅ Troubleshooting Guide: Common multi-tenant scenarios and solutions
- ✅ Performance Tuning: Team-based indexing and query optimization
✅ Acceptance Criteria
Core Functionality
- Users can register with email/password authentication
- Personal teams are auto-created for every new user
- Users can create organizational teams and invite members
- All resources support Private/Team/Public visibility
- Team-scoped API endpoints work for all resource types
- Platform admins have system-wide management access
Security Requirements
- Argon2id password hashing with configurable parameters
- Enhanced JWT tokens include team memberships and permissions
- Multi-provider SSO integration (GitHub, Google, IBM Security Verify)
- Domain-based admin assignment and user restrictions
- Comprehensive audit logging for compliance
Enterprise Features
- Corporate domain trust and auto-user creation
- MFA enforcement via SSO providers
- Team invitation system with email notifications
- Cross-team resource discovery and access
- Migration path from single-tenant deployments
🚀 Production Status
Ready for Production
This epic represents completed, production-ready functionality including:
- ✅ Complete multi-tenant architecture with proper data isolation
- ✅ Enterprise SSO integration with major providers
- ✅ Comprehensive security model with RBAC and resource scoping
- ✅ Production-grade documentation and deployment guides
- ✅ Database migration strategy for existing installations
- ✅ Performance optimization with team-based indexing
Deployment Verification
- ✅ All unit and integration tests pass
- ✅ Security audit completed (no high/critical issues)
- ✅ Performance benchmarks meet requirements
- ✅ Documentation review completed
- ✅ Migration testing validated
🔄 Migration Impact
Breaking Changes
- Database schema extensions (handled by Alembic migrations)
- API endpoint changes (backward compatible with feature flags)
- Configuration additions (new environment variables)
Upgrade Path
- Database Migration: Automated Alembic migrations add multi-tenant schema
- Configuration Update: Add multi-tenancy environment variables
- Feature Enablement: Enable multi-tenancy features via configuration flags
- User Migration: Existing users get personal teams automatically
- SSO Integration: Configure SSO providers as needed
🏆 Business Impact
Enterprise Readiness
- ✅ Secure Multi-Tenancy: Enterprise customers can deploy with confidence
- ✅ SSO Integration: Seamless integration with existing identity infrastructure
- ✅ Team Collaboration: Enable collaborative workflows within organizations
- ✅ Resource Governance: Proper resource scoping and access controls
Scalability
- ✅ Performance Optimization: Team-based indexing and query filtering
- ✅ Resource Isolation: Proper data separation for compliance requirements
- ✅ Admin Efficiency: Platform-level management for enterprise deployments
This epic transforms MCP Gateway into a production-ready enterprise platform capable of supporting complex organizational structures with secure, scalable multi-tenancy.