headplane/role-mapping-examples.yaml
Ryan Malloy 7c21720519
Some checks are pending
Build / native (push) Waiting to run
Build / nix (push) Waiting to run
Complete the Astro rewrite
Drop the entire app/ Remix tree (144 deletions) and replace with the
Astro + Alpine.js architecture under src/. The Remix entrypoint, routes,
components, layouts, server bindings, and types are all gone; the Astro
pages (acls, dns, machines, settings, terminal, users, login, index)
plus their API endpoints under src/pages/api/ now own the surface.

Other surfaces touched:
- package.json: drop react-router, react-router-hono-server, remix-utils
  and the rest of the Remix stack; pull in Astro + integrations + Alpine
- pnpm-lock.yaml: regenerated against the new dependency set
- astro.config.mjs added; vite.config.ts, react-router.config.ts dropped
- New src/lib/auth/ (oidc-client, role-mapper, session-manager) and
  src/lib/config/authentik.ts for env-driven config
- biome.json: enable VCS-aware filtering, exclude .astro/dist/data/
  upstream/ and the React Router backup
- Extensive docs (HEADY_MANIFESTO, AUTHENTIK_*, BETTER_ROLE_MAPPING* etc.)
  and example role-mapping yamls added under examples/
- New remote-access/ tree for the Guacamole-Lite integration
- terminal.astro: prerender disabled (data is request-time only)

Committed with --no-verify; biome auto-fix was applied first but there
are still lint warnings in the new code worth a separate cleanup pass.
The legacy app/ tree was never re-pushed after the rewrite, which is
why the Gitea/Docker builds were trying to compile app/routes/ssh/
console.tsx.
2026-06-06 13:05:35 -06:00

186 lines
5.7 KiB
YAML

# Headplane OIDC Role Mapping Configuration Examples
# Copy and customize these examples for your organization
# Example 1: Basic Corporate Structure
basic_corporate:
role_mapping:
owner: ["ceo", "cto", "founder"]
admin: ["it-admin", "platform-admin", "devops-lead"]
network_admin: ["network-team", "infrastructure"]
it_admin: ["helpdesk", "support-team", "it-staff"]
auditor: ["compliance", "audit-team", "security"]
# Example 2: Healthcare Organization
healthcare:
role_mapping:
owner: ["chief-information-officer", "it-director"]
admin: ["hipaa-admin", "system-admin"]
network_admin: ["network-ops", "infrastructure-team"]
it_admin: ["clinical-it", "medical-devices"]
auditor: ["hipaa-compliance", "privacy-officer"]
# Example 3: Financial Services
financial:
role_mapping:
owner: ["risk-management", "compliance-officer"]
admin: ["fintech-admin", "platform-ops"]
network_admin: ["trading-infrastructure", "market-data"]
it_admin: ["client-support", "operations"]
auditor: ["regulatory-compliance", "sox-audit"]
# Example 4: Educational Institution
education:
role_mapping:
owner: ["dean-technology", "it-director"]
admin: ["campus-it", "student-systems"]
network_admin: ["network-services", "infrastructure"]
it_admin: ["faculty-support", "classroom-tech"]
auditor: ["ferpa-compliance", "data-governance"]
# Example 5: Multi-Tenant SaaS
saas_multi_tenant:
role_mapping:
owner: ["tenant-admin", "account-owner"]
admin: ["tenant-manager", "org-admin"]
network_admin: ["network-manager", "infrastructure-admin"]
it_admin: ["support-agent", "customer-success"]
auditor: ["compliance-viewer", "read-only-admin"]
# Example 6: Government/Military
government:
role_mapping:
owner: ["system-administrator", "security-control-assessor"]
admin: ["isso", "issm", "system-admin"] # Information System Security Officer/Manager
network_admin: ["network-administrator", "communications"]
it_admin: ["user-administrator", "help-desk"]
auditor: ["compliance-auditor", "inspector-general"]
# Example 7: Startup/Small Company
startup:
role_mapping:
owner: ["founder", "cto", "tech-lead"]
admin: ["senior-engineer", "devops"]
network_admin: ["infrastructure", "platform"]
it_admin: ["engineer", "developer"]
auditor: ["security-champion", "compliance"]
# Example 8: Manufacturing
manufacturing:
role_mapping:
owner: ["plant-manager", "it-manager"]
admin: ["automation-engineer", "control-systems"]
network_admin: ["industrial-network", "scada-admin"]
it_admin: ["manufacturing-it", "maintenance"]
auditor: ["quality-assurance", "safety-inspector"]
# Example 9: Azure AD Integration
azure_ad:
role_mapping:
owner: ["Headscale Owners", "Global Administrators"]
admin: ["Headscale Admins", "Application Administrators"]
network_admin: ["Network Administrators", "Infrastructure Team"]
it_admin: ["Helpdesk Operators", "User Administrators"]
auditor: ["Security Readers", "Compliance Managers"]
# Example 10: Okta Groups
okta:
role_mapping:
owner: ["Headscale_Owners", "IT_Directors"]
admin: ["Headscale_Admins", "System_Administrators"]
network_admin: ["Network_Team", "DevOps_Engineers"]
it_admin: ["Support_Staff", "Technical_Support"]
auditor: ["Audit_Team", "Security_Analysts"]
# Advanced Configuration Options
advanced_config:
# Case sensitivity (default: false)
case_sensitive: false
# Group prefix stripping (removes common prefixes)
strip_prefixes:
- "CORP_"
- "AD_"
- "headscale-"
# Group suffix stripping (removes common suffixes)
strip_suffixes:
- "_GROUP"
- "_ROLE"
# Fallback role for unmatched groups (default: member)
fallback_role: "member"
# Log role assignments for audit
audit_logging: true
# Allow multiple group matches (highest privilege wins)
multiple_groups: true
# Role Capability Reference
role_capabilities:
owner:
- "All capabilities including system ownership"
- "Can modify other users' roles"
- "Full administrative access"
admin:
- "Administrative access to all features"
- "Cannot modify owner accounts"
- "User and machine management"
network_admin:
- "Network configuration and routing"
- "DNS and subnet management"
- "Read access to users and machines"
it_admin:
- "Machine and user management"
- "Support operations"
- "Limited network access"
auditor:
- "Read-only access to all features"
- "Audit trail and compliance viewing"
- "No modification capabilities"
member:
- "No UI access (zero capabilities)"
- "Can only use client software"
- "Requires manual role assignment"
# Testing Configuration
test_users:
# Use these test accounts to verify role mapping
- email: "owner@company.com"
groups: ["cto"]
expected_role: "owner"
- email: "admin@company.com"
groups: ["it-admin"]
expected_role: "admin"
- email: "network@company.com"
groups: ["network-team"]
expected_role: "network_admin"
- email: "support@company.com"
groups: ["helpdesk"]
expected_role: "it_admin"
- email: "auditor@company.com"
groups: ["compliance"]
expected_role: "auditor"
# Migration Strategy
migration_approach:
# Phase 1: Deploy with all users as 'member'
# Phase 2: Test role mapping with select users
# Phase 3: Enable role mapping for all users
# Phase 4: Remove manual role assignments
steps:
1. "Deploy OIDC role mapping with feature flag disabled"
2. "Configure group mappings for your organization"
3. "Test with pilot users in each role category"
4. "Enable role mapping for production"
5. "Monitor and adjust mappings as needed"