
세일즈포스에서 데이터 접근 수준을 정의할 때, 여러 가지 계층을 통해 조직 내 데이터 보안과 사용자 접근 권한을 세밀하게 관리할 수 있습니다. 네 가지 주요 데이터 접근 수준은 다음과 같습니다.
조직 전체 단위로 보안 수준을 정할 수 있습니다. 인증된 사용자 목록을 관리, 비밀번호 정책 설정, 특정 시간이나 위치에서의 로그인 제한을 통해 데이터 보안을 유지합니다. 이는 기본적으로 모든 사용자에게 적용되는 보안 수준입니다.
사용자가 특정 객체의 데이터에 대한 접근 권한을 가지는지 여부를 결정합니다. 객체에 대한 권한을 설정함으로써, 특정 사용자나 그룹이 해당 객체의 레코드를 생성, 조회, 편집, 삭제하는 것을 제한할 수 있습니다.
필드 수준 보안은 사용자가 특정 필드에 접근할 수 있는지 여부를 제어합니다. 사용자가 이미 접근 권한을 가지고 있는 객체 내에서도 특정 필드에 대한 접근을 제한할 수 있어, 민감한 정보를 보호하는 데 유용합니다.
레코드 수준 보안은 사용자가 특정 레코드에 대한 접근 권한을 가질 수 있도록 하면서, 다른 레코드에 대한 접근은 제한할 수 있게 합니다. 조직 전체 기본값(Organization-Wide Defaults, OWD), 역할 계층(Role Hierarchy), 공유 규칙(Sharing Rules), 수동 공유(Manual Sharing) 등을 통해 더 세밀한 접근 제어를 구현할 수 있습니다.

Salesforce에서 프로필(Profile)은 시스템에 접근하는 사용자들이 수행할 수 있는 작업과 접근할 수 있는 데이터를 정의합니다. 프로필을 사용하여 사용자의 역할에 맞는 권한을 설정하고 관리할 수 있습니다.
객체 권한(Object Permissions): 사용자가 특정 객체(예: 계정, 연락처 등)에 대해 수행할 수 있는 작업(읽기, 쓰기, 수정, 삭제)을 정의합니다.
필드 수준 보안(Field-Level Security, FLS): 사용자가 객체의 특정 필드를 보거나 편집할 수 있는지 여부를 결정합니다.
탭 가시성(Tab Visibility): 사용자가 Salesforce 인터페이스 내에서 특정 탭을 볼 수 있는지 여부를 제어합니다.
레코드 유형 접근(Record Type Access): 사용자가 특정 레코드 유형을 생성하거나 수정할 수 있는지를 정의합니다.
페이지 레이아웃(Page Layouts): 특정 객체 레코드의 편집 및 보기 페이지의 레이아웃을 제어합니다.
로그인 시간 및 IP 제한(Login Hours and IP Ranges): 사용자가 시스템에 로그인할 수 있는 시간과 IP 주소 범위를 제한할 수 있습니다.
Salesforce에서는 표준 프로필과 사용자 정의 프로필 두 가지 유형의 프로필을 제공합니다. 표준 프로필은 Salesforce에서 사전 정의한 설정이며, 사용자 정의 프로필을 통해 조직의 특정 요구 사항에 맞게 권한 설정을 추가로 조정할 수 있습니다.

Quick Find를 통해 Profiles에 접근하면 사전에 정의된 표준 프로필들을 조회할 수 있습니다.

Users에서는 현재 속한 조직의 유저목록과 유저들의 프로필을 확인할 수 있습니다.

모든 유저는 하나의 프로필을 필수로 가져야 하기 때문에 새로운 유저를 생성하려고 하면 프로필 항목이 필수로 지정된 것을 볼 수 있습니다.

지금은 App Launcher에서 직접 만든 커스텀 앱인 Recruiting이 조회 가능합니다.

지금 로그인한 저에게 부여된 Profile의 Custom App Setting에서 Visible 값을 변경하고 저장함으로써 Profile 단위로 앱 접근권한을 변경할 수 있습니다.

다시 App Launcher를 통해 검색해보면 Recruiting앱이 조회되지 않는 걸 확인할 수 있습니다. 각 유저별로 조정한 것이 아닌 Profile 단위로 조정했기 때문에 같은 프로필을 갖고있는 유저들의 설정 또한 일괄적으로 변경할 수 있습니다.

각 프로필 edit 페이지에서 Tab단위로 접근을 제어할 수 있습니다. 탭 설정은 주로 프로필(Profile)이나 권한 세트(Permission Set)를 통해 관리됩니다.
탭 설정에는 일반적으로 세 가지 옵션이 있습니다:
Default On: 이 옵션을 선택하면 해당 탭이 사용자의 Salesforce 인터페이스에 기본적으로 표시됩니다.
Default Off: 이 옵션을 선택하면 해당 탭이 사용자의 Salesforce 인터페이스에 기본적으로 숨겨져 있습니다. 그러나 App Launcher를 통해서는 접근할 수 있습니다.
Tab Hidden: 이 옵션을 선택하면 해당 탭이 사용자에게 전혀 표시되지 않습니다. 사용자는 이 탭을 인터페이스에서 보거나 접근할 수 없습니다.
탭 설정을 통해 관리자는 조직의 데이터 보안 정책을 준수하고, 사용자 인터페이스를 간소화하며, 사용자가 업무를 수행하는 데 필요한 정보와 도구에만 접근할 수 있도록 할 수 있습니다.
오브젝트별 접근권한도 Profile의 edit 페이지에서 설정할 수 있지만, Standard Profile의 Object별 권한은 수정이 불가합니다. 따라서, Custom Profile을 생성하기 위해선 Standard Profile을 복사하여 원하는 세팅으로 변경해야합니다.

Standard Platform User이라는 표준 프로필을 clone 복사해서 Custom Platform Profile로 명명했습니다.

그리고 새로운 유저 Son HeungMin을 생성하고 새로운 프로필을 할당해주었습니다.

Son HeungMin으로 로그인 한 상태에서 Gratn Account Login Access로 가서 본래 User인 관리자에게 Son HeungMin 계정으로 비밀번호 없이 로그인 가능하도록 권한을 허락했습니다. 이를 통해 관리자는 Son HeungMin의 계정에 로그인할 수 있어서 권한을 주고 확인하는 과정이 쉬워질 수 있습니다.


다시 관리자 계정으로 와서 Son이 갖고 있는 Profile의 권한에서 Candidate Object에 대한 CRED 권한을 주었습니다. Tab Settings에서 모든 커스텀 탭의 권한은 Default On으로 되었습니다.

Son으로 로그인해서 앱에 접근하니 탭의 접근 권한이 Default On일지라도 다른 Custom Object에 대한 권한이 없는 탭들은 보여지지 않는 걸 볼 수 있습니다. Object 접근권한을 가진 Candidate은 탭과 모든 레코드 조회 및 생성, 수정, 삭제도 정상적으로 가능한 것을 볼 수 있습니다.

Son에게 다른 탭에 대한 접근권한을 주려면 위와 같이 Son에게 할당된 프로필의 Object 접근권한 중 최소한 Read 권한을 주어야 합니다.

Son으로 로그인해서 조회해보니 Object Read권한을 받은 다른 탭들도 정상적으로 보입니다. Create, Edit, Delete 권한은 받지 못했으니 조회 외에 다른 동작은 불가한 것을 볼 수 있습니다.

현재 Son은 특정 포지션의 연봉정보를 조회할 수 있는 상태입니다. 해당 프로필에서는 연봉정보를 조회하지 못하도록 필드 단위의 보안 설정을 적용해보겠습니다.

시스템 관리자 계정으로 접속해서 해당 프로필의 상세를 클릭하고 Custom Field-Level Security영역에서 원하는 커스텀 필드 항목의 View를 눌러 접근합니다.

Edit을 눌러 원하는 필드의 권한을 모두 제거하고 Save를 눌러 저장했습니다.

다시 Son으로 로그인해보면 연봉정보 관련된 필드의 항목들이 더 이상 보여지지 않는 걸 확인 할 수 있습니다.

Permission Sets는 Salesforce에서 사용자 권한을 관리하는 중요한 기능입니다. 이는 프로필을 통해 할당된 권한 외에 추가적인 권한을 사용자에게 부여할 수 있는 유연한 방법을 제공합니다. 프로필은 사용자의 기본 권한을 설정하는 데 사용되며, 일반적으로 역할 또는 직무별로 정의됩니다. 반면, Permission Sets는 특정 작업을 수행할 필요가 있는 사용자에게 추가 권한을 부여하기 위해 사용됩니다.
유연성: 프로필은 하나의 유저에게 하나만 할당가능합니다. Permission Set은 한 사용자에게 여러 Permission Sets를 적용할 수도 있습니다. 이를 통해 다양한 사용자의 요구사항에 맞춰 권한을 맞춤 설정할 수 있는 유연성을 제공합니다.
간소화된 권한 관리: 사용자의 역할이나 필요가 변경될 때, 프로필을 수정하는 대신 적합한 Permission Set을 추가하거나 제거함으로써, 보다 쉽게 권한을 조정할 수 있습니다.
Permission Sets를 통해 조직 내 다양한 사용자의 요구사항을 충족시키며, 효율적으로 사용자 권한을 관리하는 데 매우 유용한 방법입니다.

Permission Set을 통해 앱에 대한 접근부터 오브젝트, 필드, 탭, Apex Class, Visualforce Page 접근까지 컨트롤할 수 있습니다.

프로필과의 주요한 차이점은 다음과 같습니다.

Quick Find에서 Permission Set을 검색해서 존재하는 Permission set을 조회하고 New 버튼을 눌러 새로 생성할 수 있습니다.

Marketing이라는 앱을 조회할 수 있는 Permission Set을 만들고 적용해보겠습니다. 필수로 지정된 Label과 API Name 외에 License도 선택사항으로 있는걸 볼 수 있습니다.
새로 생성할 Permission Set을 여러 종류의 라이선스를 가진 사용자들에게 이 Permission Set을 할당할 계획이라면 '--None--'을 선택합니다.
만약 이 Permission Set을 특정 라이선스 유형을 가진 사용자들에게만 사용하도록 하고 싶다면, 해당 유저 라이센스를 선택합니다. 예를 들어, Salesforce에서 제공하는 Service Cloud 라이선스를 가진 사용자들만 이 Permission Set을 사용할 수 있도록 하고 싶다면, Service Cloud 라이선스를 선택하면 됩니다.
Permission Set과 함께 특정 Permission Set 라이선스를 자동으로 할당하고자 할 때 선택합니다. 예를 들어, 어떤 특별한 앱에 대한 접근 권한을 주는 Permission Set을 만들고, 이 Permission Set을 할당받는 사용자들에게 자동으로 해당 앱 사용 라이선스를 부여하고 싶을 때 이 옵션을 선택합니다.
저는 --None--을 선택해서 생성했습니다.

새로 생성한 Permission Set에 접근해서 앱의 접근을 관리하기 위해 Assigned Apps을 클릭합니다.

Edit을 눌러 수정 페이지로 온뒤 Marketing CRM Classic을 Enabled App에 추가한뒤 저장했습니다.

이후 Manage Assignment를 통해 특정 User에게 해당 Permission Set을 할당할 수 있습니다.

유저 목록에서 유저를 선택후 해당 Permission Set의 만료옵션을 지정하고 Assign버튼을 누르면 할당이 완료됩니다.
Permission Set을 통해 오브젝트와 필드에 대한 권한을 적용해보겠습니다.


먼저 Son이 갖고있는 Profile에서 Position Object 에 대한 Create, Delete 권한은 제외했고, 연봉정보 관련 필드 대한 수정 권한도 제외했습니다.

Son으로 로그인 해보면 Position 오브젝트에 대한 조회와 수정은 가능하나 생성과 삭제버튼은 보이지 않고 연봉정보 관련 필드 또한 수정 불가한 것을 볼 수 있습니다.

프로필에서 제외한 Position 오브젝트에 대한 생성과 삭제권한, 연봉정보 필드에 대한 수정권한을 Permission Set을 통해 부여해보도록 하겠습니다. 위와 같이 새로운 Permission Set의 이름을 설정했습니다.

이후 해당 Permission Set의 Object Settings를 클릭하고 Position 오브젝트를 선택했습니다.

이후 Edit 버튼을 눌러서 Create과 Delete의 권한에 대해 설정해주고 연봉정보 필드에 대한 Edit 권한도 설정해줬습니다.

이후 Son에게 해당 Permission Set을 할당했습니다.

그리고 다시 Son으로 로그인해서 다시 Position을 조회해보면, 아까는 없었던 새로운 레코드를 생성할 수 있는 New 버튼과 Delete 버튼이 보여지고, 연봉정보 필드를 수정할 수 있도록 변경된 것을 확인할 수 있습니다.
Son이 가진 프로필에는 없는 권한을 별도의 Permission Set을 통해 부여해준 것을 확인했습니다. 이를 통해, 같은 프로필을 가진 유저라도 Permission Set을 활용해서 조직의 요구사항에 따라 각기 다른 권한을 부여할 수 있습니다.