Mark Hammer's Blog

SalesforceやTrailheadに関する情報を投稿しているブログです。

Salesforce Tips: ゲストユーザの有無を調べたい

はじめに

楽天、PayPayにてSalesforceの設定不備により不正アクセスを受け、情報流出があったとの報道がありました。

xtech.nikkei.com

xtech.nikkei.com

これを受けてか、セールスフォース・ドットコム社でもプレスリリースを発表。
「当社製品の脆弱性に起因するものではなく、ゲストユーザに対する情報の共有に関する設定が適切に行われていない場合に発生する事象」と、設定の不備による点を強調しています。 www.salesforce.com

本件のまとめとしては以下Blogが参考になります。

piyolog.hatenadiary.jp

ここでは、改めて今回話題となったゲストユーザとは何か、そしてゲストユーザの有無をチェックする方法を記載します。

ゲストユーザとは

通常Salesforceはログイン画面からユーザ名、パスワードを入力してログインして使うものですが、Salesforceサイト、Experience Cloud(旧 Community Cloud)では公開Webサイトを作ることができます。
このとき、Salesforce認証を必要とせずにSalesforceの情報にアクセスさせることができます。

Salesforce ヘルプ: Salesforce サイト より

Salesforce サイトでは、公開 Web サイトとアプリケーションを作成できます。それらは Salesforce 組織と直接統合されるため、ユーザがログインする場合にユーザ名やパスワードは必要ありません。組織に保存された情報を任意のブランド URL を介して公開し、サイトのページを会社のブランドのデザインと一致させることができます。

Salesforce ヘルプ: ゲストユーザプロファイルを使用して認証されていないユーザに安全なアクセスを提供 より

公開コミュニティは、B2C (企業対消費者) での活用に適しており、幅広い利用者にアプローチできます。ゲストユーザプロファイルを使用して、コミュニティ内の認証を必要としないデータ、コンテンツ、オブジェクトへの公開アクセスを制御できます。たとえば、既存の顧客と見込み客がログインせずに他のメンバーまたはサポートによって投稿された公開ディスカッション、既知の問題、およびソリューションを参照できる、カスタマーサポートコミュニティを作成できます。

この「Salesforce認証を必要とせずにSalesforceの情報にアクセスさせる」時に使われるのがゲストユーザです。
ちなみに Experience Cloudではコミュニティユーザライセンスによりコミュニティ専用のユーザを作成することができますが、このユーザはSalesforce認証(ユーザ名、パスワード入力など)を行ったうえでコミュニティにアクセスするため、ゲストユーザとは別のものです。

ゲストユーザの有無チェック

ゲストユーザは Salesforceサイト、Experience Cloudを使用することで自動的に作成されます。
そのため、有効なSalesforceサイト、Experience Cloudがなければ今回の情報流出と同じことが起きる心配はありません。

ここでは、自分のSalesforce組織でSalesforceサイト、Experience Cloudを使用しているか否かを確認する方法を記載します。

Salesforceサイトの使用有無チェック

  • Salesforce設定画面左上にあるクイック検索ボックスに「サイト」と入力し、設定メニューの「サイト」をクリック。
  • この時に以下のようなドメイン名を登録する画面が表示された場合は、Salesforceサイトを利用していません。

f:id:mark-hammer:20201229113736p:plain
Salesforceサイトを利用していない場合

  • 一方サイト一覧が表示された場合、そのサイト一覧のうち「有効」にチェックが入った行があればSalesforceサイトを利用しています。「有効」にチェックが入った行が一つもなければSalesforceサイトを利用していません。

f:id:mark-hammer:20201229114109p:plain
サイト一覧に「有効」なサイトがある場合

f:id:mark-hammer:20201229113959p:plain
サイト一覧に「有効」なサイトが一つもない場合

Experience Cloud(旧 Community Cloud)の使用有無チェック

  • Salesforce設定画面左上にあるクイック検索ボックスに「コミュニティ」と入力し、設定メニューの「コミュニティ設定」をクリック。
  • この時に以下のようなコミュニティを有効化するための画面が表示された場合は、Experience Cloudを利用していません。

f:id:mark-hammer:20201229114221p:plain
コミュニティを有効化していない場合

  • 一方「コミュニティ設定」がこの画面ではなく設定一覧が表示される場合は、設定メニューの「すべてのコミュニティ」をクリック。
  • この時に表示されるコミュニティ一覧に「状況」が「有効」か「プレビュー」の行があればExperience Cloudを利用しています。コミュニティ一覧に何も表示されない、または「状況」が「無効」の行しかない場合は現在Experience Cloudを利用していません。

f:id:mark-hammer:20201229114540p:plain
有効なコミュニティがある場合(状況がプレビュー)

f:id:mark-hammer:20201229114623p:plain
有効なコミュニティがある場合

f:id:mark-hammer:20201229114712p:plain
有効なコミュニティがない場合(状況が無効)

ゲストユーザがあった場合

上記の手順で有効なSalesforceサイト、Experience Cloudが自分のSalesforce組織にあった場合、次にそのサイト、コミュニティで作成されているゲストユーザの権限を確認します。
セールスフォース・ドットコム社が公開している Trailblazer Community: ゲストユーザセキュリティベストプラクティスの解説 (※要Salesforceアカウント) では具体的な確認手順を含め記載されているため、こちらを参考にされることをお勧めいたします。
資料に書かれていた、主に確認すべき内容は以下の通りです。

  • ゲストユーザプロファイルに対し不要なオブジェクト権限(参照など)を付与していないこと
  • ゲストユーザプロファイルに対し「APIの有効化」権限を付与していないこと
  • ゲストユーザプロファイルに対し不要なApexクラスへのアクセスを許可していないこと*1
  • ゲストユーザに対し不要な個別共有ルールを設定していないこと*2
  • ゲストユーザに対し権限セットが設定されていないか確認すること
    • 権限セットが設定されている場合は、その権限セットに対してもゲストユーザプロファイルと同様の内容を確認すること

ちなみに問題を紹介したブログではauraエンドポイントを用いた情報取得を行っているため、一部ブログでは対策としてSalesforceサイトの「ゲストユーザのLightning機能」設定の無効化を案内していますが、セールスフォース・ドットコム社としては根本を断つ設定を案内しており、資料では「ゲストユーザのLightning機能」設定については触れていませんでした。

おわりに

今回はインパクトが大きい報道のため不安になった方も多いですが、まずはSalesforceサイト、Experience Cloudの状況を確認することをお勧めします。
そのうえでSalesforceサイト、Experience Cloudを使用している場合は、改めてゲストユーザの確認を行いましょう。
また、不明点はセールスフォース・ドットコム社の案内通り、サポートへ問い合わせて不安を解消されることをお勧めいたします。

*1:オブジェクト権限を付与していなくても、Apexクラス経由で情報を取得できる場合があるため

*2:セールスフォース・ドットコム社の資料によれば、ゲストユーザに対する組織の共有設定は現在「非公開」で固定されているとのことです