Salesforce ログイン時間の設定と管理:システム管理者のためのセキュリティ強化ガイド

皆さん、こんにちは。Salesforce システム管理者として、日々組織のセキュリティとユーザー管理を担当しています。Salesforce が提供する数多くのセキュリティ機能の中でも、特に基本的でありながら非常に強力なツールが Login Hours (ログイン時間) です。この機能を正しく理解し活用することで、不正アクセスリスクを大幅に低減し、コンプライアンス要件を満たすことができます。本記事では、システム管理者の視点から Login Hours の設定方法、応用シナリオ、そして運用上の注意点について徹底的に解説します。


背景と応用シナリオ

Login Hours (ログイン時間) とは、ユーザーが Salesforce にログインできる曜日と時間帯をプロファイル単位で制限する機能です。なぜこのような機能が必要なのでしょうか?それは、企業のセキュリティポリシーを組織の運用実態に合わせて具体的に適用するためです。すべてのユーザーが24時間365日システムにアクセスできる必要はありません。むしろ、業務時間外のアクセスを許可することは、情報漏洩や不正操作のリスクを高める可能性があります。

主な応用シナリオ:

  • コールセンターやカスタマーサポート部門: オペレーターの勤務は通常シフト制です。Login Hours を使用して、各オペレーターが自身のシフト時間中にのみ Salesforce にアクセスできるように制限することで、勤務時間外の不正なデータ閲覧や操作を防ぎます。
  • 契約社員や外部パートナーの管理: プロジェクトベースでアクセスを許可している外部のユーザーに対して、契約で定められた業務時間内のみのアクセスを許可します。これにより、プロジェクト終了後や契約時間外のアクセスをシステムレベルで防止できます。
  • 内部統制とコンプライアンスの強化: 金融機関や医療機関など、厳格なデータアクセス管理が求められる業界では、Login Hours は監査証跡の一部として重要です。業務時間外のアクセスをシステム的にブロックしていることを示すことで、規制当局への説明責任を果たすことができます。
  • 夜間バッチ処理中のユーザーアクセス制限: 深夜に大規模なデータ更新バッチを実行する際、ユーザーがシステムにログインしてデータを変更すると、データの不整合を引き起こす可能性があります。Login Hours を使って、バッチ処理中は一般ユーザーのログインを制限し、システムの安定性を確保するという応用も考えられます。

このように、Login Hours は単なる「ログインを制限する」機能ではなく、企業のセキュリティポリシーとガバナンスを支える重要な基盤となるのです。


原理説明と設定手順

Login Hours の設定は非常に直感的ですが、その裏側にある原理を理解しておくことが重要です。最も重要なポイントは、Login Hours は Profile (プロファイル) に紐づく設定であるという点です。Permission Set (権限セット) では設定できないため、ユーザーの役割やアクセス時間帯に基づいてプロファイルを設計する必要があります。

ユーザーがログインを試みると、Salesforce はそのユーザーに割り当てられているプロファイルを確認し、プロファイルで定義された Login Hours の範囲内であるかどうかを検証します。許可された時間帯であればログインが成功し、時間外であればエラーメッセージが表示されログインは拒否されます。この検証は、組織のデフォルトタイムゾーンに基づいて行われるため、グローバルに展開している企業は特に注意が必要です。

設定手順:

ここでは、標準的な「サポート」プロファイルをコピーし、平日の午前9時から午後6時までのみログインを許可する設定を例に手順を説明します。

ステップ1:プロファイルの準備

Salesforce のベストプラクティスとして、標準プロファイルを直接編集することは推奨されません。まず、基準となるプロファイルをコピー(複製)して、カスタムプロファイルを作成します。

  1. [設定] から、[クイック検索] ボックスに「プロファイル」と入力し、[プロファイル] を選択します。
  2. 制限をかけたいユーザーが属するプロファイル(例:「標準ユーザー」)の横にある [コピー] をクリックします。
  3. 新しいプロファイル名(例:「サポート部門ユーザー」)を入力し、保存します。

ステップ2:ログイン時間の設定画面へ移動

作成したカスタムプロファイルの詳細ページで Login Hours の設定を行います。

  1. プロファイルの一覧から、先ほど作成した「サポート部門ユーザー」プロファイルをクリックします。
  2. プロファイルの詳細ページを下にスクロールし、[システム] セクションにある [ログイン時間] を見つけ、その横の [編集] をクリックします。

ステップ3:時間帯の設定

曜日ごと、時間ごとのグリッドが表示されます。ここでログインを許可する時間帯を指定します。

  1. [月曜日] から [金曜日] までの行で、[開始時刻] ドロップダウンリストから [午前 9:00] を選択し、[終了時刻] ドロップダウンリストから [午後 6:00] を選択します。
  2. 土曜日と日曜日はログインを許可しない場合、[開始時刻] と [終了時刻] を両方とも [--時間指定なし--] に設定します。これにより、その曜日は終日ログインがブロックされます。
  3. 設定が完了したら、ページ上部または下部にある [保存] をクリックします。

これで、「サポート部門ユーザー」プロファイルに割り当てられたユーザーは、月曜日から金曜日の午前9時から午後6時までの間しか Salesforce にログインできなくなりました。最後に、対象となるユーザーのプロファイルをこの新しいプロファイルに変更することを忘れないでください。


監査のためのSOQLクエリ

GUI での設定は簡単ですが、組織内に多数のプロファイルが存在する場合、どのプロファイルにどのような Login Hours が設定されているかを一覧で確認・監査したい場合があります。このような場合、SOQL (Salesforce Object Query Language) を使用してプロファイルの設定情報を直接照会するのが効率的です。開発者コンソールや Salesforce Inspector などのツールで以下のクエリを実行できます。

SELECT
    Name,
    -- 月曜日のログイン開始・終了時刻
    HoursMondayStartTime,
    HoursMondayEndTime,
    -- 火曜日のログイン開始・終了時刻
    HoursTuesdayStartTime,
    HoursTuesdayEndTime,
    -- 水曜日のログイン開始・終了時刻
    HoursWednesdayStartTime,
    HoursWednesdayEndTime,
    -- 木曜日のログイン開始・終了時刻
    HoursThursdayStartTime,
    HoursThursdayEndTime,
    -- 金曜日のログイン開始・終了時刻
    HoursFridayStartTime,
    HoursFridayEndTime,
    -- 土曜日のログイン開始・終了時刻
    HoursSaturdayStartTime,
    HoursSaturdayEndTime,
    -- 日曜日のログイン開始・終了時刻
    HoursSundayStartTime,
    HoursSundayEndTime
FROM
    Profile
WHERE
    -- いずれかの曜日にログイン時間設定があるプロファイルのみを抽出
    (HoursMondayStartTime != null OR
    HoursTuesdayStartTime != null OR
    HoursWednesdayStartTime != null OR
    HoursThursdayStartTime != null OR
    HoursFridayStartTime != null OR
    HoursSaturdayStartTime != null OR
    HoursSundayStartTime != null)

このクエリは、Login Hours が設定されているすべてのプロファイルを抽出し、各曜日の開始時刻と終了時刻を一覧で表示します。時刻は GMT で返されるため、組織のタイムゾーンに合わせて解釈する必要があります。これにより、設定ミスや意図しないアクセス許可がないかを効率的に監査できます。


注意事項

Login Hours は強力な機能ですが、その特性を理解せずに使用すると予期せぬトラブルを引き起こす可能性があります。以下の点に十分注意してください。

APIアクセスへの影響:
Login Hours の制限は、ユーザーインターフェースからのログインだけでなく、API (Application Programming Interface) を介したアクセスにも適用されます。例えば、Data Loader や外部の連携システムが使用するユーザーアカウントのプロファイルに Login Hours が設定されていると、許可された時間外に実行された API コールはすべて失敗します。エラーコード `LOGIN_DURING_RESTRICTED_TIME` が返され、夜間バッチが停止するなどの重大な問題につながる可能性があります。インテグレーション専用のユーザーには、Login Hours を設定しない専用プロファイルを用意することが推奨されます。

セッションの強制終了:
最も注意すべき点の一つです。ユーザーがログイン中に許可された時間が終了した場合、そのユーザーのセッションは即座に強制終了されます。例えば、午後6時までが許可時間の場合、午後5時59分にログインしていたユーザーは、午後6時になった瞬間にシステムから強制的にログアウトさせられます。保存前だった作業内容は失われるため、この挙動はユーザーに事前に周知しておく必要があります。

タイムゾーンの基準:
前述の通り、Login Hours はすべて組織のデフォルトタイムゾーン([設定] > [組織情報] > [デフォルトのタイムゾーン])に基づいて評価されます。ユーザー個人のタイムゾーン設定は考慮されません。本社が東京(JST)で、ニューヨーク支社のユーザーがいる場合、ニューヨークのユーザーのログイン時間も JST を基準に判断されます。グローバルな組織では、この時差を考慮してプロファイルを設計するか、Login Hours が適切な制御方法か慎重に検討する必要があります。

権限セットでは設定不可:
Login Hours はプロファイルレベルの機能であり、Permission Set (権限セット) で上書きしたり、追加で制限したりすることはできません。特定のユーザーグループに異なる Login Hours を適用したい場合は、それぞれに別のプロファイルを作成する必要があります。これが、プロファイルの数が増加する一因となる可能性があるため、プロファイル戦略全体の中で Login Hours の利用を計画することが重要です。


まとめとベストプラクティス

Salesforce の Login Hours は、組織のセキュリティを強化するための第一歩となる、シンプルかつ効果的な機能です。適切に設定することで、不正アクセスのリスクを低減し、コンプライアンス要件を満たす助けとなります。

最後に、Login Hours を運用する上でのベストプラクティスをまとめます。

  1. 最小権限の原則を適用する: ユーザーには業務に必要な最小限の時間帯のみアクセスを許可します。特に機密情報へのアクセス権を持つプロファイルには、厳格な Login Hours を設定することを検討してください。
  2. インテグレーションユーザーを分離する: API 連携に使用するユーザーには、24時間アクセス可能な専用のプロファイルを作成し、Login Hours の影響を受けないようにします。
  3. 明確なコミュニケーション: Login Hours を導入・変更する際は、対象となるユーザーに事前に通知し、セッションが強制終了される可能性があることなどを説明します。これにより、ヘルプデスクへの問い合わせを減らし、ユーザーの混乱を防ぎます。
  4. サンドボックスでの徹底的なテスト: 本番環境に適用する前に、必ず Sandbox 環境で設定をテストしてください。意図せず管理者を含む重要なユーザーをロックアウトしてしまう事態を防ぐことができます。
  5. 定期的な監査: SOQL クエリなどを活用して、定期的に Login Hours の設定内容を監査し、現在のビジネス要件やセキュリティポリシーと乖離がないかを確認します。

これらのプラクティスを実践することで、皆さんの Salesforce 組織はより安全で堅牢なものになるでしょう。システム管理者として、これらの基本的なセキュリティ機能を最大限に活用し、会社の重要な資産であるデータを守っていきましょう。

コメント