Permission Plugin
The permission plugin enables documentation of Kubernetes RBAC (Role-Based Access Control) permissions, function resources, and role templates.Features
- Function Resources - Document available API resources and permissions
- Role Templates - Generate docs for RBAC role templates
- Kubernetes Integration - Native support for K8s RBAC patterns
- Runtime Access - Access permission data in your components
Configuration
Configure the permission plugin in yourdoom.config.ts:
Function Resources
Function resources define what API resources are available and how they can be accessed.Structure
permissions/function-resources.yaml
TypeScript Types
packages/doom/src/plugins/permission/types.ts:3-16
Bind Cluster Options
- business - Business cluster only
- global - Global cluster only
- unlimit - Any cluster
Bind Namespace Options
- ” (empty) - No namespace restriction
- common - Common namespaces
- kube-public - Public Kubernetes namespace
- project_ns - Project namespaces
- system - System namespaces
Role Templates
Role templates define collections of permissions that can be assigned to users.Structure
permissions/role-templates.yaml
TypeScript Types
packages/doom/src/plugins/permission/types.ts:24-45
Supported Verbs
*- All operations- create - Create new resources
- get - Retrieve a resource
- list - List resources
- watch - Watch for resource changes
- update - Update a resource (full replace)
- patch - Partially update a resource
- delete - Delete a resource
- deletecollection - Delete multiple resources
Runtime Access
Access permission data in your components:Creating Permission Docs
Create a page that documents permissions:docs/permissions/rbac.mdx
Plugin Implementation
The plugin loads and processes permission files:packages/doom/src/plugins/permission/index.ts:24-56
Use Cases
Document Custom Roles
Permission Matrix
Create a permission comparison table:API Access Documentation
Document what APIs each role can access:Best Practices
- Principle of Least Privilege - Grant minimum necessary permissions
- Document Clearly - Explain what each role can do
- Use Descriptive Names - Name roles based on job functions
- Group Related Permissions - Create function resources by feature area
- Version Control - Track permission changes in git
- Regular Audits - Review and update permissions periodically
Example Configuration
Complete example with multiple roles:permissions/complete-example.yaml