用户管理
API7 企业版提供内置用户管理和基于角色的访问控制(RBAC)。你可以通过控制台或 Admin API 管理用户 、角色和权限策略。
前置条件
默认管理员账户
API7 网关首次启动时会创建一个默认管理员账户:
- 用户名:
admin - 密码:
admin - 角色:
super_admin
super_admin 角色是一个内置角色,具有对所有资源和操作的完全访问权限。为了安全起见,首次登录后请立即更改默认密码。
用户生命周期
通过邀请用户加入你的组织并分配适当的角色来管理用户。
邀请用户
要邀请新用户,请向 /api/invites 端点发送 POST 请求。
curl -k "https://localhost:7443/api/invites" -X POST \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"username": "developer_jane",
"password": "TemporaryPassword123!",
"name": "Jane Doe",
"email": "jane.doe@example.com"
}'
列出用户
要检索所有用户的列表:
curl -k "https://localhost:7443/api/users" -X GET \
-H "X-API-KEY: ${API_KEY}"
更新用户
更新用户的基本属性:
curl -k "https://localhost:7443/api/users/${USER_ID}" -X PUT \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "Jane Smith",
"email": "jane.smith@example.com"
}'
分配角色
通过更新分配的角色来向用户分配一个或多个角色。
curl -k "https://localhost:7443/api/users/${USER_ID}/assigned_roles" -X PUT \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"roles": ["role_id_1", "role_id_2"]
}'
删除用户
要从组织中删除用户:
curl -k "https://localhost:7443/api/users/${USER_ID}" -X DELETE \
-H "X-API-KEY: ${API_KEY}"
用户字段
用户资源包含以下关键字段:
| 字段 | 类型 | 描述 |
|---|---|---|
id | UUID | 系统为用户自动生成的唯一标识符。 |
username | 字符串 | 用于身份认证的唯一用户名。 |
name | 字符串 | 用户的显示名称。 |
email | 字符串 | 用户的电子邮件地址。 |
provider | 枚举 | 身份认证来源:builtin(本地)、sso(OIDC/SAML)或 scim(SCIM 预配)。 |
roles | 数组 | 分配给用户的角色引用。 |
boundaries | 数组 | 直接附加到用户的权限边界,用于限制用户的有效权限。 |
角色
角色是定义用户可以执行的操作的权限策略的集合。
- 内置角色:API7 网关附带一个内置角色
Super Admin,该角色绑定到不可编辑的super-admin-permission-policy并授予对所有资源的完全访问权限。初始管理员账户永久绑定到此角色。 - 自定义角色:创建适合你的组织结构的角色,例如
api_provider、runtime_admin或viewer。请参阅基于角色的访问控制(RBAC)了解设计指南。
创建自定义角色
curl -k "https://localhost:7443/api/roles" -X POST \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "API Provider",
"desc": "Can manage services and routes but cannot delete them.",
"policies": ["policy_id_1"]
}'
权限策略
权限策略定义细粒度访问控制规则。每项策略由一个或多个声明组成。
声明包括:
- 效果:
allow或deny。 - 资源:ARN 模式数组(例如,
arn:api7:gateway:gatewaygroup/<.*>)。 - 操作:
<namespace>:<Verb><Resource>形式的操作字符串数组(例如,gateway:GetGatewayGroup、iam:InviteUser)。 - 条件:可选约束,例如匹配标签(
MatchLabel)或验证字符串数组(AllOfStrings)。