用户管理
API7 企业版提供内置用户管理和基于角色的访问控制 (RBAC)。你可以通过控制台或管理员 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(自配)。 |
roles | 数组 | 对分配给用户的角色的引用。 |
boundaries | 数组 | 权限策略直接附加到用户以限制其有效权限。 |
角色
角色是定义用户可以执行的操作的权限策略的集合。
- 内置角色:API7 网关附带一个内置角色
Super Admin,该角色绑定到不可编辑的super-admin-permission-policy并授予对所有资源的完全访问权限。初始管理员账户永久绑定到此角色。 - 自定义角色:创建适合你的组织结构的角色,例如
api_provider、runtime_admin或viewer。请参阅角色和权限策略了解设计指南。
创建自定义角色
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)。
请参阅 角色和权限策略 了解权限边界和完整的 JSON 语法,以及 权限策略操作和资源 了解受支持操作的完整目录和 ARN。
示例 权限策略
此策略允许对由 ID 标识的特定网关组进行只 读访问。
{
"name": "ReadOnlyProdGatewayGroup",
"desc": "Read-only access to the production gateway group.",
"policy_document": {
"statement": [
{
"effect": "allow",
"resources": ["arn:api7:gateway:gatewaygroup/prod-group-id"],
"actions": [
"gateway:GetGatewayGroup",
"gateway:GetGatewayInstance"
]
}
]
}
}
权限边界
权限边界是直接附加到用户而不是通过角色的策略。它们充当用户权限的“上限”。即使角色授予特定操作,用户也无法执行该操作,除非权限边界也允许。
使用边界将用户的操作限制在特定范围内,例如单个网关组或环境,无论他们拥有什么角色。
权限评估
API7 网关使用基于策略的评估引擎来授权请求。
- 引擎从用户分配的角色及其权限边界收集所有策略。
- 如果任 何适用的政策具有
deny效果,则该请求将立即被拒绝。 - 仅当至少有一个
allow策略与操作和资源匹配时才允许该请求。 - 如果没有策略明确允许该操作,则默认情况下拒绝该请求。
单点登录 (SSO)
API7 网关支持外部身份提供商进行身份验证和用户配置。
- OIDC (OpenID Connect):与 Okta、Auth0 或 Google 等提供商集成。
- SAML:支持企业身份系统。
- LDAP:根据 LDAP 目录对用户进行身份验证。
- SCIM:从你的身份提供商自动配置和取消配置用户。
通过 SSO 或 LDAP 进行身份验证的用户将其 provider 字段设置为 sso,而通过 SCIM 配置的用户将其 provider 字段设置为 scim。有关配置详细信息,请参阅控制台 SSO 和 SCIM 配置。