파일과 게스트 / Experience Cloud 사용자: 노출 위험
Salesforce에서 파일이 게스트 및 Experience Cloud 사용자에게 노출되는 원리 — Visibility 필드, 레코드 기반 공유, 그리고 데이터를 유출시키는 잘못된 설정.
파일 접근 관리는 내부적으로도 이미 충분히 까다롭다. 여기에 Experience Cloud(커뮤니티)와 게스트 사용자가 더해지면 양방향으로 더 날카로워진다. 외부 사용자에게 보여주고 싶은 파일이 때로는 나타나지 않고, 보여주고 싶지 않은 파일이 때로는 외부에 유출된다. 두 경우 모두 동일한 소수의 설정으로 귀결된다. 이를 올바르게 잡는 방법을 살펴본다.
외부 사용자는 동일한 모델을 사용한다 — 단, 관문이 하나 더 있다
커뮤니티 및 게스트 사용자는 다른 모든 사용자와 마찬가지로 동일한 ContentDocumentLink 모델을 통해 파일을 본다. 그러나 내부 사용자는 좀처럼 부딪히지 않는 추가 관문이 있다. 바로 링크의 Visibility 필드다.
| Visibility | 포함되는 대상 |
|---|---|
AllUsers | 내부 및 외부/커뮤니티 사용자 |
InternalUsers | 내부 사용자만 |
SharedUsers | 명시적으로 공유된 사용자만 |
Experience Cloud 사용자가 레코드에 첨부된 파일을 보려면 두 가지가 모두 충족되어야 한다: 레코드에 접근할 수 있어야 하고, 동시에 파일 링크의 Visibility에 외부 사용자가 포함(일반적으로
AllUsers)되어야 한다.
“커뮤니티 사용자가 레코드는 볼 수 있는데 그 파일은 못 본다”는 문의가 그토록 흔한 이유가 바로 이것이다. 레코드 접근은 문제가 없는데 Visibility가 InternalUsers인 경우다.
실패 양상 1: 보여야 하는데 안 보이는 파일
비교적 무해한 쪽이다. 커뮤니티 사용자가 케이스는 열 수 있는데 첨부 파일이 보이지 않는다. 해결책은 거의 항상 파일의 ContentDocumentLink에 있는 Visibility이며, 커뮤니티 안에서 업로드된 파일이 올바른 가시성을 상속받도록 하는 것이다. 레코드 공유가 아니라 링크를 확인하라.
실패 양상 2: 보이면 안 되는데 보이는 파일
위험한 쪽이며, 이 주제가 보안 관점에서 중요한 이유다.
게스트 사용자는 인증되지 않는다. 이들은 공개 사이트를 찾는 익명 방문자다. 따라서 게스트 사용자의 설정이 노출하는 모든 것은 사실상 인터넷 전체에 공개된 것이다:
- 민감한 파일에 걸린 공개 링크(설계상 로그인 불필요).
- 게스트 사용자 프로필이 도달할 수 있는 레코드에 첨부되어
AllUsers가시성을 가진 파일. - 게스트 또는 외부 대상에게 의도보다 더 많은 레코드를 — 따라서 더 많은 파일을 — 부여하는 지나치게 광범위한 공유 세트 / 공유 규칙.
지나치게 허용적인 게스트 접근은 가장 자주 보고되는 Salesforce 데이터 노출 문제 중 하나다. 파일은 실수로 노출한 레코드를 따라 함께 딸려 나간다.
함께 감사해야 할 두 관문
외부 파일 접근은 레코드 접근 AND 파일 Visibility에 동시에 달려 있으므로, 두 가지를 한 쌍으로 확인해야 한다:
- 게스트 및 외부 사용자가 어떤 레코드에 도달할 수 있는가? (커뮤니티 공유 모델, 공유 세트, 공유 규칙.)
- 그 레코드에 첨부된 파일의 Visibility는 무엇인가?
- 민감한 파일에 걸린 공개 링크는 없는가?
의도한 최종 상태는 다음과 같다: 게시하려고 했던 파일만 정확히 외부 대상에게 도달하고, 그 외에는 아무것도 도달하지 않는 것. 거기에 도달하는 것은 레코드 접근 모델의 나머지 부분과 동일한 핵심 질문이며, 단지 가장 위험한 대상을 상대로 한다는 점만 다르다.
공개 대상이 실제로 무엇에 도달할 수 있는지 파악하기
외부 레코드 접근 곱하기 파일 Visibility 더하기 모든 공개 링크라는 이 조합이야말로, 게스트 사용자 노출을 오판하기 쉽고 수작업으로 검증하기 어렵게 만드는 요인이다. AgentForceAccess는 내부 접근을 평가하는 방식 그대로 이를 평가한다. 게스트나 커뮤니티 사용자가 무엇을 볼 수 있는지 물으면, 이들이 도달하는 레코드와 그 레코드가 노출하는 파일을 추적한다. 그래서 “공개로 새어 나가는 것이 있는가”가 실제로 답할 수 있는 질문이 된다.
자주 묻는 질문
커뮤니티 사용자가 접근할 수 있는 레코드의 파일을 왜 볼 수 없나요?
대부분의 경우 ContentDocumentLink의 Visibility가 InternalUsers로 설정되어 있어, 레코드 접근에는 문제가 없어도 외부 사용자가 제외됩니다. 커뮤니티 사용자에게 파일을 노출하려면 일반적으로 Visibility = AllUsers가 필요합니다. Visibility가 해당 대상을 제외한다면 레코드 접근만으로는 충분하지 않습니다.
게스트 사용자와 파일에 관련된 위험은 무엇인가요?
게스트 사용자는 인증되지 않은 방문자입니다. 이들의 공유 설정이나 공개 링크가 노출하는 모든 파일은 사실상 공개 인터넷에 공개된 것입니다. 지나치게 광범위한 게스트 접근 — 혹은 잊혀진 공개 링크 — 는 가장 흔한 Salesforce 데이터 노출 사례 중 하나입니다.
커뮤니티에서 파일 가시성은 레코드 공유와 어떤 관계가 있나요?
둘은 별개의 두 관문입니다. 사용자는 (커뮤니티 공유 모델, 공유 세트 또는 공유 규칙을 통해) 레코드에 접근할 수 있어야 하고, 동시에 파일 링크의 Visibility에 외부 사용자가 포함되어야 합니다. 두 가지가 모두 맞아떨어져야 하며, 그래서 커뮤니티 파일 접근이 지원 및 보안 관련 단골 주제인 것입니다.
커뮤니티에서 파일을 노출하기 전에 무엇을 확인해야 하나요?
게스트 및 외부 사용자가 어떤 레코드에 도달할 수 있는지 먼저 확인한 다음, 그 레코드에 첨부된 파일의 Visibility를 확인하세요. 모든 공개 링크도 점검하세요. 목표는 의도한 파일만 — 그 외에는 아무것도 — 외부 대상에게 도달하도록 하는 것입니다.
직접 내 조직에서 확인해 보세요
AgentForceAccess는 모든 Salesforce 공유 메커니즘에 걸쳐, 어떤 사용자가 왜 특정 레코드나 파일을 볼 수 있는지 쉬운 말로 설명합니다.
얼리 액세스 신청