2014-12-23 2 views
2

XACML을 사용한 승인을 위해 IS WSO2를 사용하고 있습니다. 정적 리소스에 대한 권한을 얻을 수 있습니다. 그러나 세분화와 관련된 설계는 확실하지 않습니다.엔터프라이즈 애플리케이션에서 XACML을 사용하여 심층적 인 세분화를 처리하는 방법

예 : getCarDetails (Object User)와 같은 메소드가 있는데이 특정 사용자에게 할당 된 자동차 만 가져야하는 경우 XACMl을 처리하는 방법은 무엇입니까?

Wso2는 데이터베이스에서 데이터를 가져올 수있는 사용자 정의 클래스를 사용할 수있는 PIP를 지원합니다. 그러나 우리가 PDP 측에서 원본 데이터베이스의 복사본을 만들거나 라이브 데이터로 업데이트하기 위해 원본 데이터베이스를 PIP에 제공해야하는지 확실하지 않습니다.

자동차는 응용 프로그램에 동적이기 때문에 예 : 현재 사용자 Alice에게 할당 된 10 대의 자동차. 갑자기 감독자가 자신의 목록에 응용 프로그램 수준 데이터베이스에 20 대 더 추가합니다. 그런 다음이 다른 20 대의 자동차가이 최신 정보를 가질 때까지 PDP 수준에서 정책에 자동으로 할당됩니다.

나는 약간의 실수를 저지를 수 있습니다. 하지만 전체 애플리케이션에서이 문제를 어떻게 다룰 지 확신하지는 않습니다. 복잡한 시나리오가 많이 있는데, 4 ~ 5 개 이상의 테이블에서 한 사용자에 대한 데이터를 얻고 그 시나리오를 처리하는 방법이 있습니다.

+1

나는 또한이 질문을 이해하는 데 필요한 일종의 질문이었습니다. 그렇다면 누구든지이 링크로 이동하십시오. http://stackoverflow.com/questions/27598049/how-to-use- xacml-and-pip-in-real-application/27607263 # 27607263 – Budhh

답변

3

귀하의 질문에 대한 답변은 XACML과 외부화 된 인증의 주요 이점을 전반적으로 강조합니다.

XACML에서는 허용되는 항목과 상위 수준 속성이라고 부르는 것을 사용하지 않는 항목에 대한 일반 전역 규칙을 정의합니다. (귀하의 경우) 차량의 속성이나 사용자 (역할, 부서, ...) 간단한 규칙이 될 수있다 예 (알파 구문을 사용하여)에 대한

:

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

모두 사용자의 지역 자동차의 영역은 응용 프로그램의 데이터베이스 내부에서 관리됩니다. 값은 PIP 또는 Policy Information Point (세부 정보 here)를 사용하여 읽습니다.

예를 들어 직접 할당에 대해 이야기합니다. 즉, 사용자가 직접 차량에 할당되었습니다. 이 경우, 규칙이 될 것입니다 :

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

이 할당 된 사용자 정보, 응용 프로그램 데이터베이스에, 어딘가 CSV 파일, 웹 서비스, 또는 정보의 다른 소스를 유지해야한다는 것을 의미합니다. 관리 관점에서 관리자는 사용자가 할당 한 목록 (또는 다른 방향으로 : 차량에 할당 된 사용자 목록에서 할당 된 사용자 추가/제거)에서 차량을 추가/제거 할 수 있음을 의미합니다.

XACML 규칙 자체는 변경되지 않습니다. 관리자가 직원 목록 (애플리케이션 수준 데이터베이스에서 유지 관리)에 20 대 이상의 자동차를 추가하면 PDP는 PIP를 통해 해당 정보를 사용할 수 있으며 이에 따라 액세스가 허용되거나 거부됩니다.

XACML의 주요 이점은 관리자가 할당 된 자동차 (일반 규칙)뿐만 아니라 부하 직원에게 할당 된 자동차 (a)를 볼 수있는 두 번째 규칙을 추가 할 수 있다는 것입니다 새 프록시 - 위임 규칙).

이 그림은 Axiomatics 블로그에서 찍은 XACML 흐름을 요약

The XACML Architecture - Axiomatics

HTH, 당신은 추가 질문이 있으면 알려 주시기. 당신은 download ALFA here 일 수 있고 watch tutorials here 일 수 있습니다.

+0

우선, 답변 해 주셔서 감사합니다. 그리고 예! 나는 PIP가 그것을하는 한 방법 일지 모르나.하지만 우리는 결국 우리가 얻을 수있는 디자인으로 확신하지 못한다. – Budhh

+1

우리는 응용 프로그램에 대한 중앙 집중식 역할 기반 액세스를 수행하는 것처럼 보이므로 응용 프로그램에서 권한 논리를 분리하고 응용 프로그램을 권한 부여 항목에서 자유롭게해야합니다. 언급 한대로 PIP를 사용하면 응용 프로그램 -> Ideneity 서버 -> 응용 프로그램 데이터베이스 -> Identity 서버 -> 응용 프로그램과 같은 요청 흐름이됩니다. 이제 ID 서버의 내 XACML이 내 응용 프로그램 수준 데이터베이스에 의존하게되었습니다. 우리가 엔터프라이즈 수준 중앙 집중식 액세스 제어의 진정한 이점을이 디자인에 따라 얻을 수 있는지 확신 할 수 없습니다. – Budhh

+0

좋은 코멘트. 다음 단계는 엔터프라이즈 데이터 모델 또는 사전을 작성하는 것입니다. 먼 길을 갈 것입니다. Btw는 대답을 수락하고/또는 투표하는 것을 잊지 마십시오. –

관련 문제