[SFDC] 데이터 액세스 수준에 대해

알린의 개발노트·2023년 3월 31일
0
post-thumbnail
post-custom-banner

사전 정리

데이터 액세스 수준

  • 사용자가 데이터 혹은 기능에 대한 권한을 설정하는 것
  • 조직 내 데이터 보안, 규정 등을 지킬 수 있게 된다

데이터 액세스 수준이 필요성

  • 데이터 보안
    • 부여된 권한 내의 작업만 할 수 있기 때문에 보안 위험을 최소화
    • 휴먼 에러를 방지할 수 있음
  • 업무 효율성 향상
    • 나에게 필요한 데이터만 볼 수 있기 때문에 업무 효율성 향상
    • 유연하게 데이터를 관리할 수 있음
  • 데이터 통합 가능
    • 조직 내 업무 방식, 환경이 통일되어 데이터를 한 곳에서 관리할 수 있음
    • 공통된 형식의 데이터가 체계적으로 관리
    • 조직 내 모든 데이터를 수집, 가공, 활용으로 더 많은 가치 창출
  • 나의 생각
    • 세일즈포스의 수 많은 기능과 장점의 기반이 되는 것 같다
    • 안전하고 효율적이기 때문에 세일즈포스를 사용하게 함

데이터 액세스 수준

  • 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 제한 규칙 = 볼 수 있는 것이 됨
      • 사용 가능한 곳
        • Custom Object
        • 대부분 가능
    • 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
      • Custom App 사용 시 모듈 설정
    • 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

  • 각 Objects의 다음의 값을 확인할 수 있다.

    • Default Internal Access : 내부 조직에서의 기본 접근 권한
    • Default External Access : 외부 조직에서의 기본 접근 권한
    • Grant Access Using Hierarchies : 역할 계층을 사용하여 접근 권한을 부여할 것인지 체크하는 기능
    • 설정 종류
      • Private
      • Public Read Only
      • Public Read/Write
      • Controlled by Parent

Sharing Rules

  • Record를 공유하는 기능 중 하나
  • Object 별로 설정이 가능
  • 두 가지 타입
    • Based on Record owner
      • 레코드의 소유자에 맞는 레코드 공유
    • Based on criteria
      • 사용자가 지정한 기준에 맞는 레코드 공유

Based on Record owner

  • 해당 Object의 COO Role가 소유자인 레코드를 CEO Role을 가진 User가 조회할 수 있다는 설정

  • 누구의 레코드를

    • Roles
    • Roles and Subordinates
    • Public Groups
  • 누구에게

    • Roles
    • Roles and Subordinates
    • Public Groups
  • 어떤 권한을 주겠다

    • Raad Only
    • Read/Write

Based on criteria

  • 해당 Object의 City Fields가 Seoul인 레코드를 CEO Role을 가진 User가 조회할 수 있다는 설정

  • 어떤 필드의 데이터가 어떤 조건을 만족하는 레코드를

    • Field
    • Operator
      • Equals
      • Not equal to
      • Contains
      • Does not contain
      • Starts with
      • Less than
      • Less or equal
      • Greater than
      • Greater or equal
    • Value
  • 누구에게

    • Roles
    • Roles and Subordinates
    • Public Groups
  • 어떤 권한을 주겠다

    • Raad Only
    • Read/Write

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
      • Security
        • Sharing Settings

참고자료

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

profile
안녕하세요!
post-custom-banner

0개의 댓글