문제

웹 애플리케이션의 역할 기반 액세스 컨트롤을 추적하는 가장 좋은 데이터베이스 스키마는 무엇입니까?

레일을 사용하고 있지만 Google이 링크 한 RBAC 플러그인은 인재되지 않은 것으로 보입니다 (최신 300 개만 SVN에만 커밋; 최신은 거의 1 년 전).

이 개념은 처음부터 구현하기에 충분히 간단하지만 복잡하고 중요 할 정도로 중요합니다.

그렇다면 다른 사람들은 어떻게 RBAC 모델을 건축하고 구현합니까?

도움이 되었습니까?

해결책

그 분야의 기본 지식에 대해 RBAC의 기본 행위자는 다음과 같습니다.

  • 자원.
  • 권한.
  • 사용자.
  • 역할 (즉, 그룹).

자원 < - 요구 -> (하나 또는 많은) 권한.

역할 < - 컬렉션 -> (하나 또는 많은) 권한.

사용자 < - 가질 수 있습니다 -> (하나 또는 많은) 역할.

이러한 모델의 테이블은 다음과 같습니다.

  • 허가
  • 역할
  • 사용자
  • 역할 _permission
  • user_role

이제 애플리케이션 사용자가 필요한 리소스 필요한 권한을 구성 할 수 있도록하려면 여기에 리소스를 포함시킬 수 있습니다. 그러나 나는 그것을 필요로하지 않았다. 도움이되기를 바랍니다.

다른 팁

설명 할 간단한 다이어그램이 있습니다 AMR Mostafa의 훌륭한 답변

enter image description here

나는 그들에게 직장에서 RBAC 하위 시스템을 연구하고있다.

내 모델은 다른 것의 빌딩 블록을 기반으로합니다. 엔티티 권한이 필요한 시스템에서는보고/업데이트 또는 수행 할 작업이 발생합니다. 물론 다른 것도 있습니다 역할 시스템 (사용자에게 주어질 수 있음)에서 모든 것을 함께 유지하는 접착제는 다음과 같습니다. 액세스 규칙, 특정 역할, 특정 권한 부정 기관 및 허가 부여된. 액세스 규칙은 다음과 같습니다.

rule 14: guest role + page name + read permission
rule 46: approver role + add column + execute permission

등등. 나는 ERD를 독자에게 운동으로 남겨 두십시오 ;-) 질문이 있으시면 의견을 남겨주세요.

유발 = 8-)

당신이 사용할 수있는 편안한 ACL Rails 플러그인.

나는 당신의 질문에 대한 대답이 당신이 가고 싶은만큼 깊어지고 있다고 생각합니다. 그룹에 역할을하는 것에 대해 생각하고 그룹을 사용자와 연결하는 것만으로는 충분하지 않습니다. 결국 특정 객체 (포럼, 비디오 등)에 대한 사용자에게 특정 권한을 제공해야합니다.

나는 Yuval의 답변에 더 가깝습니다. 프로젝트 전체 객체 + Actions + 사용자를 연관시키는 것입니다. 이것을 제공하기 위해; 기본 객체 (엔티티)는 완벽하게 이해됩니다. 엔티티에서 상속되는 모든 객체는 사용자 + 동작과 쉽게 연결할 수 있습니다.

당신은 또한 물건을 단순하게 유지하려고합니다. 나의 제안은;

  • RBAC 제한으로 인한 모든 객체는 기본 엔티티에서 파생되어야합니다.
  • 역할 목록이 있어야하며, 이는 엔티티와 일대일로 관련된 일대일입니다.
  • 사용자와 역할 간의 관계 목록이 있어야합니다.

한 걸음 더 나아가려면 다음을 추천합니다 (자동 RBAC의 경우)

  • 내 객체에 대한 서비스 기반 액세스를 사용합니다. 그건; 나는 객체의 reposositories (DB-Access를 수행)를 만들고 서비스 기능을 통해 리포지토리에 액세스합니다.
  • 모든 서비스 기능의 시작 부분에서 사용자 정의 속성을 사용합니다. 이것은 해당 함수에 액세스하는 데 필요한 역할을 정의합니다.
  • 사용자 매개 변수를 사용하여 모든 서비스 기능에 액세스하고 각 서비스 기능은 자체를 실행하기 전에 역할 점검을 수행합니다. 반사는 내가 호출하는 기능과 어떤 역할을하는지 이해하는 데 도움이됩니다 (사용자 지정 속성을 통해)
  • 또한 응용 프로그램 시작에서 이니셜 라이저를 실행하고 모든 기능 (및 해당 속성)을 확인하고 새로운 필요한 역할을 추가한지 확인합니다. 방금 추가 한 역할이 있고 DB에있는 것처럼 보이지 않으면 DB에서 생성됩니다.

그러나 아아, 그것은 Java에 사용자 지정 속성이 없기 때문에 아직 Java에서는 사용할 수 없을 것입니다.

몇 가지 코드 예제를 생각해 내고 싶지만 너무 게으르지 않습니다. 그래도 RBAC의 길에 대해 궁금한 점이 있다면; 당신은 여기서 물어볼 수 있고 반드시 답장을 드리겠습니다.

역할 요구 사항 RESTFUL 인증과 함께 역할 기반 인증 기능을 제공하고 잘 관리되어 있습니다.

.NET 응용 프로그램의 경우 Visual Guard와 같은 것을 살펴 봐야합니다. http://www.visual-guard.com/ 허가와 역할을 처음부터 처리하지 않아도됩니다.

또한 .NET의 경우 멤버십 및 역할 제공 업체와 구성으로 처리 된 권한이 있습니다. http://www.odetocode.com/articles/427.aspx

노력하다 https://github.com/thoughtworksstudios/piece, 사용자 역할 기반 액세스 제어를 관리 할 수있는 규칙 엔진입니다.

  1. 액세스 제어 규칙을 정의합니다
  2. 규칙을 결합하여 새로운 규칙을 구성하십시오

전체 Rails 응용 프로그램 예제를 찾을 수 있습니다. https://github.com/xli/piece-blog

RBAC 소개 -

역할 기반 액세스 제어 시스템은 조직 사용자의 역할을 기반으로 '일부 소스 또는 응용 프로그램 또는 애플리케이션의 일부 기능'에 대한 액세스를 제한하는 방법입니다.

여기서, 제한은 여러 권한을 사용하여 관리자가 액세스를 제한하기 위해 작성된 제한 일 수 있으며, 이러한 권한은 집합 적으로 역할을 나타내며, 이는 사용자에게 할당됩니다.

그리고 RBAC에서 약간 더 깊어지면 기본적으로 3 가지 기능이 포함되어 있습니다.

1) 인증 - 사용자의 신원을 확인합니다. 일반적으로 사용자 계정 및 암호 또는 자격 증명을 통해 수행됩니다.

2) 승인 - 응용 프로그램에서 사용자가 수행 할 수 있고 수행 할 수없는 일을 정의합니다. 전. '순서 수정'이 허용되지만 '새 순서 만들기'는 허용되지 않습니다.

3) 응용 프로그램에 대한 사용자 조치 감사. - 응용 프로그램에서 사용자의 조치를 추적 할뿐만 아니라 어떤 사용자에게 어떤 액세스를 부여했는지 누가 부여 했습니까?

이것은 RBAC 시스템의 매우 기본적인 상단보기 사진이었습니다.

RBAC 시스템의 기본 구조에는 사용자, 역할, 권한 또는 제한, 리소스의 다음 구성 요소가 포함될 수 있습니다.

  • 권한 또는 제한 - 권한은 응용 프로그램 리소스에 대한 액세스를 나타냅니다.
  • 역할 - 권한 수집이 포함되어 있습니다
  • 사용자 - 사용자에게 할당 된 단일 또는 다중 역할이므로 결국 사용자는 역할 수단을 통한 권한을 포함합니다.

이 외에도 복잡한 시나리오를 지원하려면 그룹에 호출되는 사용자 (그룹) 및 역할을 그룹에 할당 할 수 있습니다. 따라서 이것은 RBAC 구조에 대한 매우 기본 정보였습니다.

이 블로그 게시물이 정말 마음에 듭니다. https://content.pivotal.io/blog/access-control-permissionsin-rails

편집하다:

Railscasts의 Ryanb는 같은 선을 따라 생각하고 Cancan이라는 보석을 만든 것 같습니다. https://github.com/ryanb/cancan Pivotollabs 게시물과 유사한 기본 기술을 사용합니다.

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