Salesforce ログイン時間:セキュリティとコンプライアンス管理を強化する戦略

背景と応用シーン

現代のビジネス環境において、企業がデータセキュリティとコンプライアンスを確保することは極めて重要です。特に、顧客情報や機密データを扱うクラウドベースのCRMシステムであるSalesforceにおいては、そのセキュリティ対策は企業の信頼性と直結します。Salesforceが提供する多様なセキュリティ機能の中でも、Login Hours(ログイン時間)は、特定のユーザーグループがSalesforceにアクセスできる時間帯を厳密に制御するための強力なツールです。

Login Hoursは、Salesforceユーザーがシステムにログインできる時間帯を制限する機能であり、不正アクセスや内部からの情報漏洩リスクを軽減するために設計されています。これは、物理的なオフィス環境でのアクセス制限と同様に、デジタル空間におけるアクセスを時間軸で管理するものです。例えば、従業員の勤務時間外や週末など、業務時間外のシステム利用を制限することで、セキュリティ体制を強化し、コンプライアンス要件への対応を支援します。

Login Hoursの主な応用シーンは以下の通りです。

  • 不正アクセス防止: 勤務時間外の不正なログイン試行や、万が一アカウント情報が漏洩した場合の被害を最小限に抑えます。
  • コンプライアンス遵守: SOX(Sarbanes-Oxley Act: サーベンス・オクスリー法)やHIPAA(Health Insurance Portability and Accountability Act: 医療情報携帯性・責任に関する法律)など、特定の業界規制や地域規制において、システムへのアクセス時間を厳格に管理する必要がある場合に役立ちます。
  • 業務時間制限の適用: 特定の職種や部署の従業員に対して、定められた業務時間内のみのシステム利用を強制します。これにより、従業員のワークライフバランスの促進や、過剰な残業の抑制にも寄与する場合があります。
  • タイムゾーン管理: グローバル企業においては、異なるタイムゾーンに分散したチームのアクセス時間を、それぞれの地域の営業時間に合わせて設定する際に有効です。

この機能は、Salesforceのセキュリティポリシーを具体化し、企業が求めるセキュリティレベルを達成するための基本的な構成要素の一つと言えます。


原理説明

SalesforceのLogin Hoursは、主にProfile(プロファイル)設定によって管理されます。プロファイルは、Salesforceユーザーがどのデータにアクセスでき、どのような操作を実行できるかを定義する権限の集合体です。Login Hoursは、このプロファイルの一部として設定され、そのプロファイルに割り当てられたすべてのユーザーに適用されます。

設定方法

Login Hoursの設定は、Salesforceの標準ユーザーインターフェース(UI)を通じて簡単に行うことができます。具体的には、Salesforceの「設定」メニューから「プロファイル」を選択し、編集したいプロファイルを開きます。プロファイルの編集画面には「ログイン時間」セクションがあり、ここで曜日ごとの開始時間と終了時間を指定するためのグリッドが表示されます。

  • 各曜日は24時間の時間軸で表示され、特定の時間帯をハイライトすることで、その時間のログインを許可または禁止することができます。
  • 初期設定ではすべての時間がログイン可能となっています。制限をかけたい時間帯をドラッグして選択し、ログイン不可として設定します。
  • 例えば、月曜から金曜の午前9時から午後5時までのみログインを許可し、それ以外の時間帯や土日祝日はログインを禁止するといった設定が可能です。

タイムゾーンの考慮

Login Hoursの設定において、タイムゾーンの扱いは非常に重要です。Salesforceの公式ドキュメントによると、Login Hoursはユーザーのタイムゾーンではなく、組織のタイムゾーンを使用して計算されます。これは、設定されたログイン時間が組織のタイムゾーンに基づいているため、世界中の異なるタイムゾーンにいるユーザーであっても、組織のタイムゾーンでの設定が適用されることを意味します。

例えば、組織のタイムゾーンが「日本標準時(JST)」で、Login Hoursが「9:00 AM - 5:00 PM JST」と設定されている場合、アメリカ西海岸(PST)にいるユーザーがその時間にログインしようとすると、PSTでは「5:00 PM - 1:00 AM PST」となりますが、JSTの9時から17時の間であればログインが可能です。この挙動を理解しておくことは、グローバルに展開する組織においてユーザー体験を損なわないために不可欠です。

既存セッションへの影響

ユーザーがログイン時間内にシステムにアクセスしている間に、設定されたログイン時間が終了した場合、Salesforceはそのユーザーのセッション(Session)を自動的に終了させます。つまり、ユーザーは強制的にログアウトされ、作業中のデータが保存されていない場合は失われる可能性があります。このため、ユーザーへの事前の周知と、定期的な作業の保存を促す運用が不可欠です。

権限セットとの関係

過去にはPermission Set(権限セット)でもLogin Hoursを設定できる時期がありましたが、現在はプロファイルにのみ設定可能です。権限セットは、プロファイルで付与された権限を補完・拡張するために使用されますが、Login Hoursのようなベースラインのアクセス制御はプロファイルで行うのが現在のSalesforceの標準的なプラクティスです。


示例コード

SalesforceのLogin Hoursは、主にプロファイルのUI設定またはMetadata API(メタデータAPI)を通じて管理される機能であり、Apex(エーペックス)や標準REST APIから直接ログイン時間を設定または取得する公式なAPIは提供されていません。

そのため、Login Hours自体を直接操作するコード例を提示することはできません。この機能は、Salesforceのセキュリティ基盤の一部として、主に宣言的(UI設定)またはデプロイメントツール(Metadata API)によって管理されます。

しかし、Metadata APIを使用することで、プロファイルのXML定義を通じてLogin Hoursの設定を取得・更新することは可能です。以下に、Metadata APIでプロファイルの定義を取得する際に、Login Hoursの設定がどのように表現されるかを示します。これはAPIの利用例ではありますが、ApexREST APIの一般的なコード例ではありません。

⚠️ 未找到官方文档支持: Apexや標準REST APIでLogin Hoursを直接設定・取得するAPIは公式には提供されていません。

Metadata APIでの表現(コード例ではありません)

Metadata APIを通じてプロファイルの定義を取得すると、プロファイルのXMLファイル内にloginHours要素として設定が表示されます。以下は、そのXML構造の概念的な例です。

<?xml version="1.0" encoding="UTF-8"?>
<Profile xmlns="http://soap.sforce.com/2006/04/metadata">
    <fullName>Custom Profile Name</fullName>
    <description>A custom profile description.</description>
    <loginHours>
        <friday>
            <endTime>17:00</endTime>
            <startTime>09:00</startTime>
        </friday>
        <monday>
            <endTime>17:00</endTime>
            <startTime>09:00</startTime>
        </monday>
        <saturday>
            <endTime>00:00</endTime>
            <startTime>00:00</startTime>
        </saturday>
        <sunday>
            <endTime>00:00</endTime>
            <startTime>00:00</startTime>
        </sunday>
        <thursday>
            <endTime>17:00</endTime>
            <startTime>09:00</startTime>
        </thursday>
        <tuesday>
            <endTime>17:00</endTime>
            <startTime>09:00</startTime>
        </tuesday>
        <wednesday>
            <endTime>17:00</endTime>
            <startTime>09:00</startTime>
        </wednesday>
    </loginHours>
    <loginIpRanges>
        <description>Internal IP Range</description>
        <endAddress>192.168.1.254</endAddress>
        <startAddress>192.168.1.1</startAddress>
    </loginIpRanges>
    <userPermissions>
        <enabled>true</enabled>
        <name>ViewSetup</name>
    </userPermissions>
</Profile>

上記のXML構造は、開発者がプロファイルの設定をVersion Control System(バージョン管理システム)で管理し、CI/CD(Continuous Integration / Continuous Delivery: 継続的インテグレーション・継続的デリバリー)パイプラインを通じて組織にデプロイする際に利用されます。このアプローチにより、プロファイルを含む設定の一貫性と再現性を保つことができます。しかし、これはApexREST APIで直接操作する「コード」とは性質が異なります。

ユーザーのセッションがLogin Hours外になった際に、Salesforceが自動的にセッションを終了させる挙動はシステムレベルで処理され、開発者が明示的にコードを記述する必要はありません。


注意事項

Login Hoursを効果的に運用するためには、いくつかの重要な注意事項を理解しておく必要があります。

権限

Login Hoursの設定は、SalesforceのProfile(プロファイル)で行われるため、システム管理者またはプロファイルを編集する権限を持つユーザーのみが変更可能です。変更を加える際には、その影響範囲を十分に理解し、他のユーザーに不必要な制約を課さないよう注意が必要です。

タイムゾーンの適用

前述の通り、Login Hoursはユーザーの個人タイムゾーンではなく、組織のデフォルトタイムゾーンに基づいて計算され適用されます。グローバルなユーザーベースを持つ組織では、この違いが混乱を招く可能性があります。例えば、日本の組織が午前9時から午後5時までをログイン時間と設定した場合、アメリカのユーザーは現地時間の午前1時から午前9時までの間がログイン可能時間となります。ユーザーに対して、設定されているログイン時間が組織のタイムゾーンに基づいていることを明確に伝える必要があります。

既存セッションの強制終了

ユーザーがLogin Hoursの制限時間外になった場合、Salesforceは現在アクティブなセッションを自動的に終了させ、ユーザーを強制的にログアウトします。これは、作業中のデータが保存されていない場合に失われる可能性があることを意味します。そのため、ユーザーに対しては、作業を頻繁に保存することの重要性や、ログイン時間が終了する前に作業を完了させるか保存するよう、事前の周知とトレーニングが不可欠です。

APIアクセスへの影響

Login Hoursの制限は、Salesforceのユーザーインターフェースからのログインだけでなく、SOAP API(ソープAPI)やREST API(レストAPI)などのAPIアクセスにも適用されます。これは、モバイルアプリケーション(Salesforce Mobile Appを含む)、統合システム、またはデータローダーのようなツールを介したアクセスも同様に制限を受けることを意味します。

  • ログイン時間外にAPIリクエストがあった場合、Salesforceは「LOGIN_HOURS_VIOLATION」のようなエラーコードを返します。
  • 外部システムとの連携において、APIユーザーのプロファイルにLogin Hoursが設定されている場合、その外部システムからのデータ同期や自動処理が意図しない時間帯にブロックされる可能性があります。連携するシステムの要件に合わせて、APIユーザーのプロファイルにはLogin Hoursを設定しないか、必要に応じて広範囲な時間を設定するなどの配慮が必要です。

エラー処理と監査

Login Hoursに違反してログインが試行された場合、Salesforceはこれをログイン履歴に記録します。システム管理者は、「設定」メニューの「ログイン履歴」から、ログイン失敗の原因がLogin Hours違反であったかどうかを確認できます。これにより、意図しないアクセス制限が発生していないか、あるいはセキュリティポリシーが正しく適用されているかを定期的に監査することが可能です。

APIを介したアクセスが制限された場合、連携システム側で適切なエラー処理を実装し、再試行ロジックやアラート通知を行うことが推奨されます。


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

SalesforceのLogin Hours機能は、ユーザーアクセスを時間的に制限することで、組織のセキュリティとコンプライアンスを強化するための重要なツールです。適切に設定・運用することで、不正アクセスリスクの低減、規制要件の遵守、そして内部統制の強化に貢献します。以下に、Login Hoursのまとめとベストプラクティスを挙げます。

セキュリティ強化とコンプライアンス遵守

  • 強制的なセキュリティ層の追加: 勤務時間外や週末のアクセスを制限することで、不正アクセスの可能性を物理的に低減します。
  • 規制要件への対応: SOXHIPAAGDPR(General Data Protection Regulation: 一般データ保護規則)など、アクセス制御に関する特定の規制要件を持つ業界や地域において、その遵守を支援します。

ユーザー体験と運用の考慮事項

  • ユーザーへの徹底した周知: Login Hoursが設定されていることをユーザーに事前に通知し、設定された時間外に突然ログアウトされる可能性があることを明確に伝えます。これにより、混乱や作業データの損失を防ぎます。
  • 適切な時間帯の設定: ユーザーの役割や業務要件を考慮し、実際に必要な最小限の時間帯のみアクセスを許可する「最小権限の原則」に基づいて設定します。過度に厳しすぎる制限は、ユーザーの生産性を低下させる可能性があります。
  • タイムゾーンの理解: Login Hoursが組織のタイムゾーンで適用されることを理解し、必要に応じてグローバルなユーザーに対して異なるプロファイルや、個別のタイムゾーン要件を持つ組織では、その運用方法を検討します。
  • テストの実施: Login Hoursの設定変更後は、必ずテストユーザーアカウントを使用して、期待通りにログインが制限され、時間外にログアウトされるかを確認します。

システム連携と管理の最適化

  • APIアクセスへの影響の考慮: 外部連携システムやモバイルアプリケーションなど、APIを介してSalesforceにアクセスするすべてのクライアントがLogin Hoursの制限を受けることを忘れないでください。APIユーザーのプロファイルには、連携の要件に合わせて適切なLogin Hoursを設定するか、設定しないかを慎重に検討します。
  • 監査と監視の徹底: 定期的にログイン履歴を確認し、Login Hours違反によるログイン失敗がないかを監視します。これにより、ポリシーの遵守状況を把握し、必要に応じて設定を調整できます。
  • Metadata APIの活用: プロファイル管理を効率化し、設定ミスを減らすために、Metadata APIを介してプロファイルのLogin Hours設定をVersion Control Systemで管理し、CI/CDパイプラインに組み込むことを検討します。これにより、変更管理が容易になり、組織全体の設定の一貫性が保たれます。

Login Hoursは、Salesforceの強固なセキュリティ基盤の一部を成す機能です。これらのベストプラクティスを適用することで、組織はセキュリティと利便性のバランスを取りながら、Salesforceの利用を最大限に活用することができます。

コメント