背景と適用シナリオ
Salesforce 管理員 (Salesforce Administrator) として、私たちは組織のセキュリティとコンプライアンスを維持する上で中心的な役割を担っています。数多くあるセキュリティ機能の中でも、Login Hours (ログイン時間) は、基本的でありながら非常に強力なツールです。この機能は、ユーザーが Salesforce 組織にログインできる時間帯を正確に制御することを可能にします。
一見シンプルな機能ですが、その適用シナリオは多岐にわたります。
セキュリティ強化
最も一般的な利用目的は、組織全体のセキュリティレベルを向上させることです。業務時間外、特に深夜や早朝のログイン試行は、不正アクセスの兆候である可能性があります。Login Hours を設定することで、指定された業務時間外のログインをブロックし、アカウント乗っ取りなどのリスクを大幅に低減できます。
業務プロセスの統制
例えば、コンタクトセンターのオペレーターが特定のシフト時間(例:午前9時から午後6時まで)でのみ業務を行う場合、その時間帯にのみシステムへのアクセスを許可することで、業務時間外の不要な操作やデータ閲覧を防ぎます。これにより、業務プロセスの標準化と統制が図れます。
コンプライアンス要件の遵守
特定の業界や地域(例:GDPR)では、データへのアクセスを厳密に管理することが法的に義務付けられています。Login Hours を活用することで、「誰が」だけでなく「いつ」データにアクセスできるかを制御し、これらのコンプライアンス要件を満たすための一助となります。
特定のユーザーグループの管理
正社員だけでなく、契約社員やパートタイム、外部の協力会社など、様々な立場のユーザーが Salesforce を利用するケースは少なくありません。彼らの契約や役割に応じて、アクセス可能な時間帯を限定することで、より柔軟かつ安全なユーザー管理が実現できます。
このように、Login Hours は単なるログイン制限機能ではなく、組織のセキュリティポリシー、業務ルール、そしてコンプライアンスを具体的にシステムに反映させるための重要な基盤となるのです。
原理説明
Login Hours の仕組みを理解することは、それを効果的に活用するための第一歩です。この機能は、主にユーザーの Profile (プロファイル) または Permission Set (権限セット) に基づいて動作します。
設定の適用
Login Hours は、特定の日(月曜日から日曜日まで)に対して、開始時間と終了時間を設定することで定義されます。ユーザーがログインを試みると、Salesforce はそのユーザーに割り当てられているプロファイルと、すべての権限セットに設定された Login Hours を検証します。
ログイン時の動作
ユーザーが許可された時間帯内にログインしようとすると、通常通り認証が成功し、Salesforce にアクセスできます。一方、許可された時間帯外にログインしようとすると、ログインは拒否され、「ログイン時間外です」という旨のエラーメッセージが表示されます。
アクティブセッションの挙動
非常に重要な点は、既にログインしているユーザーのセッションが、Login Hours の終了時刻になった瞬間に強制的に切断されるわけではない、という点です。ユーザーは現在開いているページでの作業(例:テキスト項目の入力)を続けることができます。しかし、レコードの保存、新しいページへの移動、レポートの実行など、サーバーへの新しいリクエストを伴う操作を行おうとした瞬間に、アクセスがブロックされ、実質的にログアウトされた状態になります。この仕様は、作業途中のデータが突然失われるのを防ぎつつ、時間外の活動を確実に制限するためのものです。
タイムゾーンの基準
Login Hours を設定する上で最も注意すべき点は、すべての時間が組織のデフォルトタイムゾーンに基づいて解釈されるということです。この設定は、[設定] > [組織情報] ページで確認・変更できます。個々のユーザーが自身の個人設定で異なるタイムゾーンを設定していても、Login Hours の適用においては組織のタイムゾーンが絶対的な基準となります。例えば、組織のタイムゾーンが「日本標準時 (GMT+9)」で、Login Hours が午前9時から午後5時に設定されている場合、アメリカ在住のユーザーも日本時間の午前9時から午後5時の間しかログインできません。この点を理解していないと、意図しないアクセス制限を引き起こす可能性があります。
プロファイルと権限セットの組み合わせ
一人のユーザーにプロファイルと複数の権限セットが割り当てられている場合、最終的に適用されるログイン時間は、それらすべてで許可されている時間の和集合(Union)となります。例えば、プロファイルで月曜日の午前9時〜午後5時が許可され、ある権限セットで月曜日の午後4時〜午後8時が許可されている場合、このユーザーは月曜日の午前9時〜午後8時までログインできます。この柔軟な仕組みにより、基本の勤務時間をプロファイルで設定しつつ、特定の役割(例:夜間サポート担当)に対して権限セットで追加のアクセス時間を付与するといった運用が可能です。
設定方法とコード例
Login Hours の設定は、Salesforce の設定メニューから直感的に行うことができます。ここでは、従来のプロファイルでの設定方法と、ベストプラクティスである権限セットでの設定方法を解説します。
プロファイルでの設定手順
- [設定] から、[クイック検索] ボックスに「プロファイル」と入力し、[プロファイル] を選択します。
- Login Hours を設定したいプロファイルの名前をクリックします(例:「標準ユーザー」)。
- プロファイルの詳細ページで、[システム] セクションにある [ログイン時間] をクリックします。
- [編集] ボタンをクリックします。
- 時間設定用のグリッドが表示されます。各曜日に対して、ログインを許可する「開始時間」と「終了時間」をドロップダウンリストから選択します。例えば、月曜日から金曜日の午前9時から午後6時までを許可する場合、各曜日の行で「午前 9:00」と「午後 6:00」を選択します。
- 設定が不要な曜日は「時間は設定されていません」のままにしておきます。[すべての時間をクリア] ボタンを使えば、すべての設定を一括でリセットできます。
- [保存] をクリックして設定を完了します。
権限セットでの設定(ベストプラクティス)
プロファイルを複製することなく、より柔軟にユーザーごとのアクセス時間を管理できるため、権限セットの使用が推奨されます。
- [設定] から、[クイック検索] ボックスに「権限セット」と入力し、[権限セット] を選択します。
- [新規] ボタンをクリックして新しい権限セットを作成するか、既存のものをクリックします。
- 権限セットの概要ページで、[システム] セクションにある [ログイン時間] をクリックします。
- 編集インターフェースはプロファイルのものと全く同じです。必要な時間帯を設定し、[保存] をクリックします。
- 最後に、この権限セットを対象のユーザーに割り当てます。
示例コード (メタデータ API)
Salesforce 管理者として、変更セットや Salesforce DX を用いた環境間のデプロイ作業に関わることも多いでしょう。Login Hours の設定はメタデータとしても管理されており、特にプロファイルの XML ファイル内で定義されます。以下は、Salesforce 開発者ドキュメントに記載されているプロファイルのメタデータコンポーネントにおける `loginHours` の定義例です。
この例では、月曜日の午前9時から午後6時まで(540分から1080分)のログインを許可しています。時間は組織のタイムゾーンにおける深夜0時からの経過分数で指定されます。
<?xml version="1.0" encoding="UTF-8"?> <Profile xmlns="http://soap.sforce.com/2006/04/metadata"> <!-- ... 他のプロファイル設定 ... --> <loginHours> <mondayStart>540</mondayStart> <!-- 月曜日の開始時間: 9:00 AM (9 * 60 = 540) --> <mondayEnd>1080</mondayEnd> <!-- 月曜日の終了時間: 6:00 PM (18 * 60 = 1080) --> <tuesdayStart>0</tuesdayStart> <!-- 0 は時間の開始を意味します --> <tuesdayEnd>1440</tuesdayEnd> <!-- 1440 は 24:00 を意味し、終日許可となります --> <!-- 他の曜日の設定も同様に行います。未指定の曜日はログインが許可されません。 --> </loginHours> <!-- ... 他のプロファイル設定 ... --> </Profile>
注意事項
Login Hours を導入・運用する際には、以下の点に注意してください。
API アクセスへの影響
デフォルトでは、Login Hours の制限はユーザーインターフェース (UI) からのログインにのみ適用され、API (データローダ、外部システムからの連携など) 経由のアクセスには適用されません。これは、夜間のバッチ処理などが意図せず失敗するのを防ぐための仕様です。しかし、API アクセスにも時間制限を適用したい場合は、[設定] > [セッションの設定] にある 「API 要求にログイン時間制限を適用」 にチェックを入れることで有効化できます。また、プロファイルや権限セットで 「API のみアクセス可能なユーザー」 権限を付与されたユーザーは、Login Hours の制限を完全に受けません。これは、インテグレーション専用ユーザーに最適な設定です。
「パスワード無期限」権限
「パスワード無期限」のシステム権限を持つユーザーは、Login Hours の制限を受けません。通常、この権限はシステム管理者やインテグレーションユーザーに限定して割り当てるべきです。
必要な管理者権限
Login Hours を設定・変更するには、自身のアカウントに 「プロファイルと権限セットの管理」 のシステム権限が必要です。
テストの重要性
本番環境に展開する前に、必ず Sandbox 環境で Login Hours の設定をテストしてください。特に、異なるタイムゾーンにいるユーザーや、API 連携に影響がないかを十分に検証することが重要です。テストユーザーを作成し、許可された時間内・時間外の両方でログインを試みることで、設定が意図通りに機能しているかを確認できます。
まとめとベストプラクティス
Login Hours は、Salesforce が提供するセキュリティ機能の第一線であり、組織の資産を保護し、業務プロセスを統制するためのシンプルかつ効果的な手段です。この機能を最大限に活用するために、以下のベストプラクティスを推奨します。
1. 権限セットを優先的に使用する (Prioritize Permission Sets)
特定の役割やチームのためだけにプロファイルを複製するのは、管理が煩雑になる原因です。「基本の勤務時間」をプロファイルで広く設定し、「夜間シフト」や「週末サポート」といった例外的なアクセス時間は、専用の権限セットを作成してユーザーに割り当てるのが、最もスケーラブルで管理しやすいアプローチです。
2. ポリシーを文書化する (Document Policies)
どのユーザーグループに、どのような理由で、どの時間帯が設定されているのかを明確に文書化しておきましょう。これは、将来の監査対応や、新しい管理者が着任した際の引き継ぎをスムーズにします。
3. 定期的なレビューを実施する (Conduct Regular Reviews)
ビジネスの状況は常に変化します。半期に一度、あるいは年に一度は設定されている Login Hours を見直し、現在の業務実態やセキュリティポリシーと乖離がないかを確認しましょう。不要になった設定は削除し、新しい要件に合わせて更新することが重要です。
4. ユーザーへの事前告知を徹底する (Communicate to Users)
新たに Login Hours を導入したり、既存の設定を変更したりする際には、必ず対象となるユーザーに事前に通知しましょう。「なぜ」この変更が必要なのかという背景を説明することで、ユーザーの理解を得やすくなり、導入後の混乱や問い合わせを最小限に抑えることができます。
5. 統合ユーザーアカウントを適切に管理する (Properly Manage Integration Users)
外部システムとの連携に使用するインテグレーションユーザーには、「API のみアクセス可能なユーザー」権限を付与した専用のプロファイルまたは権限セットを割り当てることを強く推奨します。これにより、Login Hours の影響を受けずに、24時間安定したシステム連携を確保できます。
以上の点を踏まえ、Login Hours を戦略的に活用することで、Salesforce 管理者は組織のセキュリティとガバナンスを次のレベルへと引き上げることができるでしょう。
コメント
コメントを投稿