봐야 할 레코드를 못 보는 사용자 — 해결 방법
Salesforce 사용자가 봐야 할 레코드를 못 보는 이유를 객체 권한, 필드 수준 보안, 공유, 제한 규칙에 걸친 체크리스트로 짚어봅니다.
“이 사용자가 왜 저 레코드를 볼 수 있지?”의 거울상도 그만큼 흔합니다. 누군가 레코드를 봐야 하는데 못 보는 경우죠. 다행히 Salesforce의 접근은 정해진 순서의 검사를 거치기 때문에, 추측에 의존하지 않고 어디서 막혔는지 체계적으로 짚어낼 수 있습니다.
모든 레코드 접근이 통과해야 하는 두 가지 검사
Salesforce는 다음 두 가지가 모두 성공할 때만 접근을 허용합니다:
- 객체 수준 — 사용자가 해당 객체에 대한 CRUD를 가지고 있고, 관련 필드에 대한 필드 수준 보안을 가지고 있는가? (프로필과 권한 집합에서 옵니다.)
- 레코드 수준 — 공유 모델이 이 특정 레코드를 허용하는가?
둘 중 어느 하나라도 실패하면 레코드가 보이지 않습니다. 따라서 가장 먼저 할 일은 어느 검사가 실패하고 있는지 파악하는 것이며, 증상이 그 답을 알려줍니다.
먼저 증상을 읽으세요
| 증상 | 실패하는 검사 | 이동 |
|---|---|---|
| 객체/탭 자체를 전혀 찾지 못함 | 객체 권한 또는 앱/탭 표시 | 1단계 |
| 객체는 보이는데 레코드 하나가 안 보임 | 레코드 수준 공유(또는 제한 규칙) | 3단계 |
| 레코드는 열리는데 필드가 비어 있음 | 필드 수준 보안 | 2단계 |
| 어제는 보였는데 오늘은 안 보임 | 최근 변경 / 재계산 | 4단계 |
1단계 — 객체 권한과 표시
사용자가 객체나 해당 탭에 도달하지 못하는 경우:
- 프로필이나 권한 집합에서 해당 객체에 대한 Read를 확인하세요.
- 해당 앱과 탭이 사용자에게 표시되는지 확인하세요.
객체 접근이 없으면 공유와 무관하게 어떤 레코드도 볼 수 없습니다. 이것부터 고치세요. (레코드 조회가 아니라 저장에서 실패한다면, 원인은 보통 사용자가 도달할 수 없는 관련 레코드입니다 — insufficient access rights on cross-reference id 참고.)
2단계 — 필드 수준 보안
레코드는 열리는데 특정 필드가 비어 있다면, 레코드 수준 접근에는 문제가 없고 필드 수준 보안이 필드를 숨기고 있는 것입니다. 사용자의 프로필이나 권한 집합에서 해당 필드의 FLS를 부여하세요. (이것은 공유가 아니라 프로필/권한 집합 설정입니다 — 프로필 vs 권한 집합 vs 공유 참고.)
3단계 — 레코드 수준 공유
사용자가 객체 접근은 있는데 레코드 하나에 도달하지 못한다면, 공유 모델을 차례로 따라가세요:
- 조직 전체 기본값 — Private이라면 사용자는 자신이 소유한 레코드, 역할 계층에서 자기보다 아래에 있는 사람이 소유한 레코드, 또는 규칙·팀·수동 공유로 부여된 레코드만 볼 수 있습니다. 어느 것도 해당하지 않는다면 그것이 답입니다 — 공유 규칙, 팀 멤버십, 또는 수동 공유를 추가하세요.
- 역할 계층 — 사용자가 실제로 소유자보다 위에 있나요? 그렇지 않으면 상향 집계(roll-up)가 없습니다.
- 제한 규칙이 걸러내고 있음 — 제한 규칙은 공유 위에서 접근을 줄입니다. 사용자가 공유를 통해 접근 권한이 있더라도 제한 규칙의 조건에 의해 배제될 수 있습니다. 사용자의 권한 집합에 대해 해당 객체의 제한 규칙을 확인하세요.
4단계 — 최근 변경과 재계산
접근이 사라졌다면:
- 소유권, 역할 계층, 공유 규칙, 제한 규칙, 또는 사용자의 권한 집합 할당에 변경이 있었는지 살펴보세요 — 어느 것이든 접근을 제거할 수 있습니다.
- 공유 재계산이 끝났는지 확인하세요. 소유권/역할/규칙 변경 후 Salesforce는 공유를 비동기로 재처리하며, 그 시간 동안 접근이 지연될 수 있습니다.
진단 체크리스트
- 객체/탭에 도달할 수 있나? → 객체 권한 + 앱/탭 표시.
- 필드가 표시되나? → 필드 수준 보안.
- OWD가 Private이고 적용 가능한 공유가 없나? → 공유 추가.
- 계층에서 소유자보다 위에 있나? → 필요하면 조정.
- 제한 규칙이 배제하고 있나? → 조건 조정.
- 최근 변경이나 재계산이 진행 중인가? → 대기 / 되돌리기.
가장 먼저 실패하는 검사가 곧 해결 지점입니다. 그리고 반대 문제 — 접근이 너무 많은 경우 — 는 봐서는 안 될 레코드를 보는 사용자에서 다룹니다.
실패하는 계층으로 곧장 건너뛰기
느린 부분은 각 계층을 차례로, 종종 사용자로 로그인해 가며 테스트하는 일입니다. AgentForceAccess는 그 과정을 압축합니다. 사용자가 레코드를 왜 못 보는지 물으면 어느 검사가 가로막는지 — 객체 권한, 필드 수준 보안, 누락된 공유, 또는 제한 규칙 — 알려주므로, 한 번에 올바른 계층을 고칠 수 있습니다.
자주 묻는 질문
사용자가 객체는 보는데 특정 레코드 하나만 못 봅니다. 왜 그런가요?
이것은 레코드 수준 문제입니다. 조직 전체 기본값이 Private이면 사용자는 자신이 소유한 레코드, 역할 계층에서 자기보다 아래에 있는 사람이 소유한 레코드, 또는 공유 규칙·팀·수동 공유로 부여된 레코드만 볼 수 있습니다. 이 중 어느 것도 해당하지 않으면 레코드는 보이지 않습니다. 제한 규칙이 걸러내고 있을 수도 있습니다.
사용자가 레코드를 열 수는 있는데 핵심 필드가 비어 있습니다. 왜 그런가요?
이것은 레코드 공유가 아니라 필드 수준 보안 문제입니다. 사용자는 레코드에 접근할 수 있지만 프로필이나 권한 집합이 해당 필드를 숨기고 있는 것입니다. 관련 권한 집합에서 해당 필드의 필드 수준 보안을 부여하세요.
사용자가 객체나 탭 자체를 전혀 못 봅니다. 무엇이 문제인가요?
객체 Read 권한이 없거나, 해당 프로필에 대해 앱/탭이 숨겨져 있을 가능성이 큽니다. 객체 권한과 탭/앱 표시는 프로필과 권한 집합에서 결정되므로, 공유 모델을 보기 전에 먼저 이 부분을 고치세요.
어제까지 접근이 되다가 멈췄습니다. 무엇이 바뀐 건가요?
소유권, 역할 계층, 공유 규칙, 제한 규칙, 또는 사용자의 권한 집합에 최근 변경이 있었는지 살펴보세요. 이 중 어느 것이든 접근을 제거할 수 있습니다. 또한 재처리 중에는 접근이 지연될 수 있으므로 공유 재계산이 끝났는지 확인하세요.
직접 내 조직에서 확인해 보세요
AgentForceAccess는 모든 Salesforce 공유 메커니즘에 걸쳐, 어떤 사용자가 왜 특정 레코드나 파일을 볼 수 있는지 쉬운 말로 설명합니다.
얼리 액세스 신청