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

用户管理

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

用户字段

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

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

角色

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

  • 内置角色:API7 网关附带一个内置角色 Super Admin,该角色绑定到不可编辑的 super-admin-permission-policy 并授予对所有资源的完全访问权限。初始管理员账户永久绑定到此角色。
  • 自定义角色:创建适合你的组织结构的角色,例如 api_providerruntime_adminviewer。请参阅角色和权限策略了解设计指南。

创建自定义角色

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. 如果没有策略明确允许该操作,则默认情况下拒绝该请求。

单点登录 (SSO)

API7 网关支持外部身份提供商进行身份验证和用户配置。

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

通过 SSO 或 LDAP 进行身份验证的用户将其 provider 字段设置为 sso,而通过 SCIM 配置的用户将其 provider 字段设置为 scim。有关配置详细信息,请参阅控制台 SSOSCIM 配置

后续步骤