プロファイルのオブジェクト権限と項目レベルセキュリティの一括設定【データローダ】
概要
サンドボックスから本番環境にリリースする際に
データローダでプロファイルの権限を一括設定しました。
プロファイルやオブジェクトの数が多い場合はデータローダでの作業が得策です。
TerraSkyさんのブログ記事を見ながら作業しました。
参考にした記事
作業手順(項目レベルセキュリティ)
①サンドボックスの権限セット(PermissionSet)オブジェクトから権限を付与するプロファイルの情報をデータローダでCSVに出力
SELECT Id, Name, Label, ProfileId, Profile.Name FROM PermissionSet
| 名前 | 内容 |
|---|---|
| PermissionSetオブジェクト | 権限のセットを表示 |
| Name項目 | API のオブジェクトの一意の名前 |
| Label項目 | 権限セットの表示ラベル |
| ProfileId項目 | ProfileレコードのID ※NULLなら権限セット |
| Profile.Name項目 | プロファイルの名前 |
②出力したCSVからID列とProfile.Name列を残して列を削除
更新対象のプロファイル以外の行を削除
③サンドボックスの項目権限(FieldPermissions)オブジェクトから権限を付与する項目をデータローダでCSVに出力
SELECT Id, ParentId, SobjectType, Field, PermissionsEdit, PermissionsRead FROM FieldPermissions
WHERE SobjectType IN (<ObjectName>) // オブジェクトのAPI参照名を指定
ORDER BY ParentId, SobjectType, Field
| 名前 | 内容 |
|---|---|
| FieldPermissionsオブジェクト | 親のPermissionSetオブジェクトの有効化された項目権限を表示 |
| ParentId項目 | PermissionSetレコードのID |
| SobjectType項目 | オブジェクトのAPI参照名 |
| Field項目 | 項目のAPI参照名 |
| PermissionsEdit項目 | Trueの場合、項目を編集可能 |
| PermissionsRead項目 | Trueの場合、項目を参照可能 |
④出力したCSVからVLOOKUP関数を使ってプロファイルのレコードを抽出
※N/A列を削除
⑤本番環境で①から④を実施
⑥サンドボックスと本番環境のCSVをマージ
⑦不要な列を削除
⑧データローダで項目権限(FieldPermissions)オブジェクトにinsert
作業手順(オブジェクト権限)
①、②は同じ
③サンドボックスのオブジェクト権限(ObjectPermissions)オブジェクトから権限を付与する項目をデータローダでCSVに出力
SELECT Id, ParentId, SobjectType, PermissionsEdit, PermissionsRead, PermissionsCreate, PermissionsDelete, PermissionsViewAllRecords, PermissionsModifyAllRecords FROM ObjectPermissions
WHERE SobjectType IN (<ObjectName>) // オブジェクトのAPI参照名を指定
ORDER BY ParentId, SobjectType
| 名前 | 内容 |
|---|---|
| ObjectPermissionsオブジェクト | 親のPermissionSetオブジェクトの有効化されたオブジェクト権限を表示 |
| ParentId項目 | PermissionSetレコードのID |
| SobjectType項目 | オブジェクトのAPI参照名 |
| PermissionsEdit項目 | Trueの場合、オブジェクトのレコードを編集可能 |
| PermissionsRead項目 | Trueの場合、オブジェクトのレコードを参照可能 |
| PermissionsCreate項目 | Trueの場合、オブジェクトのレコードを作成可能 |
| PermissionsDelete項目 | Trueの場合、オブジェクトのレコードを削除可能 |
| PermissionsViewAllRecords項目 | Trueの場合、オブジェクトのすべてのレコードを参照可能 |
| PermissionsModifyAllRecords項目 | Trueの場合、オブジェクトのすべてのレコードを編集可能 |
④、⑤、⑥、⑦は同じ
⑧データローダでオブジェクト権限(ObjectPermissions)オブジェクトにinsert
その他
システム管理者プロファイル等はupdateを使用
※プロファイルの設定変更はupdate
upsertを使えば、まとめて設定できる
項目レベルセキュリティからinsertする
※オブジェクト権限からinsertすると項目権限が重複してエラーになる場合がある
