簡體   English   中英

如何在企業應用中用XACML處理深層次粒化

[英]How to deal with deep level granularization with XACML in enterprise application

我使用IS WSO2進行XACML授權。 我能夠獲得靜態資源的授權。 但在制粒時,我不確定設計。

示例:如果我有像getCarDetails(Object User)這樣的方法,我應該只獲得分配給該特定用戶的那些汽車,那么如何使用XACMl進行處理?

Wso2為PIP提供支持,我們可以使用可以從數據庫中獲取數據的自定義類。 但我不確定我們是應該在PDP端復制原始數據庫還是將原始數據庫提供給PIP以獲取實時數據的更新。

因為汽車對於應用來說是動態的,例如。 目前有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或策略信息點( 此處詳細信息)讀取值。

在您的示例中,您將討論直接分配,即用戶已直接分配給車輛。 在這種情況下,規則將變為:

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的主要優點是你可以添加第二條規則,說明主管可以看到他/她被分配到的汽車(正常規則)以及分配給他/她的下屬的汽車(一個新的代理委托人)規則)。

此圖取自Axiomatics博客,總結了XACML流程:

XACML架構 -  Axiomatics

HTH,如果您有其他問題,請與我們聯系。 你可以在這里下載ALFA ,你可以在這里觀看教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM