設問
Universal Containers は AppExchange 管理パッケージを配布しており、パートナーごとに生成した秘密キーの管理が必要です。サポート担当者は値を参照できる必要がある。一方で、パートナーにはアクセスさせてはいけない。このようなセキュリティと可視性要件を満たす方法は?
選択肢
A. パッケージ内の保護されたカスタム設定のテキスト フィールドに値を保存します。
B. 管理パッケージに含まれるクラスの静的変数に値を格納します。
C. 管理パッケージのリスト カスタム設定のテキスト フィールドに値を保存します。
D. パッケージ内のカスタム オブジェクトの暗号化フィールドに値を保存します。
解答
C. 管理パッケージのリスト カスタム設定のテキスト フィールドに値を保存します。
解説
A. パッケージ内の保護されたカスタム設定のテキスト フィールドに値を保存します。不正解です。
保護された階層カスタム設定は、1組織に対して単一の値しか保持できず、パートナーごとの秘密キー管理には向きません。また、レコードベースのキー分離ができない点も要件に反します。
B. 管理パッケージに含まれるクラスの静的変数に値を格納します。
不正解です。静的変数はメモリ内に一時的に保持されるのみであり、永続的な値保持には不向きです。
加えて、バージョン管理や複数キーの対応が困難なため、セキュアなキー管理用途には使われません。
C. 管理パッケージのリスト カスタム設定のテキスト フィールドに値を保存します。
正解です。保護付きリストカスタム設定は、レコード単位でキーを保存し、サブスクライバから隠すことができます。これはISVで秘密情報(APIキー、OAuthクレデンシャルなど)をパートナーから守る標準手法です。Apexでも参照でき、UIでも開発者は閲覧可能です。
D. パッケージ内のカスタム オブジェクトの暗号化フィールドに値を保存します。不正解です。
暗号化フィールドは、FLSやプロファイルでアクセス制御する設計で、AppExchange保護属性(Protected)には対応していません。そのため、管理パッケージで提供すると、パートナー側で管理者がアクセスできてしまう可能性があります。
第119問
こちらをクリック