예제 4: OPA 및 Rego를 사용한 UI 필터링 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

예제 4: OPA 및 Rego를 사용한 UI 필터링

OPA 및 Rego의 유연성은 UI 요소를 필터링하는 기능을 지원합니다. 다음 예제에서는 OPA 부분 규칙이 RBAC를 사용하여 UI에 표시할 요소에 대한 권한 부여 결정을 내리는 방법을 보여줍니다. 이 방법은 OPA로 UI 요소를 필터링할 수 있는 다양한 방법 중 하나입니다.

OPA 및 Rego를 사용한 UI 필터링

이 예제에서는 단일 페이지 웹 애플리케이션에 4개의 버튼이 있습니다. Bob, Shirley, Alice의 UI를 필터링하여 역할에 해당하는 버튼만 보게 하려고 한다고 가정해 보겠습니다. UI는 사용자로부터 요청을 받으면 OPA 부분 규칙을 쿼리하여 UI에 표시할 버튼을 결정합니다. Bob(역할 포함viewer)이 UI에 요청할 때 쿼리는 다음을 OPA에 입력으로 전달합니다.

{ "role": "viewer" }

OPA는 RBAC에 대해 구조화된 외부 데이터를 사용하여 액세스 결정을 내립니다.

{ "roles": { "viewer": ["viewUsers", "viewData"], "dataViewOnly": ["viewData"], "admin": ["viewUsers", "viewData", "updateUsers", "updateData"] } }

OPA 부분 규칙은 외부 데이터와 입력을 모두 사용하여 허용되는 작업 목록을 생성합니다.

user_permissions[permissions] { permissions := data.roles[input.role][_] }

부분 규칙에서 OPA는 쿼리의 일부로 input.role 지정된를 사용하여 표시할 버튼을 결정합니다. Bob에게는 역할이 있으며viewer, 외부 데이터는 최종 사용자에게 viewUsers 및 라는 두 가지 권한이 있도록 지정합니다viewData. 따라서 Bob(및 최종 사용자 역할이 있는 다른 사용자)에 대한이 규칙의 출력은 다음과 같습니다.

{ "user_permissions": [ "viewData", "viewUsers" ] }

dataViewOnly 역할이 있는 Shirley의 출력에는 권한 버튼이 포함됩니다viewData. admin 역할이 있는 Alice의 출력에는 이러한 모든 권한이 포함됩니다. 이러한 응답은에 대해 OPA를 쿼리할 때 UI로 반환됩니다user_permissions. 그러면 애플리케이션은이 응답을 사용하여 viewUsersButton, updateUsersButton, 및 viewDataButton를 숨기거나 표시할 수 있습니다updateDataButton.