Salesforceの状態チェックで確認できる設定(セッションの設定編)
皆様こんにちは、セールスフォース事業本部です。
今回からは状態チェックで確認できる設定を紹介します。
今回紹介するのは「セッションの設定」グループに含まれる設定です。特記がある設定を除き、これらの設定は「セッションの設定」画面から確認、変更可能なものになります。
※このページの情報はSummer'24時点のものになります。
「セッションの設定」グループ内の設定一覧
標準ヘッダーがある Visualforce ページのクリックジャック保護を有効化、
ヘッダーが無効化された Visualforce ページのクリックジャック保護を有効化
クリックジャックとは、悪意のあるウェブサイトがユーザーのクリックを騙して意図しない操作をさせる攻撃手法です。具体的には、攻撃者が透明なボタンやリンクを本物のウェブサイトの上に重ねて表示させ、ユーザーがその偽のボタンをクリックすると、知らないうちに攻撃者の意図したアクションを実行してしまう、というものです。クリックジャックのために攻撃者が、本物のウェブサイトを表示させる方法として、別のサイトを埋め込む技術であるインラインフレーム(iframe)がありますが、この埋め込みを禁止することでこの攻撃から保護することができます。
上記設定を有効にすると、該当するVisualforceページを外部ページからインラインフレーム (iframe) を使って読み込むことができなくなります。これによりSalesforce以外のドメインにてVisualforceページを表示することでユーザーを騙し、誤ってアクションを実行させることを防ぐことができます。
Visualforceページに標準ヘッダーがあるか、ヘッダーが無効化されているかは、apex:page 項目の showHeader属性により決定されます。
参考:
Salesforceヘルプ:クリックジャック保護の定義
https://help.salesforce.com/s/articleView?id=sf.security_clickjack_protection_configure.htm&type=5&language=ja
Salesforceヘルプ:Visualforce ページのクリックジャック保護の有効化
https://help.salesforce.com/s/articleView?id=sf.security_clickjack_enable_visualforce.htm&type=5&language=ja
設定ページのクリックジャック保護を有効化
この設定を有効にすると、Salesforceが配信する設定ページを外部ページからインラインフレーム (iframe) を使って、読み込むことができなくなります。この設定はデフォルトで有効化されており、ユーザー側では無効化できません。
設定以外の Salesforce ページのクリックジャック保護を有効化
この設定を有効にすると、Salesforceが配信する設定以外のClassicページを外部ページから、インラインフレーム (iframe) を使って読み込むことができなくなります。この設定はデフォルトで有効化されており、ユーザー側では無効化できません。
セッションタイムアウト
セッションタイムアウトになるまでの無操作時間を設定します。
なお、状態チェックで確認するのは「セッション設定」内の設定値ですが、実際のタイムアウトの際はプロファイル側の設定が反映されます。
また、状態チェックの標準値には複数の値を設定できますが、画面上には「標準値として設定されている中で最小の値」が表示されます。つまり標準値に15分~2時間が設定されている場合、状態チェック画面上では標準値は15分しか表示されませんが、「あなたの値」が2時間でも準拠扱いとなります。
参考:
Salesforceヘルプ:プロファイルでのセッション設定の編集
https://help.salesforce.com/s/articleView?id=sf.users_profiles_session.htm&type=5&language=ja
Salesforceヘルプ:セッションタイムアウトの問題
https://help.salesforce.com/s/articleView?id=000383251&type=1&language=ja
セッションタイムアウト時に強制的にログアウト
この設定を有効にすると、セッションタイムアウト時に強制ログアウトとなります。通常、セッションタイムアウトは長時間操作をしていない場合に発生するため、セキュリティ向上の面でも本設定は有効にしておくことをお勧めします。
セッションを最初に使用したドメインにセッションをロックする
この設定を有効にすると、ユーザーの現在の UI セッションを特定のドメインに関連付けることになります。例えばExperience Cloudサイトユーザーの UI セッションを該当サイトドメインに関連付け、その他のドメインでは使用できないようにします。これにより別のドメインでのセッションIDの不正使用が防止できます。
この設定は、Spring '15 リリース以降に作成された Salesforce 組織ではデフォルトで有効になっていますが、手動で無効化も可能です。
HttpOnly 属性が必要
HttpOnly属性とは、ウェブサイトがユーザーの情報を一時的に保存するために用いるCookieをJavaScriptからアクセスできないようにする設定です。たとえばCookieにログイン状態やセッションIDなど重要な情報が含まれていた場合、悪意あるスクリプトがCookieを盗むことで不正にログインされるリスクがありますが、HttpOnly属性をつけることでこのリスクを軽減できます。
上記設定を有効にすると、Salesforce上でHttpOnly属性をつけることができ、悪意あるスクリプトからCookieに格納されたセッションID等を守ることができます。
注意点として、JavaScript を使用してセッション ID の Cookie にアクセスするカスタムアプリケーションまたはパッケージアプリケーションを使用している場合は、この設定を有効にすると動作しなくなります。またAnalytics Studio利用時にも、特定の条件でエラーとなることがあります。そのため事前にSandboxでの検証をお勧めいたします。
参考:
Salesforceヘルプ:セッションセキュリティ設定の変更
https://help.salesforce.com/s/articleView?id=sf.admin_sessions.htm&type=5&language=ja
Salesforceヘルプ:[HttpOnly 属性が必要] セッション設定を有効にすると、「無効なセッション」のエラーメッセージを返してApex ステップが失敗する
https://help.salesforce.com/s/articleView?id=000380654&type=1&language=ja
設定ページ以外の GET / POST 要求の CSRF 保護を有効化
CSRF(クロスサイト・リクエスト・フォージェリ)は、悪意のあるサイトがユーザーの知らないうちに、他のウェブサイトで意図しない操作をさせる攻撃のことです。
CSRF保護は、このような攻撃を防ぐためのセキュリティ対策であり、方法の1つとしてフォームにトークン(隠れたキー)を含めることで、送信されるリクエストが正当かどうかを確認する方法があります。攻撃者のサイトからはこのトークンを送れないため、攻撃が失敗します。
上記設定を有効にすると、設定以外のページではランダムな文字列をURLパラメータに挿入するか、非表示のフォーム項目として追加します。これにより、GET要求、POST要求が実行されるたびにリクエストの内容をチェックし、成功時のみコマンド実行することでCSRF保護を行います。
参考:
Salesforceヘルプ:CSRF 保護設定
https://help.salesforce.com/s/articleView?id=000387060&type=1&language=ja
Salesforce Developers:クロスサイトリクエストフォージェリ (CSRF)
https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/pages_security_tips_csrf.htm
ユーザーとしてログインしてから再ログインを強制する
システム管理者は他のユーザーにログインし、そのユーザーとして操作ができる代理ログインの機能を利用できます。
この設定を有効にすると、代理ログインを行った後にログアウトした際、再度ログインを求められます。無効の場合は代理ログインを行った後にログアウトした際、代理ログイン前のユーザーがログインした状態に戻ります。
代理ログイン時の作業終了後に、代理ログイン前のユーザーの画面が見えると問題がある場合など、一度ログイン画面に戻したほうがよい場合は本設定を有効にすることを推奨します。
参考:
Salesforceヘルプ:システム管理者が [他のユーザーとしてログイン] を使用するとログアウトする
https://help.salesforce.com/s/articleView?id=000381482&type=1&language=ja
すべての要求でログイン IP アドレスの制限を適用
ログインIPアドレスの制限とは、プロファイルごとに設定可能なSalesforceにログイン可能なIPアドレスの範囲指定のことです。通常この範囲指定はログイン時のみ使用されるのですが、この設定を有効にするとログインのみならずSalesforce内のあらゆる操作においてIPアドレス判定が行われ、IPアドレスがログインIPアドレスの制限範囲外の場合、エラー画面が表示されます。
Salesforceアクセスを必ず会社内ネットワークでのみ行う等、特定IPアドレス範囲内で行うことが分かっている場合は、有効にすることでセキュリティを高めることができます。一方、スマートフォン等によるモバイル機器からのアクセスやリモートワーク等で、アクセス元IPアドレスが変更の可能性がある状況でもSalesforceをアクセスする可能性がある場合は、突然ログアウトになることを避けるために無効とした方がよいです。
信頼されていない外部 URL へのリダイレクトを警告なしで許可
この設定を有効にすると、「信頼されたリダイレクトのURL」に指定されていない外部URLにリダイレクトする際でも警告が出ません。
この設定を無効化することで、攻撃者に不審なURLへリダイレクトされるよう設定された際、リダイレクト時に警告することができます。
通常はこの設定を無効化したうえで、会社ポータルURLなど業務上リダイレクトが必要なURLを「信頼されたリダイレクトのURL」に登録することをお勧めします。
メールアドレスの変更に対して ID 検証が必要
この設定を有効にすると、ユーザーがメールアドレスを変更する際、新メールアドレスの存在確認だけでなく、本人確認としてSalesforce Authenticator、SMS、メールなどの登録済みの検証方法を使用します。
この設定は「ID検証」ページにて確認できます。
多要素認証 (MFA) の登録時に ID 検証が必要
この設定を有効にすると、MFA検証方法をアカウントに追加する前に本人確認としてSalesforce Authenticator、SMS、メールなどの登録済みの検証方法を使用します。
なお、MFA 検証方法をアカウントに追加する前にはユーザーが自分の ID を確認する必要があるため、この設定を無効にした場合、ユーザーは MFA 検証方法を追加するために再度ログインする必要があります。
この設定は「ID検証」ページにて確認できます。
参考:
Salesforceヘルプ:組織および Experience Cloud サイトの ID 検証設定の定義
https://help.salesforce.com/s/articleView?id=sf.security_auth_setup_identity_verification.htm&language=ja&type=5
ユーザーはテキスト (SMS) で ID を検証する
この設定を有効にすると、デバイスの有効化の際の本人確認を、ユーザーが登録した電話番号へのSMSを通じて行うことができます。合わせて「他の方法が登録されている場合、メールによる ID 検証を防止する」設定も有効の場合、メール経由での本人確認は行われません。
ただしユーザーが電話番号含め他のID検証方法を登録していない場合は、メールを通じて本人確認を行うことになります。
この設定は「ID検証」ページにて確認できますが、現在この設定および「他の方法が登録されている場合、メールによる ID 検証を防止する」設定は一度有効にすると無効化することはできません。
コンテンツ盗聴保護を有効化
コンテンツ盗聴は、ブラウザがファイル内のデータを分析して自動的にそのファイルの種類(MIMEタイプ)を判断する動作のことを指します。MIMEタイプは、ファイルがHTML、画像、動画、テキストなど、どんな種類のデータかを指定するものです。
通常、ウェブサイトがファイルをブラウザに送るときに、そのファイルのMIMEタイプも一緒に送ります。しかし、攻撃者はこの仕組みを悪用して、無害なファイルに見せかけて悪意のあるコードを埋め込むことがあります。たとえば、画像ファイルのように見せかけて、実際には危険なスクリプトを含めるという方法です。ブラウザが自動的にMIMEタイプを推測してしまうと、このような攻撃に引っかかり、誤って悪意のあるコードを実行してしまうリスクがあります。
上記設定を有効にすると、この問題を防ぐために、HTTPヘッダーにX-Content-Type-Options: nosniffという設定を行います。この設定があると、ブラウザはサーバーから送られたMIMEタイプを信頼し、ファイルの中身を勝手に解析して別の種類のデータだと判断することを防ぎます。
この設定はデフォルトで有効化されており、ユーザー側では無効化できません。
参考:
Salesforceヘルプ:コンテンツ盗聴保護を有効化 (リリース更新)
https://help.salesforce.com/s/articleView?id=release-notes.rn_security_other_sniffing_protection.htm&language=ja&release=240&type=5
MDN Web Docs:X-Content-Type-Options
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/X-Content-Type-Options
コンテンツセキュリティポリシーによるメールテンプレートの保護の有効化
この設定はSummer '18のリリース時に常時有効化されるよう変更されたため、設定のON/OFFを切り替えるオプションが画面上から除外されているものとなります。
そのため本項目は無視してかまいません。
おわりに
今回は、「セッションの設定」グループに含まれる設定を紹介いたしました。セキュリティに関する専門用語も多いため、設定の意味が分かりづらいかもしれませんが、有効にすることでセキュリティ攻撃から守れる設定であることが伝われば幸いです。
一方、有効にした際にこれまで動作していたものが動作しなくなる可能性もあるため、事前にSandbox等での検証をお勧めいたします。
次回は「パスワードポリシー」グループに含まれる設定を紹介します。