オブジェクトや項目へのアクセス権限は「項目権限オブジェクト」で管理されています。
ということは、このオブジェクトのレコードを追加すれば、プロファイルや権限セットによるアクセス権を付与したりすることができるということ。
もしかして:マウスをポチポチせずとも、セキュリティ設定は可能なのか?
その可否を解明するため、我々調査隊はアマゾンの奥地へと向かった――。
項目権限(FieldPermissions)オブジェクト
プロファイルや権限セットで有効化された項目権限の情報が載ったオブジェクトです。このオブジェクトには以下の項目があります。詳しくはこちらで確認できます。
項目名 | データ型 | 説明 |
---|---|---|
ParentId | 参照関係 | 権限セットオブジェクトへのリレーション項目 |
SobjectType | picklist | 権限をいじるオブジェクトのAPI名 |
Field | picklist | 権限をいじる項目のAPI名 |
PermissionsEdit | boolean | オブジェクト・項目への編集権限 |
PermissionsRead | boolean | オブジェクト・項目への参照権限 |
注意するべきはField項目で、ここの記述は**[オブジェクトのAPI名].[項目のAPI名]**の形で行います。
取引先オブジェクトの従業員数項目なら、
Account.NumberOfEmployees
といった記述をします。Apexなどで、項目の指定をする時と同じ表記ですね。
さて、これらの項目を含めたCSVファイルを作成して、Data Loaderを通して作成すればいいのですが…
そのためには、ParentId項目に入れる権限セットオブジェクトのレコードIDを入手する必要があります。
権限セット(PermissionSet)オブジェクト
読んで字の如く、権限セットに関する情報の詰まったオブジェクトです。詳しくはこちら。
少しわかりにくい表現になってしまいますが、このオブジェクトには権限セットの情報だけではなく、プロファイルによる権限セットの情報も含まれています。
項目は多いですが、今回の操作に主に関係するものは以下の通りです。
項目名 | データ型 | 説明 |
---|---|---|
Id | id | レコードのID |
ProfileId | 参照関係 | プロファイルによる権限セットの場合、そのプロファイルのID |
Label | string | 権限セットの表示ラベル |
Name | string | 権限セットのAPI参照名 |
Data Loderでのアクセス権限設定手順
①権限セットオブジェクトからIDを取得
まず、項目権限オブジェクトのParentIdに入れるための、権限セットオブジェクトのレコードIDを取得します。
Data Loderで「Export」を選択して、権限セットオブジェクトを選択します。
「Show all Salesforce objects」にチェックを入れないと権限セットオブジェクトは表示されません。
エクスポートする項目として、Id・ProfileId・Label・Nameを選択して、エクスポートを実行します。
出力する項目として、「Profile.Name」を手動入力でクエリに追加すると、プロファイル名が分かるようになるので、入力しておくとよいでしょう。
忘れた場合は、「ProfileId」項目のIDで検索を行えば、プロファイル名を特定できます。面倒ですが。
②インポートするCSVファイルの作成
項目権限オブジェクトを作成するためのCSVファイルを作ります。前に提示した5つの項目を設定する必要があります。
作成例は以下の通りです。
ParentId | SobjectType | Field | PermissionsRead | PermissionsEdit |
---|---|---|---|---|
0PS*************** | Account | Account.NumberOfEmployees | TRUE | TRUE |
0PS*************** | Account | Account.Industry | TRUE | FALSE |
③Data Loaderでインポート
後はインポートするだけです。Data Loderで「Insert」を選択して、項目権限オブジェクトを選択します。
「Show all Salesforce objects」にチェックを入れないと項目権限オブジェクトは表示されません。
後は、項目のマッピングをしてインサート、という普段Data Loderでインサートするのと同じ手順です。
まとめ
Salesforceにおけるセキュリティで、おそらく一番最初にいじくるであろうプロファイルのオブジェクト・項目へのアクセス権限。そして次にいじくるであろう権限セットでのオブジェクト・項目へのアクセス権限。
数が少なければ、宣言的にマウスをポチポチして設定してもいいですが、(特に権限セットの)数が多くなればなるほど、手間や時間がかかるものです。こういった場合に、Dataloderで権限セットオブジェクトを一括で作成すれば、セキュリティ周りのミスも減るのかもしれません。