【共有セット完全ガイド】ロールがなくても大丈夫!Customer Community ユーザーにレコードを共有する唯一の方法

この記事はバージョン Winter ’26 において執筆しています。
現在の動作と異なる場合がありますので、ご認識おきください。

Experience Cloud サイトを構築していて、こんなトラブルに遭遇したことはありませんか?

「ポータルユーザー(Customer Community ライセンス)に、自分が作成したケースや注文を見せたいのに、権限エラーで見えない」 「組織の共有ルール設定で『公開』にしているのに、外部ユーザーには適用されない」

焦ってプロファイル設定を見直したり、共有ルールを量産したりしても解決しません。なぜなら、Customer Community ライセンスのユーザーには「ロール(Role)」が存在しないからです。

DXforce Point

「Customer Community Plus」との混同に注意

「外部ユーザーを作ると、取引先ロールが作られるよね?」と思った方は、おそらく Customer Community Plus ライセンスの経験がある方です。

  • Plus / Partner: ロールが作られます。だから「共有ルール」が使えます。
  • 標準 Community: ロールは作られません(UserRoleId は空です)。だから「共有セット」しか使えないのです。本記事はこちらの解説です。

ロールがなければ、通常の共有ルールは機能しません。そこで登場するのが、外部ユーザー専用の強力な共有機能、「共有セット (Sharing Set)」 です。 この記事では、複雑に見える「アクセスマッピング」を直感的に理解・設定するための極意をお伝えしつつ、ロールを持たない「標準 Community ライセンス」を救済するための機能、共有セットについて解説します。

なぜ「共有ルール」ではダメなのか

Salesforceのセキュリティモデルに慣れている人ほど、この罠にハマります。 通常、レコードのアクセス権は「ロール階層」や「共有ルール」で制御しますが、これらは「ユーザーがロールを持っていること」が前提です。

しかし、最も安価で一般的な Customer Community ライセンス には、ロールがありません。 つまり、いくら「○○ロールの人に共有」というルールを作っても、対象外になってしまうのです。

そこでSalesforceが用意した代替手段が「共有セット」です。これは「階層」ではなく「マッチング(紐付け)」でアクセス権を決定します。

共有セットの仕組み:魔法の合言葉は「共通点」

共有セットの考え方は非常にシンプルです。
「ユーザー」と「レコード」の間に、「共通点」があるなら見せてよし。 これだけです。

最も典型的な共通点は 「取引先 (Account)」 です。

  • 取引先責任): Aさんは、「株式会社〇〇」に所属している(取引先責任者経由)。
  • レコード: その注文データは、「株式会社〇〇」に紐付いている。
  • 判定: 両方とも「株式会社〇〇」だ! → アクセス許可

これを図解すると以下のようになります。

この「共通の親(取引先や取引先責任者)」を介してアクセス権を与えるのが共有セットの正体です。

設定手順:アクセスマッピングを極める

それでは、実際に設定してみましょう。 シナリオは「ユーザーに、自分の会社(取引先)に紐付く『ケース(問い合わせ)』を見せたい」です。

  1. [設定] > [デジタルエクスペリエンス] > [設定] を開きます。
  2. 「共有セット」セクションまでスクロールし、[新規] をクリックします。
  3. プロファイルの選択:
    • このルールを適用するプロファイル(例: Customer Community User)を選択します。
  4. オブジェクトの選択:
    • 共有したいオブジェクト(今回は ケース)を選択します。
  5. アクセスの設定(最重要):
    • ここで「共通点」を定義します。
    • ユーザー: User.Account(ユーザーの取引先)
    • ターゲットケース: Case.Account(ケースの取引先)
    • これらが 一致する (Matches) ように設定します。
  6. アクセスレベル: 「参照のみ」または「参照・更新」を選択します。

これで、「自分の会社のケース」が全て見えるようになります。

よくあるユースケースとマッピング例

実務で頻出するパターンのマッピング設定をまとめました。迷った時の「辞書」としてお使いください。

見せたいもの共通点(キー)設定内容
(ユーザー = ターゲット)
自分の会社の注文取引先 (Account)User.Account = Order.Account
自分宛てのカスタム通知取引先責任者 (Contact)User.Contact = CustomNotification__c.Contact__c
親会社の全データ親取引先 (Parent Account)User.Account.Parent = Order.Account
DXforce Point

親の親までは辿れない

共有セットのマッピングで辿れるリレーションには制限があります(ドット記法で1つ先まで)。 「親会社の、そのまた親会社のデータ」といった複雑な要件がある場合は、共有セットでは対応できません。その時は、コストをかけて Customer Community Plus ライセンス(ロールが使える) へのアップグレードを検討すべきタイミングです。

【開発者への注意点】LWCとレコードアクセス

LWC開発者の方へ。

@wire や Apex でデータを取得しようとして「データが返ってこない」場合、コードのバグを疑う前に、まず「テストユーザーに共有セットが当たっているか」を確認してください。

  • Apex: without sharing を付ければ強制的に取得できますが、セキュリティレビューやガバナンスの観点から、外部ユーザー向けサイトでは with sharing が推奨されます。
  • LWC: 標準の lightning-record-form などは、共有セットの権限に厳格に従います。

「コードは正しいのに動かない」原因の9割は、この共有セット適用の漏れです。

まとめ

Customer Community ライセンスを使う限り、共有セットは避けて通れません。

  • ロール階層の代わりに 「共通点(取引先など)」 で繋ぐ。
  • 「誰に(プロファイル)」「何を(オブジェクト)」「どうやって(マッピング)」 見せるかを定義する。

この仕組みさえ理解すれば、安価なライセンスでもセキュアで高機能なポータルサイトを構築できます。 ぜひ、検証環境で実際に設定し、「見えた!」という瞬間を体験してみてください。

参考URL

Experience Cloud サイトユーザー用の共有セットの作成

読者の声

タイトルとURLをコピーしました