LowCode (Mendix) Advanced/Configure Advanced Security

Entity Access for Security

Caryou 2024. 10. 17. 13:21

학습 목표

이 모듈을 마치면 다음을 수행 할 수 있습니다.

  • Best Practices에 따라 마이크로플로우에 개체 접근 적용

엔터티 액세스

Mendix에서 마이크로플로우가 외부에 노출될 때(예: 딥링크 사용), 플랫폼은 데이터를 읽거나 쓸 때 사용자의 엔터티 액세스를 기본적으로 확인하지 않습니다. 이를 확인하려면 마이크로플로우 속성에서 "Apply entity access(엔터티 액세스 적용)" 설정을 활성화해야 합니다.

  • 적용된 효과: 사용자의 권한에 따라 엔터티에 대한 작업(생성, 삭제 등)이 제한됩니다. 예를 들어, 사용자가 엔터티를 만들거나 삭제할 권한이 없으면 이 설정을 활성화하면 해당 작업이 차단됩니다.
  • 제약 조건: 엔터티 액세스가 비적용된 마이크로플로우는 동일하게 엔터티 액세스가 비적용된 마이크로플로우만 호출할 수 있습니다.


마이크로플로우의 엔터티 액세스는 추가적인 보안 계층을 제공하여, 모든 입출력 정보에 대해 보안 검사를 강제합니다. 이는 마이크로플로우가 수행하는 모든 데이터베이스 작업에 엔터티 XPath 규칙을 적용하여 이루어지며, 현재 사용자의 역할에 따라 해당 XPath가 결정됩니다.

따라서, 마이크로플로우의 데이터 검색 작업Apply entity access(엔터티 액세스 적용) 설정 여부에 따라 검색 결과가 달라질 수 있습니다.

 

 

 

Microflow에서 Entity Access를 사용하는 이유

마이크로플로우에서 엔티티 접근 제어의 주요 이점은 보안이 강화된다는 것입니다. 마이크로플로우 수준에서 엔티티 액세스를 적용하면 제한해야 하는 데이터를 조작하는 사용자에 대해 걱정할 필요가 없습니다.

 

익명 사용자 액세스 및 딥 링크는 로그인하지 않은 사용자가 Mendix 기능에 접근할 수 있게 해줍니다. 그러나, 이 마이크로플로우에 엔티티 액세스를 적용하지 않으면, 누구나 마이크로플로우를 실행하여 그 안의 데이터를 조회하거나 수정할 수 있는 위험이 있습니다.

민감한 데이터 작업(예: 재무 보고서, 데이터 마이그레이션, 생산성 지표 등)은 보통 고급 사용자만 접근할 수 있습니다. 엔티티 액세스가 적용되지 않은 경우, 권한이 낮은 사용자가 네트워크 트래픽을 조작하거나 마이크로플로우를 실행하여 민감한 데이터에 접근할 수 있는 위험이 생깁니다.

중요한 워크플로우 항목에 대한 승인 흐름에서는 마이크로플로우 엔티티 액세스와 XPath 기반 액세스 규칙을 사용해 사용자가 워크플로우 항목의 상태를 부적절하게 변경하는 것을 방지할 수 있습니다. 이를 통해 사용자가 자신의 요청을 임의로 승인하거나 승인 절차를 우회하지 못하도록 보호합니다.

 

 

 

Entity Access Best Practices

새 구성원에 대한 기본 권한을 기본 설정인 '없음'으로 설정하는 것입니다. 

그럼 새로 추가되는 컬럼들은 새로 권한을 설정해줘야합니다. ( Read, Write )

[ 그림 1 ]

 

 

Microflows에서 Entity Access 적용Apply Entity Access in Microflows

이 과제는 Apply Entity Access 기능이 마이크로플로우에서 어떻게 작동하는지 알려줍니다. 목표는 기능을 활성화해야 하는 이유와 시기를 이해하는 것입니다. ACT_TotalOrderCounter microflow는 총 주문 수를 계산하고 카운터 값이 있는 팝업 창을 표시합니다.

[ 그림 2 ]

 

할당을 시작하기 전에 Customer 사용자에 대한 이 제한이 Order 엔터티에 있다는 점에 유의하십시오.

[ 그림 3 ]

 

 

 

Microflow Entity Access On

[ 그림 4 ]

 

Microflow Entity Access Off

[ 그림 5 ]

 

 

체크 해제하고 다시 실행해보면

[ 그림 6 ]
[ 그림 7 ]

 

마이크로플로우에는 Create Counter 활동이 있는데, 이로 인해 마이크로플로우가 실패합니다.

[ 그림 8 ]

 

다시 돌아가서 체크 하고 write,read 권한을 read권한만 주도록 변경

[ 그림 9 ]

실행시

[ 그림 10 ]

 

콘솔을 보면 'Counter' 멤버에 대한 쓰기 액세스가 거부되었다는 것은 해당 속성에 대한 쓰기 권한이 없음을 의미함을 알 수 있습니다. 실패는 Create 작업에서 발생하는데, 이는 Counter 특성도 Count 변수로 업데이트하기 때문입니다.

[ 그림 11 ]

 

 

엔티티 소유권

Mendix에서 엔터티 액세스의 일반적이고 효과적인 사용 중 하나는 중요한 워크플로 항목의 흐름을 제어하는 것입니다.

 

이 과제에서 자동차 공급 회사는 고객이 원하는 제품을 더 잘 제공할 수 있도록 고객 아이디어 요청 워크플로를 도입하려고 합니다. 이 흐름에서 새로운 아이디어를 제안하고, 직원이 아이디어를 승인하고, 관리자는 아이디어를 완료로 표시할 수 있습니다.

 

 

아이디어를 요청하거나 수정할 때 현재 모든 이가 요청 상태 수정이 가능합니다.

이는 일반적인 형태가 아니므로 고객이 새로운 요청을 생성할 수만 있고, 직원이 제출된 요청만 승인할 수 있고, 관리자가 승인된 요청을 완료로 설정할 수 있도록 XPath를 구현해야 합니다.

[ 그림 12 ]

이를 구현하기 위해서는 아래와 같은 스탭을 따르면 됩니다.

  1. IdeaRequest 엔터티 의 속성을 엽니다 .
  2. 모든 사용자에 대해 기존 액세스 규칙을 읽기 로 변경합니다 .
  3. 다음 XPath 제약 조건을 사용하여 읽기/쓰기가 가능한 각 역할에 대해 별도의 액세스 규칙을 만듭니다.
    [ 그림 13 ]

로그인해서 확인을 해보면 역할별로 특정 Status에서만 수정이 가능하다는것을 확인이 가능합니다.

하지만 아직 권한별로 모든 요청을 편집하는 것이 가능합니다.

이를 해결하기 위해서는 자신이 만든 것에 한정해 수정이 가능하도록 해야합니다.

XPath 제약조건 추가
[System.owner='[%CurrentUser%]']

 

출처 : https://academy.mendix.com/link/paths/9/Configure-Advanced-Security

'LowCode (Mendix) Advanced > Configure Advanced Security' 카테고리의 다른 글

Account Access for Security  (0) 2024.10.17
Security in Mendix  (0) 2024.09.11