企业功能
基于角色的访问控制(RBAC)
通过自定义角色、审批工作流和 IP 限制,为企业安全需求配置细粒度权限。
Virex 的基于角色的访问控制(RBAC)让你可以精确地定义组织内谁可以做什么。企业版套餐包含高级 RBAC 功能,如自定义角色、审批工作流和 IP 限制。
权限模型
Virex 采用层级权限模型:
Organization
├── Organization-level permissions
│ ├── Billing
│ ├── SSO configuration
│ └── Member management
│
├── Team-level permissions
│ ├── Team settings
│ └── Team membership
│
└── Project-level permissions
├── Deployments
├── Environment variables
├── Domains
└── Logs
权限可以在任意层级授予,并向下继承。
内置角色
Virex 包含四个内置角色:
| 角色 | 说明 |
|---|---|
| Owner | 完全控制,包括账单和组织删除 |
| Admin | 管理团队、项目和成员 |
| Developer | 部署和管理项目资源 |
| Viewer | 只读访问 |
完整的权限矩阵请参阅团队协作。
自定义角色
企业版套餐可以创建符合组织需求的自定义角色:
创建自定义角色
- 进入 Settings → Roles → Create Role
- 命名角色(例如 “QA Engineer”、“Release Manager”)
- 从可用列表中选择权限
- 保存角色
示例:QA 工程师角色
{
"name": "QA Engineer",
"description": "Can deploy to staging and view production",
"permissions": [
"projects:read",
"deployments:read",
"deployments:create:preview",
"deployments:create:staging",
"logs:read",
"analytics:read"
]
}
该角色可以:
- 查看所有项目
- 创建预览环境和预发布环境的部署
- 查看日志和分析数据
该角色不能:
- 部署到生产环境
- 修改环境变量
- 管理域名
示例:发布经理角色
{
"name": "Release Manager",
"description": "Can promote deployments to production",
"permissions": [
"projects:read",
"deployments:read",
"deployments:promote:production",
"deployments:rollback",
"logs:read",
"analytics:read",
"notifications:manage"
]
}
权限参考
组织权限
| 权限 | 说明 |
|---|---|
org:read |
查看组织设置 |
org:update |
修改组织设置 |
org:delete |
删除组织 |
billing:read |
查看账单信息 |
billing:manage |
管理订阅和付款 |
members:read |
查看组织成员 |
members:invite |
邀请新成员 |
members:remove |
移除成员 |
members:update-role |
更改成员角色 |
sso:manage |
配置 SSO 设置 |
audit:read |
查看审计日志 |
项目权限
| 权限 | 说明 |
|---|---|
projects:read |
查看项目详情 |
projects:create |
创建新项目 |
projects:update |
修改项目设置 |
projects:delete |
删除项目 |
deployments:read |
查看部署 |
deployments:create:preview |
创建预览部署 |
deployments:create:staging |
部署到预发布环境 |
deployments:create:production |
部署到生产环境 |
deployments:promote:production |
提升到生产环境 |
deployments:rollback |
回滚部署 |
env:read |
查看环境变量 |
env:update |
修改环境变量 |
domains:read |
查看域名配置 |
domains:manage |
添加/移除域名 |
logs:read |
查看应用日志 |
analytics:read |
查看分析数据 |
环境专属权限
将操作限制在特定环境中:
{
"name": "Staging Developer",
"permissions": [
"deployments:create:preview",
"deployments:create:staging",
"env:update:preview",
"env:update:staging"
],
"restrictions": {
"environments": ["preview", "staging"]
}
}
该用户可以部署到预览和预发布环境,但不能部署到生产环境。
审批工作流
对敏感操作要求审批:
配置审批工作流
- 进入 Settings → Security → Approval Workflows
- 点击 Create Workflow
- 配置工作流:
{
"name": "Production Deployment Approval",
"trigger": "deployments:create:production",
"approvers": {
"type": "role",
"roles": ["admin", "release-manager"],
"required": 1
},
"timeout": "4h",
"autoReject": true
}
审批流程
- 开发者发起生产部署
- 部署进入「Pending Approval」状态
- 审批者收到通知
- 审批者审查并通过/拒绝
- 如果通过,部署继续执行
- 如果被拒绝或超时,部署被取消
通过 CLI 审批
# Request deployment (enters pending state)
virex deploy --production
# Approver approves
virex approve deployment-abc123
# Or rejects with reason
virex reject deployment-abc123 --reason "Missing changelog"
通过 Slack 审批
如果已启用 Slack 集成,审批者可以直接在 Slack 中审批:
🚀 Deployment Approval Request
Project: my-app
Environment: production
Requested by: developer@example.com
Commit: abc1234 - "Add new feature"
[Approve] [Reject] [View Details]
IP 限制
基于 IP 地址限制访问:
组织级 IP 白名单
{
"ipAllowlist": {
"enabled": true,
"addresses": [
"203.0.113.0/24",
"198.51.100.50"
],
"enforceFor": ["dashboard", "api", "cli"]
}
}
项目级限制
{
"project": "sensitive-app",
"ipAllowlist": {
"production": ["203.0.113.0/24"],
"staging": ["0.0.0.0/0"]
}
}
CI/CD 旁路
允许 CI/CD 系统绕过 IP 限制:
# Create a token with IP bypass
virex tokens create --name "GitHub Actions" --bypass-ip
基于时间的访问
授予临时的提升权限:
# Grant admin access for 4 hours
virex access grant user@example.com --role admin --duration 4h --reason "Production incident"
基于时间的访问:
- 在指定时长后自动过期
- 会记录在审计追踪中
- 如需要可提前撤销
审计追踪
所有 RBAC 变更都会被记录:
virex audit-log --filter rbac
TIMESTAMP USER ACTION DETAILS
2024-01-15 10:30 admin@example.com role.create "QA Engineer"
2024-01-15 10:25 admin@example.com member.role-change john@... → developer
2024-01-15 09:00 system access.expire temp admin access
最佳实践
- 最小权限原则 — 从最小权限开始,按需添加
- 使用自定义角色 — 创建与团队结构匹配的角色
- 生产部署需审批 — 为关键部署增加人工检查点
- 启用 IP 限制 — 将访问限制在已知网络内
- 定期审查权限 — 审计谁有权访问什么
- 使用基于时间的访问 — 临时提升权限,而非永久授权
故障排查
“Permission denied” 错误
检查用户的有效权限:
virex access check user@example.com --action deployments:create:production
审批工作流未触发
确认工作流已启用且匹配操作:
virex workflows list
virex workflows test production-approval --action deployments:create:production
IP 限制阻止了合法访问
检查 IP 是否在白名单中:
virex ip check 203.0.113.50
如需添加:
virex ip add 203.0.113.50 --reason "New office IP"