パッケージの API アクセスおよびダイナミック Apex アクセスについて
| 使用可能なインターフェース: Salesforce Classic (使用できない組織もあります) |
| 使用可能なエディション: Contact Manager Edition、Group Edition、Professional Edition、Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition |
Apex パッケージコンポーネントは、インストール先の組織にある標準オブジェクトやカスタムオブジェクトに、ダイナミック Apex および API 経由でアクセスできます。
[API アクセス] は、パッケージの Sコントロールとその他のパッケージコンポーネントの標準オブジェクトやカスタムオブジェクトに対するダイナミック Apex と API アクセスを制御するパッケージ設定です。設定は、パッケージ詳細ページで開発者とインストーラの両方に表示されます。この設定によって、次のことができます。
- AppExchange パッケージの開発者は、パッケージを Salesforce AppExchange にアップロードする前に、パッケージの API アクセスを制限できます。いったん制限すると、パッケージコンポーネントが受け取る Apex および API セッションは、パッケージ内のカスタムオブジェクトに制限されます。また、開発者は特定の標準オブジェクト、このパッケージが依存するその他のパッケージのカスタムオブジェクトにアクセスできます。
- パッケージのインストーラは、パッケージを組織にインストールするときに、パッケージアクセス権限を引き受けまたは却下できます。
- インストール後、システム管理者はいつでもパッケージの Apex および API アクセスを変更できます。インストーラを使用して、インストーラの組織に作成されたカスタムオブジェクトまたは関連しないパッケージでインストールしたオブジェクトなど、追加のオブジェクトに対するアクセスを有効化することもできます。
[API アクセス] 設定には、使用可能なオプションが 2 つあります。
- [無制限] (デフォルト)。コンポーネントが API に要求を送信するときにログインしているユーザと同じ標準オブジェクトへの API アクセス権を、パッケージのコンポーネントに付与します。Apex はシステムモードで実行されます。無制限のアクセス権があると、Apex ですべての標準オブジェクトとカスタムオブジェクトを参照できます。
- [制限あり]。パッケージ内のコンポーネントがアクセスできる標準オブジェクトをシステム管理者が選択できます。さらに、制限されたパッケージ内のコンポーネントは、現在のパッケージ内のカスタムオブジェクトへのアクセスを提供するオブジェクト権限がユーザにある場合には、それらのオブジェクトにのみアクセスできます。
パッケージの API アクセスおよびダイナミック Apex アクセスの考慮事項
デフォルトで、ダイナミック Apex は、コードのパッケージにあるコンポーネントにのみアクセスできます。同じパッケージにない標準オブジェクトへのアクセスを許可するには、開発者が [API アクセス] を設定する必要があります。
- [設定] から、[クイック検索] ボックスに「パッケージ」と入力し、[パッケージ] を選択します。
- 組織の標準オブジェクトへのアクセス権を必要としているダイナミック Apex が入っているパッケージを選択します。
- パッケージの詳細関連リストで、[制限を有効化] または [制限あり] のいずれか選択可能になっているオプションをクリックします。
- ダイナミック Apex がアクセスできる標準オブジェクトのアクセス権限レベル (「参照」、「作成」、「編集」、「削除」) を設定します。
- [保存] をクリックします。
パッケージの [API アクセス] の設定で [制限あり] を選択した場合に影響を受ける項目は、次のとおりです。
- パッケージの API アクセスは、次のユーザ権限を上書きします。
- Apex 開発
- アプリケーションのカスタマイズ
- HTML テンプレートの編集
- 参照のみ項目の編集
- 請求情報の管理
- コールセンターの管理
- カテゴリの管理
- カスタムレポートタイプの管理
- ダッシュボードの管理
- レターヘッドの管理
- パッケージライセンスの管理
- 公開ドキュメントの管理
- 公開リストビューの管理
- 公開レポートの管理
- 公開テンプレートの管理
- ユーザの管理
- 所有権の移行
- チーム再割り当てウィザードの使用
- 設定・定義の参照
- ウィークリーデータのエクスポート
- [参照]、[作成]、[編集]、および [削除] アクセスがオブジェクトの API アクセス設定で選択されていない場合、たとえ「すべてのデータの編集」権限および「すべてのデータの参照」権限を持つユーザであっても、パッケージコンポーネントのオブジェクトへのアクセス権はありません。
- [制限あり] API アクセスが有効になっているパッケージでは、新規ユーザを作成できません。
- Salesforce は、アクセスが [制限あり] になっている AppExchange パッケージからの Web サービスへのアクセスと executeanonymous 要求を拒否します。
次の考慮事項は、パッケージの API アクセスにも適用されます。
- ワークフロールールと Apex トリガは、パッケージの API アクセスに関係なく起動されます。
- 1 つのコンポーネントが、ある組織内の複数のパッケージに含まれる場合、API アクセスは、そのアクセス設定に関係なく、その組織のすべてのパッケージ内にあるそのコンポーネントについて制限されません。
- 制限のあるアクセスをパッケージに選択した後で、Salesforce が新しい標準オブジェクトを導入すると、デフォルトでは、新しい標準オブジェクトへのアクセスが付与されません。新しい標準オブジェクトを含めるよう、制限のあるアクセス設定を変更する必要があります。
- パッケージをアップグレードするときは、たとえ開発者が指定したものであっても、API アクセスの変更は無視されます。このようにして、アップグレードをインストールするシステム管理者に完全な制御権があることを保証します。インストールするユーザはインストール中の各アップグレードで、パッケージのアクセスの変更を慎重に検討し、すべての受け入れ可能な変更に注意する必要があります。これらの変更は無視されるため、システム管理者は、アップグレードをインストールした後で、受け入れ可能な変更を手動で適用する必要があります。
- Sコントロールは、Salesforce が提供するもので、Salesforce 内にインラインで表示されます。このように緊密に統合されているため、インストール済みのパッケージ内の Sコントロールがその権限をユーザのフルアクセス権にまでエスカレーションする場合があります。パッケージをインストールする組織のセキュリティを保護するため、Sコントロールには、次のような制限があります。
- 開発中の (つまり、AppExchange からインストールしたものではない) パッケージの場合、Sコントロールは、API アクセスがデフォルトの [無制限] になっているパッケージにのみ追加できます。パッケージに Sコントロールを追加すると、[制限あり] の API アクセスを有効にすることはできません。
- インストールしたパッケージについては、パッケージに Sコントロールが含まれる場合でも、アクセス制限を有効にできます。ただし、アクセス制限は、Sコントロールについては限定的な保護しか行いません。Salesforce は、Sコントロールセキュリティのアクセス制限を使用する前に、Sコントロール内の JavaScript を理解することをお勧めします。
- インストール済みパッケージの API アクセスが [制限あり] になっていると、アップグレード済みバージョンに Sコントロールがない場合にのみ、アップグレードが成功します。アップグレードされたバージョンに Sコントロールがある場合は、現在インストール済みのパッケージの API アクセスを [無制限] に変更する必要があります。