機密情報をユーザに隠しつつ、Apexでアクセスする【Salesforce】

mountain beside body of water with aurora borealis Apex
Photo by Tobias Bjørkli on Pexels.com

この記事では、サーバURLや API で使用する認証情報など、

  • 「設定」ページ等の UI 上はデータを見ることができない
  • Apex 経由ではアクセスできる

というようにデータを扱いたい場合の解決策について概要を記述しています。

主な方針

以下の2つの組み合わせで実現します。

  • 管理パッケージを作成する
  • 保護されたカスタム設定(カスタムメタデータ)を用いる

管理パッケージは、Developer Edition 組織で作成した カスタムオブジェクト・カスタム設定・Apexクラスなどの開発内容をまとめて他の組織に配布できるというものです。

配布先の組織のユーザは、管理パッケージ内の Apex クラスのコード内容を見ることができません。
これはセキュリティや知的財産の保護の観点で有用です。

また、管理パッケージでカスタム設定(カスタムメタデータ)のプライバシーを「保護」にすることで、配布先のユーザからそのカスタム設定が見えなくなり、さらにレコードへのアクセスも管理パッケージ内の Apex クラス経由のみに制限されます

この機能を使えば機密情報も扱うことができます。

カスタム設定とカスタムメタデータの違い

今回の用途で使う場合、カスタム設定とカスタムメタデータではレコードを管理パッケージに含められるかどうかという点で違いが出ます。

カスタム設定ではレコード(機密情報自体)をパッケージに含められないため、パッケージのインストール後に登録側組織で Apex または API スクリプトを使用してレコードを取り込みます。

一方、カスタムメタデータではパッケージにレコードを含めることができます。したがってパッケージのインストール後にレコードを作成する手間が省けます。

管理パッケージ・カスタム設定については、以下の記事でも記述しています。
Salesforce(Apex) 管理パッケージで global を扱う際の注意点
管理パッケージでカスタム設定を使うときの注意点【Salesforce】
【Salesforce】カスタム設定の特徴とコードからのアクセス

コメント

タイトルとURLをコピーしました