<ph type="x-smartling-placeholder"></ph>
您正在查看 Apigee Edge 文档。
转到
Apigee X 文档。 信息
本主题将介绍如何通过管理 API 创建自定义角色并向用户分配角色。我们还将介绍如何通过 API 测试角色分配。(有关 自定义角色的详情,请参阅在 界面。)
权限设置简介
角色权限是在管理 API URI(而非管理界面 URI)上设置的。例如,如果您想为 Edge 组织中的应用开发者实体设置 PUT、GET 和/或 DELETE 权限,则需要为 /developers
资源设置权限,因为开发者的管理 API 路径为 https://api.enterprise.apigee.com/v1/organizations/{org_name}/developers
。(在定义权限时,您无需包含路径中的组织部分,因为权限的范围限定为特定组织,如本主题中的管理 API 调用所示。)
您还可以为特定实体设置权限。例如:
- 如果您想设置针对单个开发者的权限,请在以下位置进行设置:
/developers/steve@example.com
- 对于特定 API 产品(例如 free-api-product),请在
/apiproducts/free-api-product
上进行设置 - 对于特定环境中的键值对映射,您可以为
/environments/test/keyvaluemaps/fooMap
或/environments/test/keyvaluemaps/*
设置权限,也可以为测试环境中的所有键值对映射设置权限。
您使用 API 设置的权限:
- 允许自定义角色中的用户根据其权限进行管理 API 调用。例如,如果某个角色提供 所有 API 代理,则具有该角色的用户可以使用 List API Proxies API,但不能使用 创建 API 代理 API。
- 确定具有自定义角色的用户可以在管理界面中查看和执行哪些操作。例如,对 API 代理的只读访问会停用“API 代理”页面上的“+API 代理”和“删除”按钮。
如需查看您可以设置权限的资源和路径,请参阅管理 API 参考文档中的不同资源网址。
如需有关角色管理的完整参考信息,请参阅 User roles API。
语法和优先级
您可以使用星号通配符 (*) 来表示“后续内容”来设定这个选项 但是,如果您仅对父资源(例如,对 /developers)的权限设置,而不对 设置任何更具体的权限(例如 /developers/*)后,该权限将应用于 从 /developers 到之后的所有内容。
PUT 还在权限中充当 POST。
您可以对资源混合使用一般权限和更精细的权限。更精细的设置 权限重叠的情况优先例如,假设存在以下情况 在“developeradmin”中角色:
- 对 /developers 执行 PUT 操作
- 前往 /developers/* 获取
这意味着,开发者管理员可以:
- 创建开发者,但无法更新任何特定开发者或任何子实体(因为该路径上的 GET 权限更具体)。
- 获取任何开发者或子实体,但无法获取所有开发者的列表。
如需查看可通过该 API 设置的权限的完整列表,请参阅权限参考。
新建一个名为“开发”的自定义角色
创建“开发”角色,以便开发者查看、创建和更新 API 代理。
$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles -H "Content-type:application/json" -X POST -d'{ "role" : [ { "name" : "development" } ] }'
向开发者角色添加权限
您可以为整个 Edge 工件组(例如所有 /apps、/apis、/apiproducts 等)以及各个工件(例如特定应用、API 代理或 API 产品)设置 GET、PUT 和 DELETE 权限。
借助 GET,用户可以查看任何 API,包括 API 代理配置文件、关联的政策、JavaScript、XSLT 文件等。通过对 API 授予 PUT 权限,开发者可以 可以创建、修改、导入、导出、部署和取消部署 API 代理。
path 属性指定您要设置权限的工件。例如,/applications、/apps、/apiproducts、/developers 或 /reports。
curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles/development/permissions -H "Content-type:application/json" -X POST -d'{"path" : "/applications","permissions" : [ "put", "get" ]}'
创建角色:测试
创建“testing”角色,以便质量工程师查看 API 代理及其内容(例如政策)。
$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles -H "Content-type:application/json" -X POST -d'{ "role" : [ { "name" : "testing" } ] }'
向测试角色添加权限
借助 GET,用户可以查看任何 API(包括其配置文件),以及任何关联的政策、JavaScript、XSLT 文件等。通过向“测试”角色添加此权限,我们可以让质量工程师查看他们正在测试的 API 的内容。不过,此角色的用户不能创建、修改、导入、导出和部署 和取消部署 API 代理。
$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles/testing/permissions -H "Content-type:application/json" -X POST -d'{"path" : "/applications","permissions" : [ "get" ]}'
对于 Edge 的本地安装,必须设置以下一组最低权限,才能允许用户登录 Edge 界面:
{"path" : "/","permissions" : [ "get" ]} {"path" : "/*","permissions" : [ ]} {"path" : "/environments","permissions" : [ "get" ]} {"path" : "/userroles","permissions" : [ "get" ]}
使用以下 cURL 命令设置这些权限:
curl -H "Content-Type:application/json" -u email:password \ -X POST \ http://<ms-IP>:8080/v1/organizations/{org_name}/userroles/testing/resourcepermissions \ -d '{ "resourcePermission" : [ { "path" : "/", "permissions" : [ "get" ] }, { "path" : "/*", "permissions" : [] }, { "path" : "/environments", "permissions" : [ "get" ] }, { "path" : "/userroles", "permissions" : [ "get"] } ] }'
其中,<ms-IP> 是边缘管理服务器的 IP 地址或 DNS 名称。
将用户添加到“测试”角色
如需为用户预配用户角色,请执行以下操作:
$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/users/justauser@apigee.com/userroles -H "Content-type:application/json" -X POST -d'{"role" : [ {"name" : "testing"} ] }'
以用户身份查看 API
模拟用户并向 API 发出请求 用于查看 API 代理的服务。用户应该能够查看 API 及其内容。$ curl -u justauser@apigee.com:secret https://api.enterprise.apigee.com/v1/o/{org_name}/apis
$ curl -u justauser@apigee.com:secret https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/policies
以测试角色用户身份创建 API
模拟用户并向 API 服务发出请求以创建 API 代理。API 服务会拒绝该请求,因为“testing”角色不允许用户创建 API。
$ curl -u justauser@apigee.com:secret -H "Content-Type: application/json" https://api.enterprise.apigee.com/v1/o/{org_name}/apis -X POST -d'{"name" : "rbacTestApi"}'
将用户添加到开发者角色
现在,为用户预配“开发”角色。
$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/users/justauser@apigee.com/userroles -H "Content-type:application/json" -X POST -d'{"role" : [ {"name" : "development"} ] }'
以开发角色中用户身份创建 API
冒充用户并重复向 API 平台发出请求,以创建 API 代理。由于“开发”角色确实允许用户创建 API,因此请求将会成功。
$ curl -u justauser@apigee.com:secret -H "Content-Type: application/json" https://api.enterprise.apigee.com/v1/o/{org_name}/apis -X POST -d'{"name" : "rbacTestApi"}'
获取用户的用户角色
作为组织管理员,您可以查看用户的用户角色列表(在整个 组织)。
$ curl -u email:password -X GET https://api.enterprise.apigee.com/v1/users/justauser@apigee.com/userroles