본문 바로가기
기술자료 (KB)/Power Platform

Power Automate - SharePorint 목록 권한 부여 방법

by 이완주 2023. 7. 24.

최종 목적은 조직도 앱에서 사용자는 본인의 정보만 수정할 수 있어야 한다. 

해당 권한을 앱으로 구현을 했지만 실제 SharePoint 목록에 권한이 모두 있다면 사용자는 SharePoint 목록에서 다른 정보를 수정할 수 있게 된다. 

 이를 막기 위해서는 각 목록에 대한 사용자 설정을 해야 한다. 

 

이 경우 Power Automate 이용하여 목록에 값을 생성하거나 수정할 때 권한을 부여하고자 한다. 

 

1. 목록 만들기

새로운 목록을 만들어 기본 권한 확인 

 

 빈 목록 

 

 

목록 이름 : 권한테스트 

 

목록에 메일 주소를 추가하기 위해 Mail 열 추가 

열 추가 텍스트 다음 

 

 

 

값 추가 

 

 

2. 기본 권한 확인 

 

모든 구성원은 편집을 할 수 있는 권한을 가지고 있게 된다. 

 

3. 권한 변경 테스트

소유자는 항상 모든 권한을 가지고 있게 되고 구성원은 목록에 대하여 만든 사람만 볼 수 있고 수정하게 하고자 한다면  

[설정] [목록 설정] 

 

[고급 설정] 

 

 

읽기 권한

 [모든 항목 읽기]에서 [사용자가 만든 항목 읽기]로 변경하면 사용자는 본인이 만든 항목이 아니면 나타나지 않는다. 

 

사용자 로그인 테스트

홍 길동 사용자 로그인 화면 

 읽기 권한을 [모든 항목 읽기] , 만들기 및 편집 권한 [항목 만들기 및 사용자가 만든 항목 편집] 으로 수정하면 모든 항목을 볼 수는 있으나 수정 할 수 없게 된다. 

목록을 만들 수는 있으나 다른 사람이 만든 목록의 열의 값을 수정할 수 없다. 

 

 새로운 조건 추가 

Mail에 등록된 사용자는 해당 목록에 대하여 수정을 할 수 있어야 하고 나머지 [소유자]를 제외한 나머지 사용자는 해당 목록을 수정할 수 없어야 한다. 

이때 목록을 보여야 함으로 읽기 권한이 있어서 모든 항목은 읽을 수 있어야 한다. 

권한을 원래대로 돌려 놓아 모든 사용자는 편집이 가능하게 구성 

 

 

 

항목에 권한 설정하기 

[…] – [액세스 관리] 

 

 

Test팀 구성원의 편집 기능을 보기 기능으로 변경하여 해당 열에 대하여 구성원은 볼 수는 있고 편집이 되지 않게 구성할 수 있다. 

 

 

 

 

권한을 확인하면 아래와 같이 구성원은 볼 수 있게 되어 편집이 불가능하게 된다. 

 

 

사용자 화면에서의 권한 확인 

 

 

이제 해당 항목에 대하여 특정 사용자에게 편집 권한을 부여하고자 한다. 

[액세스 관리] – [인물] [액세스 허용] 

 권한을 부여하고자 하는 사용자를 선택하고 권한 설정 후 액세스 부여를 할 수 있다. 

사용자에게 메일로 해당 내용을 전달하고자 한다면 [사용자에게 알림] 체크를 해 주면 된다. 

 

이제 해당 항목에 대한 편집 권한을 부여 받았음으로 편집이 가능하게 된다. 

 

문제는 이러한 항목이 10,000개가 된다면 10,000번의 반복 작업을 해야 한다. 

 

Power Automate를 이용하여 해당 권한을 설정할 수 있다. 

아래는 한번의 실행으로 해당 모든 항목에 대한 권한을 변경하는 설정 내용입니다. 

비교 테스트를 위해 Test 목록을 만들어 테스트 진행

 

  

인스턴트 클라우드 흐름 작성 흐름 이름 수동으로 흐름 트리거 설정 

 

SharePoint 리스트 목록 가져오기 

[새 단계 삽입] 

 

SharePoint Lists 사이트 주소와 목록 이름을 선택한다. 

 

SharePoint Test 팀의 구성원 정보를 가져오기 

GET 메서드를 사용하여 아래와 같이 ‘Test팀 구성원’ 정보 확인 

/_api/web/SiteGroups/getByName('Test팀 구성원') 

 

 

SharePoint에서 가져온 Test팀 구성원정보를 변수에 초기화 설정 

body('SharePointHTTP 요청 보내기')['d']['id'] 

 

 

 

 

SharePoint 목록에 있는 모든 아이템에 해당 권한 적용을 위해 각각 적용과 해당 값을 선택 

 

 

  

권한을 부여하기 위해 기존 권한 중지 

 

 

ID 기준으로 Mail 열의 값의 사용자에게 Edit 권한 부여 

 

 

Test 그룹에 읽기 권한 부여 

/_api/web/lists/getbytitle('권환테스트')/items(@{items('각각에_적용_2')?['ID']})/roleassignments/addroleassignment(principalid=@{variables('GroupID')},roledefid=1073741826) 

 

권한 정의는 아래 사이트에 있으니 참고 

https://www.c-sharpcorner.com/article/get-sharepoint-role-definition-ids/ 

 

Role Definition Name   Role Definition Id  
Full Control    1073741829  
Design    1073741828  
Edit  1073741830  
 Contribute    1073741827  
 Read    1073741826  
 Limited Access  1073741825  
View Only   1073741924  

 

테스트

이제 사용자가 리스트항목을 만들거나 수정했을 때 적용은 아래와 같이 구성하면 됩니다. 

 

 

저장 후 약 5분 정도의 시간이 걸릴 수도 있다. (Power Automate 실행) - 대략 1분 이내 소요되는 것을 확인 할 수 있음.

 

 

 

전체 흐름은 아래와 같다. 

 

 

SharePoint 리스트의 구성원 정보 확인 

 

확인된 값을 변수로 초기화 

 

공유 권한 중지 

  

그룹 권한 부여 

/_api/web/lists/getbytitle('Test')/items(@{triggerOutputs()?['body/ID']})/roleassignments/addroleassignment(principalid=@{variables('GroupID')},roledefid=1073741826) 

  

사용자에게 편집 권한 부여 

https://www.youtube.com/watch?v=EJyZfYMi4n0&t=1446s 

 

댓글