menu
%}

Salesforceのデータローダで 権限セットを一括割り当てする方法

 2022.09.22 support_service_team

こんにちは、カスタマーサクセス事業部のMと申します。
本日はSalesforceの権限セットに関するナレッジをご紹介いたします。

権限セットとは

皆様は日々Salesforceに関する業務に従事する中で、「権限セット」は活用されていますか?
Salesforce社のヘルプページでは、

権限セットは、さまざまなツールと機能へのアクセス権をユーザに付与する設定と権限のコレクションです。権限セットは、ユーザのプロファイルを変更せずにユーザの機能アクセス権を拡張します。

と定義されています。
◇ SALESFORCE ヘルプ >ドキュメント >SALESFORCE 組織の設定および管理 >権限セット

一般的にユーザのアクセス権はプロファイルで管理されていることが多いかと思いますが、
権限セットを使用するとプロファイルを変更することなく、特定のユーザに特定の権限を付与することが出来る便利な機能です。
基本的な使用方法等については割愛しますが、弊社ブログでも紹介しておりますので、よろしければぜひこちらもご参照ください。
『プロファイル増えすぎていませんか?ー 権限セットの使い方』

権限セットを一度に多数のユーザに割り当てたい

便利な権限セットですが、割り当てユーザを管理するにあたり対象ユーザが数名~数十名程度であれば、
[ 設定 >ユーザ >権限セット>割り当ての管理 ]
の画面から割り当てを追加/削除するのも手間ではないのですが、数百名規模となるとこの方法では時間がかかってしまいます。また、割り当ての追加/削除をする際に複数のユーザを対象とする場合、ユーザのリストビューを使用することもありますが、そもそもリストビューを作成したり編集したりするのが手間……という方もいらっしゃるのではと思います。


dl権限セット14

そんな方にご紹介したいのが、データローダを使用して一度に多数のユーザに割り当てる方法です!この方法であれば前述のような手間を省き、あまり時間をかけずに多数のユーザに権限セットを割り当てたり削除したりすることが可能です。

「データローダ」の使い方については弊社のブログでもご紹介していますので、こちらをご参照ください。
『Salesforce運用の必須アプリ データローダのすゝめ』

権限セットとユーザの関係

データローダを使用して権限セットを割り当てられる……ということは、権限セットとユーザは一体どのような関係なのでしょうか?
実は、 Salesforce組織内には「権限セットの割り当て PermissionSetAssignment」というオブジェクトが存在しており、ユーザオブジェクトと参照関係のリレーションが結ばれているのです。
このオブジェクトは Salesforce上の設定画面では確認できないのですが、データローダで「Show all Salesforce objects」にチェックを入れると、存在を確認することができます。

dl権限セット04

データローダでこのオブジェクトのレコードを「Export」したCSVファイルを確認すると、このような情報をエクスポートすることができました。

dl権限セット05

 AssigneeID:権限セットを割り当てられたユーザ
 PermissionSetId:権限セットを識別するID
という構造になっています。
つまり、権限セットを割り当てたいユーザのユーザIDを「AssigneeID」に、割り当てたい権限セットのIDを特定して「PermissionSetID」にセットすると、権限セットをユーザに割り当てられるということになります。

出典:◇ Salesforce Developers >Documentation >Salesforce プラットフォームのオブジェクトリファレンス >リファレンス >標準オブジェクト >PermissionSetAssignment

データローダで権限セットを割り当てる方法

それでは、実際にデータローダで権限セットを割り当ててみましょう。
今回は「テストX」という権限セットを、ユーザAとユーザBに割り当てます。
※ポイントに絞って手順をご紹介しますので、詳細はヘルプページなどをご確認ください。

1:割り当てたい権限セットのIDを特定する
先ほどご紹介しました「権限セットの割り当て PermissionSetAssignment」オブジェクト内の「PERMISSIONSETID」にセットする値を特定するため、まずは割り当てたい権限セット「テストX」のIDを取得します。
データローダを起動して「Export」を選択し、 「Show all Salesforce objects」にチェックを入れて「権限セット(PermissionSet)」を選択します。

dl権限セット15

エクスポートする項目を選択する画面では「Description」「ID」「Label」は必ずチェックを入れて選択するようにしましょう。もちろん、「Select all fields 」を選択して、すべての項目をエクスポートしても問題ありません。最後に「Finish」をクリックして、エクスポートの処理を完了します。

dl権限セット16

このような情報がエクスポート出来ました。

dl権限セット06

Labelの値から「テストX」を探し出し、「ID」の値を控えておきます。
 テストXのID:0PS2v000005SWrhGAG 

2:割り当てたいユーザのIDを特定する
環境によって適した方法は様々だと思いますが、レポートやデータローダ等で権限セットを割り当てたいユーザのユーザIDを特定して控えておきます。
今回はユーザAとユーザBのIDをあらかじめ取得しておきました。
 ユーザAのID:0052v00000ijKnbAAE 
 ユーザBのID:0052v00000ijKnlAAE  

3:データローダのInsertで使用するCSVファイルを作成する
必要な情報は「PermissionSetId」と「AssigneeID」です。
画像のように、「PermissionSetId」の列に手順1で特定した権限セットのIDを、「AssigneeID」の列に手順2で特定したユーザIDをセットします。

dl権限セット07

これでデータローダで使用するCSVファイルは完成です。

4:データローダを使用して「権限セットの割り当て PermissionSetAssignment」オブジェクトにレコードを一括作成する
「権限セットの割り当て」オブジェクトでは「1つの権限セットを1人のユーザに割り当てる」=「割り当ての情報を持つ1レコードを作成する」という仕様になりますので、
 ・2つの権限セットを2人のユーザに割り当てる場合は 4レコード作成
 ・3つの権限セットを1人のユーザに割り当てる場合 3レコード作成
ということになります。
05_複数権限セットを複数ユーザへ割り当てる場合のCSVファイル
そのため、CSVを作成してデータローダの「Insert」でレコードを作成します。

①データローダを起動し「Insert」を選択します。
dl権限セット17

②「Show all Salesforce objects」にチェックを入れ、「権限セットの割り当て PermissionSetAssignment」を選択し、「Choose CSV File:」にて 3で作成したCSVファイルを選択します。

dl権限セット187

③項目のマッピングをし、「Next」ボタンを押します。
ボタンを押す前に、再度「PermissionSetId」と「AssigneeID」が正しくマッピングされているか確認しましょう。
dl権限セット12jpg


④「 Finish」ボタン →「はい」を押し、Insertを開始します。
処理が終了したら「OK」ボタンを押して、データローダでのレコード作成は完了です。
dl権限セット13


5:「権限セットの割り当て PermissionSetAssignment」オブジェクトのレコードが正しく作成されたか確認
実際に正しくレコードが作成されたか確認したいのですが、残念ながら「権限セットの割り当て PermissionSetAssignment」オブジェクトは目視で確認できないオブジェクトです。
意図したとおりに権限セットがユーザに割り当てられているかを確認することで、レコードがきちんと作成されたかどうかがわかりますので見てみましょう。

dl権限セット08

データローダでInsertしたCSVファイルの内容のとおり、ユーザAとユーザBに「テストX」の権限セットが割り当てられていますね!

最後に

データローダを使用した権限セットの割り当て方法、いかがでしたでしょうか?
100人あるいは1,000人単位以上の多数のユーザに権限セットを割り当てたい時等にとても便利ですので、ぜひお試しいただければと思います。
ちなみに、逆に複数のユーザの割り当てを削除したい時にも、この方法を応用することができます。その場合は「権限セットの割り当て PermissionSetAssignment」のオブジェクトで、割り当てを削除したい権限セットとユーザの組み合わせ(「PermissionSetId」と「AssigneeID」の組み合わせ)の情報を持つレコードIDを確認し、それらをセットしたCSVファイルを用意して、データローダの「Delete」機能を使用して削除すればOKです。

なお、私はSalesforceのログインで必須となった多要素認証(MFA)への対応を進める中で、「なんとかMFA用の権限セットを多くのユーザに簡単に割り当てられないだろうか……」と思ったことがきっかけで「権限セットの割り当て PermissionSetAssignment」オブジェクトとこの方法を知りました。
今回ご紹介した方法が皆様の業務の一助になれば幸いです。

◇ SALESFORCE ヘルプ >多要素認証 (MFA) への対応

Salesforce内製化LP画像