Skip to content

feat(v6.2.0): multi-tenant identity, governance profiles, community-saas evaluation server#339

Closed
saurabhjain1592 wants to merge 1 commit intomainfrom
sync/enterprise-20260409-162114-24201071398
Closed

feat(v6.2.0): multi-tenant identity, governance profiles, community-saas evaluation server#339
saurabhjain1592 wants to merge 1 commit intomainfrom
sync/enterprise-20260409-162114-24201071398

Conversation

@saurabhjain1592
Copy link
Copy Markdown
Member

Sync from Enterprise Repository

This PR syncs changes from the enterprise repository to the Community repository.

Summary

  • Commits synced: 21
  • Files changed: 293

Review Checklist

  • Changes look correct
  • No enterprise-only content included
  • CI checks pass

Auto-generated by sync-community-repo workflow (ADR-016)

Commits: 028eecc6,b1ea2d7f,546cf4dd,80e79335,966fde23,ffdf908d,83a30aff,5e10f5c0,ca6c5406,ad567817,2e41f287,500cb409,c7e1046b,fdbd6327,142c935f,4339c362,f68497e5,a27b7c4a,9d731a84,3bce0fb6,c070a7e9,11b1261d,29e790b6,48a0bb1f,556dd02b,1977f4c9,5d4a5fbd,a95b4384,816c81e2,dd932652,8cc0ea33

### Security
- Ed25519 enterprise license signing key rotated (was embedded in setup-e2e-testing.sh)
- Rotation tool rewrites all active licenses across regions dynamically
- Removed validateClient() mock auth fallback — enterprise MCP handlers now reject unauthenticated requests with 401
- Pre-commit gitleaks rule blocks Ed25519 seed commits

### Added
- Community SaaS evaluation server (try.getaxonflow.com): self-registration, rate limiting, Ollama-only, 30-day expiry
- Migration 068: community_saas_registrations + daily usage tables
- Governance profiles via AXONFLOW_PROFILE env var (dev/default/strict/compliance)
- Per-category enforcement via AXONFLOW_ENFORCE env var (pii,sqli,dangerous_commands,all,none)
- Profile banner at startup — logs active profile + resolved per-category actions
- Telemetry endpoint_type field on all SDKs (localhost/private_network/remote/community-saas)
- SoX-compliant telemetry governance: source classification, provenance chain, update workflow
- Customer portal multi-tenant identity (migration 065: tenant_id on user_sessions)
- Agent test coverage restored to 77% with DB-backed auth/MCP/handler tests
- Community SaaS infrastructure: CFN templates, docker-compose overlay, Ollama EC2
- SDK version sweep for v6.1.0 across all examples

### Changed
- Default PII_ACTION relaxed from redact to warn (set AXONFLOW_PROFILE=strict to restore)
- SQLi and sensitive-data defaults also relaxed to warn
- Migration 066: system-default policies rewritten to match new defaults
- Canonical contact email standardized to hello@getaxonflow.com

### Fixed
- Multi-tenant IDOR: X-Org-ID now derived from validated client license, not deployment env var
- Nine workflow service methods now enforce tenant/org ownership (was classic IDOR on GetWorkflow)
- Unified execution handler requires both X-Tenant-ID and X-Org-ID (previously optional)
- MCP check-input/check-output audit log OrgID derived from authenticated client
- deploy-client.sh JWT path no longer silently falls back to hardcoded SM path
- Invalid env var values (PII_ACTION=typo) now preserve active profile instead of reverting to legacy defaults
- AXONFLOW_ENFORCE=all/none now match documented profile aliases exactly
- LoadEnforceFromEnv returns error instead of log.Fatalf (no longer crashes test binaries)
- Portal shows real completed step count in executions list
- Evaluation tier MaxPendingApprovals corrected from 100 to 25
@saurabhjain1592 saurabhjain1592 added the community-sync Sync from enterprise repository label Apr 9, 2026
DependsOn: SecurityGroupWaitCondition
Properties:
Type: application
Scheme: !Ref LoadBalancerScheme
Comment on lines +1048 to +1057
ALBListenerHTTP:
Type: AWS::ElasticLoadBalancingV2::Listener
Condition: UseHTTP
Properties:
LoadBalancerArn: !Ref AxonFlowALB
Port: 80
Protocol: HTTP
DefaultActions:
- Type: forward
TargetGroupArn: !Ref AgentTargetGroup
Comment on lines +1060 to +1069
OrchestratorListenerHTTP:
Type: AWS::ElasticLoadBalancingV2::Listener
Condition: UseHTTP
Properties:
LoadBalancerArn: !Ref AxonFlowALB
Port: 8081
Protocol: HTTP
DefaultActions:
- Type: forward
TargetGroupArn: !Ref OrchestratorTargetGroup
# trivy:ignore:AVD-AWS-0104 -- Prometheus requires HTTPS egress for AWS ECS service discovery API
FromPort: 443
ToPort: 443
CidrIp: 0.0.0.0/0
# trivy:ignore:AVD-AWS-0104 -- Grafana requires internet access for plugin downloads and AWS Secrets Manager
FromPort: 443
ToPort: 443
CidrIp: 0.0.0.0/0
Comment on lines +920 to +951
AxonFlowDatabase:
Type: AWS::RDS::DBInstance
DeletionPolicy: Snapshot
UpdateReplacePolicy: Snapshot
Properties:
DBInstanceIdentifier: !Sub '${AWS::StackName}-db'
Engine: postgres
EngineVersion: !Ref DBEngineVersion
DBInstanceClass: !Ref DBInstanceClass
AllocatedStorage: 100
StorageType: gp3
StorageEncrypted: true
MasterUsername: axonflow
MasterUserPassword: !Ref DBPassword
DBName: axonflow
DBSubnetGroupName: !Ref DBSubnetGroup
VPCSecurityGroups:
- !Ref DBSecurityGroup
MultiAZ: !Ref DBMultiAZ
BackupRetentionPeriod: 7
PreferredBackupWindow: '03:00-04:00'
PreferredMaintenanceWindow: 'sun:04:00-sun:05:00'
PubliclyAccessible: false
EnableIAMDatabaseAuthentication: true
EnablePerformanceInsights: true
PerformanceInsightsRetentionPeriod: 7
DeletionProtection: true
EnableCloudwatchLogsExports:
- postgresql
Tags:
- Key: Name
Value: !Sub '${AWS::StackName}-database'
Type: AWS::SecretsManager::Secret
Properties:
Name: !Sub '${AWS::StackName}-db-password'
KmsKeyId: alias/aws/secretsmanager
Properties:
Name: !Sub '${AWS::StackName}-grafana-password'
Description: Grafana admin and database password
KmsKeyId: alias/aws/secretsmanager
Properties:
Name: !Sub '${AWS::StackName}-internal-service-secret'
Description: Shared secret for Agent-Orchestrator internal service authentication
KmsKeyId: alias/aws/secretsmanager
Properties:
Name: !Sub '${AWS::StackName}-llm-keys'
Description: LLM provider API keys (OpenAI, Anthropic, Google, Azure OpenAI)
KmsKeyId: alias/aws/secretsmanager
@saurabhjain1592
Copy link
Copy Markdown
Member Author

Closing — additional commits landed on enterprise main after this sync was triggered. Will re-sync.

@saurabhjain1592 saurabhjain1592 deleted the sync/enterprise-20260409-162114-24201071398 branch April 10, 2026 00:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

community-sync Sync from enterprise repository

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants