gpt4 book ai didi

wso2 - 企业应用中如何用XACML处理深层次粒度化

转载 作者:行者123 更新时间:2023-12-01 23:48:51 25 4
gpt4 key购买 nike

我正在使用 IS WSO2 对 XACML 进行授权。我能够获得静态资源的授权。但在粒度化方面,我不确定设计。

示例:如果我有像 getCarDetails(Object User) 这样的方法,我应该只获取分配给该特定用户的那些汽车,那么如何使用 XACMl 处理这个问题?

Wso2 提供了对 PIP 的支持,我们可以在其中使用可以从数据库中获取数据的自定义类。但我不确定我们是否应该在 PDP 端复制原始数据库,或者将原始数据库提供给 PIP 以使用实时数据进行更新。

因为 Cars 对于应用程序来说是动态的,例如。目前有 10 辆车分配给用户 Alice。突然主管在他的列表中添加了 20 辆汽车,这些汽车将在应用程序级数据库中。那么这 20 辆汽车将如何在 PDP 级别的策略中自动分配,直到它也有这个最新信息。

我可能理解有误。但是我不确定如何处理这个问题,因为在整个应用程序中我们可能会遇到很多这种复杂的场景,有时我们会从超过 4 或 5 个表中获取一个用户的数据,那么如何处理这种场景?

最佳答案

您的问题很好,答案将突出 XACML 和外部化授权作为一个整体的主要优势。

在 XACML 中,您可以定义通用的全局规则,关于什么是允许的,什么是不使用我称之为高级属性的,例如车辆的属性(在您的情况下)或用户(角色,部门,...)

例如,一个简单的规则可以是(使用 ALFA 语法):

policy viewCars{
target clause actionId=="view" and resourceType=="car"
apply firstApplicable
rule allowSameRegion{
permit
condition user.region==car.region
}
}

用户的区域和汽车的区域都保存在应用程序的数据库中。这些值是使用 PIP 或政策信息点读取的(详情 here )。

在您的示例中,您谈论的是直接分配,即用户已直接分配给车辆。在这种情况下,规则将变为:

policy viewCars{
target clause actionId=="view" and resourceType=="car"
apply firstApplicable
rule allowAssignedVehicle{
permit
condition user.employeeId==car.assignedUser
}
}

这意味着分配的用户信息必须保存在应用程序数据库、CSV 文件、Web 服务或其他信息源中。这意味着从管理的角度来看,管理员会在用户的分配列表中添加/删除车辆(或者反过来:在车辆的分配用户列表中添加/删除分配的用户)。

XACML 规则本身不会改变。如果主管将 20 多辆汽车添加到员工列表(在应用程序级数据库中维护),则 PDP 将能够通过 PIP 使用该信息,并相应地授予或拒绝访问权限。

XACML 的主要好处是您可以添加第二条规则,规定主管可以看到他/她分配到的汽车(正常规则)以及分配给他/她的下属的汽车(新规则)委托(delegate)代理规则)。

这张图摘自 Axiomatics 博客,总结了 XACML 流程:

The XACML Architecture - Axiomatics

HTH,如果您还有其他问题,请告诉我。你可以download ALFA here你可以watch tutorials here .

关于wso2 - 企业应用中如何用XACML处理深层次粒度化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27626555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com