5. Agenda
● Welcome / Introduction
○ Say Hello, Thank you
● Record Ownership Deep Dive
○ Sharing Rows and Hierarchy-based Inheritance
○ Ownership-based Sharing Rules
○ Record Ownership and Data Security
○ Sharing Performance
● Wrap up
○ Session feedback
○ Take a Capture :)
6. Past meeting
● 4. 04 The impact COVID 19 has had on you
● 4. 11 Ask Salesforce Certification Anything!
● 4. 18 Fireside chat (Tip & Resource)
● 4. 25 Certification story contest
● 5. 02 Lightning Flow
● 5. 09 Ask an Expert Online
● 5. 27 Virtual Dreamin’
● 6. 10 Dynamic Pages
● 6. 24 Implicit Sharing
● 7. 08 Sharing Architecture Overview
● 7. 15 TDX20 Global Gathering
7. Record Ownership Deep Dive
⚫ 레코드 오너쉽이란
⚫ 레코드 소유권, 역할 계층 내 권한 상속
⚫ 레코드 소유권 기반 공유 규칙
⚫ 레코드 소유권과 데이터 보안
⚫ 공유 퍼포먼스
8. • 레코드 오너쉽이란 데이터의 관리 업무를 지정하고 소유권에 따른 데이터 공유 기능
• 사례
▪ 데이터 관리 전담을 위한 소유권 부여
▪ 소유자가 공유권한을 특정 유저에게 부여, 예상 외 협업에 대응
▪ 팀, 관리자, 제품 담당자 등 구조화 된 협업
• 레코드 오너쉽의 공유 작동 원리
▪ 오너 필드에 의한 접근권한 부여
▪ 오브젝트 공유 테이블(Object Share Table) 조인에 따른 접근권한 부여
▪ 그룹 구성원 테이블(Group Membership Table) 조인에 따른 접근권한 부여
Record Ownership
9. 오너의 레코드 접근 권한 획득 순서
1. 레코드 생성 시 Owner 필드에 UserId 지정
2. 오브젝트 공유 테이블에 공유 사유 :Owner로 접근 권한 기록
3. 레코드 접근 시 공유 테이블과 UserId 비교하여 권한 획득
Sharing Rows and Hierarchy-based Inheritance
10. 오브젝트 공유 테이블 구성
• Id : 레코드 공유 오브젝트의 레코드Id
• ParentId : 공유 대상 레코드Id
• UserOrGroupId : 권한 부여 받은 그룹 또는 사용자 Id
• AccessLevel : 부여 받은 접근 권한
• RowCause : 권한 부여 사유
Sharing Rows and Hierarchy-based Inheritance
11. 사용자가 레코드에 접근하려 할 때 시스템이 권한을 체크하는 방법을 순차적으로 설명하면
아래와 같음(실제 접근 시 아래의 절차를 직접 수행하지 않음, 이미 공유계산 된 결과에 따른 접근)
1. 프로필, 퍼미션셋 OWD의 오브젝트 접근 권한 확인
2. 오브젝트 공유 테이블 내 사용자 Id 존재 확인
3. 그룹 구성원 테이블을 조회하여 속한 모든 그룹Id를 취합
4. 오브젝트 공유 테이블 내 그룹Id 중 3에서 취합한 Id와 일치하는 레코드 존재 확인
5. 1, 2, 4에서 확인 한 접근 권한 중 가장 제한적인 접근 권한을 부여
프로필에서 CRED(Create, Read, Edit, Delete)권한이 있으나 오브젝트 공유 테이블을 통해 Read 권한만
존재하는 경우 Read 권한만 부여
Sharing Rows and Hierarchy-based Inheritance
12. 간략하게 표현한 역할 계측 구성도의 그룹 구성원 테이블 예
이해를 위한 도식으로 실제와 상이 함
Sharing Rows and Hierarchy-based Inheritance
13. 하위 역할의 사용자가 오너 인 경우 상위 역할의 사용자가 볼 수 있는 이유는
그룹 구성원 테이블의 속해 있기 때문
Sharing Rows and Hierarchy-based Inheritance
14. 오너십 기반의 공유 규칙의 종류
• 특정 역할 사용자의 소유 레코드 → 특정 역할 사용자에게 공유
• 특정 역할 및 그 하위 역할 사용자의 소유 레코드 → 특정 역할 및 그 하위 역할 사용자에게 공유
• 특정 역할 및 그 하위 역할 사용자의 소유 레코드 → 특정 역할 사용자에게 공유
• 특정 역할 및 그 하위 역할 사용자의 소유 레코드 → 특정 역할 및 그 하위 역할 사용자에게 공유
• 공개 그룹 관련 공유
• 관리자(Manager) 그룹, 관리자 및 하위 사용자 그룹 관련 공유
관리자 그룹 : User의 Manager이거나 그 상위 Manager인 사용자 집합
관리자 및 하위 사용자 그룹 : User의 Manager와 그 User가 Manager인 User의 집합
역할 : Role
역할 및 그 하위 역할 : Role and Subordinates
Ownership-based Sharing Rules
Types in Group object
15. 특정 역할 사용자의 소유 레코드 → 특정 역할 사용자에게 공유
Ownership-based Sharing Rules
16. 특정 역할 및 그 하위 역할 사용자의 소유 레코드 → 특정 역할 및 그 하위 역할 사용자에게 공유
Ownership-based Sharing Rules
17. 특정 역할 및 그 하위 역할 사용자의 소유 레코드 → 특정 역할 사용자에게 공유
Ownership-based Sharing Rules
18. 특정 역할 및 그 하위 역할 사용자의 소유 레코드 → 특정 역할 및 그 하위 역할 사용자에게 공유
Ownership-based Sharing Rules
19. 공개 그룹을 사용한 공유
• 공개그룹 구성원의 소유 레코드를 공유 하거나 공개그룹 구성원만 공유 받음
(Grant Access Using Hierarchies : false)
• 공개그룹 구성원 및 그 상위 역할 사용자가 공유 받음
(Grant Access Using Hierarchies : true)
관리자 그룹 및 관리자 및 하위 사용자 그룹을 사용한 공유
• 직-간접 관리 사용자의 레코드를 공유하거나 공유 받음
User A : (Manager : User B), User B : (Manger : User C)
User A의 관리자 그룹은 User B, User C
• 관리자 및 그 사용자가 관리자인 사용자의 레코드를 공유하거나 공유 받음
User D : (Manager : User B), User E : (Manager : User B)
User A의 관리자 및 하위 사용자 그룹은 User B, User D, User E
Ownership-based Sharing Rules
20. 데이터 공유와 세일즈포스 조직 내 데이터 접근 보안을 위하 오너쉽 관련 공유를 제어하기 위한
방법 예
• OWD를 Private으로 설정하여 접근 제한
• Custom Object를 이용하여 역할 계층 권한 상속 비활성화(예 : 사내 Case 처리 Object와 전담 직원)
• 프로필의 오브젝트 권한을 제한하여 권한 제어(예 : 생성, 읽기 권한만 부여, 공유 규칙 또는 매뉴얼
공유를 통해 수정 담당자 지정)
• 오너쉽을 통해 데이터 접근 제어 요건을 충족 하지 못 할 경우 임의 사용자(Dummy, Admin, I/F)에게
오너쉽을 부여
Ownership Data Skew를 방지하기 위해 해당 사용자는 역할의 최 상단에 위치해야함
Record Ownership and Data Security
21. 보안을 위해 정교한 오너쉽 공유 설정을 구성 할 수 있지만 성능저하가 발생 할 수 있음
• 그룹 구성원 테이블의 갱신작업(Group Mebership Table을 Role과 사용자 수에 비례하여 복잡도가 상승함)
• 데이터 접근 권한 재계산 : 역할 권한 상속 및 오너쉽 기반 공유 재계산
• 오브젝트의 사용자의 소유 레코드가 집중되면 Ownership Data Skew 발생(소유권 분배 또는
Dummy고려)
Sharing Performance
22. Salesforce Security Guide
• https://developer.salesforce.com/docs/atlas.en-
us.224.0.securityImplGuide.meta/securityImplGuide/salesforce_security_guide.htm
Designing Record Access for Enterprise Scale
• https://developer.salesforce.com/docs/atlas.en-us.draes.meta/draes/draes_preface.htm
Behind the Scenes of Record Ownership in Salesforce
• https://developer.salesforce.com/blogs/engineering/2013/10/behind-the-scenes-of-record-
ownership-in-salesforce.html
Data Security
• https://trailhead.salesforce.com/content/learn/modules/data_security
Sharing Rule Categories
• https://help.salesforce.com/articleView?id=security_sharing_data_set_categories.htm&type=5
Record-Level Access: Under the Hood
• https://developer.salesforce.com/docs/atlas.en-
us.salesforce_record_access_under_the_hood.meta/salesforce_record_access_under_the_hood/uth_g
roups.htm
Source