Skip to main content

企业功能

基于角色的访问控制(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 只读访问

完整的权限矩阵请参阅团队协作。

自定义角色

企业版套餐可以创建符合组织需求的自定义角色:

创建自定义角色

  1. 进入 Settings → Roles → Create Role
  2. 命名角色(例如 “QA Engineer”、“Release Manager”)
  3. 从可用列表中选择权限
  4. 保存角色

示例: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"]
  }
}

该用户可以部署到预览和预发布环境,但不能部署到生产环境。

审批工作流

对敏感操作要求审批:

配置审批工作流

  1. 进入 Settings → Security → Approval Workflows
  2. 点击 Create Workflow
  3. 配置工作流:
{
  "name": "Production Deployment Approval",
  "trigger": "deployments:create:production",
  "approvers": {
    "type": "role",
    "roles": ["admin", "release-manager"],
    "required": 1
  },
  "timeout": "4h",
  "autoReject": true
}

审批流程

  1. 开发者发起生产部署
  2. 部署进入「Pending Approval」状态
  3. 审批者收到通知
  4. 审批者审查并通过/拒绝
  5. 如果通过,部署继续执行
  6. 如果被拒绝或超时,部署被取消

通过 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

最佳实践

  1. 最小权限原则 — 从最小权限开始,按需添加
  2. 使用自定义角色 — 创建与团队结构匹配的角色
  3. 生产部署需审批 — 为关键部署增加人工检查点
  4. 启用 IP 限制 — 将访问限制在已知网络内
  5. 定期审查权限 — 审计谁有权访问什么
  6. 使用基于时间的访问 — 临时提升权限,而非永久授权

故障排查

“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"