Salesforce プロファイル:ユーザーアクセス制御の決定版ガイド


背景と適用シナリオ

Salesforce は、多くのユーザーが同時にアクセスし、ビジネスプロセスを実行する強力なプラットフォームです。このようなマルチユーザー環境において、各ユーザーが自身の役割に必要な情報にのみアクセスし、許可された操作のみを実行できるように制御することは、データセキュリティと業務効率の両面から極めて重要です。このアクセス制御の中核をなすのが Profile (プロファイル) です。

Profile は、ユーザーが Salesforce 内で「何を見ることができるか(参照権限)」と「何ができるか(操作権限)」を定義する設定の集合体です。例えば、営業担当者、カスタマーサポート担当者、そしてシステム管理者では、担当する業務が異なるため、アクセスできるオブジェクトや実行できる操作も異なります。Profile を使用することで、以下のようなシナリオに応じたアクセス権限をきめ細かく設定できます。

  • 営業担当者プロファイル: 取引先、商談、リードオブジェクトへの参照・作成・編集権限を持つが、ケースオブジェクトへのアクセスは制限される。
  • サポート担当者プロファイル: ケース、取引先、ナレッジオブジェクトへの強い権限を持つが、商談データへのアクセスは参照のみに制限される。
  • マネージャープロファイル: 部下のデータに対する参照権限(「すべて表示」権限)や、レポートのエクスポート権限など、より広範な権限を持つ。

このように、Profile はユーザーの職務や役割に基づいて、Salesforce プラットフォーム上での基本的な操作範囲を定義するための基盤となります。

原理説明

すべての Salesforce ユーザーには、必ず一つの Profile が割り当てられます。この Profile が、そのユーザーの権限のベースラインを決定します。Profile は、多岐にわたる設定項目を管理しており、主要なものは以下の通りです。

アプリケーションとタブの設定

ユーザーがアクセスできるアプリケーションや、画面上部に表示されるタブ(オブジェクトのタブなど)の表示/非表示/デフォルト表示を制御します。

オブジェクト権限 (Object Permissions)

各オブジェクトに対する基本的な操作権限、いわゆる CRUD (Create, Read, Update, Delete) 権限を定義します。これに加えて、組織全体のデータを参照できる「すべて表示 (View All)」や、編集できる「すべて変更 (Modify All)」といった強力な権限もここで設定します。

項目レベルセキュリティ (Field-Level Security - FLS)

オブジェクトへのアクセスが許可されていても、特定の項目(フィールド)を非表示にしたり、参照のみに制限したりすることができます。例えば、取引先責任者オブジェクトへのアクセスは許可しつつ、「給与」のような機密情報を含む項目は一部のユーザーにしか見せない、といった制御が可能です。

ユーザー権限 (User Permissions)

オブジェクトや項目に依存しない、システム全体にわたる操作権限です。「レポートのエクスポート」「API の有効化」「パスワードの一括リセット」など、200以上の広範な権限が含まれます。

Apex クラスおよび Visualforce ページへのアクセス

開発者が作成したカスタムコード(Apex クラス)やカスタム画面(Visualforce ページ)について、どの Profile のユーザーが実行・表示できるかを制御します。

セッション設定 (Session Settings)

セキュリティを強化するため、Login Hours (ログイン時間帯) を設定して業務時間外のログインを禁止したり、Login IP Ranges (ログイン IP アドレスの制限) を設定して特定のネットワークからのみのアクセスを許可したりすることができます。

近年、Salesforce のベストプラクティスは、Profile の役割を最小限に留め、追加の権限を Permission Set (権限セット)Permission Set Group (権限セットグループ) を使って付与するモデルに移行しています。このアプローチでは、Profile で「全ユーザー共通の最小限の権限」を定義し、特定の業務やプロジェクトに必要な権限を Permission Set としてコンポーネント化してユーザーに割り当てます。これにより、ユーザーは一つの Profile を持ちながら、複数の Permission Set を持つことができ、より柔軟で管理しやすい権限モデルを構築できます。

サンプルコード

Profile の設定は主に Salesforce の設定画面から行いますが、SOQL を使用してプログラムで Profile の情報を照会することも可能です。これは、権限の監査や一括設定の際に役立ちます。

例1: 特定のプロファイル情報を照会する SOQL

組織内に存在する「システム管理者」と「標準ユーザー」プロファイルの基本情報を取得します。

// SOQL を使用して、指定した名前のプロファイルのID、名前、ユーザータイプを取得します。
// UserType は、どのライセンスファミリーに属しているかを示します (例: Standard, PowerPartner)。
SELECT Id, Name, UserType FROM Profile WHERE Name IN ('System Administrator', 'Standard User')

例2: PermissionSet オブジェクト経由でプロファイルの権限を照会する SOQL

技術的には、各 Profile には一対一で対応する PermissionSet レコードが存在します。このレコードの IsOwnedByProfile 項目が true になっています。この仕組みを利用することで、Profile が持つ具体的な権限を SOQL で直接照会できます。

以下のクエリは、「システム管理者」プロファイルが「API の有効化」と「すべてのデータの変更」権限を持っているかを確認する例です。

// PermissionSet オブジェクトを照会し、プロファイルに紐づく権限を確認します。
// IsOwnedByProfile = true で、プロファイル自身の設定を対象に絞り込みます。
// Profile.Name を使用して、特定のプロファイルを指定します。
// PermissionsApiEnabled や PermissionsModifyAllData といったチェックボックス権限は、
// 真偽値 (true/false) を返す項目として照会できます。
SELECT
    Id,
    Profile.Name,
    PermissionsApiEnabled,        // 「API の有効化」権限
    PermissionsModifyAllData      // 「すべてのデータの変更」権限
FROM
    PermissionSet
WHERE
    IsOwnedByProfile = true
    AND Profile.Name = 'System Administrator'

このクエリは、セキュリティ監査や、特定の権限を持つプロファイルをリストアップする際に非常に強力です。

注意事項

標準プロファイル vs カスタムプロファイル

Salesforce には「システム管理者」や「標準ユーザー」などの標準プロファイルが用意されています。これらのプロファイルは削除できず、権限の変更にも一部制限があります。ベストプラクティスは、標準プロファイルを直接変更するのではなく、クローン(コピー)してカスタムプロファイルを作成し、それをカスタマイズすることです。これにより、Salesforce のバージョンアップによる影響を最小限に抑え、自社の要件に合わせた柔軟な管理が可能になります。

プロファイルと権限セットの使い分け

前述の通り、現代の Salesforce アーキテクチャでは、Profile と Permission Set の役割分担が重要です。

  • Profile: ユーザーの役割(例: 営業、サポート)に基づいた基本的なアクセス権限を定義します。ユーザーは一つしか持てません。
  • Permission Set: 特定のタスクやツール(例: レポートエクスポート、特定プロジェクトへのアクセス)に必要な追加の権限を付与します。ユーザーは複数持つことができます。
権限のバリエーションが増えるたびに新しいプロファイルを作成する「プロファイルの乱立」は、管理を複雑にするため避けるべきです。

ライセンスの考慮事項

各 Profile は、特定の User License (ユーザーライセンス) に紐づいています。例えば、「Salesforce」ライセンスに紐づくプロファイルを、「Salesforce Platform」ライセンスを持つユーザーに割り当てることはできません。ユーザーを作成または更新する際は、ライセンスとプロファイルの互換性に注意が必要です。

デプロイメント

Profile は非常に多くの設定を含む複雑なメタデータです。変更セットやメタデータ API を使って環境間でデプロイする際には、意図しない権限変更が発生しないよう細心の注意が必要です。特に、デプロイ先の組織の既存の設定を上書きしてしまうリスクがあるため、デプロイ前には十分な検証が推奨されます。


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

Profile は Salesforce のセキュリティモデルの根幹をなす、非常に重要な機能です。ユーザーの基本的なアクセス権を定義し、データの安全性を確保する上で不可欠な存在です。しかし、その強力さゆえに、設計と管理には戦略的なアプローチが求められます。

Salesforce 技術アーキテクトとして推奨するベストプラクティスは以下の通りです。

  1. 最小権限の原則 (Principle of Least Privilege):

    まず、すべてのユーザーに割り当てるための「最小アクセスプロファイル」を作成します。このプロファイルは、ログインする権限以外はほとんど何も許可しない状態にしておきます。そして、必要な権限はすべて Permission Set を通じて付与します。これにより、セキュリティリスクを最小化し、権限付与の意図が明確になります。

  2. 権限セットと権限セットグループの活用:

    役割ベースではなく、タスクベースで再利用可能な Permission Set を作成します(例:「レポートビルダー権限セット」「契約管理アプリ権限セット」)。複数の Permission Set をまとめてユーザーに割り当てたい場合は、Permission Set Group を活用することで、管理がさらに効率化されます。

  3. プロファイルの乱立を避ける:

    新しい権限要件が発生した場合、すぐに新しいプロファイルを作成するのではなく、「この権限は Permission Set で付与できないか?」と自問してください。プロファイルの数を最小限に保つことで、長期的なメンテナンスコストを大幅に削減できます。

  4. 定期的な棚卸しと監査:

    セキュリティは一度設定して終わりではありません。定期的にプロファイルと権限セットの設定内容、そして誰に何が割り当てられているかを見直し、不要な権限が残存していないかを確認する監査プロセスを定着させることが重要です。

これらのベストプラクティスを遵守することで、スケーラブルで、安全かつ管理しやすい Salesforce の権限モデルを構築することが可能になります。

コメント