계층적 그룹 권한 이론/리소스?
-
09-06-2019 - |
문제
계층적 사용자 계정 시스템 설정과 관련된 유용한 리소스를 아는 사람이 있습니까?저는 현재 하나를 설정하고 있으며 좀 더 복잡한 논리(특히 권한 결정과 관련된)로 어려움을 겪고 있습니다.나는 나에게 도움이 될만한 자원을 찾을 수 있기를 바랐습니다.
일부 배경:중첩된 그룹 계층 구조를 허용하는 웹 CMS용 사용자 계정 시스템을 구축 중입니다.각 그룹은 읽기, 쓰기, 추가 및 삭제에 대한 액세스를 허용/거부할 수 있습니다(해당 그룹에 대해 명시적으로 또는 상위 그룹 중 하나에 의해 암시적으로).그것이 충분히 복잡하지 않은 것처럼 시스템에서는 사용자가 여러 그룹의 구성원이 될 수도 있습니다.-- 여기서 막혔어요.모든 설정을 완료했지만 특정 사용자에 대한 권한을 결정하는 실제 논리를 이해하는 데 어려움을 겪고 있습니다.
해결책
CakePHP 매뉴얼에는 액세스 제어 목록의 작동 방식에 대한 훌륭한 설명이 있습니다.
http://book.cakephp.org/2.0/en/core-libraries/comComponents/access-control-lists.html
다른 팁
특정 그룹에 대해 설정된 권한을 비트 마스크로 나타냅니다.비트 마스크를 함께 OR하면 결과 권한 세트가 제공됩니다.
@Alex 업데이트:
나는 이 답변을 3년 전에 썼지만 다음과 같은 내용을 암시하고 있었던 것 같습니다...
질문에서
중첩된 그룹 계층 구조.각 그룹은 읽기, 쓰기, 추가 및 삭제에 대한 액세스를 허용/거부 할 수 있습니다 (해당 그룹에 대해 명시 적으로 또는 부모 중 한 사람이 암시 적으로).그것이 충분히 복잡하지 않은 것처럼, 시스템을 통해 사용자는 여러 그룹의 구성원이 될 수 있습니다.-- 여기서 막혔어요.나는 모든 것을 설정했지만, 주어진 사용자에 대한 Pemission을 결정하기위한 실제 논리로 어려움을 겪고 있습니다.
시스템에서 그룹(또는 역할)의 전체 권한 집합과 일치하는 비트마스크를 할당합니다.
예를 들어 00
(여기서 두 비트를 사용하면 간단해집니다!)
첫 번째 비트는 다음과 같습니다. Permission A
그리고 두 번째 Permission B
.
이제 그룹 A가 다음 권한 집합을 부여한다고 가정해 보겠습니다. 01
.
...그룹 B가 다음 권한 집합을 부여한다고 가정해 보겠습니다. 10
.
임의의 그룹 집합에 있는 사용자에 대한 결과 권한 집합을 얻으려면 논리적 작업을 수행할 수 있습니다. OR
권한 세트 비트 마스크에서:
Permission set for Group A 01
Permission set for Group B 10 OR
----
Resultant permission set 11 (i.e. both permission A and B are conferred)
나는 질문자의 시스템에 대해 자세히 알지 못하지만 여기에 설명된 시스템을 확장하여 다양한 논리 연산자를 사용하여 다양한 그룹 구성 동작을 달성할 수 있습니다.
권한을 살펴보세요. 앤드류 파일 시스템.이를 통해 사용자는 자신의 그룹을 만들고 관리하는 동시에 관리자 권한과 ACL을 선택적으로 할당할 수 있습니다.성가신 세부 사항 중 많은 부분이 해당 모델에서 이미 해결되었음을 알 수 있습니다.
편집하다: AFS 문서에 대한 더 나은 링크는 다음과 같습니다.
http://www.cs.cmu.edu/~help/afs/index.html
그룹에 관한 섹션은 다음과 같습니다.
나는 이전에 이것을 정확하게 수행했으며 이는 사소한 구현이 아닙니다.SecurityPermission 클래스를 살펴보고 싶을 것입니다.
[http://msdn.microsoft.com/en-us/library/system.security.permissions.securitypermission.aspx][1]
이전에 XML을 활용하고(다시 사용할지는 잘 모르겠습니다) 해당 XML을 CLR 저장 프로세스를 통해 XML 열에 있는 SQL 서버 내부의 권한 목록으로 저장하여 이 작업을 수행한 적이 있습니다.XML에는 "권한"이라는 요소가 있으며 권한은 실제로 코드 내부의 ENUM입니다.각 권한은 SecurityPermission 클래스(위에 링크됨)의 새로운 구현이었습니다. 사용자는 SQL Server에 정의된 그룹에 묶여 있었고, 사용자가 그룹에 추가/제거되면 XML 문서는 어떤 그룹에 속해 있는지 반영하도록 업데이트되었습니다. 의.
사용자가 로그인하자마자 사용자 자격 증명이 애플리케이션 스토어(세션)에 로드된 다음 그에 따라 액세스됩니다.인증이 필요할 때 애플리케이션 스토어의 XML은 "FromXML" 메소드를 통해 SecurityPermission으로 풀다운되어 로드됩니다.이 시점에서 나는 다음 방법을 사용하여 사용자에게 권한이 있는지 확인합니다.
- 수요
- 교차
- 노동 조합
- 제한 없음
- IsSubSetOf
등등, 등등, 등등.
그 시점에서 Demand를 수행한 후 SecurityPermissions에서 보안 루틴을 구현한 방법에 따라 호출자가 액세스 권한을 가지고 있는지 확인할 수 있었습니다.
다시 말하지만, 이것은 엄청난 양의 세부 사항을 생략하고 있지만 이를 통해 올바른 길로 갈 수 있습니다.
이 이름 공간도 살펴보십시오.[2]: http://msdn.microsoft.com/en-us/library/system.security.permissions.aspx "시스템.보안.권한"