背景と応用シナリオ
Salesforce 管理者の皆様、こんにちは!組織のセキュリティを維持し、コンプライアンス要件を満たすことは、私たちの重要な責務の一つです。Salesforce が提供する数多くのセキュリティ機能の中でも、Login Hours (ログイン時間) は、シンプルでありながら非常に強力なツールです。これは、特定のプロファイルのユーザーが Salesforce にログインできる時間帯を曜日ごとに制限する機能です。
多くの企業では、従業員の業務時間は明確に定められています。例えば、コールセンターは午前9時から午後5時まで、経理部門は平日の業務時間内のみ機密データにアクセスする必要があります。このようなシナリオで Login Hours は非常に有効です。業務時間外にシステムへの不正アクセスを試みる外部の攻撃者や、内部関係者による意図しないデータ操作のリスクを大幅に軽減できます。
具体的な応用シナリオとしては、以下のようなケースが考えられます。
ケース1:コールセンターのセキュリティ強化
顧客情報を扱うコールセンターのエージェントは、通常、シフト時間内でのみ業務を行います。Login Hours を彼らの Profile (プロファイル) に設定することで、深夜や早朝といった業務時間外のログインをブロックできます。これにより、万が一アカウント情報が漏洩した場合でも、不正アクセスが行われる時間的ウィンドウを狭めることができます。
ケース2:コンプライアンス要件への対応
金融業界や医療業界など、特定の規制(例:GDPR、HIPAA)を遵守する必要がある組織では、データへのアクセスを厳密に管理することが求められます。Login Hours は、データアクセスを承認された業務時間内に限定するという監査要件を満たすための一助となります。
ケース3:内部統制とワークライフバランスの推進
企業ポリシーとして、従業員のワークライフバランスを重視し、時間外労働を抑制したい場合にも Login Hours は活用できます。業務時間外のシステムアクセスを制限することで、従業員が過度に働いてしまうことを防ぎ、健全な労働環境を促進する文化作りの一環となります。
このように、Login Hours は単なるセキュリティ機能に留まらず、組織のポリシーやコンプライアンス、さらには企業文化を支えるための重要な管理ツールなのです。
原理説明
Login Hours の仕組みは非常に直感的です。この設定は、ユーザー個人ではなく、そのユーザーが割り当てられている Profile に対して行います。Salesforce のセキュリティモデルにおいて、Profile はユーザーが実行できる操作やアクセスできるデータを定義する基盤であり、Login Hours もその一部として機能します。
設定の仕組み
管理者は、各 Profile の設定画面から「ログイン時間」セクションにアクセスし、月曜日から日曜日まで、1日を30分単位でログインを許可する開始時刻と終了時刻を指定します。例えば、「月曜日 午前9時〜午後5時30分」のように設定します。指定された時間帯以外に、そのプロファイルに属するユーザーがログインしようとすると、アクセスは拒否され、エラーメッセージが表示されます。
重要なポイント:タイムゾーン
ここで管理者が最も注意すべき点は、Login Hours が組織のデフォルトタイムゾーンに基づいているということです。これは、[設定] > [組織情報] で確認できるタイムゾーンです。ユーザー個人のプロファイルで設定されているタイムゾーンは、Login Hours の判定には使用されません。したがって、グローバルに展開している企業で、異なるタイムゾーンにいるユーザーを管理する場合は、タイムゾーンごとに異なる Profile を作成し、それぞれに適切な Login Hours を設定する必要があります。
ログイン中のセッションに対する挙動
もう一つの重要な挙動は、すでにログインしているユーザーのセッションが、許可された時間の終了時刻に達した場合の扱いです。Salesforce は、終了時刻になった瞬間にセッションを強制的に切断するわけではありません。ユーザーが次の操作(例えば、レコードの保存、新しいタブへの移動、レポートの実行など)を行ったタイミングで、セッションが終了し、ログアウトされます。この「遅延ログアウト」の挙動を理解しておくことは、ユーザーへの説明やトラブルシューティングの際に非常に重要です。
示例コード
Login Hours は主にUI(ユーザーインターフェース)を通じて設定しますが、管理者として設定内容を監査したり、複数のプロファイルの設定を一覧で確認したりしたい場合があるかもしれません。そのような場合には、SOQL (Salesforce Object Query Language) を使用して、設定情報をプログラム的に取得すると便利です。ここでは、開発者コンソールや Workbench などのツールで実行できる SOQL クエリの例を紹介します。
Login Hours の設定は LoginHours というオブジェクトに保存されており、このオブジェクトは Profile オブジェクトとリレーション関係にあります。
特定のプロファイルのログイン時間を取得する
まず、対象となるプロファイルの ID を取得する必要があります。以下のクエリで、「Support Agent」という名前のプロファイルの ID を調べます。
// Support Agent という名前のプロファイルのIDを取得する SELECT Id, Name FROM Profile WHERE Name = 'Support Agent'
上記クエリで取得した ID (例: '00e8c000001AbCd') を使って、そのプロファイルに設定されている Login Hours の詳細を取得します。時間はすべてグリニッジ標準時 (GMT) で保存されています。
/*
* 特定のプロファイルIDに紐づくログイン時間の設定を取得します。
* 各曜日の開始時刻 (StartTime) と終了時刻 (EndTime) を確認できます。
* 時刻はミリ秒単位の数値で返されます (例: 32400000 は午前9時 GMT)。
*/
SELECT
ProfileId,
MondayStartTime, MondayEndTime,
TuesdayStartTime, TuesdayEndTime,
WednesdayStartTime, WednesdayEndTime,
ThursdayStartTime, ThursdayEndTime,
FridayStartTime, FridayEndTime,
SaturdayStartTime, SaturdayEndTime,
SundayStartTime, SundayEndTime
FROM
LoginHours
WHERE
ProfileId = '00e8c000001AbCd'
このクエリにより、管理者はUI画面を一つ一つ確認することなく、特定のプロファイルのログイン時間設定を迅速に確認・監査できます。
注意事項
Login Hours を導入・運用する際には、いくつかの注意点と考慮事項があります。これらを事前に把握しておくことで、意図しないトラブルを避けることができます。
権限
Login Hours の設定変更には、「プロファイルと権限セットの管理」というシステム権限が必要です。この権限を持つ管理者のみが設定を行えます。
Profile vs. Permission Set
非常に重要な点として、Login Hours は Profile にしか設定できません。Permission Set (権限セット) にはこの機能はありません。したがって、異なるログイン時間が必要なユーザーグループが存在する場合、それぞれに別のプロファイルを作成・割り当てる必要があります。この制約は、プロファイル戦略を設計する上で考慮すべき重要な要素です。
API アクセスへの影響
Login Hours の制限は、UIからのログインだけでなく、API (Application Programming Interface) を経由したアクセスにも適用されます。これは、Data Loader、ETL ツール、外部システム連携など、すべての API 通信に影響します。例えば、深夜に実行されるバッチ処理用の連携ユーザーがいる場合、そのユーザーのプロファイルには Login Hours の制限をかけないようにしなければなりません。さもないと、連携が失敗し、重要な業務プロセスが停止してしまう可能性があります。
アクティブなセッション
前述の通り、許可時間が終了しても、ユーザーは即座にログアウトされません。次のアクションを実行した際にセッションが切れます。このため、ユーザーが長時間一つのページを開いたままにしている場合、許可時間外でもそのページを表示し続けることが可能です。ただし、何か操作をしようとすればログアウトされます。
監査と監視
ユーザーのログイン試行は、[設定] > [ログイン履歴] で確認できます。Login Hours の制限によってログインが拒否された場合、ステータス列に「ログイン時間帯の制限」と記録されます。定期的にこの履歴を監視することで、ポリシーが正しく機能しているか、また、時間外に不正なアクセス試行がないかを確認することができます。
まとめとベストプラクティス
Login Hours は、Salesforce 組織のセキュリティを強化するための第一歩として非常に有効な機能です。正しく構成することで、不正アクセスのリスクを低減し、コンプライアンスを遵守し、組織のポリシーを徹底することができます。
以下に、Salesforce 管理者として Login Hours を最大限に活用するためのベストプラクティスをまとめます。
- 段階的に導入する
一度に全ユーザーに適用するのではなく、まずは影響範囲の少ない特定のプロファイル(例:標準ユーザー)から始め、フィードバックを得ながら徐々に展開していくことをお勧めします。 - システム管理者と連携ユーザーは除外する
緊急時の対応やシステムの安定稼働のため、システム管理者プロファイルや API 連携専用のユーザープロファイルには、24時間365日アクセス可能なように Login Hours を設定しないでください。これにより、システムメンテナンスや障害対応が時間外に必要になった場合でも、管理者がロックアウトされる事態を防げます。 - ユーザーへの事前通知を徹底する
Login Hours を導入する前には、必ず対象となるユーザーにその旨を通知しましょう。なぜこの変更を行うのか(セキュリティ強化など)、いつから適用されるのか、そしてどのような影響があるのかを明確に伝えることで、導入後の混乱や問い合わせを最小限に抑えることができます。 - 定期的な設定の見直し
ビジネスは常に変化します。新しい部署ができたり、働き方が変わったり(例:フレックスタイム制の導入)した場合、既存の Login Hours 設定が現状に合わなくなっている可能性があります。年に一度など、定期的にすべてのプロファイルの設定を見直し、現在の業務実態と一致しているかを確認しましょう。 - 他のセキュリティ機能と組み合わせる
Login Hours は強力ですが、万能ではありません。セキュリティは多層防御が基本です。IP Ranges (IP 制限)、Multi-Factor Authentication (MFA) (多要素認証)、そして適切なオブジェクト・項目レベルのセキュリティ設定と組み合わせることで、より堅牢なセキュリティ体制を構築できます。
以上の点を踏まえ、ぜひ Login Hours を活用して、あなたの Salesforce 組織をより安全で管理の行き届いたものにしてください。
コメント
コメントを投稿