使用 API 创建角色

您正在查看 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,但不能使用 Create an API Proxy API。
  • 确定自定义角色中的用户可以在管理界面中查看哪些内容和执行哪些操作。例如,对 API 代理的只读访问权限会停用“API 代理”页面上的“+API 代理”按钮和“删除”按钮。

如需查看可以设置权限的资源和路径,请查看不同资源网址的管理 API 参考文档

如需获取有关角色管理的完整参考信息,请参阅 User roles API。

语法和优先级

您可以使用星号通配符 (*) 在权限设置中表示“之后的所有内容”。 不过,如果您仅在父资源(例如 /developers)上设置权限,而不设置任何更具体的权限(例如 /developers/*),则该权限适用于 /developers 及之后的所有内容。

在权限方面,PUT 也可充当 POST。

您可以将一般权限与更精细的资源权限混合使用。如果权限重叠,细化程度更高的设置优先。例如,假设为“developeradmin”角色设置了以下权限:

  • 针对 /developers 的 PUT 请求
  • 针对 /developers/* 的 GET 请求

这意味着 developeradmin 可以:

  • 创建开发者,但不更新任何特定开发者或任何子实体(因为该路径上具有更具体的 GET 权限)。
  • 获取任何开发者或子实体,但不获取所有开发者的列表。

如需查看您可以使用该 API 设置的权限的完整列表,请参阅权限参考

创建名为“development”的新自定义角色

创建“开发”角色,以使开发者能够查看、创建和更新 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 代理。

路径属性用于指定您要设置权限的制品。例如,/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" ]}'

创建角色:测试

创建“测试”角色,以使质量工程师能够查看 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" ]}

使用以下 c网址 命令设置这些权限:

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 代理的请求。该请求将成功,因为角色“development”允许用户创建 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