사전 정리
데이터 액세스 수준
- 사용자가 데이터 혹은 기능에 대한 권한을 설정하는 것
- 조직 내 데이터 보안, 규정 등을 지킬 수 있게 된다
데이터 액세스 수준이 필요성
- 데이터 보안
- 부여된 권한 내의 작업만 할 수 있기 때문에 보안 위험을 최소화
- 휴먼 에러를 방지할 수 있음
- 업무 효율성 향상
- 나에게 필요한 데이터만 볼 수 있기 때문에 업무 효율성 향상
- 유연하게 데이터를 관리할 수 있음
- 데이터 통합 가능
- 조직 내 업무 방식, 환경이 통일되어 데이터를 한 곳에서 관리할 수 있음
- 공통된 형식의 데이터가 체계적으로 관리
- 조직 내 모든 데이터를 수집, 가공, 활용으로 더 많은 가치 창출
- 나의 생각
- 세일즈포스의 수 많은 기능과 장점의 기반이 되는 것 같다
- 안전하고 효율적이기 때문에 세일즈포스를 사용하게 함
데이터 액세스 수준
- org에 대한 데이터 액세스 제어
- 조직의 모든 기능에 대해서 액세스 제어
- 비밀번호 정책, 접속 가능 ip, 시간 등
- Objects에 대한 데이터 액세스 제어
- (사용자/그룹)이 해당 Object에 데이터를 (생성, 조회, 수정, 삭제)할 수 있는 권한 설정
- Fields에 대한 데이터 액세스 제어
- (사용자/그룹)이 해당 Fields의 데이터를 (조회, 수정)할 수 있는 권한 설정
- Records에 대한 데이터 액세스 제어
- (사용자/그룹)이 해당 Records를 (조회, 수정)에 대한 권한 설정이 가능
액세스 제어가 어떤 구조로 되어있는가
Objects, Fields 기능에 대한 액세스 제어
Profile
, Permission Set
, Permission Set Groups
등으로 제어 가능
- Profile과 Permission Set으로 권한을 제어한다.
- User는 1개의 Profile을 가진다.
- Profile은 다수의 Permission Set (Groups) 를 가질 수 있다.
- User는 Profile과 Permission Set의 모든 설정에 대한 권한을 가진다.
- Permission Set은 Profile의 권한을 지울 수는 없다.
Records에 대한 액세스 제어
- 다음 방법으로 레코드 수준 액세스 제어를 함
Org-wide defaults
(조직 전체 기본값)
Role hierarchies
(역할 계층)
- 상위 Role을 가진 사용자는 하위 Role와 같은 수준의 데이터 액세스가 가능
Sharing rules
(공유 규칙)
- Object 별로 구체적인 공유 규칙을 설정하는 기능
Manual sharing
(수동 공유)
- 조직 기본값, 공유 규칙 등으로 규칙을 일반화하기 어려울 때 사용
User sharing
(사용자 공유)
Apex managed sharing
(Apex 관리 공유)
- Apex 코드에서 수동으로 공유 설정을 하는 것
Restriction rules
(제한 규칙)
- 읽기 권한이 있는 레코드 AND 제한 규칙 = 볼 수 있는 것이 됨
- 사용 가능한 곳
Scoping rules
(범위 지정 규칙)
- 읽기 권한이 있는 레코드 중 범위를 지정하여 보는 것
- 사용 가능한 곳
- Standard/Custom Object
- List Views, Reports, SOQL
- Object에 대한 설정은 Profile에 따른다.
- Record의 Read 권한이 있으려면 Object의 Read 권한이 있어야 한다.
- 사용자가 소유하지 않은 권한은 Org-wide Defaults 부터 Manual Sharing 순서로 설정된다.
- Org-wide Defaults가 가장 제한적이고 Manual Sharing이 가장 열려있도록 설정되어야한다.
액세스 제어에서 생각해볼 점
- 최소한의 권한을 가져야 한다
- 적절한 권한을 가져야 한다
- 먼저 설정되는 설정은 비교적 제한적이야 한다.
- Profile과 Org-wide Defaults는 가장 제한적이어야 한다.
- 필요와 목적에 따라 하위 요소(Permission Set, Sharing Rules 등)에서 권한을 추가한다.
- 가능하면 하위 요소들을 작은 단위로 나누어 관리하는 것이 좋다.
- 특성과 목적이 다른 설정들은 나누어 관리하는 것이 좋다. Like ISP
- [O] 1 Profile - 1 Permission Set - 3 Setting
- [X] 1 Profile - 3 Permission Set - 3 Setting
키워드
Users
, Public Groups
, Roles
, Profiles
, Permission Set
, Sharing Settings
Users
- 조직 내 사용자에 대한 정보
- 이름, 별명, Role, Profile, 라이선스 등 확인 가능
Public Groups
- Users, Roles, Roles and Subordinates, Public Groups을 묶어 관리한다.
- Sharing, Email 일괄 전송 등에서 활용될 수 있다.
Roles
- CEO, 개발자, 디자이너, 고객상담사 등 조직의 역할을 계층 구조로 지정해둔 것
- 상위 계층 Role은 하위 계층 Role의 Record를 볼 수 있음
- Record 단위로 데이터 조작 및 액세스 권한 제어를 계층으로 관리하기 위해
Profiles
- 데이터 액세스 권한, 수행할 수 있는 작업 정의
- 업무 특성, 직책 등에 따라 내 권한에 맞는 작업만 할 수 있도록 하기 위해 사용
- 데이터 도난 또는 오용 위험을 줄이면서 모든 사용자가 필요한 데이터를 쉽게 얻을 수 있도록
- 권한과 라이선스 등이 설정되어 있고 모든 사용자에 Profile을 할당해야 함
Standard Profile
- Salesforce가 미리 만들어둔 Profile
- 가능한 설정(일부만 가능)
- Custom App Settings
- Connected App Access
- 외부 앱(Outlook 등)과 연동 및 접근 권한 등을 설정
- Tab Settings
- Session Settings
- Password Policies
- 종류(35 종)
- System Administrator
- Read Only
- Minimum Access - Salesforce
- User
- Standard User
- Marketing User
- Chatter Moderator User
- Manager
- Contract Manager
- Solution Manager
Custom Profile
- 직접 만든 Profile
- Contact Manager, Group Edition 등 Custom Profile을 만들 수 없는 org이 있음
- Standard Profile도 수정할 수 없음
Profile 주요 설정
- Object Permissions
- Object의 데이터에 대한 조회, 생성, 수정, 삭제, 모든 조회, 모든 수정 기능 설정
- Field-Level Security
- Field의 데이터에 대한 조회, 수정 기능 설정
- Administrative Permissions
- 사용자 및 보안 설정 관련
- 특정 레코드 수정 및 조회 권한 관련 등
- General User Permissions 보다 더 제한적이고 보안과 관련된 옵션이 있음
- General User Permissions
- 특정 레코드 수정 및 조회 권한 관련
- 알림 및 이메일 설정 관련
- 사용자 업무 관련 기능 설정 등
- Administrative Permissions 보다 더 사용자의 업무와 관련된 옵션이 있음
Object Permissions(Standard, Custom)
Object의 데이터에 대한 조회, 생성, 수정, 삭제, 모든 조회, 모든 수정
- Read
- Create
- 데이터를 생성할 수 있는 권한
- Read가 선행되어야 함
- Edit
- 데이터를 수정할 수 있는 권한
- Read가 선행되어야 함
- Delete
- 데이터를 삭제할 수 있는 권한
- Read, Edit이 선행되어야 함
- View All
- 다른 조건과 상관없이 모든 데이터를 확인할 수 있는 권한
- Read가 선행되어야 함
- Modify All
- 다른 조건과 상관없이 모든 데이터를 수정할 수 있는 권한
- Read, Edit, Delete, View All이 선행되어야 함
Field-Level Security
- Read Access
- 필드 데이터에 대한 조회를 할 수 있는 권한
- Objects의 Read 기능이 있더라도 Read Access 권한이 없으면 해당 필드 데이터를 조회할 수 없다
- Edit Access
Permission Set
- 설정 및 권한 모음
- Profile로 설정 할 수 있는 것의 대부분을 설정할 수 있음
- Profile을 수정하지 않고 액세스 수준을 확장할 수 있음
- 한 사용자가 여러 Permission Set을 가질 수 있음
- 일시적, 장기적으로 권한을 부여하는 경우 사용
- 단, 이미 Profile에 있는 기능을 Permission Set을 할당하여 지우지는 못한다
주요 설정
- Object Settings
- Object Permission, Field Permission, Tab
- Apex Class Access & Visualforce Page Access
- 사용자 지정 코드(Apex 클래스, Visualforce 페이지)에 대한 접근 권한을 설정
- Custom Settings
- Custom Permission을 추가할 수 있음
- Custom Permission?
- Custom Code - Custom Permission에서 설정 가능
- 사용자 지정 코드에 대한 접근, 실행 등의 권한을 제어할 수 있음
- Profile, Permission Set을 통해 적용할 수 있음
- System Permissions
- Administrative Permissions 및 General User Permissions의 설정들
Permission Set Groups
- 여러 Permission Set을 묶어서 권한을 설정할 수 있음
- 추가로 새로운 권한 설정을 할 수 있음
- 다른 Permission Set Groups를 포함할 수는 없음
- Muting Permission Set in Group 옵션으로 그룹 내 권한에 대해서만 비활성화를 할 수 있음
- Profile의 기능과 충돌 시 Profile의 설정을 따라감
Sharing Settings
- 레코드에 대한 액세스 제어를 하기 위한 공유 설정
Organization-Wide Defaults
Sharing Rules
- Record를 공유하는 기능 중 하나
- Object 별로 설정이 가능
- 두 가지 타입
- Based on Record owner
- Based on criteria
Based on Record owner
Based on criteria
TMI
-
Parallel sharing recalculation(병렬 공유 재계산)
- Sharing Rules에는 새로운 규칙을 설정할 수 있는 New와 Recalculate가 있다.
- 관리자가 공유 규칙을 생성, 삭제, 편집 시 이런 변경 사항은 동시에 처리된다.
- 하지만 공유 규칙이 한번에 많이 되거나 많은 양의 데이터에 대한 엑세스 권한에 영향을 미치는 경우 시간이 오래걸릴 수 있다.
- Salesforce가 예약된 기능, 패치 릴리즈 등을 수행할 경우 규칙 적용이 중단될 수도 있다.
- 이런 문제를 해결하기 위해 병렬 공유 재계산 기능을 사용하면 좋다.
- 비동기적으로 처리되고 부하에 따라 여러 동시 실행 스레드로 분할된다. 서버가 재시작되어도 대기열에 대기하다가 서버가 다시 온라인 상태가 되면 프로세스가 계속된다.
- 영향을 받는 레코드가 25000개 미만이면 그냥 동기식으로 실행된다고 한다.
- 종료하기 위해서는 apex 코드를 수정해야 한다고 한다.
- Environments - Jobs - Background Jobs
- 병렬 공유 재계산(parallel sharing recalculation)의 현황을 확인할 수 있다
-
General User Permissions - lightning login user
- 이 설정이 꺼져있으면 lightning 버전으로 실행되지 않는다.
-
Administrative Permissions - Edit Read Only Fields
- 이 옵션이 켜져있으면 Field-Level Security에서 Edit Access를 끄더라도 수정이 된다.
- 하지만 View Access를 끄면 보이지 않는다.
- 테스트
- Account Naumber의 Edit Access가 꺼져있기 때문에 Text Area가 비활성화 되며 수정을 할 수 없다.
- 하지만 Profile에서 Edit Read Only Fields가 켜져있다면 Text Area가 활성화되며 수정이 가능하다.
-
Setting 탭 위치
- Administration
- User
- Permission Set Groups
- Permission Set
- Profiles
- Public Groups
- Queues
- Roles
- User Management Settings
- Users
- Setting
참고자료
Trailhead - 데이터 보안
Salesforce Developers - parallel sharing recalculation
Salesforce Developers - draes_tools_parallel_sharing_rule_recalculation
Help And Training Community - Profile
Help And Training Community - Mute a Permission in a Permission Set Group
Help And Training Community - Control Who Sees What
Salesforce : Difference between Restriction Rules and Scoping Rules