레코드에 대한 액세스 제어하기
학습 목표
레코드 수준 보안
- 사용자가 모든 레코드에 대한 공개 액세스 권한을 가져야 하나요, 아니면 하위 집합만 있어야 하나요?
- 하위 집합인 경우 사용자가 액세스할 수 있는지 여부를 결정해야 하는 규칙은 무엇인가요?
가상의 채용 앱에서 채용 담당자에게 필요한 개체 수준 권한을 부여하기 위해 채용 담당자라는 새 프로필을 생성한다고 가정해 보겠습니다. 모집 관련 개체를 삭제할 수 있는 권한을 제한하므로 채용 담당자가 이러한 개체를 삭제할 수 없습니다. 그러나 채용 담당자에게 채용 관련 개체를 생성, 읽기 또는 편집할 수 있는 권한을 부여한다고 해서 반드시 채용 담당자가 채용 관련 개체의 모든 레코드를 읽거나 편집할 수 있는 것은 아닙니다. 다음은 두 가지 중요한 개념의 결과입니다.
- 레코드에 대한 권한은 항상 개체 수준, 필드 수준 및 레코드 수준 권한의 조합에 따라 평가됩니다.
- 개체 수준 권한이 레코드 수준 권한과 충돌하는 경우 가장 제한적인 설정이 우선합니다.
- Org-wide defaults(조직 전체 기본값)는 사용자가 서로의 레코드에 대해 갖는 기본 액세스 수준을 지정합니다.
- Role hierarchies(역할 계층)는 관리자가 하위 역할과 동일한 레코드에 액세스할 수 있도록 합니다. 계층의 각 역할은 사용자 또는 사용자 그룹에 필요한 데이터 액세스 수준을 나타냅니다.
- Sharing rules(공유 규칙)는 조직 전체 기본값을 특정 사용자 그룹에게 자동으로 적용하지 않는 방법입니다. 이에 따라 특정 사용자 그룹은 소유하지 않거나 보통 볼 수 없는 레코드에 액세스할 수 있습니다.
- Manual sharing(수동 공유)을 통해 레코드 소유자는 다른 방법으로는 레코드에 액세스할 수 없는 사용자에게 읽기 및 편집 권한을 부여할 수 있습니다.
- 개체에 대한 사용자의 기준 권한은 프로필에 따라 결정됩니다.
- 사용자에게 할당된 권한 집합이 있는 경우 프로필과 함께 기본 권한도 설정됩니다.
- 사용자가 소유하지 않은 레코드에 대한 액세스는 조직 전체 기본값에 의해 먼저 설정됩니다.
- 조직 전체 기본값이 Public Read/Write(공개 읽기/쓰기)보다 작은 경우 역할 계층을 사용하여 특정 역할에 대한 액세스 백업을 열 수 있습니다.
- 공유 규칙을 사용하여 추가 사용자 그룹에 대한 액세스를 확장할 수 있습니다.
- 각 레코드 소유자는 레코드의 공유 버튼을 사용하여 개별 레코드를 다른 사용자와 수동으로 공유할 수 있습니다.
프로필과 권한 집합을 사용하여 개체 수준 및 필드 수준 액세스를 구성하는 방법을 앞서 살펴보았습니다. 이제 다양한 레코드 수준 보안 제어에 대한 세부 사항을 살펴보겠습니다.
조직 전체 공유
- 이 개체의 가장 제한된 사용자는 누구인가요?
- 이 사용자가 볼 수 없도록 해야 하는 이 개체의 인스턴스가 있나요?
- 이 개체에 이 사용자가 편집하면 안 되는 인스턴스가 있나요?
답변에 따라 해당 개체에 대한 공유 모델을 다음 설정 중 하나로 설정할 수 있습니다.
Private(비공개)레코드 소유자와 계층에서 해당 역할 위에 있는 사용자만 해당 레코드를 보고 편집하고 보고할 수 있습니다.
Public Read Only(공개 읽기 전용)
모든 사용자는 레코드를 보고 보고할 수 있지만 소유자와 계층 구조에서 해당 역할 위에 있는 사용자만 레코드를 편집할 수 있습니다.
Public Read/Write(공개 읽기/쓰기)
모든 사용자는 모든 레코드를 보고, 편집하고 보고할 수 있습니다.
Controlled by Parent(상위에 의해 제어됨)
사용자는 레코드가 속한 개체에서 동일한 작업을 수행할 수 있는 경우 레코드를 보거나 편집하거나 삭제할 수 있습니다.
개체에 대한 조직 전체 공유 설정이 Private(비공개) 또는 Public Read Only(공개 읽기 전용)인 경우 관리자는 역할 계층을 설정하거나 공유 규칙을 정의하여 사용자에게 레코드에 대한 추가 액세스 권한을 부여할 수 있습니다. 공유 규칙은 추가 액세스 권한을 부여하는 데만 사용할 수 있습니다. 조직 전체 공유 기본값으로 원래 지정된 것 이상으로 레코드에 대한 액세스를 제한하는 데 사용할 수 없습니다.
예를 들어 채용 앱의 직책 개체에 대한 위의 질문 목록을 살펴보고 답변해 보겠습니다.
이 개체의 가장 제한된 사용자는 누구인가요?일반 직원 프로필의 구성원입니다. 이 구성원들이 수행할 수 있는 일은 직무를 확인하는 것뿐입니다.
이 사용자가 볼 수 없도록 해야 하는 이 개체의 인스턴스가 발생할 수 있나요?
아니요. 최소 및 최대 급여 필드 값은 일반 직원에게 숨겨져 있지만 일반 직원이 모든 직책 레코드를 볼 수는 있습니다.
이 개체에 이 사용자가 편집하면 안 되는 인스턴스가 있나요?
예. 일반 직원은 직책 레코드를 편집할 수 없습니다.
세 번째 질문에 '예'라고 대답했으므로 직책 개체의 공유 모델을 공용 읽기 전용으로 설정해야 합니다. 다른 recruiting 개체에 대해 동일한 연습을 반복하여 해당 개체에 대한 적절한 조직 전체 기본 설정을 쉽게 파악할 수 있습니다. 일반 직원 프로필은 각 개체에 대해 가장 제한된 사용자이며 특정 직원이 볼 수 없는 후보, 입사 지원서 및 검토 레코드가 있을 것입니다. 따라서 후보, 입사 지원서 및 검토 개체에 대한 공유 모델은 모두 Private(비공개)으로 설정되어야 합니다.
조직 전체 공유 기본값 설정하기
- Setup(설정)에서 Quick Find(빠른 찾기) 상자에 Sharing Settings(공유 설정)를 입력한 후 Sharing Settings(공유 설정)를 선택합니다.
- 조직 전체 기본값 영역에서 Edit(편집)을 클릭합니다. 일부 표준 개체는 다른 조직 전체 기본 옵션을 사용합니다. 맞춤형 객체 조직 전체 기본 옵션은 Private(비공개), Public Read Only(공개 읽기 전용), 또는 Public Read/Write(공개 읽기/쓰기) 등입니다.
- 각 개체에 대해 기본 내부 액세스와 기본 외부 액세스를 선택합니다.
- 계층을 사용하여 자동 액세스를 비활성화하려면 상위에 제어됨 기본 액세스 권한이 없는 맞춤형 객체에 대해 Grant Access Using Hierarchies(계층을 사용한 액세스 권한 부여)를 선택 취소합니다.
Grant Access Using Hierarchies(계층을 사용한 액세스 권한 부여)가 선택 취소된 경우에도 '모두 보기' 및 '모두 수정' 개체 권한과 '모든 데이터 보기' 및 '모든 데이터 수정' 시스템 권한이 있는 사용자와 같은 일부 사용자는 소유하지 않은 레코드에 액세스할 수 있습니다.
추가 정보 알아보기
Apex 관리 공유를 통해 개발자는 맞춤형 객체와 연결된 레코드를 프로그래밍 방식으로 공유할 수 있습니다. 맞춤형 객체에 대해 Apex 관리 공유를 사용하는 경우 '모든 데이터 수정' 권한이 있는 사용자만 해당 맞춤형 객체의 레코드에 대한 공유를 추가하거나 변경할 수 있으며 레코드 소유자가 변경되더라도 공유 액세스는 동일하게 유지됩니다. 자세한 내용은 Apex 공유를 참조하세요.