跳到主要内容
版本:3.10.x

用户管理

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

用户字段

用户资源包含以下关键字段:

字段类型描述
idUUID系统为用户自动生成的唯一标识符。
username字符串用于身份认证的唯一用户名。
name字符串用户的显示名称。
email字符串用户的电子邮件地址。
provider枚举身份认证来源:builtin(本地)、sso(OIDC/SAML)或 scim(SCIM 预配)。
roles数组分配给用户的角色引用。
boundaries数组直接附加到用户的权限边界,用于限制用户的有效权限。

角色

角色是定义用户可以执行的操作的权限策略的集合。

  • 内置角色:API7 网关附带一个内置角色 Super Admin,该角色绑定到不可编辑的 super-admin-permission-policy 并授予对所有资源的完全访问权限。初始管理员账户永久绑定到此角色。
  • 自定义角色:创建适合你的组织结构的角色,例如 api_providerruntime_adminviewer。请参阅基于角色的访问控制(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"]
}'

权限策略

权限策略定义细粒度访问控制规则。每项策略由一个或多个声明组成。

声明包括:

  • 效果allowdeny
  • 资源:ARN 模式数组(例如,arn:api7:gateway:gatewaygroup/<.*>)。
  • 操作<namespace>:<Verb><Resource> 形式的操作字符串数组(例如,gateway:GetGatewayGroupiam: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 网关使用基于策略的评估引擎来授权请求。

  1. 引擎收集分配给用户角色的所有策略及用户的权限边界。
  2. 如果任何适用策略的效果为 deny,请求会立即被拒绝。
  3. 至少一个角色策略必须使用 allow 允许该操作和资源。
  4. 如果用户设置了权限边界,则所有权限边界也必须允许该操作和资源。
  5. 如果没有策略明确允许该操作,则默认拒绝该请求。

单点登录(SSO)

API7 网关支持通过外部身份提供商进行身份认证和用户预配。

  • OIDC(OpenID Connect):与 Okta、Auth0 或 Google 等提供商集成。
  • SAML:支持企业身份系统。
  • LDAP:根据 LDAP 目录对用户进行身份认证。
  • SCIM:通过身份提供商自动预配和取消预配用户。

通过 SSO 或 LDAP 完成身份认证的用户,其 provider 字段为 sso;通过 SCIM 预配的用户,其 provider 字段为 scim。有关配置详情,请参见控制台单点登录(SSO)为控制台配置 SCIM 预配

后续步骤