今回はSalesforceでマニアックなオブジェクトであるPermissionSetAssignmentを解説します。
このオブジェクトは、ユーザーと権限セット(Permission Set)や権限セットグループ(Permission Set Group)の関連付けを管理するために使用されます。
多数のユーザーの「誰がどの権限を持っているのか?」を管理するうえで、便利なオブジェクトなので、ぜひ押さえておきましょう。
1. PermissionSetAssignmentとは?
PermissionSetAssignment(権限セットの割り当て)
オブジェクトは、ユーザーと権限セット/権限セットグループの関係を表現する中間オブジェクトです。
例えば、以下のような場面で利用されます:
- 特定のユーザーがどの権限セットを持っているかを確認する。
- 新しい権限セットを割り当てる。
- 不要な権限セットを削除する。
公式ドキュメント:PermissionSetAssignment - Object Reference
データローダーからも確認できます。
2. 主なフィールド
PermissionSetAssignmentオブジェクトの主要なフィールドを以下にまとめました。
フィールド名 | 型 | 説明 |
---|---|---|
Id |
ID | レコードの一意識別子 |
PermissionSetId |
ID | 割り当てられた権限セットのID |
PermissionSetGroupId |
ID | 割り当てられた権限セットグループのID |
AssigneeId |
ID | 権限セットを割り当てられたユーザーのID |
CreatedDate |
DateTime | レコードが作成された日時 |
LastModifiedDate |
DateTime | レコードが最後に更新された日時 |
これらのフィールドを使うことで、権限セットや権限セットグループの割り当て状況を詳細に追跡できます。
3. 使用例
3.1 SOQLで権限セットを確認する
以下のSOQLクエリで、特定ユーザーの割り当てられた権限セットを取得できます。
SELECT Id, PermissionSet.Name, Assignee.Name
FROM PermissionSetAssignment
WHERE AssigneeId = '005XXXXXXXXXXXX'
- AssigneeId:ユーザーのIDを指定します。
- PermissionSet.Name:関連付けられた権限セットの名前を取得できます。
3.2 権限セットを割り当てる
開発者コンソールから、特定のユーザーに権限セットを割り当てることも可能です。
Id userId = '005XXXXXXXXXXXX'; // ユーザーID
Id permissionSetId = '0PSXXXXXXXXXXXX'; // 権限セットID
PermissionSetAssignment psa = new PermissionSetAssignment();
psa.AssigneeId = userId;
psa.PermissionSetId = permissionSetId;
insert psa;
System.debug('Permission Set Assigned: ' + psa.Id);
4. 注意点
-
一意性制約
同一ユーザーに同一の権限セットを複数回割り当てることはできません。 -
削除制限
権限セットの割り当てを削除する際は、Sandboxなどで十分に検証を行い、影響範囲に注意してください。基本的に件数が少ない場合には設定から手動で行っていきましょう。
5. 終わりに
PermissionSetAssignment
は、普段は見ることがないオブジェクトかと思います。
本記事で紹介した内容が少しでも参考になりましたら幸いです。