创建自定义角色
API7 网关仅内置 Super Admin 一个角色,用于初始设置和紧急恢复。对于日常操作,请创建自定义角色,仅授予每个用户或团队实际需要的权限。
本指南说明一种常见模式:
- 对生产网关组的只读访问。
- 对测试网关组的完全访问。
- 一个组合这两项权限策略的自定义角色。
前提条件
开始前,请确保:
- API7 网关正在运行,且仪表板可访问。
- 您拥有可以管理角色和权限策略的用户令牌。请参见从控制台获取令牌。
- 至少拥有两个网关组,例如
test和production。 - 已知目标网关组ID,或者拥有可在权限策略中使用的标签。
有关策略语法的详情,请参见权限策略和权限边界。
第 1 步:为生产环境创建只读策略
创建一个权限策略,允许只读访问生产网关组及其服务。
- Dashboard
- Admin API
- 在控制台中,进入 Organization -> Permission Policies。
- 点击 Create Permission Policy。
- 输入名称,例如
production-readonly。 - 在策略编辑器中粘贴类似下方的策略,并将网关组ID 替换为生产组 ID。
- 保存策略。
{
"statement": [
{
"resources": [
"arn:api7:gateway:gatewaygroup/<production-gateway-group-id>"
],
"actions": [
"<.*>Get<.*>"
],
"effect": "allow"
},
{
"resources": [
"arn:api7:gateway:gatewaygroup/<production-gateway-group-id>/service/<.*>"
],
"actions": [
"<.*>Get<.*>"
],
"effect": "allow"
}
]
}
curl -k "https://localhost:7443/api/permission_policies" -X POST \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "production-readonly",
"desc": "Read-only access to the production gateway group",
"policy_document": {
"statement": [
{
"resources": [
"arn:api7:gateway:gatewaygroup/<production-gateway-group-id>"
],
"actions": [
"<.*>Get<.*>"
],
"effect": "allow"
},
{
"resources": [
"arn:api7:gateway:gatewaygroup/<production-gateway-group-id>/service/<.*>"
],
"actions": [
"<.*>Get<.*>"
],
"effect": "allow"
}
]
}
}'
第 2 步:为测试环境创建完全访问策略
创建第二项策略,允许完全访问测试网关组及其服务。
- Dashboard
- Admin API
- 在 Organization -> Permission Policies 中再次点击 Create Permission Policy。
- 输入名称,例如
test-full-access。 - 粘贴类似下方的策略,并将网关组ID 替换为测试组 ID。
- 保存策略。
{
"statement": [
{
"resources": [
"arn:api7:gateway:gatewaygroup/<test-gateway-group-id>"
],
"actions": [
"<.*>"
],
"effect": "allow"
},
{
"resources": [
"arn:api7:gateway:gatewaygroup/<test-gateway-group-id>/service/<.*>"
],
"actions": [
"<.*>"
],
"effect": "allow"
}
]
}
curl -k "https://localhost:7443/api/permission_policies" -X POST \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "test-full-access",
"desc": "Full access to the test gateway group",
"policy_document": {
"statement": [
{
"resources": [
"arn:api7:gateway:gatewaygroup/<test-gateway-group-id>"
],
"actions": [
"<.*>"
],
"effect": "allow"
},
{
"resources": [
"arn:api7:gateway:gatewaygroup/<test-gateway-group-id>/service/<.*>"
],
"actions": [
"<.*>"
],
"effect": "allow"
}
]
}
}'
第 3 步:创建自定义角色
创建一个组合上述两项权限策略的角色。
- Dashboard
- Admin API
- 进入 Organization -> Roles。
- 点击 Create Role。
- 输入名称,例如
Development Team Member。 - 添加描述,例如
Read-only access to production and full access to test。 - 附加
production-readonly和test-full-access权限策略。 - 保存角色。
创建角色:
curl -k "https://localhost:7443/api/roles" -X POST \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "Development Team Member",
"desc": "Read-only access to production and full access to test"
}'
然后使用 API 返回的角色和策略 ID,将权限策略附加到角色:
curl -k "https://localhost:7443/api/roles/<role-id>/attach_permission_policies" -X POST \
-H "X-API-KEY: ${API_KEY}" \
-H "Content-Type: application/json" \
-d '[
"<production-policy-id>",
"<test-policy-id>"
]'