2020.02.12
マウス連打はさようなら!データローダでオブジェクト権限と項目レベルセキュリティを一括設定!!
はじめに
はじめまして、こんにちは!
テラスカイの谷です。
激動の2020年が始まり、早くも1ヶ月が経ちました。皆様いかがお過ごしでしょうか。
リリース作業、実施していますか?
今回はリリース時に役立つ、データローダを使ったオブジェクト権限と項目レベルセキュリティの一括設定についてお話したいと思います。
テラスカイの谷です。
激動の2020年が始まり、早くも1ヶ月が経ちました。皆様いかがお過ごしでしょうか。
リリース作業、実施していますか?
今回はリリース時に役立つ、データローダを使ったオブジェクト権限と項目レベルセキュリティの一括設定についてお話したいと思います。
プロファイルのリリース どうしてますか?
皆様は普段、どのようにリリース作業を実施していますか?
Salesforceに標準で装備されている「変更セット」は宣言的で容易に資材がリリースできるため、利用されている方も多いかと思います。
では、「プロファイル」のリリースはどうでしょう。
変更セットを使ってプロファイルをリリースする際には考慮すべきポイントがたくさんあり、かなり慎重にならなければなりません。結局、変更セットでプロファイルはリリースせず、あとから該当箇所を手動で設定という状況は、システム管理者の皆様にとってはよくあるシチュエーションではないでしょうか。
そんなとき、資材が少ないうちはあまり大変ではないかもしれませんが、資材ならびにプロファイルの量が増えれば増えるほど、手動設定の大変さは筆舌に尽くしがたいものがあります。
大量のカスタム項目の権限をひとつひとつマウスで連打し設定し続けようものなら、腱鞘炎まったなしです。また、そのような細かい作業を人力で実施すると設定ミスが起こる危険性もあります。
普段データローダでデータ移行を実施する方法と同じように権限を一括設定することができれば、素早く安全に権限設定できると思いませんか?さっそく手順を見ていきましょう!
Salesforceに標準で装備されている「変更セット」は宣言的で容易に資材がリリースできるため、利用されている方も多いかと思います。
では、「プロファイル」のリリースはどうでしょう。
変更セットを使ってプロファイルをリリースする際には考慮すべきポイントがたくさんあり、かなり慎重にならなければなりません。結局、変更セットでプロファイルはリリースせず、あとから該当箇所を手動で設定という状況は、システム管理者の皆様にとってはよくあるシチュエーションではないでしょうか。
そんなとき、資材が少ないうちはあまり大変ではないかもしれませんが、資材ならびにプロファイルの量が増えれば増えるほど、手動設定の大変さは筆舌に尽くしがたいものがあります。
大量のカスタム項目の権限をひとつひとつマウスで連打し設定し続けようものなら、腱鞘炎まったなしです。また、そのような細かい作業を人力で実施すると設定ミスが起こる危険性もあります。
普段データローダでデータ移行を実施する方法と同じように権限を一括設定することができれば、素早く安全に権限設定できると思いませんか?さっそく手順を見ていきましょう!
操作概要
操作の簡単な流れは以下のとおりです。
【オブジェクト権限を付与する場合】
① 権限セット(PermissionSet)オブジェクトから権限を付与したいプロファイルまたは
権限セットのIdを取得
② ①で取得したIdを用いてオブジェクト権限付与用のcsvを作成
③ ②で作成したcsvファイルをオブジェクト権限(ObjectPermissions)オブジェクトにインサート
【項目レベルセキュリティを付与する場合】
① 権限セット(PermissionSet)オブジェクトから権限を付与したいプロファイルまたは
権限セットのIdを取得
② ①で取得したIdを用いて項目レベルセキュリティ付与用のcsvを作成
③ ②で作成したcsvファイルを項目権限(FieldPermissions)オブジェクトにインサート
料理で例えると、①材料調達、②仕込み、③調理といった感じでしょうか。
お気付きのとおり、オブジェクト権限と項目レベルセキュリティはほぼ同じ方法で設定することができます。紙面の都合上、今回は項目レベルセキュリティを付与する手順を紹介しながら、データローダを使った権限設定について解説します!
【オブジェクト権限を付与する場合】
① 権限セット(PermissionSet)オブジェクトから権限を付与したいプロファイルまたは
権限セットのIdを取得
② ①で取得したIdを用いてオブジェクト権限付与用のcsvを作成
③ ②で作成したcsvファイルをオブジェクト権限(ObjectPermissions)オブジェクトにインサート
【項目レベルセキュリティを付与する場合】
① 権限セット(PermissionSet)オブジェクトから権限を付与したいプロファイルまたは
権限セットのIdを取得
② ①で取得したIdを用いて項目レベルセキュリティ付与用のcsvを作成
③ ②で作成したcsvファイルを項目権限(FieldPermissions)オブジェクトにインサート
料理で例えると、①材料調達、②仕込み、③調理といった感じでしょうか。
お気付きのとおり、オブジェクト権限と項目レベルセキュリティはほぼ同じ方法で設定することができます。紙面の都合上、今回は項目レベルセキュリティを付与する手順を紹介しながら、データローダを使った権限設定について解説します!
※こちらの記事ではデータローダの基本的な使い方については割愛させて頂きます。
データローダの使い方に不安がある方はSalesforceのヘルプや弊社ブログのこちらの記事を参考にしてみてください。
データローダで項目レベルセキュリティを付与する
想定シナリオ
今回の例では、「03.人事部」「04.経理部」プロファイルに対して、採用オブジェクトに新規作成したカスタム項目(職種、勤務地、給与)の権限を付与してみます。
① PermissionSetオブジェクトからIdを取得する
まずは権限セット(PermissionSet)オブジェクトから、オブジェクト権限を付与したいプロファイルのIdを取得します。
データローダを起動し、[Export]を選択したあと、「権限セット(PermissionSet)」オブジェクトを選択します。「Show all Salesforce objects」にチェックを入れないと出てこないオブジェクトであることに注意しましょう。
あれ?プロファイルの権限を設定するのに「権限セット」をエクスポートするの!?と不安に思った方がいるのではないでしょうか。
安心してください。
権限セットオブジェクトには、権限セットとプロファイル両方のデータが含まれています。また、このあとインサートする項目権限オブジェクトは、権限セットオブジェクトのみでサポートされているため、このタイミングでは「権限セット」オブジェクトをエクスポートするのが正解です。
データローダを起動し、[Export]を選択したあと、「権限セット(PermissionSet)」オブジェクトを選択します。「Show all Salesforce objects」にチェックを入れないと出てこないオブジェクトであることに注意しましょう。
あれ?プロファイルの権限を設定するのに「権限セット」をエクスポートするの!?と不安に思った方がいるのではないでしょうか。
安心してください。
権限セットオブジェクトには、権限セットとプロファイル両方のデータが含まれています。また、このあとインサートする項目権限オブジェクトは、権限セットオブジェクトのみでサポートされているため、このタイミングでは「権限セット」オブジェクトをエクスポートするのが正解です。
権限セットオブジェクトのIdさえ分かればよいのですが、Idだけエクスポートしてもどのプロファイルの権限セットIdか判別できません。「Profile.Name」項目をクエリに加えることで、プロファイル名も同時にエクスポートしてくれるので追加しておきましょう (クエリの書き方はリファレンスも参考にしてみてください)。
それではエクスポートしてきたデータを見てみましょう。
無事に権限セットオブジェクトのIdが取れていますね。ちなみに、PROFILEIDがブランクのデータは権限セット、Idが入っているものはプロファイルのデータです。
無事に権限セットオブジェクトのIdが取れていますね。ちなみに、PROFILEIDがブランクのデータは権限セット、Idが入っているものはプロファイルのデータです。
② 項目レベルセキュリティを付与するcsvファイルの作成
必要な材料は調達できました。それでは実際に、項目レベルセキュリティを付与するcsvファイルを作りましょう。
設定する項目は以下のとおりです。
設定する項目は以下のとおりです。
ParentId項目に、①で取得したPermissionSetオブジェクトのIdを設定します。
Field項目は項目のAPI参照名の前に、オブジェクトのAPI参照名も記述するところに注意しましょう。
今回は、「03.人事部」プロファイルと「04.経理部」プロファイルに対して、3つのカスタム項目(職種、勤務地、給与)の権限を設定するcsvを作成します。
03.人事部には3つの項目全てに参照・編集権限、04.経理部には3つの項目に参照権限のみ付与する要件でしたね。
Field項目は項目のAPI参照名の前に、オブジェクトのAPI参照名も記述するところに注意しましょう。
今回は、「03.人事部」プロファイルと「04.経理部」プロファイルに対して、3つのカスタム項目(職種、勤務地、給与)の権限を設定するcsvを作成します。
03.人事部には3つの項目全てに参照・編集権限、04.経理部には3つの項目に参照権限のみ付与する要件でしたね。
このように、プロファイルの設定画面と同じ順番で項目を並べると分かりやすいかもしれません。
なお、参照権限、編集権限どちらも付与したくない場合にそれぞれの権限を「FALSE」、「FALSE」とするレコードは作成する必要はありません。『FieldPermissionsオブジェクトにレコードが存在しない』=『対象の項目に参照・編集権限がない』という考え方になるからです。(インサートしようとするとエラーになります。)項目に権限を付与したい場合のみ、レコードを作成するようにしましょう。
なお、参照権限、編集権限どちらも付与したくない場合にそれぞれの権限を「FALSE」、「FALSE」とするレコードは作成する必要はありません。『FieldPermissionsオブジェクトにレコードが存在しない』=『対象の項目に参照・編集権限がない』という考え方になるからです。(インサートしようとするとエラーになります。)項目に権限を付与したい場合のみ、レコードを作成するようにしましょう。
③ 作成したcsvファイルを項目権限(FieldPermissions)オブジェクトにインサートする
仕込みまで完了しました。完成まであと少しです。
作成したcsvファイルを項目権限(FieldPermissions)オブジェクトにインサートしましょう。
データローダで[Insert]をクリックしたら、オブジェクト選択画面にて「項目権限(FieldPermissions)」オブジェクトを選択し、②で作成したcsvファイルをセットします。
項目権限オブジェクトも、「Show all Salesforce objects」にチェックを入れないと出てこないオブジェクトです。
画面の手順に従い、csvファイルの項目をオブジェクトの項目にマッピングします。普段のデータローダでのインサートとなんら変わりない手順です。
作成したcsvファイルを項目権限(FieldPermissions)オブジェクトにインサートしましょう。
データローダで[Insert]をクリックしたら、オブジェクト選択画面にて「項目権限(FieldPermissions)」オブジェクトを選択し、②で作成したcsvファイルをセットします。
項目権限オブジェクトも、「Show all Salesforce objects」にチェックを入れないと出てこないオブジェクトです。
画面の手順に従い、csvファイルの項目をオブジェクトの項目にマッピングします。普段のデータローダでのインサートとなんら変わりない手順です。
エラーなくインサートできたでしょうか。項目レベルセキュリティは無事設定できたでしょうか。プロファイルの画面から確認してみます。
見事、csvで設定した項目レベルセキュリティがきちんと付与されています!!
項目レベルセキュリティを変更する
当初の要件が変わり、項目レベルセキュリティを変更しなければならない状況もあるかと思います。そんなときも、データローダで一括で設定できます。
① FieldPermissionsオブジェクトのデータをエクスポートする
→今設定されている項目レベルセキュリティの状況がエクスポートできます。
① FieldPermissionsオブジェクトのデータをエクスポートする
→今設定されている項目レベルセキュリティの状況がエクスポートできます。
※エクスポートされる項目の種類に制限があります。(常に参照可能な監査項目、常に参照・編集可能な所有者、主従関係項目、必須カスタム項目などはエクスポートされません。)詳細はリファレンスを確認してください。
② エクスポートされたcsvファイルを編集する
→アップデートするので、既存のレコードを照合できる一意のデータを含める必要がありますね。
③ 編集したcsvファイルをFieldPermissionsオブジェクトに対してアップデートする
こちらも普段データローダを用いてデータをアップデートする方法と同一です。
インサートの際は、編集・参照権限を「FALSE」「FALSE」に設定することはできませんでしたが、アップデート時には「FALSE」「FALSE」を設定し、項目の権限を無くすことも可能です。
→アップデートするので、既存のレコードを照合できる一意のデータを含める必要がありますね。
③ 編集したcsvファイルをFieldPermissionsオブジェクトに対してアップデートする
こちらも普段データローダを用いてデータをアップデートする方法と同一です。
インサートの際は、編集・参照権限を「FALSE」「FALSE」に設定することはできませんでしたが、アップデート時には「FALSE」「FALSE」を設定し、項目の権限を無くすことも可能です。
おわりに
データローダで行う一括権限設定、いかがでしたでしょうか。
今回の例で紹介した項目の数およびプロファイル種類であれば、手動設定で設定した方がもちろん楽で簡単です。しかしながら、権限を付与する資材、プロファイルの種類が増えれば増えるほど、今回の方法はきっと威力を発揮してくれることでしょう。システム管理者の皆様の手間が省けるのはもちろんのこと、設定ミスが起こる危険性が減ったり、手元に設定の証跡が残せたりと、さまざまなメリットがあります!
今回の例で紹介した項目の数およびプロファイル種類であれば、手動設定で設定した方がもちろん楽で簡単です。しかしながら、権限を付与する資材、プロファイルの種類が増えれば増えるほど、今回の方法はきっと威力を発揮してくれることでしょう。システム管理者の皆様の手間が省けるのはもちろんのこと、設定ミスが起こる危険性が減ったり、手元に設定の証跡が残せたりと、さまざまなメリットがあります!
今回ご紹介できなかったオブジェクト権限の設定、また、APIバージョン45.0以降で実施可能なタブの設定も、今回と同様の手順で設定可能です。 リファレンスを見ながら是非チャレンジしてみてください!
オブジェクト権限
タブ権限
皆様の次回のリリース作業時にお役立ていただければ幸いです。
41 件