문제

현재 작업 중인 시스템에는 역할 기반 보안이 필요하며 이는 Java EE 스택에서 잘 지원됩니다.이 시스템은 비즈니스 도메인 전문가가 그 위에 코드를 작성할 수 있는 프레임워크가 되는 것을 목표로 합니다.

하지만 데이터 요구 사항도 있습니다. security.즉, 최종 사용자에게 표시되는 정보입니다.

이는 사실상 데이터베이스의 행(및 심지어 열)에 대한 가시성을 줄이는 것을 의미합니다.

우리는 지속성을 위해 Hibernate를 사용하고 있습니다.그러나 우리는 지속성 선택을 비즈니스 도메인 전문가에게 노출시키지 않기 위해 자체 주석을 사용하고 있습니다.

행 기반 보안의 경우 이는 다음과 같은 주석을 추가할 수 있음을 의미합니다. @Secured 엔터티 수준에서 선택 항목을 제한하기 위해 기본 테이블에 추가 열을 추가하게 됩니까?

열 기반 보안의 경우 아마도 @Secured 쿼리 생성을 지원하거나 측면을 사용하여 반환된 정보를 필터링하시겠습니까?

이것이 최대 절전 모드의 캐싱 메커니즘에도 어떤 영향을 미칠 수 있는지 궁금합니다.

다른 많은 사람들도 같은 문제를 겪었을 거라 확신하는데, 이 문제에 어떻게 접근하셨는지 궁금합니다.

매우 감사...

도움이 되었습니까?

해결책

최대 절전 모드에는 필터 메커니즘 그것은 당신에게 효과가 있을 수 있습니다.필터는 반환되는 행을 제한하기 위해 추가 절을 포함하도록 최대 절전 모드가 생성하는 쿼리를 다시 작성합니다.나는 최대 절전 모드에서 열을 가리거나 숨기기 위해 아무것도 알지 못합니다.

귀하의 데이터베이스가 이 기능을 지원할 수도 있습니다.예를 들어 Oracle에는 다음과 같은 기능이 있습니다. 가상 개인 데이터베이스 (VPD)는 데이터베이스 수준에서 쿼리를 다시 작성합니다.이 솔루션은 외부 프로그램(예:보고 도구)를 사용하면 보안 제한이 적용됩니다.VPD는 제한된 열을 NULL로 마스킹하는 기능도 지원합니다.

불행하게도 위의 솔루션은 제가 일반적으로 작업하는 유형의 프로젝트에 대한 보안 요구 사항을 지원하는 데 적합하지 않았습니다.일반적으로 위의 솔루션에서는 쉽게 표현할 수 없는 일종의 컨텍스트가 있습니다.예를 들어, 사용자는 자신이 생성한 데이터, 공개로 표시된 데이터, 자신이 관리하는 프로젝트에 속한 데이터를 볼 수 있습니다.

우리는 일반적으로 보안을 강화하는 데 필요한 값을 전달한 다음 그에 따라 쿼리를 생성하는 쿼리/파인더/DAO 개체를 생성합니다.

이게 도움이 되길 바란다

다른 팁

Hibernate 필터를 사용할 때 당신은 추가 제한 사항이 생성된 SQL 문에 적용되지 않는다는 것을 알아야 합니다. load() 또는 get() 행동 양식.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top