この記事はバージョン Winter ’26 において執筆しています。
現在の動作と異なる場合がありますので、ご認識おきください。
Experience Cloud サイトを構築していて、こんなトラブルに遭遇したことはありませんか?
「ポータルユーザー(Customer Community ライセンス)に、自分が作成したケースや注文を見せたいのに、権限エラーで見えない」 「組織の共有ルール設定で『公開』にしているのに、外部ユーザーには適用されない」
焦ってプロファイル設定を見直したり、共有ルールを量産したりしても解決しません。なぜなら、Customer Community ライセンスのユーザーには「ロール(Role)」が存在しないからです。
「Customer Community Plus」との混同に注意
「外部ユーザーを作ると、取引先ロールが作られるよね?」と思った方は、おそらく Customer Community Plus ライセンスの経験がある方です。
- Plus / Partner: ロールが作られます。だから「共有ルール」が使えます。
- 標準 Community: ロールは作られません(
UserRoleIdは空です)。だから「共有セット」しか使えないのです。本記事はこちらの解説です。
ロールがなければ、通常の共有ルールは機能しません。そこで登場するのが、外部ユーザー専用の強力な共有機能、「共有セット (Sharing Set)」 です。 この記事では、複雑に見える「アクセスマッピング」を直感的に理解・設定するための極意をお伝えしつつ、ロールを持たない「標準 Community ライセンス」を救済するための機能、共有セットについて解説します。
なぜ「共有ルール」ではダメなのか
Salesforceのセキュリティモデルに慣れている人ほど、この罠にハマります。 通常、レコードのアクセス権は「ロール階層」や「共有ルール」で制御しますが、これらは「ユーザーがロールを持っていること」が前提です。
しかし、最も安価で一般的な Customer Community ライセンス には、ロールがありません。 つまり、いくら「○○ロールの人に共有」というルールを作っても、対象外になってしまうのです。
そこでSalesforceが用意した代替手段が「共有セット」です。これは「階層」ではなく「マッチング(紐付け)」でアクセス権を決定します。
共有セットの仕組み:魔法の合言葉は「共通点」
共有セットの考え方は非常にシンプルです。
「ユーザー」と「レコード」の間に、「共通点」があるなら見せてよし。 これだけです。
最も典型的な共通点は 「取引先 (Account)」 です。
- 取引先責任): Aさんは、「株式会社〇〇」に所属している(取引先責任者経由)。
- レコード: その注文データは、「株式会社〇〇」に紐付いている。
- 判定: 両方とも「株式会社〇〇」だ! → アクセス許可
これを図解すると以下のようになります。

この「共通の親(取引先や取引先責任者)」を介してアクセス権を与えるのが共有セットの正体です。
設定手順:アクセスマッピングを極める
それでは、実際に設定してみましょう。 シナリオは「ユーザーに、自分の会社(取引先)に紐付く『ケース(問い合わせ)』を見せたい」です。
- [設定] > [デジタルエクスペリエンス] > [設定] を開きます。
- 「共有セット」セクションまでスクロールし、[新規] をクリックします。
- プロファイルの選択:
- このルールを適用するプロファイル(例: Customer Community User)を選択します。
- オブジェクトの選択:
- 共有したいオブジェクト(今回は ケース)を選択します。
- アクセスの設定(最重要):
- ここで「共通点」を定義します。
- ユーザー:
User.Account(ユーザーの取引先) - ターゲットケース:
Case.Account(ケースの取引先) - これらが 一致する (Matches) ように設定します。
- アクセスレベル: 「参照のみ」または「参照・更新」を選択します。
これで、「自分の会社のケース」が全て見えるようになります。

よくあるユースケースとマッピング例
実務で頻出するパターンのマッピング設定をまとめました。迷った時の「辞書」としてお使いください。
| 見せたいもの | 共通点(キー) | 設定内容 (ユーザー = ターゲット) |
|---|---|---|
| 自分の会社の注文 | 取引先 (Account) | User.Account = Order.Account |
| 自分宛てのカスタム通知 | 取引先責任者 (Contact) | User.Contact = CustomNotification__c.Contact__c |
| 親会社の全データ | 親取引先 (Parent Account) | User.Account.Parent = Order.Account |
親の親までは辿れない
共有セットのマッピングで辿れるリレーションには制限があります(ドット記法で1つ先まで)。 「親会社の、そのまた親会社のデータ」といった複雑な要件がある場合は、共有セットでは対応できません。その時は、コストをかけて Customer Community Plus ライセンス(ロールが使える) へのアップグレードを検討すべきタイミングです。
【開発者への注意点】LWCとレコードアクセス
LWC開発者の方へ。
@wire や Apex でデータを取得しようとして「データが返ってこない」場合、コードのバグを疑う前に、まず「テストユーザーに共有セットが当たっているか」を確認してください。
- Apex:
without sharingを付ければ強制的に取得できますが、セキュリティレビューやガバナンスの観点から、外部ユーザー向けサイトではwith sharingが推奨されます。 - LWC: 標準の
lightning-record-formなどは、共有セットの権限に厳格に従います。
「コードは正しいのに動かない」原因の9割は、この共有セット適用の漏れです。
まとめ
Customer Community ライセンスを使う限り、共有セットは避けて通れません。
- ロール階層の代わりに 「共通点(取引先など)」 で繋ぐ。
- 「誰に(プロファイル)」「何を(オブジェクト)」「どうやって(マッピング)」 見せるかを定義する。
この仕組みさえ理解すれば、安価なライセンスでもセキュアで高機能なポータルサイトを構築できます。 ぜひ、検証環境で実際に設定し、「見えた!」という瞬間を体験してみてください。
参考URL
Experience Cloud サイトユーザー用の共有セットの作成



読者の声