2013-02-13 6 views
5

시나리오 : 잘못된 당사자에게 공개 될 경우 법적인 책임을 질 수있는 중요한 사용자 데이터가 포함 된 Oracle 11g 데이터베이스.Oracle은 특정 사용자의 열을 숨 깁니다.

원하는 효과 : 특정 IP에서 연결하는 경우에만 특정 사용자,이 민감한 사용자 데이터가 포함 된 열을 볼 수 있습니다

나는 숨겨진 열 또는 가상 열이라는 것을 확실하지 않다 이것을하는 올바른 방법. 그것은 세밀한 액세스 제어 도움이 될 것 같습니다. 나는 최선의 해결책이 무엇인지 잘 모릅니다. IP에 의한 제한은 아마도 청취자 수준에서 수행됩니까?

질문의 의미 : 특정 사용자 만 사용할 수 있도록 열의 표시 여부를 제한 할 수있는 방법은 무엇입니까? 다른 모든 사용자는 "DESC TABLE_WITH_SENSITIVE_DATA"를 수행 할 때조차도 열을 결코 보지 못합니다.

모든 정보 주셔서 감사합니다.

+0

가상 열은 완전히 아닙니다. – Plouf

+0

FGAC는 열 DATA (또는 전체 행)를 숨길 수 있지만 열 자체는 숨길 수 없으며 'DESC'로 숨길 수도 없습니다. 열을 완전히 숨기고 뷰에 대한 액세스 권한 만 사용자에게 부여하는보기가 있어야합니다. – DazzaL

+0

"특정 IP에서만 연결하는 특정 사용자"라고 말하면 실제로 데이터베이스에서 연결 IP를 시행 하시겠습니까? 이 시점에서 네트워크 관리자와상의 한 적이 있습니까? – APC

답변

6

이 작업을 수행하는 가장 간단한 방법은 모든 열을 포함하지 않는보기를 만드는 것입니다. 테이블에서만 select를 허용하지 말고 뷰에서만 선택하십시오.

+1

이것은 간단하고 우아한 해결책으로 나는 그것을 놓치기 위해 멍청하다고 느낍니다. – emx

3

"적절한"방법은 특정 조건이 충족되지 않으면 열의 내용을 NULL로 바꿀 수있는 Fine-Grained Access Control (가상 개인 데이터베이스)을 사용하는 것입니다. 당신이 빈곤과 숙련 모두 느끼는 경우 http://docs.oracle.com/cd/B28359_01/network.111/b28531/vpd.htm#autoId17

당신은 아마 기능의 이러한 종류의 자신을 만들 수 있습니다

여기에 예제를 참조하십시오.

+0

VPD 및 FGAC에서 약간 읽은 후 이것이 데이터 숨기기를 어느 정도까지 시행 할 수 있음이 분명해졌지만 우리의 목적을 위해 이러한 기술을 사용하는 것은 지나치게 복잡하고 비용이 많이 듭니다. – emx

1

역할을 수정하고보기를 만들 수 있습니까? 아마도 두 개의 개별보기를 작성하고 해당 테이블에 대해 두 가지 다른 역할에 대한 액세스 권한을 부여 할 수 있습니다. 민감한 데이터를 볼 수 없도록 제한된 모든 사용자는 "제한된"역할에 속하며 다른 사용자는 "제한되지 않은"역할에 액세스 할 수 있습니다. 각 뷰에 대한 권한을 적절한 역할에 부여해야합니다.

보기와 관련된 기본 데이터를 업데이트하는 데 제한이 있다는 점에 유의해야합니다. 설명 된대로 here에서 집합 연산자, 집계 및 GROUP BY DISTINCT 및 조인을 포함하고 뷰를 수정할 수없는보기

관련 문제