使用 API 创建角色

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

本主题讨论如何创建自定义角色,以及如何通过 Management API。我们还展示了如何通过该 API 测试角色分配。(有关 自定义角色的详情,请参阅在 界面。)

权限设置简介

角色权限是在 Management API URI(而不是管理界面 URI)上设置的。例如,如果您 想要在 Edge 中对应用开发者实体设置 PUT、GET 和/或 DELETE 权限 您需要设置对 /developers 资源的权限,因为 开发者的 Management API 路径为 https://api.enterprise.apigee.com/v1/organizations/{org_name}/developers。 (定义权限时无需包含路径的组织部分,因为 权限的限定于特定组织,因为本主题中的 Management API 调用 illustrate.)

您还可以设置针对特定实体的权限。例如:

  • 如果您想针对单个开发者设置权限,可以在 /developers/steve@example.com
  • 对于特定 API 产品(例如 free-api-product),请进行设置 日期:/apiproducts/free-api-product
  • 对于特定环境中的键值对映射,您需要设置对 /environments/test/keyvaluemaps/fooMap,或者 /environments/test/keyvaluemaps/*,用于测试中的所有键值对映射 环境

您使用 API 设置的权限:

  • 允许拥有自定义角色的用户启用 Management API 调用。例如,如果某个角色提供 所有 API 代理,则具有该角色的用户可以使用 List API Proxies API,但不能使用 创建 API 代理 API。
  • 确定拥有自定义角色的用户可在管理界面中查看哪些内容以及执行哪些操作。例如: 拥有对 API 代理的只读权限会禁止用户访问 API 上的 +API 代理和删除按钮 “代理”页面。

要查看您可以设置权限的资源和路径,请查看不同资源网址的 management API 参考文档

如需全面了解相关信息,请参阅 User roles API 角色管理。

语法和优先级

您可以使用星号通配符 (*) 来表示“后续内容”来设定这个选项 但是,如果您仅对父资源(例如,对 /developers)的权限设置,而不对 设置任何更具体的权限(例如 /developers/*)后,该权限将应用于 从 /developers 到之后的所有内容。

PUT 还在权限中充当 POST。

您可以对资源混合使用常规权限和更精细的权限。更精细的设置 权限重叠的情况优先例如,假设存在以下情况 在“developeradmin”中角色:

  • PUT,位于 /developers
  • 前往 /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" ]}'

创建角色:测试

创建“测试”可让质量工程师查看 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 文件等。将此权限添加到 “testing”我们让质量工程师能够查看他们正在开发的 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"]
   }
  ]
}'

其中 &lt;ms-IP&gt; 是边缘管理服务器的 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