2014-07-24 2 views
0

나는 비교적 복잡한 액세스 제어 상황 (많은 경험이없는, 완전히 잘못 될 수 있음)이 있다고 생각합니다. 이 시스템은 개인/사내 데스크톱 전용 응용 프로그램으로 차이가있을 경우에만 사용합니다.컴플렉스 (?) 액세스 제어

내가 인사에 대한 트랙 인증서을 일하고 시스템 (테이블 굵은 사용). 특정 사용자은이 시스템에 액세스 할 수 있으므로 다소 제어가 이루어 지지만 추가 제어가 필요합니다. 예를 들면; 모두 사용자인력에 액세스 할 수 있어야합니다. 이는 실제로 HR에만 국한되어야합니다. 또한 특정 사용자인사에만 액세스 할 수 있지만 특정 인증서에만 액세스 할 수 있습니다.

현재 생각은 인증서 권한/액세스 레벨을 가진 int이며 & 인사에 필드를 추가한다. this 설정과 유사합니다. 사용자 테이블은 비교가 가능하도록 "AccessLevel"필드도 갖습니다.

현재 액세스 수준에 대한 확신이 없으며 현재 다음 사항을 고려하고 있습니다. 내가 올바른 방향 여부에 향하고있는 경우

[Flags] 
public enum AccessLevel 
{ 
    None, 
    ReadOnly, 
    Normal, // Can view all Certificates and Personnel that aren't set to Management 
    Management, // For "sensitive" Personnel and/or Certificates 
    HR, // Full access 
    Admin // Permission control/editing 
} 

나는 특정 하지만 전에 이러한 복잡성에 대한 액세스 제어를 아니에요하지가 있습니까?

+0

계층 구조가 역할을 담당합니다. 직원이있는 경우 관리자가 직접 보고서의 인증서를 볼 수있게 하시겠습니까? – HABO

+0

그건 기술적으로 정확합니다. 그것은 계층 구조의 그 수준까지 정말로 비등하지 않습니다. HR은 주로 모든 사람의 인증서 관리를 담당합니다.즉, 인사이트 로지스틱스는 고객과 연락을 취하는 사람이기 때문에 특정 인증서에 대한 액세스가 필요합니다 (HR이 시스템을 사용하여 추적하고자하는 CV- 말하기 권한이 필요 없음). 즉 사람은이 증명서에 의해 입증 된 요구 사항을 충족시킵니다. – Trent

+0

간단한 시스템의 경우 일반적으로'Privileges' ('PrivilegeId','Name','ShortName' 응용 프로그램 코드에서 사용 된'Description') 테이블과'UserPrivileges' 테이블을 사용하여 액세스 권한과 테이블을 부여했습니다. 권한을 부여/취소 할 수있는 사용자를 제어합니다. 'UserAdministersPrivilege'. 따라서 비트 마스크가 제공하는 비트 피하기와 비트 부족 가능성을 피할 수 있습니다. 필자는 암시 적으로 여러 수준의 계층 구조를 가진 여러 시스템을 수행했습니다 (사용자는 기본적으로 해당 지사/부서/회사의 문서를 항상 볼 수 있습니다). 다양한 수준의 권한에 대한 명시 적 액세스. – HABO

답변

0

코드에 권한 논리를 쓰지 마십시오. 대신 귀하는 귀하의 승인을 외부화하려고 시도해야합니다. eXtensible Access Control Markup Language 인 XACML을 사용하십시오. XACML은 확장 된 아키텍처를 제공합니다. 정책 언어는 권한 부여 사례 (및 기타 사항)를 충족시킬 수있을만큼 충분히 풍부하고 고급 정책 아키텍처를 제공합니다.

XACML을 사용하면 다양한 작업 (보기, 편집, 컨트롤 ...)에 대한 규칙을 작성할 수 있으며 매개 변수/속성이 중요한지 선택할 수 있습니다. 예를 들어 당신이 쓸 수 : 및 user.id ==가 document.owner.id 경우에만

  • 는 사용자가 문서를 볼 수있는 경우

    • 사용자가 문서를 편집 할 수 있습니다 만 user.location 경우 경우 == document.location

    최근 Cloud Identity Summit에서 외부화 권한 부여에 대한 의견을 나누었습니다. 내 슬라이드 here을 찾을 수 있습니다.

    HTH, 데이비드.

  • +0

    좋은 시스템처럼 보입니다. 나는 그것이 내가 개발하고있는 것과 일할 것이라는 점을 확신하지 못한다. 그것은 MSSQL 데이터베이스와 통신하는 C# WinForms 데스크탑 응용 프로그램입니다 ... 그래서 내가 알 수있는 한, 규칙은 하드 코드 된 (명확하게 최선의 선택이 아님)이거나 데이터베이스에서 유지되어야합니다. 중앙 집중화 된 부분. – Trent

    +0

    XACML의 규칙은 XACML로 표현됩니다. 예를 들어 PDP를 사용하여 평가합니다. Balana (오픈 소스) 또는 Axiomatics (공급 업체). 그런 다음 PEP SDK를 사용하여 앱을 보호 할 자신의 클라이언트를 작성하십시오. –

    +0

    @FizzBuzz가 귀하의 도전 과제를 해결 했습니까? –