간단한 속성 기반 액세스 제어 (ABAC) 구현을위한 제안 된 로드맵은 무엇입니까?


12

ACL 및 RBAC에 대해 읽을 때 쉽게 이해하는 것 같습니다. 자산에 대한 액세스 권한이 부여 된 사용자 이름 또는 역할이 있습니다. 또한 구현 방법을 알 수 있습니다.

즉,이 이미지는 나를 위해 ACL과 RBAC를 명확하게 보여줍니다 (위의 내용을 바탕으로 데이터베이스 테이블을 디자인하고 디자인 할 수 있음) : 여기에 이미지 설명을 입력하십시오 ( 보도 자료 이미지 )

내가 어려움을 겪고있는 것은 ABAC입니다. 지금까지 내가 찾은 다양한 이미지는 손으로 구부러 지거나 지나치게 복잡하거나 타사 외부 기관을 사용하여 승인을 제안합니다. 또는 사용 방법이 완전히 확실하지 않은 이상한 속성 예제를 제공하십시오.

시작 예

실생활에서 시작하겠습니다. 70 ~ 200 명 규모의 회사가 있다고 가정 해 보겠습니다. 그리고 보호해야 할 자산은 다양한 페이지가 많은 웹 사이트입니다. 특정 사람들이 특정 자산에 액세스 할 수 있도록하고 싶습니다.

예를 들어, 한 사람 Leslie이이라는 웹 페이지에 액세스하여 해당 페이지 Price ManagerTravel가격 그룹에 대한 가격 만 관리 Product하고 동일한 페이지 에있는 그룹의 가격은 관리 할 수 ​​없도록 하고 싶습니다 . ABAC를 사용하여 어떻게 구현합니까?

지금까지 내 생각에, 나는 Leslie어떤 속성을 할당 할 수 있지만 (어떤 속성과 속성은 무엇입니까?) 그런 다음 데이터베이스 테이블을 저장합니다. 그런 다음 해당 속성을보고 ( LeslieRBAC 에서 와 같이 "역할"으로 보지 않는) 엔진을 디자인 하고 페이지에 대한 액세스 권한을 부여할지 여부를 결정합니다. 그 엔진은 어떻게 생겼을까 요? 간단한 if / else 블록입니까? 다른 것?

Leslie가 나중에 자신의 위치를 ​​변경하고 누군가가 자신의 액세스 권한을 변경해야하는 경우 어떻게됩니까? 액세스 권한을 이전 Product하거나 취소 해야하는 경우 Travel어떻게됩니까? 어떻게는 그녀가에 취소 접근해야 할 필요가없는 경우 코딩됩니다 Price Manager더 이상도에 대한 액세스 권한이 모두 따라서 페이지를 Travel, 또는 Product?

필자의 경우 자산은 간단히 말하면 Price Manager이며 사용자는 Travel가격, Product가격 등과 같은 해당 페이지의 다양한 가격 그룹에 액세스 할 수 있습니다 .

내가 찾고있는 것은 세부 사항을 명확히하고 추측하지 않고 구현하고 구현할 수있는 합리적인 로드맵입니다. 즉, 개념적으로 완성되거나 데이터베이스 구조를 시각화 할 수있는 구체적인 예가있을 수 있습니다.

보너스 : ABAC는 70-200 명을 관리하고 약 150-450 개의 자산에 액세스하는 등 상대적으로 작은 권한 요구에 적합한 방법입니까? 대신 ACL / RBAC를 사용하는 것이 더 좋습니까?

답변:


18

ABAC 구현은 ACL / RBAC보다 복잡합니다. 일부 프레임 워크는 후자를 처리하기 위해 약간의 인프라를 제공하기도합니다. 사람과 자산을 상대적으로 작고 고정 된 수의 역할 / 카테고리로 그룹화 할 수있는 경우 ACL / RBAC를 사용하는 것이 가장 좋습니다. 사용 권한이 개인마다 크게 다르면 ABAC가 더 우수하고 유연한 솔루션을 제공 할 수 있습니다.

ABAC 경로를 따라 가기로 선택한 경우 가장 먼저해야 할 일은 XACML 표준을 읽고 이해하는 데 시간을 투자하는 것입니다 . 이 문서에 제공된 예제는 XACML 호환 구문을 사용하며 처음에는 약간 씹기가 어렵습니다. 표준 호환 솔루션을 구현하고 싶지 않으므로 일반적인 아이디어 만 필요하다고 생각합니다.

개념

XACML은 주제 , 활동 , 자원환경 이라는 4 가지 개념과 그 속성을 중심으로 진행됩니다 . 몇 개 더 있지만 이것들이 가장 중요합니다. 다른 모든 것은 그 위에 구축됩니다. 이러한 개념으로 문장을 작성하려면 다음과 같은 내용이 될 수 있습니다. 주제 는 특정 환경 에서 자원 에 대한 조치 를 수행 합니다 . 이것을 시나리오에 적용하면 다음과 같이 번역됩니다.

  • Leslie가 가격 관리자 웹 페이지를 엽니 다.
  • Leslie는 가격 관리자 웹 페이지를 사용하여 여행 가격을 만듭니다.

속성 수집

가장 먼저해야 할 일은 위에서 언급 한 개념의 관련 속성을 수집하는 것입니다. XACML이 방해받지 않고 시스템이 자연스럽게 제공하는 것에 의존하기 때문에 특정 속성을 할당하지 않는 것이 이상적입니다. 그리고 우리는 :

제목

시스템의 모든 행위자 (개인 또는 서비스). 우리의 주제는 레슬리입니다. Leslie를 고유하게 식별하려면 어떤 속성이 필요합니까? 아마 다음의 몇 가지 : first name, last name, e-mail, ssn, company id, position(s).

동작

주제에 의해 수행되는 모든 조치. 표준 CRUD 작업 또는보다 복잡한 작업 일 수 있습니다. 우리의 행동은 open/viewcreate. 이러한 작업의 속성은 사용중인 웹 응용 프로그램 프레임 워크에 따라 다를 수 있습니다. 리소스에 접근 할 때 이에 대해 더 이야기하겠습니다.

자원

꽤 자명하다. 우리의 자원은이다 price manager page, travel prices하고 the newly created price. 정말로 원한다면 더있을 수 있습니다. 사용자가 수행 할 수없는 작업을 숨길 수 있습니다. 예 : 는 create price button/ 표시 사용자가 가격을 만들 수있는 권한이 있는지 여부에 따라 숨길 수있는 자원이 될 수 있습니다. 사용자가 가격 목록을 볼 수있는 유일한 방법은이 페이지를 통하는 것이기 때문에 스택을 더 낮추지 않고이 수준에서 권한 부여를 시행하는 것이 좋습니다.

리소스에 대한 액세스는 특히 데이터베이스에서 제공되는 리소스에 대해 구현하기가 가장 복잡합니다. 보다 세분화 된 옵션은 행 수준 보안입니다. 일부 데이터베이스는 특정 수준의 지원을 제공합니다. 일부 XACML 구현자는 SQL 수퍼 세트를 작성하는 데까지 이르렀습니다. 이것은 실제로 승인 요구에 달려 있지만 원하지 않는 한 가지는 테이블에서 모든 것을 가져온 다음 표시 할 내용을 결정하는 것입니다. 권한 세트별로 리소스를 그룹화하고이를 API로 추상화하고 API 엔드 포인트에서 권한을 부여 할 수 있습니다.

환경

제대로 정의 할 수 없습니다 (XACML에는 적절한 정의가 없습니다). 그러나 이것이 모든 일이 발생하는 "거품"이라고합시다. 여기에는 : web application, web server, operating system, browser, office. 당신은 같은 속성을 추출 할 수있다 : ip address, time of day, user locale, user agent, operating system version. 이 기능을 사용하면 응용 프로그램에서 지원하지 않는 환경 (예 : 이전 브라우저, 이전 운영 체제, 네트워크 외부 컴퓨터, 업무 시간 외 액세스)에서 사용자 액세스를 차단할 수도 있습니다.

승인 요청

필요한 모든 속성을 수집 한 후에는이를 인증 요청에 묶고 이러한 속성의 값을 기반으로 인증 결정을 내릴 수있는 엔티티로 전달합니다. XACML 언어에서는 이러한 속성을 수집하고 결정을 시행하는 장소를 정책 시행 지점 (PEP)이라고하고, 포인트 결정을 정책 결정 지점 (PDP) 이라고합니다 . 속성 값을 얻는 위치를 PIP ( 정책 정보 지점 )라고합니다. PEP, PDP 및 PIP는 외부 시스템 일 수있는 응용 프로그램의 일부일 수 있습니다. XACML 표준에서 서로 통신하는 방법에 대한 다이어그램을 찾을 수 있습니다.

결정 과정

의사 결정 프로세스는 규칙을 기반으로 합니다. 규칙을 정책 으로 그룹화하여 정책 세트 로 추가 그룹화 할 수 있습니다 . 이들 각각에는 목표가 있습니다. 대상은 규칙 중 하나가 권한 부여 요청에 적용되는지 여부를 결정하는 데 사용됩니다. 필터로 생각하십시오. 대상에는 속성 이름과 값을 사용하여 작성된 조건이 포함됩니다. 예를 들어, 애플리케이션 규칙은 다음과 같이 그룹화 될 수 있습니다.

웹 애플리케이션 (정책 세트)
|-target : application-name == "웹 응용 프로그램"
`-버전 1.0 (정책 세트)
    |-대상 : application-version == "1.0"
    `-가격 관리자보기 (정책)
        |-대상 : 웹 페이지 이름 == "가격 관리자"&& action-name == "보기"
        `-레슬리는 가격 관리자를 볼 수 있습니다 (규칙)
            |-target : subject-name == "레슬리"
            `-허가 : 허용

PDP는 위의 세트에있는 모든 것을 권한 부여 요청의 속성 값과 일치시킵니다. 규칙과 일치하지 않는 규칙은 PDP 구현에 따라 다릅니다. 플라즈마 디스플레이 패널이 결정을 (되면 allow, denynot-applicable) 그것이 부여하거나 자원에 대한 액세스를 거부하여 그 위에 작용하는 PEP에 회신한다. 응답과 함께 플라즈마 디스플레이 패널의 목록을 보낼 수 obligationsadvices단합해야 또는 집행 과정에서 수행해야합니다. 규칙이 저장되는 방식 (텍스트 파일 또는 데이터베이스)에 따라 관리자는 표준 텍스트 편집기 또는 사용자 정의 편집 응용 프로그램을 사용하여 원하는대로 규칙을 변경할 수 있습니다. 가격 관리자에게 해지 레슬리의 접근은 단순히 허가를 변경하기 위해 다시 시작 allowdeny, PEP가 작업을 수행 한 것을 인정합니다.

시행

이는 기술 스택에 따라 크게 달라집니다. 일부 웹 프레임 워크에는 자연스러운 적용 지점이 있습니다 (예 : ASP.NET MVC에는 속성 필터가 있음). 비즈니스 계층에서 이러한 시행 지점을 정의해야 할 수도 있습니다. 서비스 (마이크로 서비스) 엔드 포인트 또는 UI 레벨에서 시행을 적용하는 것이 더 쉽다는 것을 알았습니다.

다른 이익

이를 구현할 때의 부작용은 다른 목적으로 사용할 수있는 상당히 풍부한 감사 추적으로 이어진다는 것입니다.


매우 유용한 답변
despuestambien
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.