예제 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.