重要的是:基于关系的访问控制处于早期访问阶段。此API可能会更改,不应在生产环境中使用。

您可以通过实现策略来定制请求的授权。每一个遗留对象类型遗留关系类型具有定义基于角色的访问控制(RBAC)的策略。每个遗留对象类型都有零个或多个策略来定义基于关系的访问控制(ReBAC)。

遗留对象类型或关系类型上的RBAC策略向代理和最终用户授予创建、读取、更新和删除权限对象记录关系的记录那种类型的。如果您提供代理和最终用户RBAC读取权限,那么它们也可以读取类型。

遗留对象类型上的ReBAC策略授予代理和最终用户额外的读取和更新权限。每个ReBAC策略指定一个源对象类型的关系类型禅宗:用户目标对象类型是。如果该类型的现有遗留关系记录从发出请求的用户指向类型为的遗留对象记录,然后ReBAC策略向对象记录授予读取和更新权限。换句话说,对象类型上的RBAC策略可能禁止代理或最终用户读取或更新该类型的遗留对象记录,但是遗留对象类型上的ReBAC策略可以允许用户读取或更新该类型的特定对象记录。

JSON格式

权限表示为具有以下属性的JSON对象:

名字 类型 只读 强制性的 描述
rbac 对象 对象类型的RBAC策略
rebac 对象

关系类型策略由具有以下属性的JSON对象定义:

名字 类型 可写的 要求 评论
rbac 对象 是的 是的 关系类型的RBAC策略

RBAC策略由一个JSON对象组成,该对象具有以下属性:

名字 类型 可写的 要求 评论
管理 对象 是的 没有 管理员的CRUD权限定义
代理 对象 是的 没有 代理的CRUD权限定义
end_user 对象 是的 没有 最终用户的CRUD权限定义
自定义 对象 是的 没有 自定义代理角色的CRUD权限定义。在此对象中,每个属性将自定义代理角色映射到CRUD权限定义。

ReBAC策略由一个JSON对象组成,该对象具有以下属性:

名字 类型 可写的 要求 评论
管理 对象 是的 没有 管理员的RU(读/更新)权限定义
代理 对象 是的 没有 座席RU权限定义
end_user 对象 是的 没有 终端用户的RU权限定义
自定义 对象 是的 没有 自定义代理角色的RU权限定义。在此对象中,每个属性将自定义代理角色映射到RU权限定义。

一个CRUD权限定义由一个JSON对象组成,具有以下属性:

名字 类型 可写的 要求 评论
创建 布尔 是的 没有
布尔 是的 没有
更新 布尔 是的 没有
删除 布尔 是的 没有

RU(读/更新)权限定义由一个JSON对象组成,该对象具有以下属性:

名字 类型 可写的 要求 评论
布尔 是的 没有
更新 布尔 是的 没有

自定义代理角色的策略

在Enterprise计划中,管理员可以定义自定义代理角色,并将这些角色分配给任何代理。看到创建自定义角色和分配代理(企业)在帮助中心。

RBAC或ReBAC策略可以有遗留自定义对象定义代理的权限自定义代理角色。对象指定自定义角色的ID和权限策略,根据父角色是RBAC还是ReBAC,可以是CRUD或RU策略。

属性获取自定义角色的id列表自定义角色端点。不验证自定义角色id以查看是否存在对应的角色。

如果自定义代理角色策略中的任何权限值未指定(对于CRUD权限定义为创建、读取、更新或删除,对于RU权限定义为读取或更新),则未指定的值将使用值false填充。

如果请求是由具有自定义代理角色的用户发出的,但是没有为该自定义代理角色创建策略,则将使用作为请求主题的对象或关系类型的现有代理权限处理该请求。

如果请求是由具有自定义代理角色的用户发出的,并且存在针对该自定义角色的策略,则该策略将覆盖授予该用户的正常代理权限。

例子

             
{“数据”{“rbac”{“代理”{“创造”真正的“读”真正的“更新”“删除”}“自定义”{“8237”{“创造”“读”真正的“更新”真正的“删除”}}}“rebac”{“user_to_many_products”{“end_user”{“更新”真正的}“自定义”{“8237”{“读”真正的“更新”}}}}}}

默认的基于角色的访问控制(RBAC)策略

当创建遗留对象类型或关系类型时,将向该类型发出默认RBAC策略。默认RBAC策略用于对遗留对象记录或与遗留对象类型或关系类型相关联的关系记录上的任何传入请求强制执行授权规则。默认RBAC策略中定义的权限如下。

             
{“admin”{“创造”真正的“读”真正的“更新”真正的“删除”真正的}“代理”{“创造”真正的“读”真正的“更新”真正的“删除”真正的}“end_user”{“创造”“读”“更新”“删除”}}

默认的基于关系的访问控制(ReBAC)策略

在遗留对象类型上创建ReBAC策略时,不需要指定所有权限。如果定义省略了某些权限,则其默认值如下。

             
{“admin”{“读”真正的“更新”真正的}“代理”{“读”“更新”}“end_user”{“读”“更新”}}

最后一个包含所有属性的完整示例。

例子

             
{“rbac”{“代理”{“创造”真正的“删除”“读”真正的“更新”真正的}“自定义”{“8237”{“创造”“删除”“读”真正的“更新”真正的}}“end_user”{“读”真正的}}“rebac”{“user_to_many_products”{“自定义”{“8237”{“读”真正的“更新”真正的}}“end_user”{“更新”真正的}}}}

显示遗留对象类型策略

  • GET / api /阳光/对象/类型/ {object_type_key} /权限

返回指定对象的策略遗留对象类型

允许

  • 代理

参数

名字 类型 要求 描述
object_type_key 字符串 路径 真正的 key属性是您自己定义的遗留对象类型的唯一标识符

代码示例

旋度
              
旋度https://{子域名}.亚博zendesk.com/api/sunshine/objects/types/{object_type_key}/权限- v - u{email_address}{密码}
              
进口“fmt”“输入输出”“net/http”函数主要{url:=“https://support.亚博zendesk.com/api/sunshine/objects/types/product/permissions”方法:=“获得”要求的事情犯错:=httpNewRequest方法url如果犯错! ={fmtPrintln犯错返回}要求的事情添加“内容类型”“application / json”客户端:=http客户端{}res犯错:=客户端要求的事情如果犯错! ={fmtPrintln犯错返回}推迟res身体关闭身体犯错:=ioReadAllres身体如果犯错! ={fmtPrintln犯错返回}fmtPrintln字符串身体}
Java
              
进口comsquareupokhttpOkHttpClient客户端=OkHttpClientHttpUrl构建器urlBuilder=HttpUrl解析“https://support.亚博zendesk.com/api/sunshine/objects/types/product/permissions”newBuilder请求请求=请求构建器urlurlBuilder构建方法“获得”addHeader“内容类型”“application / json”构建响应响应=客户端newCall请求执行
Nodejs
              
varaxios=需要“axios”var配置={方法“得到”url“https://support.亚博zendesk.com/api/sunshine/objects/types/product/permissions”{“内容类型”“application / json”}}axios配置然后函数响应{控制台日志JSONstringify响应数据}函数错误{控制台日志错误}
Python
              
进口请求url=“https://support.亚博zendesk.com/api/sunshine/objects/types/product/permissions”={“内容类型”“application / json”}响应=请求请求“获得”url=打印响应文本
鲁比(人名)
              
需要“net/http”uri=URI“https://support.亚博zendesk.com/api/sunshine/objects/types/product/permissions”请求=HTTP得到uri“内容类型”“application / json”响应=HTTP开始uri主机名uri港口use_ssl真正的|http|http请求请求结束

示例响应(年代)

200好了
              
//状态200 OK{“数据”{“rbac”{“admin”{“创造”真正的“删除”真正的“读”真正的“更新”真正的}“代理”{“创造”真正的“删除”真正的“读”真正的“更新”真正的}“end_user”{“创造”“删除”“读”“更新”}}}}

更新遗留对象类型策略

  • 补丁/ api /阳光/对象/类型/ {object_type_key} /权限

更新指定的策略遗留对象类型。如果没有对RBAC策略进行更新,则默认RBAC策略使用。如果一个请求为遗留对象类型创建了一个新的ReBAC策略,并且ReBAC策略中省略了一个属性,则默认回退策略使用。如果请求更新了现有的RBAC策略或ReBAC策略,并且省略了某个属性,则使用前一个策略中的相应属性。

允许

  • 管理员

参数

名字 类型 要求 描述
object_type_key 字符串 路径 真正的 key属性是您自己定义的遗留对象类型的唯一标识符

代码示例

旋度

为了清晰起见,示例将JSON放在一个单独的文件中,并将其导入到cURL语句中。

policies.json

              
{“数据”{“rbac”{“代理”{“创造”真正的“读”真正的“更新”真正的“删除”}“end_user”{“读”真正的}}“rebac”{“user_to_many_products”{“end_user”{“更新”真正的}}}}}

旋度片段

              
旋度https://{子域名}.亚博zendesk.com/api/sunshine/objects/types/{object_type_key}/权限- d @policies.json- h“内容类型:应用程序/ merge-patch + json”- x片- v - u{email_address}{密码}
              
进口“fmt”“输入输出”“net/http”函数主要{url:=“https://support.亚博zendesk.com/api/sunshine/objects/types/product/permissions”方法:=“补丁”要求的事情犯错:=httpNewRequest方法url如果犯错! ={fmtPrintln犯错返回}要求的事情添加“内容类型”“application / json”客户端:=http客户端{}res犯错:=客户端要求的事情如果犯错! ={fmtPrintln犯错返回}推迟res身体关闭身体犯错:=ioReadAllres身体如果犯错! ={fmtPrintln犯错返回}fmtPrintln字符串身体}
Java
              
进口comsquareupokhttpOkHttpClient客户端=OkHttpClientHttpUrl构建器urlBuilder=HttpUrl解析“https://support.亚博zendesk.com/api/sunshine/objects/types/product/permissions”newBuilderRequestBody身体=RequestBody创建MediaType解析“application / json””“”“请求请求=请求构建器urlurlBuilder构建方法“补丁”身体addHeader“内容类型”“application / json”构建响应响应=客户端newCall请求执行
Nodejs
              
varaxios=需要“axios”var配置={方法“补丁”url“https://support.亚博zendesk.com/api/sunshine/objects/types/product/permissions”{“内容类型”“application / json”}}axios配置然后函数响应{控制台日志JSONstringify响应数据}函数错误{控制台日志错误}
Python
              
进口请求url=“https://support.亚博zendesk.com/api/sunshine/objects/types/product/permissions”={“内容类型”“application / json”}响应=请求请求“补丁”url=打印响应文本
鲁比(人名)
              
需要“net/http”uri=URI“https://support.亚博zendesk.com/api/sunshine/objects/types/product/permissions”请求=HTTP补丁uri“内容类型”“application / json”响应=HTTP开始uri主机名uri港口use_ssl真正的|http|http请求请求结束

示例响应(年代)

200好了
              
//状态200 OK{“数据”{“rbac”{“admin”{“创造”真正的“删除”真正的“读”真正的“更新”真正的}“代理”{“创造”真正的“删除”“读”真正的“更新”真正的}“end_user”{“创造”“删除”“读”真正的“更新”}}“rebac”{“user_to_many_products”{“admin”{“读”真正的“更新”真正的}“代理”{“读”“更新”}“end_user”{“读”“更新”真正的}}}}}

显示遗留关系类型策略

  • 得到阳光/ api / / /类型/ {relationship_type_key} /权限的关系

返回指定对象的策略遗留关系类型

允许

  • 代理

参数

名字 类型 要求 描述
relationship_type_key 字符串 路径 真正的 遗留关系类型的键

代码示例

旋度
              
旋度https://{子域名}.亚博zendesk.com/api/sunshine/relationships/types/{relationship_type_key}/权限- v - u{email_address}{密码}
              
进口“fmt”“输入输出”“net/http”函数主要{url:=“https://support.亚博zendesk.com/api/sunshine/relationships/types/suppliers/permissions”方法:=“获得”要求的事情犯错:=httpNewRequest方法url如果犯错! ={fmtPrintln犯错返回}要求的事情添加“内容类型”“application / json”客户端:=http客户端{}res犯错:=客户端要求的事情如果犯错! ={fmtPrintln犯错返回}推迟res身体关闭身体犯错:=ioReadAllres身体如果犯错! ={fmtPrintln犯错返回}fmtPrintln字符串身体}
Java
              
进口comsquareupokhttpOkHttpClient客户端=OkHttpClientHttpUrl构建器urlBuilder=HttpUrl解析“https://support.亚博zendesk.com/api/sunshine/relationships/types/suppliers/permissions”newBuilder请求请求=请求构建器urlurlBuilder构建方法“获得”addHeader“内容类型”“application / json”构建响应响应=客户端newCall请求执行
Nodejs
              
varaxios=需要“axios”var配置={方法“得到”url“https://support.亚博zendesk.com/api/sunshine/relationships/types/suppliers/permissions”{“内容类型”“application / json”}}axios配置然后函数响应{控制台日志JSONstringify响应数据}函数错误{控制台日志错误}
Python
              
进口请求url=“https://support.亚博zendesk.com/api/sunshine/relationships/types/suppliers/permissions”={“内容类型”“application / json”}响应=请求请求“获得”url=打印响应文本
鲁比(人名)
              
需要“net/http”uri=URI“https://support.亚博zendesk.com/api/sunshine/relationships/types/suppliers/permissions”请求=HTTP得到uri“内容类型”“application / json”响应=HTTP开始uri主机名uri港口use_ssl真正的|http|http请求请求结束

示例响应(年代)

200好了
              
//状态200 OK{“数据”{“rbac”{“admin”{“创造”真正的“删除”真正的“读”真正的“更新”真正的}“代理”{“创造”真正的“删除”真正的“读”真正的“更新”真正的}“end_user”{“创造”“删除”“读”“更新”}}}}

更新遗留关系类型策略

  • 补丁/ api /阳光/ /类型/ {relationship_type_key} /权限的关系

更新指定的策略遗留关系类型。如果没有对RBAC策略进行更新,则默认RBAC策略使用。不能为遗留关系类型创建ReBAC策略。如果请求更新了现有的RBAC策略或ReBAC策略,并且省略了某个属性,则使用前一个策略中的相应属性。

允许

  • 管理员

参数

名字 类型 要求 描述
relationship_type_key 字符串 路径 真正的 遗留关系类型的键

代码示例

旋度

为了清晰起见,示例将JSON放在一个单独的文件中,并将其导入到cURL语句中。

policies.json

              
{“数据”{“rbac”{“代理”{“创造”真正的“读”真正的“更新”真正的“删除”}“end_user”{“读”真正的}}}}

旋度片段

              
旋度https://{子域名}.亚博zendesk.com/api/sunshine/relationships/types/{relationship_type_key}/权限- d @policies.json- h“内容类型:应用程序/ merge-patch + json”- x片- v - u{email_address}{密码}
              
进口“fmt”“输入输出”“net/http”函数主要{url:=“https://support.亚博zendesk.com/api/sunshine/relationships/types/suppliers/permissions”方法:=“补丁”要求的事情犯错:=httpNewRequest方法url如果犯错! ={fmtPrintln犯错返回}要求的事情添加“内容类型”“application / json”客户端:=http客户端{}res犯错:=客户端要求的事情如果犯错! ={fmtPrintln犯错返回}推迟res身体关闭身体犯错:=ioReadAllres身体如果犯错! ={fmtPrintln犯错返回}fmtPrintln字符串身体}
Java
              
进口comsquareupokhttpOkHttpClient客户端=OkHttpClientHttpUrl构建器urlBuilder=HttpUrl解析“https://support.亚博zendesk.com/api/sunshine/relationships/types/suppliers/permissions”newBuilderRequestBody身体=RequestBody创建MediaType解析“application / json””“”“请求请求=请求构建器urlurlBuilder构建方法“补丁”身体addHeader“内容类型”“application / json”构建响应响应=客户端newCall请求执行
Nodejs
              
varaxios=需要“axios”var配置={方法“补丁”url“https://support.亚博zendesk.com/api/sunshine/relationships/types/suppliers/permissions”{“内容类型”“application / json”}}axios配置然后函数响应{控制台日志JSONstringify响应数据}函数错误{控制台日志错误}
Python
              
进口请求url=“https://support.亚博zendesk.com/api/sunshine/relationships/types/suppliers/permissions”={“内容类型”“application / json”}响应=请求请求“补丁”url=打印响应文本
鲁比(人名)
              
需要“net/http”uri=URI“https://support.亚博zendesk.com/api/sunshine/relationships/types/suppliers/permissions”请求=HTTP补丁uri“内容类型”“application / json”响应=HTTP开始uri主机名uri港口use_ssl真正的|http|http请求请求结束

示例响应(年代)

200好了
              
//状态200 OK{“数据”{“rbac”{“admin”{“创造”真正的“删除”真正的“读”真正的“更新”真正的}“代理”{“创造”真正的“删除”“读”真正的“更新”真正的}“end_user”{“创造”“删除”“读”真正的“更新”}}“rebac”{}}}